Кодов: 117 из 117
Базовые коды ответа
Состояние системы или справочный ответ системы. На практике используется редко.
Справочное сообщение в ответ на команду HELP со сведениями о работе с сервером или с конкретной командой.
Приветствие сервера при открытии соединения: сервис готов. Также отправляется в ответ на STARTTLS и означает, что можно начинать согласование TLS.
Сервер закрывает соединение, обычно в ответ на команду QUIT.
Аутентификация через AUTH прошла успешно. Обычно сопровождается расширенным кодом 2.7.0.
Запрошенное действие выполнено. Стандартный ответ на EHLO, MAIL FROM, RCPT TO и на завершение DATA, когда сервер принимает сообщение.
Получатель не локальный, но сервер принимает сообщение и перешлёт его по указанному адресу.
Сервер не подтверждает, существует ли пользователь (VRFY отключён, чтобы не допустить перебора учётных записей), но примет сообщение и попытается его доставить.
Ответ на ETRN: сервер начал доставку сообщений, стоявших в очереди для запрошенного домена или узла.
Запрос (challenge) сервера во время AUTH, закодированный в Base64. Клиент должен ответить следующими данными механизма (например, именем пользователя или паролем в AUTH LOGIN).
Ответ на DATA: сервер ожидает содержимое сообщения, которое завершается строкой, состоящей из одной точки.
Сервис недоступен, и сервер закрывает соединение: выключение, перегрузка, слишком много соединений или временный лимит отправки. Отправитель должен повторить попытку позже.
Пользователь должен сменить пароль или перейти на другой механизм аутентификации, прежде чем сможет пройти аутентификацию. Сопровождается расширенным кодом 4.7.12.
Почтовый ящик временно недоступен: занят, заблокирован или временно отклонён политикой. При грейлистинге обычно возвращается этот код или 451.
Действие прервано из-за локальной ошибки сервера, например сбоя DNS-запроса или неответившего фильтра. Отправитель должен повторить попытку позже.
Серверу сейчас не хватает места, чтобы принять сообщение. Также означает, что превышено число получателей в одном сообщении: остальных клиент должен отправить в другой транзакции.
Временный сбой аутентификации (например, не отвечает сервер учётных данных) или TLS временно недоступен при запросе STARTTLS.
Сервер сейчас не может обработать параметры, переданные в MAIL FROM или RCPT TO, но, возможно, примет их позже.
Ответ на ETRN: сервер сейчас не может обработать очередь сообщений запрошенного узла.
Ответ на ETRN: запрошенному узлу или домену не разрешено запрашивать доставку своей очереди.
Сервер не распознаёт команду или строка слишком длинная. Также используется в AUTH, когда строка обмена превышает допустимую длину.
Команда допустима, но её параметры или аргументы — нет: например, неправильно сформированный адрес в MAIL FROM или недопустимое имя в EHLO.
Сервер распознаёт команду, но не реализует её или она отключена — как VRFY или EXPN на многих серверах.
Неверная последовательность команд, например RCPT TO до MAIL FROM или DATA без допустимых получателей. Некоторые серверы возвращают этот код при попытке отправки без аутентификации.
Сервер не поддерживает указанный параметр, например механизм AUTH, который он не реализует.
Хост вообще не принимает почту. Отправляется в качестве приветствия вместо 220; клиент не должен повторять попытку.
Сервер требует пройти аутентификацию или включить TLS через STARTTLS, прежде чем принять команду. Типично при использовании порта отправки 587 без учётных данных.
Выбранный механизм аутентификации слишком слаб согласно политике сервера. Некоторые провайдеры возвращают этот код, когда требуют пароли приложений или OAuth.
Неверное имя пользователя или пароль либо учётные данные отклонены. Сопровождается расширенным кодом 5.7.8.
Выбранный механизм аутентификации разрешён только через зашифрованное соединение: сначала нужно выполнить STARTTLS.
Почтовый ящик не существует или недоступен либо сообщение отклонено политикой (спам, чёрные списки, SPF, DKIM или DMARC). Конкретную причину указывает сопутствующий расширенный код.
Получатель не локальный, и сервер не пересылает сообщение; он может указать, на какой адрес его отправить.
Превышен выделенный объём: ящик получателя переполнен или сообщение превышает максимальный размер, объявленный расширением SIZE.
Адрес электронной почты недопустим или не разрешён, например из-за неверного синтаксиса или потому, что отправителю нельзя использовать этот адрес.
Транзакция не удалась. В качестве приветствия означает, что для этого клиента нет SMTP-сервиса; после DATA — что сообщение отклонено, часто из-за содержимого или репутации отправителя.
Сервер не распознаёт или не реализует параметр расширения, переданный в MAIL FROM или RCPT TO.
Домен получателя публикует null MX (запись MX, указывающую на «.»): он заявляет, что не принимает почту, поэтому повторять попытки бессмысленно.
Расширенные коды состояния (RFC 3463)
Состояние без уточнений: используется, когда известен только класс результата (успех, временный или постоянный сбой).
Проблема с одним из адресов сообщения, которая не подпадает под более конкретные коды.
Почтовый ящик получателя не существует на целевом сервере. Классический возврат из-за опечатки в адресе или удалённой учётной записи.
Целевой домен или система не существует или не может принимать почту, например потому что имя домена не разрешается.
Адрес получателя имеет недопустимый синтаксис.
Адрес получателя соответствует нескольким почтовым ящикам в целевой системе.
Адрес получателя действителен. Встречается как 2.1.5 в положительном ответе на RCPT TO.
Почтовый ящик существовал, но был перемещён, и адрес для пересылки неизвестен.
Адрес отправителя имеет недопустимый синтаксис.
Домен отправителя не существует или не принимает ответы, например потому что у него нет ни записей MX, ни A.
Сообщение передано в систему, которая не поддерживает уведомления о статусе доставки, поэтому подтвердить окончательную доставку не удастся.
Домен получателя публикует null MX: он заявляет, что не принимает почту.
Почтовый ящик существует, но доставке помешала связанная с ним проблема, для которой нет более конкретного кода.
Почтовый ящик существует, но отключён и не принимает сообщения — например, учётная запись заблокирована.
Почтовый ящик получателя превысил квоту хранилища.
Сообщение превышает максимальный размер, который разрешено получать этому получателю.
Получатель — список рассылки, и его не удалось развернуть в список участников.
В целевой системе возникла проблема, которая не подпадает под более конкретные коды.
Хранилище целевой почтовой системы заполнено.
Целевой хост не принимает сообщения из-за предстоящего выключения, перегрузки или обслуживания.
Целевая система не поддерживает функцию, которая требуется для сообщения.
Сообщение превышает максимальный размер, который сервер принимает для любого получателя.
Целевая система неправильно настроена и не может принять сообщение.
Сообщение принято, но с приоритетом, отличным от запрошенного (расширение MT-PRIORITY).
Возникла проблема сети или маршрутизации, которая не подпадает под более конкретные коды.
Целевой сервер не ответил на попытку подключения.
Соединение было установлено, но оборвалось или стало нестабильным до завершения доставки.
Сбой службы каталогов, необходимой для доставки, — как правило, разрешения имён DNS.
Не найден маршрут к месту назначения, например потому что у домена нет пригодных записей MX или A.
Почтовая система перегружена и сейчас не может обработать сообщение.
Обнаружена петля маршрутизации: сообщение слишком много раз прошло через одни и те же серверы.
Истёк максимальный срок повторных попыток, и сообщение удаляется недоставленным.
Возникла проблема протокола доставки, которая не подпадает под более конкретные коды.
Команда недопустима, не разрешена в данный момент или не распознана.
В команде синтаксическая ошибка, и сервер не может её разобрать.
У сообщения больше получателей, чем сервер принимает в одной транзакции.
Команда допустима, но её аргументы недопустимы или не поддерживаются.
Версии протокола клиента и сервера несовместимы.
Строка обмена AUTH превышает максимальную длину, допустимую сервером.
Возникла проблема с содержимым сообщения, которая не подпадает под более конкретные коды.
Получатель не поддерживает тип содержимого сообщения или одного из его вложений.
Для доставки сообщения потребовалось бы преобразовать его содержимое, но отправитель это запретил.
Для доставки сообщения потребовалось бы преобразовать его содержимое, а сервер не умеет этого делать.
Сообщение доставлено, но при преобразовании содержимого часть информации потеряна.
Не удалось преобразовать содержимое сообщения.
Не удалось получить содержимое сообщения, на которое ссылается URL (расширение BURL).
Отправитель или получатель не поддерживает адреса с символами вне ASCII (интернационализированная почта, SMTPUTF8).
Серверу нужно ответить текстом в UTF-8, но клиент не объявил поддержку SMTPUTF8.
В сообщении есть заголовки в UTF-8, и его нельзя передать одному или нескольким получателям, которые их не поддерживают, поэтому оно отклоняется.
Состояние безопасности без уточнений. Встречается при успешной аутентификации (2.7.0), временных сбоях AUTH (4.7.0) и отказах по политике.
Отправителю не разрешено отправлять почту этому получателю: блокировка по чёрному списку, репутации, антиспаму или попытка недопустимой пересылки (relay). В варианте 4.7.1 обычно означает грейлистинг.
Отправителю не разрешено отправлять сообщения в этот список рассылки.
Сообщение нужно преобразовать из одного протокола безопасности в другой, но это невозможно.
Сообщению требуются функции безопасности, которые получатель не поддерживает.
Сбой криптографической операции при передаче, например проверки подписи или расшифровки.
Получатель не поддерживает криптографический алгоритм, использованный в сообщении.
Проверка целостности не пройдена: сообщение изменено при передаче или контрольная сумма не совпадает.
Учётные данные для аутентификации недействительны: неверное имя пользователя или пароль.
Выбранный механизм аутентификации слабее, чем требует политика сервера.
Для запрошенного механизма аутентификации нужен внешний уровень шифрования, например TLS. Предназначено прежде всего для механизмов, передающих пароль открытым текстом.
Запрошенный механизм аутентификации разрешён только через зашифрованное соединение.
Пользователь должен сменить пароль или перейти на другой механизм аутентификации.
Учётная запись пользователя, который пытается пройти аутентификацию, отключена.
Сервер принимает сообщения только от систем, с которыми у него установлены доверительные отношения.
Приоритет сообщения слишком низок, чтобы принять его сейчас (расширение MT-PRIORITY).
Сообщение слишком велико для указанного приоритета (расширение MT-PRIORITY).
После даты, указанной отправителем, у почтового ящика сменился владелец, поэтому сообщение не доставляется (расширение RRVS).
После даты, указанной отправителем, у домена получателя сменился владелец (расширение RRVS).
Сервер не может проверить, сменился ли владелец почтового ящика, как запросил отправитель (расширение RRVS).
У сообщения нет ни одной действительной подписи DKIM, а политика получателя её требует.
У сообщения есть действительные подписи DKIM, но ни одна не соответствует политике получателя (например, по подписывающему домену или алгоритму).
У сообщения нет действительной подписи DKIM от того же домена, что указан в заголовке From.
IP-адрес отправки не разрешён в записи SPF домена отправителя.
При проверке SPF произошла ошибка, например из-за неправильно сформированной записи или слишком большого числа DNS-запросов.
У IP-адреса отправки нет обратной записи DNS (PTR), или возвращаемое ею имя не разрешается обратно в этот IP.
Одновременно не пройдены несколько проверок подлинности сообщения, например SPF и DKIM.
Домен отправителя публикует null MX, поэтому не смог бы получать ответы и уведомления о недоставке, и сообщение отклоняется.
Сообщение, по-видимому, входит в массовую волну однотипных вредоносных писем.
Не пройдена проверка цепочки ARC, которая сохраняет результаты аутентификации, когда сообщение проходит через пересылающие серверы или списки рассылки.
Сообщение требует REQUIRETLS, а следующий сервер на маршруте не поддерживает это расширение, поэтому доставить его с гарантией шифрования невозможно.
Вставьте полный ответ сервера, например 550 5.7.1 Message rejected, чтобы сразу увидеть и базовый, и расширенный код. При поиске базового кода также показываются расширенные коды, которые обычно его сопровождают.
Как это работает
В сеансе SMTP на каждую команду клиента (EHLO, MAIL FROM, RCPT TO, DATA…) сервер отвечает строкой, которая начинается с трёхзначного кода. Первая цифра показывает итог: 2 — успех, 3 — сервер ждёт дополнительных данных, 4 — временная ошибка, 5 — постоянная ошибка. Вторая указывает область: x0z — синтаксис, x1z — информация, x2z — соединение, x5z — почтовая система. Текст после кода произвольный, и каждый сервер пишет свой; программы смотрят только на число.
Поскольку три цифры мало говорят о причине, RFC 3463 ввёл расширенные коды состояния в формате класс.тема.деталь: 5.1.1 — это постоянный сбой (5) адресации (1), потому что почтовый ящик не существует (1). Класс повторяет смысл первой цифры (2, 4 или 5), тема группирует причину, а деталь её уточняет. Серверы, которые их используют, объявляют об этом расширением ENHANCEDSTATUSCODES в ответе на EHLO, а тот же код появляется в поле Status уведомлений о недоставке.
Таблица объединяет базовые коды из RFC 5321 и коды, добавленные распространёнными расширениями (AUTH, STARTTLS, ETRN и null MX), а также все расширенные коды из реестра IANA вместе с базовыми кодами, рядом с которыми обычно встречается каждый из них. Крупные провайдеры добавляют собственные тексты и ссылки на справку, но всегда поверх этих же номеров.
Примеры
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox addressТипичный возврат от Postfix, когда учётной записи не существует. Повторная отправка не поможет: нужно исправить адрес. Если раньше письма этому получателю доходили, скорее всего, учётную запись удалили.450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox statusГрейлистинг: сервер временно отклоняет неизвестного отправителя и ждёт повторной попытки. Легитимный почтовый сервер сам повторит её через несколько минут, и письмо пройдёт; многие спам-программы не повторяют попыток никогда.AUTH LOGIN334 VXNlcm5hbWU6Ответ 334 содержит запрос в Base64: VXNlcm5hbWU6 — это «Username:», а следующий, UGFzc3dvcmQ6, — «Password:». Если учётные данные неверны, сервер отвечает 535 5.7.8; если сначала требуется шифрование — 538 или 530.Сценарии использования
- Понять по сообщению об ошибке от сервера, почему письмо вернулось.
- Отличить временную ошибку, которую очередь повторит сама, от постоянной, требующей вмешательства.
- Диагностировать сбои аутентификации при настройке отправки почты из приложения, с принтера или сервера.
- Разбирать отказы из-за SPF, DKIM, DMARC, обратного DNS или чёрных списков в логах почтового сервера.
- Классифицировать возвраты на платформе массовых рассылок, чтобы исключать несуществующие адреса из базы.
- Читать сеанс SMTP, записанный с помощью telnet, openssl s_client или swaks.
Часто задаваемые вопросы
Чем ошибка 4xx отличается от 5xx?
4xx — временная ошибка: отправляющий сервер оставляет сообщение в очереди и периодически повторяет попытки, как правило, в течение четырёх-пяти дней, прежде чем сдаться и сформировать уведомление о недоставке. 5xx — постоянная ошибка: возврат приходит сразу, и повторная отправка того же сообщения без изменений снова завершится неудачей.
Почему в ответе два кода, например 550 5.1.1?
Первый — базовый трёхзначный код, обязательный по RFC 5321. Второй — расширенный код состояния по RFC 3463, который уточняет причину: 550 может означать несуществующий почтовый ящик (5.1.1), блокировку по политике (5.7.1) или провал проверки SPF (5.7.23). Для диагностики смотрите прежде всего на расширенный код.
Что означает дефис в 550-5.7.1?
Что ответ занимает несколько строк. Все они начинаются с одного и того же кода, но в промежуточных строках код отделён от текста дефисом, а в последней — пробелом; так клиент понимает, где ответ закончился. То же самое видно в списке расширений, который возвращает EHLO.
Почему письмо отклоняют с 550 5.7.1, если адрес существует?
Потому что 5.7.1 говорит не о получателе, а об отправителе: сервер не разрешает вам доставить ему это сообщение. Типичные причины: IP-адрес отправки находится в чёрном списке, домен не проходит проверку SPF, DKIM или DMARC, у IP нет обратной записи DNS или сервер пытались использовать как релей без аутентификации. Подсказку обычно даёт текст, который сопровождает код.
Почему при отправке почты из приложения я получаю 530 или 535?
530 означает, что сервер требует пройти аутентификацию или включить TLS, прежде чем принять сообщение; 535 — что имя пользователя или пароль неверны. Проверьте, что приложение использует порт 587 со STARTTLS или 465 с неявным TLS, что аутентификация включена и что у провайдеров вроде Gmail или Microsoft 365 вы используете пароль приложения или OAuth вместо обычного пароля.