Коды ошибок 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: в журнале у каждого письма будет дословный ответ сервера получателя с кодом, а для частых ошибок — ссылка на разбор. Временные отказы очередь повторяет сама, а о постоянных ваше приложение узнаёт вебхуком.