Коды ошибок доставки писем: что означают 550, 552 и 421 и чем 4xx отличается от 5xx

Коды ошибок доставки писем: что означают 550, 552 и 421 и чем 4xx отличается от 5xx

Коды ошибок доставки писем: что означают 550, 552 и 421 и чем 4xx отличается от 5xx

Рассылка ушла в девять утра, а через минуту в ящик отправителя посыпались письма от чужих серверов: «Undelivered Mail Returned to Sender», «Delivery Status Notification (Failure)». Сорок с лишним штук. Обычная реакция — выделить всё и удалить. Напрасно: каждое такое письмо — машиночитаемый диагноз. Сервер получателя объяснил, что пошло не так и есть ли смысл пробовать снова. Надо лишь знать, где в этом диагнозе искать суть.

Первая цифра решает всё: 4xx против 5xx

Почтовый протокол SMTP отвечает трёхзначными кодами, и главная логика зашита в первую цифру.

  • 4xx — временный отказ. «Сейчас не могу, попробуй позже». Отправляющая сторона кладёт письмо в очередь и сама повторяет попытки с растущими интервалами, обычно в течение нескольких суток. От вас не требуется ничего.
  • 5xx — постоянный отказ. «Не могу и не смогу». Повторов не будет: письмо недоставлено окончательно, отправителю уходит отчёт.

Отсюда простое правило: 4xx — это ожидание, 5xx — это работа. Постоянный отказ требует реакции сразу, но реакция эта почти никогда не заключается в кнопке «отправить ещё раз». По сути перед вами то же деление, что и между жёстким и мягким отказом доставки, только выраженное языком самого протокола.

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

Трёхзначный код — только заголовок диагноза

Кодов вида 550 или 421 мало: они слишком общие. Настоящая информация — в расширенном коде статуса, три числа через точку, например 5.1.1. Первое — тот же класс (4 — временно, 5 — постоянно), второе указывает на подсистему (адресация, ящик, сеть, политика), третье уточняет причину.

5.1.1 — такого ящика не существует

Самый частый постоянный отказ и самый недооценённый. Домен почту принимает, но локальной части перед «собакой» у него нет: адрес закрыт, сотрудник уволился или ящика вообще никогда не было — опечатка, выдуманный адрес в форме, купленная база. Это проблема не отправки, а данных, и чинится она до рассылки: подтверждением адреса при регистрации и регулярной чисткой списка. Повторная отправка на 5.1.1 не даст ничего никогда.

5.2.2 и 4.2.2 — ящик переполнен

Квота получателя исчерпана. Разница в первой цифре принципиальная: 4.2.2 вернут, если готовы принять письмо позже, 5.2.2 — если сдались окончательно. Переполненный ящик почти всегда значит, что им давно не пользуются, поэтому 5.2.2 — повод исключить адрес, а не техническая случайность.

5.7.1 — вас не пустили по политике

Класс 5.7.x — это безопасность и правила. Письмо отклонено не потому, что адресата нет, а потому, что принимающая сторона не захотела принимать его именно от вас: не сошлась аутентификация SPF, DKIM или DMARC, IP попал в чёрный список, домен молодой и без истории, содержимое сочли рекламным. Это репутационная ошибка, и повторные попытки делают только хуже: каждый новый отказ подтверждает фильтру, что источник настойчив и подозрителен. Помогает не повтор, а разбор причин, по которым письма попадают в спам, — техническая часть у этих проблем общая.

4.7.x — грейлистинг и ограничение скорости

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

421 — сервер перегружен или разрывает соединение

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

552 и 550 — размер и «просто отказ»

552 означает превышение лимита — чаще всего слишком тяжёлое вложение. Помните, что вложения кодируются в текст и растут примерно на треть, поэтому файл, который кажется меньше лимита, легко в него упирается. Решение — ссылка вместо вложения. А 550 — самый общий постоянный отказ: под ним скрывается и несуществующий ящик, и блокировка по репутации, и запрет принимать почту извне. Само по себе число 550 не говорит почти ничего.

Где в отчёте лежит настоящий код

Вежливая фраза в начале отчёта («Ваше сообщение не удалось доставить одному или нескольким получателям») написана для человека и информации не несёт. Техническая часть — ниже, в служебном блоке. Смотреть надо на четыре поля:

  • Final-Recipient — адрес, на котором всё сломалось.
  • Actionfailed (окончательно), delayed (задержано, попытки продолжаются) или delivered.
  • Status — тот самый расширенный код вида 5.1.1.
  • Diagnostic-Code — дословный ответ чужого сервера. Здесь самое ценное: текст пояснения и нередко ссылка на страницу с описанием причины блокировки.

Если клиент показывает отчёт без этих строк, откройте исходный текст сообщения («показать оригинал») — блок никуда не делся, он просто спрятан как техническое вложение.

Что делать с каждым классом

  1. 4xx любого вида. Ничего. Дать очереди отработать. Если через двое-трое суток адрес всё ещё отбивается, разбираться как с постоянной ошибкой.
  2. 5.1.1 и другие «нет такого адреса». Исключить адрес из базы навсегда и найти источник мусора: форма без подтверждения, ручной ввод, импорт старого списка.
  3. 5.2.2. Пометить адрес как неактивный, при необходимости связаться с человеком другим каналом.
  4. 5.7.x. Не повторять. Проверить SPF, DKIM и DMARC, посмотреть, не в чёрных списках ли IP, снизить объёмы.
  5. 552. Убрать вложение, отдать файл ссылкой.

Две ошибки, которые дорого стоят

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

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

Сколько раз сервер повторяет попытку при ошибке 4xx?

Точное расписание задаёт отправляющий сервер, а не стандарт. Типичная схема — первые попытки через несколько минут, дальше интервал растёт, а общее время жизни письма в очереди составляет несколько суток. Всё это время могут приходить промежуточные уведомления о задержке — это не отказ, а информация.

Почему письмо на существующий адрес вернулось с кодом 550?

Потому что 550 — общий постоянный отказ, а не синоним «адреса нет». За ним часто стоит политика приёма: блокировка по репутации, непройденная проверка DMARC, запрет принимать почту извне. Ответ даёт расширенный код: если там 5.7.1, дело в правилах, а не в адресате.

Можно ли считать отказ 4.7.x нормой?

Для единичных писем — да, грейлистинг встречается постоянно и снимается автоматически при повторной попытке. Тревожно, когда 4.7.x приходит массово с одного и того же принимающего домена: это похоже на ограничение скорости или на реакцию на репутацию. Тогда стоит снизить темп отправки и проверить аутентификацию домена.

Теги:
#коды ошибок SMTP # отчёт о недоставке # ошибка 550 # ошибка 421 # жёсткий отказ # доставляемость писем # валидация email