Назад | Перейти на главную страницу

Виртуальная установка Postfix не доставляет корневую почту локально

У меня есть виртуальная установка postfix с MySQL и dovecot. Все работает нормально, единственная проблема в настоящее время заключается в том, что письма в root не доставляются локально, как должно быть. Вместо этого postfix заменяет письма, отправленные на «root», на «root@example.com». Поскольку для root@example.com нет виртуального почтового ящика, они не могут быть доставлены:

Nov 17 03:20:26 xxx postfix/qmgr[16914]: E49903AB4045: from=<root@example.com>, size=783, nrcpt=1 (queue active)
Nov 17 03:20:26 xxx postfix/pipe[17901]: E49903AB4045: to=<root@example.com>, orig_to=<root>, relay=dovecot, delay=626, delays=625/0.01/0/0.17, dsn=4.1.1, status=SOFTBOUNCE (user unknown)

Чтобы исправить это, я попробовал то, что описано на

http://www.postfix.org/STANDARD_CONFIGURATION_README.html#some_local

и добавил корневой псевдоним в мои карты виртуальных псевдонимов sql:

| address       | goto             | domain        | created             | modified            | active |
+---------------+------------------+---------------+---------------------+---------------------+--------+
| root          | root@localhost   | localhost     | 2013-11-18 11:20:00 | 2013-11-18 11:20:00 |      1 |

По крайней мере, сейчас он немного изменился, но он все еще не работает, поскольку кажется, что имя домена теперь расширено до root@localhost.example.com:

Nov 18 11:36:39 xxx postfix/qmgr[16914]: 0741763B6001: from=<root@example.com>, size=316, nrcpt=1 (queue active)
Nov 18 11:36:39 xxx postfix/smtp[30046]: 0741763B6001: to=<root@localhost.example.com>, orig_to=<root>, relay=none, delay=11, delays=11/0/0.52/0, dsn=4.4.6, status=SOFTBOUNCE (mail for localhost.example.com loops back to myself)

Из моего main.cf:

mydestination = localhost.localdomain, localhost
mydomain = example.com
myhostname = mail.example.com
myorigin = $mydomain
smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient,permit_sasl_authenticated,reject_unauth_destination,reject_rbl_client zen.spamhaus.org,pcre:/etc/postfix/dspam_filter_access
virtual_alias_maps = mysql:/etc/postfix/sql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql_virtual_domain_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql_virtual_mailbox_maps.cf

Насколько я понимаю, Postfix должен проверять sql_virtual_alias_maps, пересылать письма на root к root@localhost, и попробуйте доставить это локально.

Что я делаю не так и как мне заставить postfix доставлять эти корневые письма локально?

Хорошо, я исправил. Проблема заключалась в параметре

append_dot_mydomain

который установлен на yes по умолчанию. После установки

append_dot_mydomain = no

, в main.cf, он работает как надо.

Похоже, он пытается переслать самому себе, вы случайно не определяете, что поле «goto» в вашей базе данных является адресом пересылки? если да, попробуйте удалить это форвард и посмотреть, поможет ли это