#Симптомы и область применимости
Письмо принято Postfix для отправки, но не дошло адресату: в очереди оно имеет состояние deferred, а сервер в целом отвечает по сети. Не очищайте очередь: текст причины возле конкретного письма обычно позволяет точно определить сбой.
#Причины и диагностические признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Временный отказ удалённого SMTPПринимающая сторона предлагает повторить позднее; Postfix сохраняет письмо. | Статус 4xx, greylisting или слишком много соединений | Читайте диагностическую строку получателя. |
| Ошибка DNS или маршрутаСервер не находит MX или не может соединиться с ним по TCP 25. | В deferred упомянуты name lookup, timeout, network unreachable | Проверяйте DNS и исходящий маршрут отдельно. |
| Проблема TLS или шлюзаПараметры исходящего шлюза не соответствуют его политике. | В журнале встречается TLS handshake, SASL или relay access denied | Сверьте relayhost, защищённый порт и учётные данные. |
#Пошаговая диагностика и исправление
- 1. Уточните момент, когда письмо застрялоПопросите отправителя прислать время отправки, адрес получателя и при наличии идентификатор сообщения. Установите, не находится ли письмо в «Исходящих» клиента до передачи Postfix. Откройте журналы сервера в тот же интервал, чтобы не анализировать чужую задержанную почту.
- 2. Просмотрите очередь только на чтениеНа Linux-сервере Postfix запустите postqueue -p, затем найдите нужный ID по получателю и времени. В выводе у отложенного сообщения часто уже есть причина. Если очередь пустая, ищите успешную передачу на следующий сервер или отклонение до постановки в очередь.Linux · Терминал (Bash)КомандаНужен sudoТолько просмотр; не используйте postsuper -d и postqueue -f для массовых действий без анализа.
sudo postqueue -p
- 3. Сравните отказ с журналом выбранного IDВыберите один ID из очереди и найдите связанные записи в journalctl или /var/log/mail.log. Различайте 4xx — временную задержку и 5xx — окончательный отказ; не считайте любой 5xx поводом ослаблять антиспам-защиту. Сохраняйте текст ответа удалённого сервера без персональных данных.
- 4. Проверьте MX получателя и резолверНа сервере выполните запрос MX указанного домена и попробуйте разрешить A/AAAA выбранного хоста. При пустом MX действует особая логика доставки по адресу домена; отдельная запись null MX означает отказ от приёма почты. Не меняйте DNS своего домена ради неисправного адресата.
- Установленная утилита dig; замените домен адресата и не включайте @Linux · Терминал (Bash)КомандаУстановленная утилита dig; замените домен адресата и не включайте @. Только чтение.
dig MX recipient.example +short
- 5. Проверьте исходящий TCP 25 или шлюзЕсли используется прямое соединение с MX, убедитесь, что сетевые правила провайдера разрешают исходящие подключения к TCP 25. Если задан relayhost, проверяйте фактический его порт — нередко 587. Успех ping не доказывает работоспособность SMTP.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаPostfix, без изменения настроек; пустой вывод обычно означает отсутствие явно заданного шлюза.
postconf -h relayhost
- 6. Отделите блокировку от перегрузки получателяПри 421, 450, 451, 452 проверьте частоту сообщений, лимиты очереди и статус принимающей стороны. Не запускайте многократные принудительные повторы — они могут ухудшить репутацию отправителя и усилить отказ. При повторяющемся 4xx подготовьте обращение к почтовому администратору получателя.
- 7. Для ошибок аутентификации проверьте только соответствующий шлюзЕсли relayhost отвечает SASL authentication failed, проверьте настроенный пароль, имя пользователя и схему TLS. Не показывайте содержимое sasl_passwd в открытом отчёте и не отправляйте пароль в письме. Если пароль менялся, обновите соответствующую защищённую карту только после резервной копии.
- 8. Дождитесь штатной повторной попыткиПосле устранения DNS, сети или авторизации проследите за одним письмом по ID через журнал и повторный postqueue -p. Postfix сам переотправляет временно отложенные письма по расписанию. Если нужно ускорение, согласуйте точечную операцию с администратором, но не удаляйте содержимое очереди ради очистки показателей.
#Как убедиться, что проблема устранена
Выбранный ID исчезает из очереди по причине успешной передачи (status=sent в журнале), а получатель подтверждает доставку в ящик или спам. Статус sent означает передачу следующему серверу, а не гарантированное появление во «Входящих».
#Если проблема осталась
Если очередь продолжает расти, сохраните несколько разных причин deferred: ограничения получателя, проблемы DNS и отказ шлюза требуют разных исправлений. При подозрении на массовую рассылку проверьте происхождение писем до любого массового повтора.