Ошибка обработки почты в postfix
На днях со мной связался системный администратор организации, от которой не принималась электронная почта моим postfix. Ситуация довольно редкая, потому что обычно “напрягают” меня, чтобы такие письма от контор, у которых некорректно настроен почтовый сервер, проходили. В большинстве случаев такая ситуация возникает, если отправляющая сторона пользуется услугами какой-нибудь компании, занимающейся аутсорсингом электронной почты. |
Так вот, на сервере под управлением freebsd в моем postfix включена опция smtpd_reject_unlisted_sender = yes, которая осуществляет отклонение писем с несуществующим адресом отправителя. Такая нехитрая проверка электронной почты “на входе” позволяет отфильтровать немало спама (статью по более детальной настройке posfix и защите от спама вы можете почитать по этой ссылке).
Для того чтобы проверить реальность адреса отправителя, postfix посылает запрос от имени служебного адреса double-bounce@mail.domain.ru. В этом-то и заключалась моя ошибка. У отсылающей организации в свою очередь тоже осуществляются проверки реальности адресов отправителя и корректности записи MX во внешнем DNS. И на этом этапе тот почтовый сервер такой записи (для хоста, а на для домена) для mail.domain.ru не находил. У меня запись MX настроена исключительно для domain.ru.
Поэтому ответ на запрос моего postfix возвращался с ошибкой:
Jul 9 10:11:24 mail postfix/smtp[31596]: 85D6E4F1010: to=<user@sender.ru>, relay=mx.sender.ru[11.22. 33.44]:25, delay=1.7, delays=0/0/0.41/1.3, dsn=5.0.0, status=undeliverable (host mx.sender.ru[11.22. 33.44] said: 554 Rejecting due to security policy (no MX-record for MAILFROM domain:mail.domain.ru) (in reply to MAIL FROM command))
Раньше о такой ситуации я даже не задумывался… Почитав man 5 postconf, узнал о существовании опции double_bounce_sender, в которой можно задать адрес электронной почты как раз для такого рода запросов.
Мне осталось занести в конфигурационный файл posfix по пути /usr/local/etc/postfix/main.cf
строку double_bounce_sender = postmaster@domain.ru
, перезапустить почтовый сервер, убедиться, что запросы стали исходить от этого адреса:
# tail -f /var/log/maillog | grep postmaster@domain.ru Jul 9 11:44:22 mail postfix/qmgr[50718]: 497394F100D: from=<postmaster@domain.ru>, size=231, nrcpt=1 (queue active)
Не забудьте проверить в файле почтовых алиасов по пути /etc/mail/aliases
наличие секции:
# Basic system aliases -- these MUST be present MAILER-DAEMON: postmaster postmaster: root
Также (если вы не сделали этого до сих пор) задайте реально существующий адрес электронной почты, принадлежащий вам лично, чтобы получать рутовую почту от этого сервера freebsd:
# Pretty much everything else in this file points to "root", so # you would do well in either reading root's mailbox or forwarding # root's email from here. # root: me@my.domain root: you@domain.ru
Если вы внесли в файл почтовых алиасов изменения – не забудьте дать команду на перестройку базы данных почтовых псевдонимов:
# newaliases /etc/mail/aliases: 28 aliases, longest 15 bytes, 294 bytes total
Но, как оказалось, это не сняло проблемы, и письма от этой организации так и не проходили. Пришлось вносить эту контору в специальный список, почта в котором не проверяется самим postfix на спам. Только тогда письма прошли…
Быть может, приведенная тут информация окажется кому-то полезной.
Скорее всего у него включена фича, которая не пропускает сообщения о существовании ящика, типа этой disable_vrfy_command = yes
Столкнулся с той же проблемой. Только менял другую опцию и устанавливал значение:
address_verify_sender = postmaster@$mydomain
Обязательное условие – наличие этого почтового ящика либо в локальных ресипиентах либо в глобальных. Чтоб встречная проверка на этот адрес проходила у вас.