web-dev-qa-db-ja.com

メールアドレスのローカル部分に2つのピリオドを使用できますか?

サードパーティのメールゲートウェイリレーが、送信先のメールアドレス宛のメッセージの処理を拒否しています。アドレスはfirstname..lastname @ recipientdomain.comの形式です(2つのピリオドに注意してください)。これはRFCガイドラインで許可されていますか?

RFC 2822 セクション3.4.1でこれに反対しているようです:

ローカルに解釈される文字列は、引用符付き文字列またはドット原子です。文字列をドットアトムとして表現できる場合(つまり、テキスト文字またはテキスト文字で囲まれた「。」以外の文字を含まない場合)、ドットアトム形式を使用する必要があり(SHOULD NOT)、引用文字列形式利用される。コメントと折りたたみ空白は、addr-specの "@"の前後で使用しないでください。

さらに、同じセクションでは、これを参照しています。

addr-spec = local-part "@" domain

local-part = dot-atom/quoted-string/obs-local-part

これを解釈すると、ローカルパーツはコンテンツをドットで区切ることができますが、2つの連続ドットはあり得ず、ドットで開始または終了することはできません。そうは言っても、私はドットアトムの構文に慣れていないので、多分ここでは間違っています。

誰かが確認して説明してもらえますか?

14
Mike B

はい。それで合っています。あなたが引用したセクションは、それが引用文字列でなければならないことを示していますORドットアトム。その引用符で囲まれた文字列は明らかにないため、_"_はそれを明確にします)ドットアトムでなければなりません...

それがドットアトムの定義につながります:

RFC 5322(3.2.3-13ページ))(RFC 2822には同様のセクションが含まれます)ヒント以外は、これを見てくださいdot-atom-text = 1*atext *("." 1*atext)の_1*_です。つまり、ドットアトムは、ドットで区切られた1つ以上の「atext」文字の文字列で構成されます。 0のatext文字の文字列はカウントされないため、2つの連続するドット(0文字で区切られている)、または先頭または末尾のドットは使用できません。

_RFC 5322                Internet Message Format             October 2008


   atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "`" / "{" /
                       "|" / "}" /
                       "~"

   atom            =   [CFWS] 1*atext [CFWS]

   dot-atom-text   =   1*atext *("." 1*atext)

   dot-atom        =   [CFWS] dot-atom-text [CFWS]

   specials        =   "(" / ")" /        ; Special characters that do
                       "<" / ">" /        ;  not appear in atext
                       "[" / "]" /
                       ":" / ";" /
                       "@" / "\" /
                       "," / "." /
                       DQUOTE
_
14
Philip Couling

あなたの解釈は正しいです。ローカル部分には、ピリオドで区切られたテキストのグループを含めることができますが、連続する複数のピリオドは許可されません。

質問で引用した RFC 5322のセクション3.4.1 のように、ドットatom "には、 atext文字またはa。文字で囲まれた "。" "したがって、定義により、ドットatomは2つ以上の連続したピリオドを含むことはできません。

参考までに、これは RFC 5322のセクション3.2. から取得したatext定義です。

atext           =       ALPHA / DIGIT / ; Any character except controls,
                        "!" / "#" /     ;  SP, and specials.
                        "$" / "%" /     ;  Used for atoms
                        "&" / "'" /
                        "*" / "+" /
                        "-" / "/" /
                        "=" / "?" /
                        "^" / "_" /
                        "`" / "{" /
                        "|" / "}" /
                        "~"

もちろん、2つのMTAが同じようにRFCを適用することはありません。そのため、一部のMTAは二重ピリオドを受け入れ、他のMTAは受け入れません。たとえば、Exchangeは二重ピリオドを含むアドレスへの配信を拒否しますが、すべてを使用する3つのメールサーバーをランダムに選択した場合のクイックテストでは、二重ピリオドがサポートされます。

したがって、厳密にRFC 5322に従って、問題が発生しているリレーをホストしている組織は、二重ピリオドを含むアドレスを拒否する権利を十分に持っています。

4
Richard Keller