atom

atom

[8] atom は、 RFC 822メッセージ構文における基本的な字句です。

atext

[11] atextatom で使える文字集合を表す生成規則です。

[12] HTML Standard における妥当な電子メールアドレスの規定では、 local-part において atext の他に . が使えることとなっており、事実上 atext が拡張されています。

仕様書から

RFC 2822 3.2.4. Atom

Several productions in structured header field bodies are simply strings of certain basic characters. Such productions are called atoms.

[1] 構造化headerfieldbody中の幾つかの要素は基本文字の単純な文字列です。 この要素は atom と呼びます。

Some of the structured header field bodies also allow the period character (".", ASCII value 46) within runs of atext. An additional "dot-atom" token is defined for those purposes.

[2] 構造化headerfieldbodyの幾つかは atext の連続中に句点文字 (".", ASCII 値 46) も認めています。追加の "dot-atom" 字句はこの目的で定義します。

[3]

 atext          =       ALPHA / DIGIT / ; Any character except controls,
                        "!" / "#" /     ;  SP, and specials.
                        "$" / "%" /     ;  Used for atoms
                        "&" / "'" /     ; controls, SP, specials を除く文字
                        "*" / "+" /     ; atom に使われる
                        "-" / "/" /
                        "=" / "?" /
                        "^" / "_" /
                        "`" / "{" /
                        "|" / "}" /
                        "~"

  • [4] atom = [CFWS] 1*atext [CFWS]
  • [5] dot-atom = [CFWS] dot-atom-text [CFWS]
  • [6] dot-atom-text = 1*atext *("." 1*atext)

Both atom and dot-atom are interpreted as a single unit, comprised of the string of characters that make it up. Semantically, the optional comments and FWS surrounding the rest of the characters are not part of the atom; the atom is only the run of atext characters in an atom, or the atext and "." characters in a dot-atom.

[7] atom 及び dot-atom 共に、これを構成する文字の列で構成される単一の単位として解釈されます。 意味的には、他の文字を囲んでいる省略可能な comment 及び FWSatom の一部ではありません。 atom は atom においては atext, dot-atom においては atext 及び "." 文字の部分のみです。

メモ

[10] RFC 5335 により、 message/global においては utf8-atom として UTF-8 の使用が認められるようになりました (RFC 5335 4.3)。

atext ではなく atom が拡張されているのは、 addr-spec は拡張しつつ message-id をそのままにするためのようです RFC 5335 4.3