postfix 2.9.6.1 пересылать всю почту на внешний почтовый адрес

Я пытаюсь сообщить postfix, что все письма на любой адрес должны перенаправляться на внешний адрес электронной почты.

Мой main.cf включает запись для

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = xshaunm-Q1532N
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = xshaunm-Q1532N, localhost.localdomain, , localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains = xshaunm-Q1532N.pvt.lan
virtual_alias_maps = hash:/etc/postfix/virtual

Мой /etc/postfix/virtual выглядит следующим образом:

(.*) [email protected]

Затем я запускаю следующую команду

postmap /etc/postfix/виртуальный

перезапустить постфикс

/etc/init.d/postfix перезапустить

Теперь, если я запускаю команду

echo test | sendmail [email protected]

он должен доставляться на [email protected], но по какой-то причине доставляется на [email protected], что неверно

Если я укажу точный адрес в файле /etc/postfix/virtual следующим образом, это сработает, но есть сотни почтовых адресов, которые необходимо перехватить и переслать, поэтому регулярное выражение будет лучше:

[email protected] [email protected]

person rezizter    schedule 16.08.2013    source источник


Ответы (2)


У меня были аналогичные проблемы с переадресацией на мою учетную запись Gmail. У меня был один хост с постфиксом, пересылающим несколько виртуальных доменов. Несмотря на то, что я был почти уверен, что правильно настроил файлы конфигурации (/etc/postfix/virtual, /etc/postifx/main.cf), сообщения иногда приходили, но иногда я получал сообщения о возврате.

Чтобы заставить его работать, мне также пришлось:

  1. Отправляйте тестовые сообщения из другого аккаунта. Похоже, что Gmail отбрасывает сообщения, отправленные с одного и того же почтового ящика/адреса, потому что считает, что существует почтовая петля. Отправьте тестовое сообщение из другого аккаунта или даже используйте следующее с хоста, на котором запущен postfix.

    echo "test to [email protected]" | sendmail [email protected]
    
  2. Добавьте запись SPF для хоста, который пересылает почту (работает postfix). Запись SPF указывает другим компьютерам, что владелец домена говорит, что хосту-ретранслятору разрешено отправлять почту для этого домена. Основы SPF можно найти на OpenSPF: http://www.openspf.org/Introduction. У Google есть хорошая статья на https://support.google.com/a/answer/33786.

    TL;DR Создайте запись TXT, содержащую этот текст: v=spf1 mx include:_spf.google.com ~all

person richb-hanover    schedule 01.05.2014
comment
№1 у меня сработал. Я думаю, что вы можете быть правы насчет почтового цикла в gmail. - person davegallant; 15.10.2014

Наконец нашел ответ.

Листинг здесь для потомков.

Добавьте следующую строку в конец файла main.cf

vi /etc/postfix/main.cf 

virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp

Создайте файл, в котором указан адрес электронной почты, на который вы хотите отправлять все письма.

vi /etc/postfix/virtual-regexp

Добавьте следующее:

/.+@.+/ [email protected]

добавь в посткарту

postmap /etc/postfix/virtual-regexp

вам нужно будет добавить виртуальный файл.

touch /etc/postfix/virtual

теперь добавьте его в postmap

postmap /etc/postfix/virtual
person rezizter    schedule 16.08.2013
comment
Да, для этого вам нужно regexp, а не hash. Вам не нужно запускать postmap для типов поиска регулярных выражений. Кроме того, почему вы хотите коснуться /etc/postfix/virtual и запустить postmap без необходимости? - person clement; 17.08.2013
comment
Полностью с вами согласен. По какой-то причине простое выполнение регулярного выражения не сработало (поэтому я разместил здесь) только при добавлении виртуального хэша, тогда оно работает. - person rezizter; 21.08.2013