Метка электронной почты против локальной части и дефисов
Я читал RFC, сводки, википедию и т. Д. Я очень запутался в отношении локальных частей и ярлыков. Мне кажется, что локальная часть до @. Это кажется простым. Метка - это любая часть домена, разделенная точкой. Но мне кажется, что в некоторых местах местная часть также называется лейблом. И это очень запутанно в контексте того, где разрешены дефисы. Так что конкретно это за ярлык?
И с этим, какой из них является действительным адресом электронной почты (если есть)?
-bobross@painting.com
bobross-@painting.com
bobross@-painting.com
bobross@painting-.com
Насколько я понимаю, метка не может ни заканчиваться, ни начинаться с дефиса и не должна содержать двух последовательных дефисов. Я что-то упустил с этим?
Бонусные баллы - в локальной части разрешено несколько специальных символов, но некоторые источники, которые я видел, говорят, что локальная часть должна заканчиваться буквенно-цифровым символом, но на самом деле я не вижу этого ни в одном стандарте. я пропускаю это или это может закончиться одним из разрешенных символов?
1 ответ
A domain name (or often just a "domain") consists of one or more
components, separated by dots if more than one appears. In the case
of a top-level domain used by itself in an email address, a single
string is used without any dots. This makes the requirement,
described in more detail below, that only fully-qualified domain
names appear in SMTP transactions on the public Internet,
particularly important where top-level domains are involved. These
components ("labels" in DNS terminology, RFC 1035 [2]) are restricted
for SMTP purposes to consist of a sequence of letters, digits, and
hyphens drawn from the ASCII character set [6]. Domain names are
used as names of hosts and of other entities in the domain name
hierarchy. For example, a domain may refer to an alias (label of a
CNAME RR) or the label of Mail eXchanger records to be used to
deliver mail instead of representing a host name. See RFC 1035 [2]
and Section 5 of this specification.
Другими словами, область abc.def.xyz
состоит из 3-х компонентов (так называемые этикетки): abc
, def
, а также xyz
, Каждый из этих ярлыков может содержать только буквы, цифры и дефисы. Для более конкретного определения мы должны проверить грамматику ABNF в разделе Синтаксис аргумента команды, потому что нас действительно волнует синтаксис аргументов MAIL FROM
а также RCPT TO
Команды (также известные как токены "email address").
"Адрес электронной почты" на самом деле называется Mailbox
в спецификации SMTP:
Mailbox = Local-part "@" ( Domain / address-literal )
Теперь, чтобы посмотреть на определение Local-part
маркер:
Local-part = Dot-string / Quoted-string
; MAY be case-sensitive
Dot-string = Atom *("." Atom)
Atom = 1*atext
Чтобы получить определение atext
нам нужно взглянуть на формат интернет-сообщения. В частности, нам нужно взглянуть на раздел 3.2.3:
atext = ALPHA / DIGIT / ; Printable US-ASCII
"!" / "#" / ; characters not including
"$" / "%" / ; specials. Used for atoms.
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
(Примечание: я опустил определение Quoted-string
потому что это не имеет отношения к вашему вопросу.)
Теперь давайте проверим определение Domain
:
Domain = sub-domain *("." sub-domain)
sub-domain = Let-dig [Ldh-str]
Let-dig = ALPHA / DIGIT
Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
Здесь мы видим, что ярлык - это то же самое, что sub-domain
токен, но здесь мы также видим, что ярлыки (иначе sub-domain
х) из Domain
не может начинаться или заканчиваться дефисом.
Мы также можем видеть, что sub-domain
токен на самом деле является подмножеством допустимых символов в Atom
и поэтому символы разрешены в каждом компоненте Local-part
не совпадают с разрешенными в каждом компоненте Domain
,
Чтобы ответить на другие ваши вопросы:
И с этим, какой из них является действительным адресом электронной почты (если есть)?
-bobross@painting.com [VALID]
bobross-@painting.com [VALID]
bobross@-painting.com [INVALID]
bobross@painting-.com [INVALID]
Насколько я понимаю, метка не может ни заканчиваться, ни начинаться с дефиса и не должна содержать двух последовательных дефисов. Я что-то упустил с этим?
Давайте использовать термин sub-domain
чтобы сделать вещи менее запутанными.
Да, это правильно.
Бонусные баллы - в локальной части разрешено несколько специальных символов, но некоторые источники, которые я видел, говорят, что локальная часть должна заканчиваться буквенно-цифровым символом, но на самом деле я не вижу этого ни в одном стандарте. я пропускаю это или это может закончиться одним из разрешенных символов?
Ну, в соответствии с грамматикой ABNF rfc5322, Local-part
может начинаться и заканчиваться дефисом.