◇ Delivery failures

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, и письмо выглядит как пересылка.

Что делать

  1. Включите авторизацию в клиенте и отправляйте на порт 587 (STARTTLS) или 465 (SSL/TLS) с логином и паролем.
  2. Если сервер ваш и должен принимать эту почту, проверьте, есть ли домен получателя в mydestination, relay_domains или virtual_mailbox_domains.
  3. Если внутреннему хосту нужно отправлять без пароля, добавьте его в mynetworks точечно: один адрес, а не подсеть.
  4. Посмотрите журнал сервера: по строкам postfix/smtpd видно, была ли авторизация (sasl_username=) до RCPT TO.
  5. Не лечите отказ открытием релея для всех. Открытый релей быстро находят и используют для спама, и его 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 для чужого домена.

Другие ошибки Delivery failures

Другие провайдеры