Список кодов возврата SMTP-сервера
Это список кодов состояния ответа SMTP. Коды состояния выдаются сервером в ответ на запрос клиента, сделанный серверу.
Если не указано иное, все описанные здесь коды состояния являются частью текущего стандарта SMTP. РФК 5321 . Показанные фразы сообщений являются типичными, но может быть предоставлена любая удобочитаемая альтернатива.
Основной код состояния
[ редактировать ]Ответ SMTP «Базовый код состояния» состоит из трехзначного числа (передаваемого в виде трех цифровых символов), за которым следует некоторый текст. Это число используется автоматами (например, почтовыми клиентами) для определения следующего состояния; текст («Текстовая часть») предназначен для пользователя-человека.
Первая цифра обозначает, хороший ли ответ, плохой или неполный:
- 2yz (положительный ответ о завершении): запрошенное действие успешно выполнено.
- 3yz (Положительный промежуточный ответ): команда принята, но запрошенное действие отложено до получения дополнительной информации.
- 4yz (временный отрицательный ответ о завершении): команда не была принята, и запрошенное действие не выполнено. Однако состояние ошибки является временным, и действие может быть запрошено снова.
- 5yz (постоянный отрицательный ответ о завершении): команда не была принята и запрошенное действие не выполнено. Клиент SMTP НЕ ДОЛЖЕН повторять точный запрос (в той же последовательности).
Вторая цифра кодирует ответы по определенным категориям:
- x0z (Синтаксис): Эти ответы относятся к синтаксическим ошибкам, синтаксически правильным командам, которые не соответствуют ни одной функциональной категории, а также нереализованным или избыточным командам.
- x1z (Информация): Это ответы на запросы информации.
- x2z (Соединения): это ответы, относящиеся к каналу передачи.
- x3z : Не указано.
- x4z : Не указано.
- x5z (Почтовая система): Эти ответы указывают состояние почтовой системы получателя.
Расширенный код состояния
[ редактировать ]Базовые коды состояния были в SMTP с самого начала. RFC 821 в 1982 году, но были расширены довольно широко и бессистемно, так что к 2003 году В RFC 3463 довольно раздраженно отмечается, что: « SMTP имеет некоторые шрамы истории, в первую очередь досадное повреждение механизма расширения кода ответа в результате неконтролируемого использования » .
RFC 3463 определяет отдельную серию кодов состояния расширенной почтовой системы, которая должна быть лучше структурирована и состоит из трех числовых полей, разделенных знаком «.», а именно:
class "." subject "." detail class = "2" / "4" / "5" subject = 1 to 3 digits detail = 1 to 3 digits
Классы : определяются следующим образом
- 2.XXX.XXX Успех: отчет о положительной доставке.
- 4.XXX.XXX Постоянный временный сбой: отправленное сообщение действительно, но сохранение некоторых временных условий привело к его отмене или задержке.
- 5.XXX.XXX Постоянная ошибка: вряд ли можно устранить повторной отправкой сообщения в текущей форме.
Как правило, идентификатор класса ДОЛЖЕН соответствовать первой цифре базового кода состояния, к которому он применяется. [1]
Субъекты : определяются следующим образом
- X.0.XXX Другое или неопределенное состояние
- X.1.XXX Статус адресации
- X.2.XXX Статус почтового ящика
- X.3.XXX Статус почтовой системы
- X.4.XXX Статус сети и маршрутизации
- X.5.XXX Статус протокола доставки почты
- X.6.XXX Содержимое сообщения или статус носителя
- X.7.XXX Статус безопасности или политики
Значение поля «Подробности» зависит от класса и предмета и указано в RFC 3463 и РФК 5248 .
Сервер, способный отвечать расширенным кодом состояния, ДОЛЖЕН добавлять к текстовой части ответов SMTP-сервера расширенный код состояния, за которым следует один или несколько пробелов. Например, ответ «221 Bye» (после команды QUIT) ДОЛЖЕН быть отправлен вместо этого как «221 2.0.0 Bye». [1]
Управление по присвоению номеров Интернета (IANA) ведет официальный реестр этих расширенных кодов статуса. [2]
Общие коды состояния
[ редактировать ]В этом разделе перечислены некоторые из наиболее часто встречающихся кодов состояния SMTP. Этот список не является исчерпывающим, и фактическое текстовое сообщение (за исключением расширенного кода состояния из 3 полей) может отличаться.
— 2ыз Положительное завершение
[ редактировать ]- 211 Статус системы или ответ на справку системы
- 214 Справочное сообщение (Ответ на команду HELP)
- 220 <домен> Служба готова
- 221 <домен> Сервис закрытия канала передачи
- 221 2.0.0 До свидания [1]
- 235 2.7.0 Аутентификация прошла успешно [3]
- 240 ВЫХОД
- 250 Запрошенное почтовое действие, окей, завершено
- 251 Пользователь не локальный; перешлет
- 252 Невозможно проверить пользователя, но он все равно попытается доставить сообщение.
— 3yz Положительный промежуточный
[ редактировать ]- 334 (запрос сервера — текстовая часть содержит запрос в кодировке Base64) [3]
- 354 Начать ввод почты
— 4yz Переходное отрицательное завершение
[ редактировать ]«Переходный отрицательный» означает, что состояние ошибки является временным, и действие может быть запрошено снова. Отправитель должен вернуться к началу последовательности команд (если таковая имеется).
Точное значение слова «переходный» должно быть согласовано между двумя разными сайтами (SMTP-агенты получателя и отправителя) должны согласовать интерпретацию. Каждый ответ в этой категории может иметь разное значение времени, но SMTP-клиент ДОЛЖЕН повторить попытку.
- 421 Служба недоступна, канал передачи закрывается (это может быть ответ на любую команду, если служба знает, что ее необходимо отключить)
- 432 4.7.12 Требуется смена пароля [3]
- 450 Запрошенное почтовое действие не выполнено: почтовый ящик недоступен (например, почтовый ящик занят или временно заблокирован по причинам политики)
- 451 Запрошенное действие прервано: локальная ошибка при обработке.
- 451 4.4.1 Сервер IMAP недоступен [4]
- 452 Запрошенное действие не выполнено: недостаточно системного хранилища.
- 454 4.7.0 Временная ошибка аутентификации [3]
- 455 Сервер не может разместить параметры
— 5yz Постоянное отрицательное завершение
[ редактировать ]Клиент SMTP НЕ ДОЛЖЕН повторять точный запрос (в той же последовательности). Даже некоторые «постоянные» ошибки можно исправить, поэтому пользователь-человек может захотеть дать указание SMTP-клиенту повторно инициировать последовательность команд прямым действием в какой-то момент в будущем.
- 500 Синтаксическая ошибка, команда не распознана (это может включать такие ошибки, как слишком длинная командная строка)
- 500 5.5.6 Линия обмена аутентификацией слишком длинная [3]
- 501 Синтаксическая ошибка в параметрах или аргументах
- 501 5.5.2 Невозможно декодировать ответы клиента в формате Base64 [3]
- 501 5.7.0 Обмен аутентификацией, инициированный клиентом (только если механизм SASL указал, что клиент не начинает обмен аутентификацией) [3]
- 502 Команда не реализована
- 503 Неверная последовательность команд
- 504 Параметр команды не реализован
- 504 5.5.4 Нераспознанный тип аутентификации [3]
- 521 Сервер не принимает почту [5]
- 523 Требуется шифрование [6]
- 530 5.7.0 Требуется аутентификация [3]
- 534 5.7.9 Механизм аутентификации слишком слабый [3]
- 535 5.7.8 Неверные учетные данные аутентификации [3]
- 538 5.7.11 Для запрошенного механизма аутентификации требуется шифрование [3]
- 550 Запрошенное действие не выполнено: почтовый ящик недоступен (например, почтовый ящик не найден, нет доступа или команда отклонена по соображениям политики)
- 551 Пользователь не локальный; пожалуйста, попробуйте <forward-path>
- 552 Запрошенное почтовое действие прервано: превышено выделение памяти.
- 553 Запрошенное действие не выполнено: имя почтового ящика не разрешено
- 554 Транзакция не удалась (или, в случае ответа об открытии соединения, «Здесь нет службы SMTP»)
- 554 5.3.4 Сообщение слишком велико для системы [4]
- 556 Домен не принимает почту [5]
Пример
[ редактировать ]Ниже приведен пример SMTP-соединения, где клиент «C» отправляет данные на сервер «S»:
S: 220 smtp.example.com ESMTP Postfix C: HELO relay.example.com S: 250 smtp.example.com, I am glad to meet you C: MAIL FROM:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: From: "Bob Example" <[email protected]> C: To: Alice Example <[email protected]> C: Cc: [email protected] C: Date: Tue, 15 Jan 2008 16:02:43 -0500 C: Subject: Test message C: C: Hello Alice. C: This is a test message with 5 header fields and 4 lines in the message body. C: Your friend, C: Bob C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye {The server closes the connection}
Ниже приведен пример SMTP-соединения, при котором SMTP-сервер поддерживает расширенный код состояния, взятый из RFC 2034 :
S: 220 dbc.mtview.ca.us SMTP service ready C: EHLO ymir.claremont.edu S: 250-dbc.mtview.ca.us says hello S: 250 ENHANCEDSTATUSCODES C: MAIL FROM:<[email protected]> S: 250 2.1.0 Originator <[email protected]> ok C: RCPT TO:<[email protected]> S: 250 2.1.5 Recipient <[email protected]> ok C: RCPT TO:<[email protected]> S: 550 5.1.1 Mailbox "nosuchuser" does not exist C: RCPT TO:<[email protected]> S: 551-5.7.1 Forwarding to remote hosts disabled S: 551 5.7.1 Select another host to act as your forwarder C: DATA S: 354 Send message, ending in CRLF.CRLF. ... C: . S: 250 2.6.0 Message accepted C: QUIT S: 221 2.0.0 Goodbye {The server closes the connection}
Ссылки
[ редактировать ]