554 5.7.1 Relay access denied — сервер отказался пересылать письмо
Повторы не помогут. Письмо доставлено не будет.
Ответ сервера
554 5.7.1 <user@example.com>: Relay access deniedТак отвечает Postfix, когда клиент просит доставить письмо на домен, который этот сервер не обслуживает, и не доказал, что ему это разрешено. Обычная причина: почтовый клиент или приложение отправляет без авторизации.
Что это значит
Почтовый сервер принимает два вида писем: адресованные его собственным доменам и письма от доверенных клиентов куда угодно. Всё остальное сделало бы его открытым релеем, поэтому Postfix отказывает уже на RCPT TO: «554 5.7.1 <адрес>: Relay access denied». Так срабатывает ограничение reject_unauth_destination. Доверенным считается клиент с адресом из mynetworks или прошедший вход по SASL. Другие серверы формулируют тот же отказ иначе: «Relaying denied» у Sendmail, «relay not permitted» у Exim, «Unable to relay» у Exchange.
Почему так происходит
- Клиент отправляет без SMTP-авторизации: она выключена в настройках или программа ушла на порт 25 без входа.
- Приложение работает на хосте, которого нет в mynetworks (новый сервер, контейнер, сменившийся IP), а релей доверял ему по адресу.
- Логин и пароль указаны только для входящей почты (IMAP или POP3), а для исходящей авторизация выключена.
- Сервер должен принимать почту для домена получателя, но домена нет в mydestination, relay_domains или virtual_mailbox_domains, и письмо выглядит как пересылка.
Что делать
- Включите авторизацию в клиенте и отправляйте на порт 587 (STARTTLS) или 465 (SSL/TLS) с логином и паролем.
- Если сервер ваш и должен принимать эту почту, проверьте, есть ли домен получателя в mydestination, relay_domains или virtual_mailbox_domains.
- Если внутреннему хосту нужно отправлять без пароля, добавьте его в mynetworks точечно: один адрес, а не подсеть.
- Посмотрите журнал сервера: по строкам postfix/smtpd видно, была ли авторизация (sasl_username=) до RCPT TO.
- Не лечите отказ открытием релея для всех. Открытый релей быстро находят и используют для спама, и его IP попадает в чёрные списки.
Вопросы
454 4.7.1 или 554 5.7.1 — в чём разница?
Отказ один и тот же. С версии 2.10 Postfix по умолчанию использует defer_unauth_destination, который отвечает временным кодом 454 4.7.1, а reject_unauth_destination отвечает окончательным 554 5.7.1. Решение одинаковое.
Почему из офиса письма уходят, а с сервера нет?
Релей доверяет офисной сети по адресу (mynetworks), а серверу не доверяет. Настройте вход по логину и паролю вместо доверия по IP.
Значит, мой сервер — открытый релей?
Наоборот: этот ответ означает, что сервер отказывается им быть. Беспокоиться стоит, если тест снаружи без авторизации получает 250 на RCPT TO для чужого домена.