2015年11月15日日曜日

【備忘録】Gmailが RFC5321に準拠していないメールアドレスの処理に関する追記事項

以前、【お知らせ】RFC 5321に準拠していないメールアドレスはGmailで取り扱えなくなった という記事を書きましたが、その詳細説明がGmail Help ForumにてGoogle社員から追加コメントされていますので紹介します。
※私自身、そこまで英語が得意ではないので理解したポイントを纏めてみます。

RFC5321に違反したメールアドレスとは

上記リンク先で紹介されているのは、以下の6つですね。
  1. ドメインが含まれていない場合(foo)
  2. @ が複数入っている場合(foo@bar@example.com)
  3. ドメイン名が不正な場合(@invalid_name.example.com)
     ※ドメインにアンダーラインを含めることはできない
  4. 先頭にドットがつく場合(.foo@example.com)
  5. 先頭がスペースの場合( foo@example.com)
  6. 先頭に「recent:」が付く場合(recent:foo@example.com)
日本では携帯メールアドレスにおいて、まだRFC5321に違反したメールアドレスが使われているケースがあります。根本的には携帯メールとPCメールとやり取りを想定していなかったことが原因であったような気がしてなりません。昔は国内でしか使われていないものだったのでよかったのかもしれませんが、Gmailなど海外のメールサービスが流行ってきた段階で世界標準規格というものにさらされる結果になってダメになったわけですね。日本でも手をこまねいていたわけではなく、ドコモは2008年4月からRFC5321違反メールアドレスの取得は出来なくなっていました。本来はそれから段階的にRFC5321違反メールアドレスをなくしていく方向にもっていくのが正しいやり方だと思いましたが、そうではなく許容してしまっているのがトラブルの元になっていると思います。今後PCメールとやり取りするなら、メールアドレス変更が一番のトラブルを回避する策だと思います。

GmailのSMTPサーバーは「MX」「MSA」「RELAY」の3つのパートでメールが処理されている


1. MX = 他のメールサーバー と Gmailでのメール配送(送信)のやり取り


MX(MaileXchange)あるいは MTA(Mail Transportation Agent)のことであり、MTAはメールサーバーで動作するメール配送エージェント(sendmailとかpostfixとかそういったもの)です。

MXの例としては、HotmailやYahooメールからGmailへ送信すると、HotmailやYahooメールの送信サーバーがGmailへメールを送信しようとします。そのとき、Gmailが用意したどのメールサーバーへ送信するかというと、Gmailが指定したMXサーバー(DNSのMXレコードに記載された)へ送信するわけです。

2. MSA = クライアント(電子メールソフト等)→ Gmailへのメール送信のやり取り


MSA(Mail Submission Agent)は、ざっくりいうと電子メールソフト(Outlook/Thunderbird/Eudora/Mail.app等)など、GmailのSMTPサーバーへメールを送信するためのエージェントのことです。この送信過程では、ユーザー認証(Googleアカウント/パスワード or OAuth認証)が必要です。

3. RELAY


Google Apps for Workグループウェアに限定されたパートで、外部メールゲートウェイ(送信メールのゲートウェイ受信メールのゲートウェイ等)を利用したり、スマートホスト(リレーホスト)で利用されます。

RFC5321を適応した範囲

以上説明したすべてのケースの「MAIL FROM」「RCPT TO」(SMTPコマンド)について厳格にルールを適応しました。

以前は許容してきましたが、それなりの頻度で後処理においてメールを拒否したり、エラー返信が失敗したり、あるいはそれ以外の問題がありました。
そのため、送信アドレスがRFC5321違反の場合、早い段階でメールを拒否することで、エラー配信そのものが失敗してしまうケース(※1)を防ぎ、メールが失われてしまうことを防ぎますって発言されてますね。

※1
RFC5321違反のメールアドレスでメールを送信し、受け取った側がRFC5321違反だとして受取拒否した場合、本来は受取拒否メールを返送するはずが、返信アドレスがRFC5321違反なのでエラー配信そのものが拒否されてしまう現象。結果として送信者は相手に届いていないのにも関わらず、そのことが分からないケースが出てしまう恐れがある。

MSAへの修正について


MSAのケースでは修正するとかいってますね(もう修正されたかもしれませんけど)。
これは後述にあるPOP3受信時の最新モード(recent: Gmailアドレス)にした場合に、RFC5321違反と判断されてしまうバグへの修正だとわたしは受け取りました。

POP3受信については

電子メールアドレス:recent: Gmailアドレス
ユーザー名:recent: Gmailアドレス
パスワード:Gmailのパスワード

をやっちゃったケースですね。
本来は、最新モードを利用する際の電子メールアドレスは、「Gmailアドレス」のみにすべきなのです。


最新モードについて


Gmailでは最新モードといって、複数の電子メールソフトウェアなどからPOP3受信できるようにするモードが用意されています。それはユーザー名の先頭に「recent: 」をつけるというものです。そうすることで新たに設定した電子メールソフトウェアにおいては、過去1ヶ月間のGmailメールを受信でき、かつ電子メールソフトウェアの設定が優先されます。

ですので「サーバーにメッセージを残す」という電子メールソフトウェア側の設定を有効にしていないと、受信する端からGmailのメールがGmailのゴミ箱に移動されていくので注意です。

MXとRELAYについては、この適応を変更する予定はない

と明言してますね。

--- 抜粋 --- ("Not a valid RFC-5321 address" to a mail I sent messages already(Gmail Help Forum)
We don't have any plans to change the new behavior for the MX or RELAY case.  If you're having issues there, you should work to fix them.  As always, we'll monitor the situation and see if there's any adjustment we need to make there.
--------------

ということなので、RFC5321違反なメールアドレスはGmailでは受け付けない方針変更はしない(少なくても当面は)。ということでしょうね。

2015年11月15日 @kimipooh


0 件のコメント:

コメントを投稿