4.3.2. Последовательности команда - отклик
Для каждой команды указаны обычные позитивные отклики. Используемые перед позитивными откликами префиксы включают I (промежуточный), S (успех) и E (ошибка). Поскольку некоторые серверы могут генерировать иные отклики в соответствующих обстоятельствах и с учетом возможности появления новых кодов, клиентам SMTP следует (по возможности) интерпретировать только первую цифру кода. Кроме того, клиент должен быть готов к работе с неизвестными кодами, также интерпретируя в них только первую цифру. За исключением расширений, использующих механизмы, описанные в параграфе 2.2, для серверов SMTP недопустима передача кодов, содержащих что-либо сверх 3 цифр или использующих цифры, не входящие в разрешенный диапазон 2 - 5 (включительно).
Описанные здесь варианты откликов на команды (в принципе, и сами коды) могут дополняться или изменяться при использовании расширений SMTP, предлагаемых сервером и понятных (запрашиваемых) клиентом. Однако, если целью является более четкая грануляция кодов, а не определение кодов для совершенно новых случаев, следует использовать систему, описанную в RFC 3463 [25], чтобы не изобретать новых кодов.
В дополнение к перечисленным в таблице кодам любые команды SMTP могут возвращать три приведенных ниже кода в соответствующих нештатных ситуациях:
500 — для случая «command line too long» (слишком длинная команда) или при получении непонятной команды. Отметим, что отклик «command not recognized» (неизвестная команда) в ответ на команду из обязательного набора является нарушением данной спецификации. Аналогично, генерация сообщения «command too long» в ответ на команду, длина которой не превышает 512 будет нарушением требований параграфа 4.5.3.1.4.
501 Syntax error in command or arguments (синтаксическая ошибка в команде или аргументах). Для поддержки будущих расширений командам, включенным в данную спецификацию, как команды без аргументов (DATA, RSET, QUIT), следует возвращать отклик 501 при получении команды с аргументами, если иное не согласовано в анонсированном EHLO расширении.
421 Service shutting down and closing transmission channel — сервис отключен с разрывом коммуникационного канала.
В нормальных условиях в ответ на команды могут возвращаться следующие отклики:
Команда | Успех (S) | Неудача (E) |
Организация соединения | 220 | 554 |
EHLO или HELO | 250 | 504, 550, 502 |
250 | 552, 451, 452, 550, 553, 503, 455, 555 | |
RCPT | 250, 251 | 550, 551, 552, 553, 450, 451, 452, 503, 455, 555 |
DATA (промежуточный отклик 354) | 250 | 552, 554, 451, 452, 450, 550 (отказ в соответствии с политикой) |
DATA | 503,55 | |
RSET | 250 | |
VRFY | 250, 251, 252 | 550, 551, 553, 502, 504 |
EXPN | 250, 252 | 550, 500, 502, 504 |
HELP | 211, 214 | 502, 504 |
NOOP | 250 | |
QUIT | 221 |