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.2. Синтаксис аргументов команд

Ниже приведен синтаксис полей аргументов перечисленных выше команд (по возможности, используется синтаксис, описанный в RFC 5234 [7]). Некоторые из приведенных ниже вариантов используются только с маршрутами source route, как описано в Приложении C. Обозначения, не определенные здесь (типа ALPHA, DIGIT, SP, CR, LF, CRLF), описаны в разделе 6 RFC 5234 [7] или при формальном определении синтаксиса сообщений в RFC 5322 [4].

Reverse-path    = Path / "<>"

Forward-path    = Path

Path            = "<" [ A-d-l ":" ] Mailbox ">"

A-d-l           = At-domain *( "," At-domain )
                ; отметим, что эта форма, называемая source route, должна приниматься,
                ; ее не следует генерировать и следует игнорировать.

At-domain       = "@" Domain

Mail-parameters = esmtp-param *(SP esmtp-param)

Rcpt-parameters = esmtp-param *(SP esmtp-param)

esmtp-param     = esmtp-keyword ["=" esmtp-value]

esmtp-keyword   = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")

esmtp-value     = 1*(%d33-60 / %d62-126)
                ; любые символы кроме =, SP и управляющих кодов. Если эта строка
                ; представляет собой почтовый адрес (например, Mailbox), следует
                ; использовать систнаксис xtext [32].

Keyword         = Ldh-str

Argument        = Atom

Domain          = sub-domain *("." sub-domain)

sub-domain      = Let-dig [Ldh-str]

Let-dig         = ALPHA / DIGIT

Ldh-str         = *( ALPHA / DIGIT / "-" ) Let-dig

address-literal = "[" ( IPv4-address-literal /
                IPv6-address-literal /
                General-address-literal ) "]"
                ; см. параграф 4.1.3

Mailbox         = Local-part "@" ( Domain / address-literal )

Local-part      = Dot-string / Quoted-string
                ; регистр символов может различаться

Dot-string      = Atom *("." Atom)

Atom            = 1*atext

Quoted-string   = DQUOTE *QcontentSMTP DQUOTE

QcontentSMTP    = qtextSMTP / quoted-pairSMTP

quoted-pairSMTP = %d92 %d32-126
                ; т. е., обратная дробная черта, за которой следует символ
                ; псевдографики ASCII (включая \) или пробел (SP)

qtextSMTP       = %d32-33 / %d35-91 / %d93-126
                ; т. е., кавычках допускается использование любых символов псевдографики
                ; ASCII (за исключением \ и двойных кавычек) или пробелов без символа
                ; обратной дробной черты graphic or space is permitted

String          = Atom / Quoted-string

Хотя в приведенном выше описании требования к локальной части адреса относительно либеральны, хостам, принимающим почту, следует избегать организации почтовых ящиков, для которых Local-part требует (или использует) форму Quoted-string или различается регистр символов. Для любых задач, требующих генерации или сравнения полей Local-part, все формы Quoted-string должны трактоваться как эквивалентные и передающим системам следует передавать форму, использующую минимальное квотирование.

Недопустимо определять почтовые ящики таким образом, чтобы в SMTP требовалось использование символов, не входящих в набор ASCII (октетов с 1 в старшем бите) или управляющих кодов ASCII (десятичные значения 0-31 и 127).

Такие символы недопустимо использовать в командах MAIL и RCPT или других командах, содержащих имена почтовых ящиков.

Отметим, что обратный слэш (\) относится к символам квотирования, используемым для индикации буквального (literally) использования следующего символа (взамен обычной интерпретации). Например, запись "Joe\,Smith" соответствует "Joe, Smith", т. е. Запятая после знака \ трактуется именно как запятая, а не специальный символ.

Для обеспечения интероперабельности и совместимости с DNS в именовании и приложениях (см., например, параграф 2.3.1 базового стандарта DNS — RFC1035 [2]) недопустимо включать в метки доменных имен для клиентов и серверов SMTP никакие символы, кроме букв латиницы, цифр и дефиса. В частности, символ подчеркивания (underscore) использовать нельзя. Серверы SMTP, получающие команды с некорректными символами (при отсутствии других причин для отказа), должны отвергать такие команды с возвратом отклика 501 (это правило, подобно другим, может быть изменено расширениями SMTP).

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