Коды ошибок SMTP: справочник с расшифровкой (421, 450, 451, 452, 535, 550, 552, 553, 554)

Коды ошибок SMTP: справочник с расшифровкой (421, 450, 451, 452, 535, 550, 552, 553, 554)

SMTP-ошибка — это ответ почтового сервера с кодом из трёх цифр, например 550 или 421. Первая цифра определяет, что делать дальше: 4xx означает временную ошибку, и письмо нужно отправить повторно позже; 5xx — постоянную, и повтор без исправлений не поможет. За базовым кодом часто следует расширенный код вида 5.7.1, который уточняет причину: адрес, ящик, сеть или политика безопасности.

Ниже — справочник базовых кодов по RFC 5321, разбор девяти самых частых ошибок, таблица расширенных кодов по RFC 3463 и отдельный раздел про ошибки соединения, когда сервер не отвечает вовсе. Для конкретных ответов Gmail, Яндекса, Mail.ru, Outlook и iCloud есть страницы с разбором в справочнике ошибок доставки.

Как устроен ответ SMTP-сервера

Ответ состоит из трёх частей:

550 5.1.1 <ivan@example.com>: Recipient address rejected: User unknown
│   │     └── текст для человека, его пишет администратор сервера
│   └──────── расширенный код (RFC 3463): класс.тема.деталь
└──────────── базовый код (RFC 5321)

Если ответ занимает несколько строк, между кодом и текстом стоит дефис, а в последней строке — пробел. Так отвечает, например, Gmail:

550-5.7.26 Unauthenticated email from example.ru is not accepted due to
550-5.7.26 domain's DMARC policy. Please contact the administrator of
550 5.7.26 example.ru domain if this was a legitimate mail.

Прежде чем искать причину, определите, кто ответил. Ошибки SMTP-сервера появляются в двух местах:

  • При отправке, когда ваше приложение или почтовая программа подключается к своему SMTP-серверу. Здесь типичны 535 (неверный логин или пароль), 530 (нужна авторизация), 554 Relay access denied, ошибки соединения.
  • При доставке, когда ваш сервер передаёт письмо серверу получателя. Здесь встречаются 550 5.1.1, 550 5.7.1, 421 4.7.0 и всё, что связано с адресом, спамом и репутацией. Такие ошибки приходят уведомлением о недоставке или видны в журнале сервиса отправки.

Первая цифра: что можно повторять

Код Значение Что делать
2xx успех ничего, команда выполнена
3xx сервер ждёт продолжения продолжать диалог (например, после 354 передать текст письма)
4xx временная ошибка повторить позже, с растущим интервалом
5xx постоянная ошибка не повторять то же самое; исправить причину

RFC 5321 рекомендует повторять отправку после временной ошибки не чаще чем раз в 30 минут и прекращать попытки не раньше чем через 4–5 дней. Почтовые серверы и сервисы отправки делают это сами, а в своём коде достаточно экспоненциально растущей паузы между попытками.

Справочник базовых кодов SMTP

Код Расшифровка Когда встречается
220 сервер готов приветствие после подключения
221 сервер закрывает соединение ответ на QUIT
235 аутентификация прошла ответ на AUTH (RFC 4954)
250 команда выполнена основной ответ «всё хорошо», в том числе на принятое письмо
251 получатель не локальный, письмо будет переслано редко
354 начинайте передачу письма ответ на DATA
421 сервис недоступен, соединение закрывается перегрузка, ограничение темпа, обслуживание
450 ящик временно недоступен занят, грейлистинг, временная блокировка
451 локальная ошибка при обработке сбой на сервере, ограничение темпа
452 недостаточно места в системе нехватка места, слишком много получателей
454 временная ошибка аутентификации или TLS 454 4.7.0 (RFC 4954, RFC 3207)
500 синтаксическая ошибка, команда не распознана клиент отправил что-то не то
501 ошибка в параметрах команды неверный формат адреса
502 команда не реализована сервер не поддерживает команду
503 неверная последовательность команд RCPT до MAIL, AUTH без STARTTLS
504 параметр не реализован неподдерживаемый механизм AUTH
521 сервер вообще не принимает почту RFC 7504
530 требуется аутентификация или TLS 530 5.7.0 (RFC 4954, RFC 3207)
534 механизм аутентификации слишком слабый у Gmail — нужен пароль приложения
535 неверные учётные данные 535 5.7.8 (RFC 4954)
550 ящик недоступен, действие не выполнено нет адреса, отказ по политике или как спам
551 пользователь не локальный редко
552 превышен лимит хранения ящик переполнен, письмо слишком большое
553 недопустимое имя ящика неверный адрес отправителя или получателя
554 транзакция не удалась отказ по политике, нет SMTP-сервиса
556 домен не принимает почту RFC 7504, нулевой MX

Разбор частых ошибок

421: сервис недоступен

Сервер получателя закрывает соединение и просит повторить попытку позже. Причины: перегрузка, обслуживание и чаще всего ограничение темпа для вашего IP или домена. Примеры: 421 4.7.28 у Gmail при необычной интенсивности отправки (разбор), 421 4.7.0 [TS03] у Yahoo из-за объёма или жалоб (разбор), 421 4.7.500 Server busy у Outlook.com.

Что делать: повторить попытку с паузой и снизить темп. Если повторять с той же скоростью, временная задержка может перейти в постоянный отказ.

450: ящик временно недоступен

Сервер не может принять письмо прямо сейчас. Частая причина — грейлистинг: сервер намеренно отклоняет первую попытку от незнакомого отправителя и ждёт повтора, потому что спам-рассыльщики обычно не повторяют попыток. Нормальный почтовый сервер повторит отправку через несколько минут, и письмо пройдёт.

Что делать: ничего, если отправляет полноценный почтовый сервер или сервис. Если ваш скрипт отправляет письма напрямую и не умеет повторять, ошибка 450 обернётся потерянным письмом.

451: локальная ошибка при обработке

Сбой на стороне сервера или временное ограничение. Яндекс отвечает 451 4.7.1 Too many messages from your address при слишком высоком темпе (разбор). Mail.ru при отправке со своего ящика отвечает 451 Ratelimit exceeded for mailbox: вы превысили почасовой лимит отправки, и сервис временно ограничил ящик.

Что делать: повторить позже и снизить темп. Если ошибка 451 возникает при отправке с личного ящика Яндекса или Mail.ru из программы или с сайта, личный ящик не подходит для такого объёма: у Яндекса через SMTP можно отправить до 300 писем в сутки, у Mail.ru лимит почасовой.

452: недостаточно места или слишком много получателей

Две разные ситуации под одним кодом. 452 4.2.2 или 452 Space shortage — у получателя или на сервере не хватает места. 452 4.5.3 Too many recipients — в одном письме слишком много получателей: сервер принял первых и просит отправить остальных отдельным письмом.

Что делать: при нехватке места повторить позже, при избытке получателей разбить отправку. В FMailer предел — 100 получателей на письмо: на следующий адрес сервер ответит 452 4.5.3.

535: ошибка аутентификации SMTP

Сервер не принял логин или пароль. Стандартный ответ — 535 5.7.8 Authentication credentials invalid, у Gmail — 535-5.7.8 Username and Password not accepted. Это самая частая ошибка при настройке почты на сайте, в CMS или в 1С.

Частые причины:

  • опечатка в логине или пароле, лишний пробел при копировании;
  • вместо пароля приложения указан обычный пароль от аккаунта: Gmail, Яндекс и Mail.ru требуют пароль приложения для сторонних программ;
  • в поле логина указан адрес почты, а сервис ожидает отдельный логин;
  • клиент пробует механизм аутентификации, который сервер не поддерживает.

В FMailer логин и пароль — это пара из токена домена, а не адрес и пароль ящика. Полный разбор — на странице 535 5.7.8 Authentication failed. Рядом с 535 встречаются 530 5.7.0 Authentication required (клиент не выполнил AUTH) и 534 5.7.9 (у Gmail это означает, что нужен пароль приложения).

550: ящик недоступен или письмо отклонено

Самая частая постоянная ошибка, и под ней скрываются совсем разные причины. Различать их нужно по расширенному коду и тексту:

Ответ Причина Разбор
550 5.1.1 User unknown адреса не существует Gmail
550 5.2.1 … inactive ящик неактивен Gmail
550 … user is terminated ящик удалён Mail.ru
550 5.7.1 отказ по политике или как спам общий разбор, Яндекс
550 5.7.26 письмо не прошло DMARC Gmail
550 5.7.509 домен не проходит DMARC Microsoft
550 5.7.25 у IP нет корректной обратной DNS-записи Yahoo
550 5.7.1 (S3140) IP заблокирован Outlook.com

Что делать: при 5.1.x и 5.2.1 исключить адрес из рассылок, при 5.7.x разбираться с отправителем, а не с адресом: проверить SPF, DKIM и DMARC, обратную DNS-запись IP, репутацию домена.

552: превышен лимит хранения

552 5.2.2 — у получателя переполнен ящик (разбор). 552 5.3.4 Message size exceeds fixed limit — письмо больше, чем сервер готов принять.

Нюанс из RFC 5321: исторически некоторые серверы отвечали 552 на слишком большое число получателей. Стандарт требует для этого 452 и советует клиентам считать 552 в ответ на RCPT временной ошибкой.

553: недопустимый адрес

Сервер не принимает адрес в команде MAIL FROM или RCPT TO. Типичный пример — 553 5.7.1 Sender address rejected: not owned by user: вы авторизовались одной учётной записью, а отправляете от адреса, который ей не принадлежит. Ещё 553 возвращают на синтаксически неверный адрес.

Что делать: отправлять от адреса на том домене, к которому относятся учётные данные. В FMailer адрес в поле From должен принадлежать подтверждённому домену: письмо с чужого домена сервер отклонит.

554: транзакция не удалась

Общий постоянный отказ, чаще всего по политике. Примеры:

  • 554 5.7.1 Relay access denied — сервер отказывается пересылать письмо на чужой домен без авторизации (разбор);
  • 554 5.7.1 [CS01] и [HM08] у iCloud — отказ по локальной политике (разбор CS01);
  • 554 5.7.2 [TSS09] у Yahoo — все письма с вашего IP будут отклоняться (разбор);
  • 554 в приветствии сразу после подключения — сервер не принимает от вас соединения вообще, обычно из-за чёрного списка.

Расширенные коды SMTP (RFC 3463)

Расширенный код записывается как класс.тема.деталь. Класс повторяет смысл первой цифры базового кода.

Класс Значение
2.x.x успех
4.x.x временная ошибка, повторить позже
5.x.x постоянная ошибка

Тема (вторая цифра) показывает, где проблема:

Тема Область Пример
x.0.x прочее, не определено 5.0.0
x.1.x адрес отправителя или получателя 5.1.1 нет такого ящика
x.2.x почтовый ящик 5.2.2 ящик переполнен
x.3.x почтовая система получателя 5.3.4 письмо слишком большое
x.4.x сеть и маршрутизация 4.4.1 нет ответа от сервера
x.5.x протокол доставки 4.5.3 слишком много получателей
x.6.x содержимое и кодировки 5.6.0 неверный формат содержимого
x.7.x безопасность и политика 5.7.1 доставка не разрешена

Самые частые полные коды:

Код Расшифровка Повторять?
5.1.1 адреса получателя не существует нет
5.1.2 домена получателя не существует нет
5.1.10 у домена получателя нулевой MX, почту он не принимает нет
5.2.1 ящик отключён нет
4.2.2 / 5.2.2 ящик переполнен временный — да, постоянный — нет
5.3.4 письмо слишком большое нет, уменьшить письмо
4.4.1 сервер получателя не отвечает да
5.4.7 истёк срок доставки (4.4.7 — промежуточное уведомление о задержке) нет, причина в предыдущих временных ошибках
4.5.3 слишком много получателей да, остальным отдельным письмом
4.7.0 / 5.7.0 прочие ошибки безопасности 4.7.0 — да, с паузой
5.7.1 доставка не разрешена, отказ по политике нет, исправлять отправителя
5.7.8 неверные учётные данные нет, исправить логин или пароль
5.7.9 механизм аутентификации слишком слабый нет
5.7.23 проверка SPF не прошла нет, исправить SPF
5.7.25 проверка обратной DNS не прошла нет, исправить PTR
5.7.26 не прошли несколько проверок аутентификации (на практике DMARC) нет, исправить SPF, DKIM, DMARC

Коды 5.7.20–5.7.26, связанные с SPF, DKIM и обратной DNS, добавлены в RFC 7372, а 5.7.8 и 5.7.9 — в RFC 4954.

Ошибка соединения с SMTP-сервером: когда кода нет

Иногда программа сообщает не код, а «Connection timed out», «Connection refused» или «Could not connect to SMTP host». Это значит, что SMTP-диалог даже не начался.

Симптом Вероятная причина
Connection timed out порт закрыт межсетевым экраном или хостингом
Connection refused на этом порту никто не слушает, неверный порт или хост
ошибка TLS, wrong version number на порту 465 включён STARTTLS вместо SSL или наоборот
Name or service not known опечатка в имени сервера, проблемы с DNS

Чаще всего виноват хостинг: многие хостинги и облачные провайдеры закрывают исходящий порт 25, а иногда ещё 587 и 465. Проверить, отвечает ли сервер, можно командой из консоли сервера, с которого отправляете:

openssl s_client -starttls smtp -crlf -connect smtp.fmailer.ru:587

Или без консоли — проверкой SMTP-сервера, которая покажет приветствие, поддержку STARTTLS и время ответа. Если стандартные порты закрыты, у FMailer есть дублирующие: 8587 для STARTTLS, 8465 для SSL/TLS и 8025 без шифрования. Полные параметры — в документации по SMTP.

Для ошибок доставки, когда у домена получателя нет почтового сервера или сервер недоступен, есть отдельные разборы: нет MX-записи и Connection refused при доставке.

Частые ошибки

Повторять 5xx в цикле. Постоянный отказ на тот же адрес повторится, а для принимающего сервера настойчивость похожа на поведение спамера.

Не повторять 4xx. Скрипт, который отправляет письмо напрямую один раз, теряет всё, что отклонил грейлистинг или ограничение темпа.

Повторять 421 с прежней скоростью. Ограничение темпа снимается, только если темп действительно снизился. Иначе временная задержка становится блокировкой.

Разбирать ответы по тексту. Текст у каждого сервера свой и меняется. Опирайтесь на базовый и расширенный код, а текст используйте для уточнения.

Удалять адрес при 5.7.x. Это отказ вашему домену или IP, а не проблема получателя. Исправлять нужно аутентификацию и репутацию.

Путать порт и режим шифрования. На порту 465 соединение шифруется сразу (SSL/TLS), на 587 — после команды STARTTLS. Перепутанный режим даёт ошибку соединения, которую легко принять за закрытый порт.

Частые вопросы

Чем 4xx отличается от 5xx?

4xx — временная ошибка: сервер просит повторить позже, и через несколько минут или часов письмо, скорее всего, пройдёт. 5xx — постоянная: тот же запрос даст тот же ответ, пока вы не исправите причину.

Что значит SMTP-ошибка 550?

Сервер отказался принять письмо окончательно. Причину уточняет расширенный код: 5.1.1 означает, что такого адреса нет, 5.7.1 — отказ по политике или как спам, 5.7.26 — письмо не прошло DMARC. Без расширенного кода смотрите текст ответа.

Что делать, если при настройке SMTP появляется ошибка 535?

Проверьте логин и пароль, создайте пароль приложения, если отправляете через Gmail, Яндекс или Mail.ru, и убедитесь, что в поле логина указано именно то, что ожидает сервис. Если подключаетесь к сервису отправки, логин и пароль обычно выдаются отдельно и не совпадают с адресом отправителя.

Почему письмо отклонено с кодом 554 сразу после подключения?

Сервер не принимает соединения с вашего IP. Обычно IP находится в чёрном списке или у него нет корректной обратной DNS-записи. На общем хостинге это часто проблема соседей по IP, и выход — отправлять через сервис с собственной репутацией.

Сколько времени повторять отправку после 4xx?

RFC 5321 рекомендует интервал не меньше 30 минут и общий срок не меньше 4–5 дней. На практике почтовые серверы начинают с нескольких минут и увеличивают паузу. Если после суток попыток ошибка та же, разбирайтесь с причиной.

Как узнать, какой сервер вернул ошибку?

В уведомлении о недоставке ищите строку с именем хоста (host mx.example.com said: или Remote-MTA). Если ошибка пришла при отправке из вашей программы, ответил ваш SMTP-сервер. Если в уведомлении указан сервер получателя, отказал он.

Итог

Код SMTP-ошибки читается в три шага: первая цифра решает, повторять ли отправку, расширенный код показывает область проблемы, текст уточняет детали. Ошибки 4xx лечатся паузой и снижением темпа, 535 и 553 — правильными учётными данными и адресом отправителя, 550 и 554 с классом 5.7 — аутентификацией и репутацией домена. Ошибки соединения без кода почти всегда означают закрытый порт или неверный режим шифрования.

Попробовать FMailer

Подключите домен на fmailer.ru: в журнале у каждого письма будет дословный ответ сервера получателя с кодом, а для частых ошибок — ссылка на разбор. Временные отказы очередь повторяет сама, а о постоянных ваше приложение узнаёт вебхуком.

Подключить домен на fmailer.ru →