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).