uCheckeruChecker

SMTP-коды ответов: справочник с разбором

Марк АвриловОпубликовано обновлено

SMTP-коды ответов — трёхзначные числа, которые почтовый сервер возвращает после каждой команды клиента. Код сообщает, была ли команда выполнена, требуются ли дополнительные данные, произошла ли ошибка и какого характера. Для любого, кто занимается отправкой email, понимание этих кодов обязательный навык. Они объясняют, почему письмо не доставлено, задержано или отклонено.

Структура трёхзначного кода

Базовые коды определены в RFC 5321, коды аутентификации 235 и 334 добавлены расширением AUTH (RFC 4954). Первая цифра задаёт класс ответа:

  • 2xx — успех. Команда принята и выполнена. Можно продолжать.
  • 3xx — промежуточный ответ. Сервер ожидает дополнительных данных от клиента.
  • 4xx — временная ошибка. Команда не выполнена, но проблема может исчезнуть. Стоит повторить через некоторое время.
  • 5xx — постоянная ошибка. Повторять бессмысленно. Нужно устранять причину.

Вторая цифра указывает категорию: 0 отвечает за синтаксис, 1 за информацию, 2 за соединение, 5 за почтовую систему. Третья цифра детализирует конкретную ситуацию внутри категории.

Коды 2xx: успех

  • 220. Сервер готов принять соединение. Первый ответ при подключении к SMTP-порту. Обычно включает имя хоста и версию ПО.
  • 221. Сервер закрывает соединение. Штатный ответ на команду QUIT.
  • 235. Аутентификация прошла успешно. Возвращается после передачи корректных учётных данных через AUTH.
  • 250. Команда выполнена. Самый частый код. Возвращается после EHLO, MAIL FROM, RCPT TO (если адрес принят), завершения DATA. При валидации email код 250 на RCPT TO означает, что сервер готов принять письмо на указанный адрес.
  • 251. Получатель не локальный, но сервер примет и перешлёт (forwarding).
  • 252. Сервер не может проверить пользователя, но попробует доставить. Часто встречается на серверах, скрывающих информацию о существовании ящиков.

Коды 3xx: промежуточные

  • 334. Сервер ожидает продолжения аутентификации. При AUTH LOGIN сервер запрашивает поочерёдно логин (base64) и пароль (base64).
  • 354. Сервер готов принять тело письма. Ответ на команду DATA. Клиент начинает передачу заголовков и тела, завершая строкой, содержащей только точку.

Коды 4xx: временные ошибки

Временные ошибки (soft bounce) означают, что доставка может пройти при повторной попытке. MTA помещает письмо в очередь и пробует снова через нарастающие интервалы.

  • 421. Сервер временно недоступен. Причины: перезагрузка, обслуживание, слишком много одновременных подключений, rate limiting.
  • 450. Ящик недоступен. Частая причина в greylisting, когда сервер намеренно отклоняет первое соединение от незнакомого отправителя, ожидая повторной попытки через 5-15 минут.
  • 451. Ошибка обработки на стороне сервера. Внутренний сбой, проблема с фильтрацией, ошибка DNS-запроса. Повторить позже.
  • 452. Недостаточно ресурсов. Ящик переполнен или на сервере закончилось дисковое пространство.
  • 455. Сервер не может принять параметры. Используется реже, обычно при проблемах с расширениями ESMTP.

Коды 5xx: постоянные ошибки

Постоянные ошибки (hard bounce) означают, что повторная попытка не поможет. Адрес нужно удалить из базы или исправить проблему на стороне отправителя.

  • 550. Ящик не существует или недоступен. Самый частый код bounce. Также возвращается при блокировке по политике: «550 Message rejected due to DMARC policy» или «550 High spam score».
  • 551. Получатель не локальный, пересылка не предусмотрена.
  • 552. Превышен лимит хранилища получателя. Хотя код из класса 5xx, по RFC 3463 переполненный ящик считается длительной временной проблемой (4.2.2): владелец может освободить место.
  • 553. Недопустимый формат адреса. Синтаксическая ошибка в имени получателя.
  • 554. Транзакция отклонена. Общий код отказа. Часто сопровождается пояснением: «554 Your IP is blacklisted», «554 Rejected by content filter».

Расширенные коды (Enhanced Status Codes)

RFC 3463 дополнил базовые трёхзначные коды расширенными в формате X.Y.Z. Они передаются в текстовой части ответа и дают детализированную информацию:

  • 5.1.1. Адрес получателя не существует. Классический hard bounce.
  • 5.1.2. Домен получателя не существует. Нет MX и A-записей.
  • 5.2.2. Ящик переполнен. Хотя код из класса 5, по RFC 3463 переполнение считается длительной временной проблемой (4.2.2): владелец может освободить место.
  • 5.7.1. Отклонено по политике безопасности (SPF, DKIM, DMARC, content filter).
  • 5.7.26. Не пройдено несколько проверок аутентификации (RFC 7372); Gmail возвращает его в том числе при провале DMARC.
  • 4.7.1. Временный отказ по подозрению в спаме. Повторная попытка может пройти, если IP не в чёрном списке.
  • 4.2.1. Ящик временно отключён или заблокирован.

Текстовая часть ответа

Помимо числового кода, сервер возвращает текстовое пояснение. Формат не стандартизирован, каждый MTA формулирует по-своему. Примеры:

  • 550 5.1.1 The email account that you tried to reach does not exist (Gmail)
  • 550 Requested action not taken: mailbox unavailable (общий)
  • 421 4.7.0 Try again later, closing connection (Yahoo)
  • 554 5.7.1 Service unavailable; Client host blocked (Outlook)

Текстовая часть содержит ценную информацию для диагностики. При разборе bounce-уведомлений анализируйте и числовой код, и текст.

SMTP-коды и валидация email

При SMTP-верификации адресов валидатор подключается к MX-серверу, отправляет EHLO, MAIL FROM и RCPT TO, но не передаёт тело письма. По коду ответа на RCPT TO определяется статус адреса:

  • 250 — сервер готов принять письмо. Адрес, скорее всего, существует.
  • 550 — ящик не найден. Адрес невалиден.
  • 450/451 — временный отказ. Требуется повторная проверка.
  • Код 252 приходит в ответ на VRFY, а не на RCPT TO: сервер не подтверждает ящик, но готов принять письмо.

Коды не всегда надёжны. Catch-all домены возвращают 250 на любой адрес. Некоторые серверы принимают на RCPT TO, но генерируют bounce после DATA. Профессиональные валидаторы используют SMTP-ответы как один из сигналов в комплексной проверке.

uChecker разбирает SMTP-коды ответов вместе с DNS-проверками и состоянием MX-серверов домена. В результатах остаётся и сам ответ сервера целиком: по нему видно, ящик удалён, переполнен или домен вообще не принимает почту.

Источники

SMTP-кодыbounceкоды ответовдиагностикадоставляемостьИнфраструктура
← Глоссарий

Марк Аврилов · Автор материала

Опубликовано Обновлено