Столкнулись с проблемой доставки писем к нам извне: отправителю возвращался Delivery failure с указанной ошибкой:
4.3.2.1 does not like receipient.
Remote host said[Response Message]: 550 Sender verify failed Giving up on 4.3.2.1.
STEP: RCPT TO
При этом на другие домены и в обратную сторону письма приходили.
После недолгих изысканий, выяснилось, что почтовый сервер клиента перестал принимать письма с пустым MAIL FROM. Что, на секундочку, нарушает RFC:
5.2.9 Command Syntax: RFC-821 Section 4.1.2
The syntax shown in RFC-821 for the MAIL FROM: command omits
the case of an empty path: "MAIL FROM: <>" (see RFC-821 Page
15). An empty reverse path MUST be supported.
Происходит это из-за механизма callout, который проверяет существование отправителя до принятия письма от удалённого сервера, пытаясь "отправить" ему письмо указывая при этом пустой MAIL FROM:
root@mailserver:/root# telnet mx.remote.host.com 25
Trying 1.2.3.4...
Connected to mx.remote.host.com.
Escape character is '^]'.
220 ESMTP AntiSpam Service Enterprise Edition
helo mail.server.ru
250 [Sniper] OK
mail from: <>
501 [Sniper] Sender is null.
Connection closed by foreign host.
В ответ на пустой MAIL FROM, удалённый сервер отвечает 501 [Sniper] Sender is null
. Хотя по RFC он обязан принимать письма с пустым отправителем.
В качестве отправителя при callout не используется реальный ящик (например, postmaster@domain.com), так как удалённый сервер может инициировать callout в обратную сторону, что приведёт к зацикливанию взаимных проверок.
После корректной настройки используемого антиспам ПО, проблема была устранена.