2015年7月17日金曜日

[memo] メールアドレスのローカルパートについて(RFC5322)

RFC 5322 3.4.1から抜粋
addr-spec       =   local-part "@" domain
local-part      =   dot-atom / quoted-string / obs-local-part

dot-atom-text   =   1*atext *("." 1*atext)
dot-atom        =   [CFWS] dot-atom-text [CFWS]
atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                    "!" / "#" /        ;  characters not including
                    "$" / "%" /        ;  specials.  Used for atoms.
                    "&" / "'" /
                    "*" / "+" /
                    "-" / "/" /
                    "=" / "?" /
                    "^" / "_" /
                    "`" / "{" /
                    "|" / "}" /
                    "~"

quoted-string   =   [CFWS]
                    DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                    [CFWS]
qcontent        =   qtext / quoted-pair
qtext           =   %d33 /             ; Printable US-ASCII
                    %d35-91 /          ;  characters not including
                    %d93-126 /         ;  "\" or the quote character
                    obs-qtext

obs-local-part  =   word *("." word)
word            =   atom / quoted-string
atom            =   [CFWS] 1*atext [CFWS]
こんがらがってきたよ・・・

local-partに使っていいのは下記の3種類
  • dot-atom
  • quoted-string
  • obs-local-part
dot-atom-textの定義から行くと、atextと"."の組み合わせで、"."ドットが連続する場合や先頭に来る場合、最後に来る場合はRFCに準拠しない。だから、下記のようなアドレスはダメ。
  • .example@example.com
  • example.@example.com
  • e..xample@example.com

 atextは、アルファベット、数値、下記の記号のいずれか
   ! # $ % & ' * + - / = ? ^ _ ` { | } ~

ってことは、結構ひどいアドレスも作れちゃうんだよなー・・・定義上は。

-----
そのうち、また追記/変更します

0 件のコメント:

コメントを投稿