RFC: 5321
Оригинал: Simple Mail Transfer Protocol
Предыдущие версии: RFC 772, RFC 780, RFC 788, RFC 821, RFC 974, RFC 1425, RFC 1651, RFC 1869, RFC 2821
Категория: Проект стандарта
Дата публикации:
Автор:
Перевод: Николай Малых
4.1.1.1. Расширенное (EHLO) или стандартное (HELO) приветствие

Эти команды используются для представления SMTP-клиента серверу SMTP. Поле аргументов содержит полное доменное имя клиента SMTP, если такое имя доступно. В тех случаях, когда клиент SMTP не имеет значимого доменного имени (например, при динамическом выделении адресов и недоступности обратного преобразования), клиентам следует передавать полный адрес (см. параграф 4.1.3).

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

Сервер SMTP представляет себя клиенту в данном соединении с помощью отклика на команду приветствия.

Клиентам SMTP следует начинать сессию SMTP с помощью команды EHLO. Если сервер SMTP поддерживает расширенные службы SMTP, он будет передавать позитивный отклик, сообщение об отказе или сообщение об ошибке. Если сервер SMTP (в нарушение данной спецификации) не поддерживает никаких расширений SMTP, он будет генерировать сообщение об ошибке. Старые клиенты SMTP могут (как обсуждалось выше) использовать команду HELO (в соответствии с RFC 821) взамен EHLO, а серверы должны поддерживать команды HELO и давать на них правильный отклик. В любом случае клиент должен использовать команду HELO или EHLO до начала почтовой транзакции.

Эти команды и отклики 250 OK в ответ на них подтверждают, что клиент и сервер SMTP находятся в начальной стадии, в которой нет выполняемых транзакций, а все таблицы состояния и буфера еще пустые.

Синтаксис:

ehlo    = "EHLO" SP ( Domain / address-literal ) CRLF
helo    = "HELO" SP Domain CRLF

Обычно в ответ на команду EHLO возвращается многострочный отклик, каждая строка которого содержит ключевое слово и может включать один или несколько параметров. В соответствии с требованиями к нормальному синтаксису многострочных откликов ключевые слова следуют после кода 250 и дефиса (для всех строк, кроме последней) или пробела (в последней строке). Ниже приведен пример позитивного отклика с использованием нотации ABNF и символов завершения из RFC 5234 [7]:

ehlo-ok-rsp    = ( "250" SP Domain [ SP ehlo-greet ] CRLF )
                 / ( "250-" Domain [ SP ehlo-greet ] CRLF
                 *( "250-" ehlo-line CRLF )
                 "250" SP ehlo-line CRLF )

ehlo-greet     = 1*(%d0-9 / %d11-12 / %d14-127)
                 ; строка любых символов, кроме CR и LF

ehlo-line      = ehlo-keyword *( SP ehlo-param )

ehlo-keyword   = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
                 ; дополнительный синтаксис ehlo-params зависит от ehlo-keyword

ehlo-param     = 1*(%d33-126)
                 ; любые символы, включая <SP> и все коды управления (US-ASCII 0-31 и 127,
                 ; включительно)

Хотя в команде EHLO можно использовать любую комбинацию строчных и прописных букв, команда всегда должна распознаваться и обрабатываться как EHLO (заглавные буквы) — это просто расширение практики, указанной в RFC 821 и параграфе 2.4.

Отклик на команду EHLO должен включать ключевые слова (и связанные с ними параметры при наличии последних) для всех команд, не перечисленных как «обязательные» в параграфе 4.5.1, за исключением команд для приватного использования, описанных в параграфе 4.1.5. Команды для приватного использования также можно включать в список.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.