メールアドレス正規化

メールアドレスを一括で正規化します。小文字化、Gmail のドット除去、+タグ除去、プロバイダー別名ドメインの統一、見た目だけ違う重複の削除に対応。

ばらばらのアドレス一覧を、統一された正準形に整えます。 1 行に 1 件ずつ貼り付けてください。すべて小文字化したうえで、選択したオプションに応じて Gmail のドット除去、+タグ除去、プロバイダー別名の統一、見た目だけ異なる重複の削除を行います。

詳細

元のアドレス 正規化後 状態

メール正規化が実際に変えているもの

何が問題か

Alice.Smith+news@Gmail.comalicesmith@googlemail.comalicesmith@gmail.com は同じ受信箱に届きますが、素朴な SELECT ... WHERE email = ? はこれらを別人として扱います。その結果、重複アカウント、同じニュースレターの三重送信、同一人物による 11 回の無料トライアル更新が生まれます。

正規化とは、これらの変種をインデックス化・比較可能な 1 つの正準文字列にまとめる作業です。

4 つのルール

大文字小文字。 ドメイン部は RFC 1035 により大文字小文字を区別しません。ローカル部は RFC 5321 上は区別しますが、主要プロバイダーで実際に区別しているところはありません。実務では全体を小文字化するのが安全で、常に適用すべき唯一のルールです。

ドット。 Gmail はローカル部のドットを無視します(a.li.ce@gmail.com = alice@gmail.com)。これは Gmail 固有の挙動です。Outlook、Yahoo、企業ドメインに適用すると本当に別人を統合してしまうため、本ツールは gmail.comgooglemail.com のみドットを除去します。

+タグ。 サブアドレッシング(alice+shopping@gmail.com)は Gmail、Outlook、Fastmail、iCloud をはじめ多くの現代的なサーバーで利用でき、Yahoo はプラスの代わりにハイフンを使います。タグは振り分け用のラベルであって本人性の一部ではないため除去できますが、後述の注意点があります。

プロバイダー別名。 googlemail.comgmail.com と同じサービスで、hotmail.comlive.commsn.com はいずれも Microsoft のコンシューマー基盤に行き着きます。1 つの正準ドメインへ写像すると、さらに重複を検出できます。

正規化してはいけない場面

ユーザーが入力したアドレスはそのまま保存し、正規化形は比較用のキーとしてのみ使ってください。正規化後のアドレス宛に送信してはいけません。受信者が振り分けに使っている +タグを落としてしまいますし、ローカル部に + を含む正規の企業アドレスも実在します。

不正対策の文脈で +タグを剥がす場合も慎重に。「1 人で何度も無料トライアル」を確かに防げますが、登録ごとにタグを付けるプライバシー志向のユーザーも巻き添えにします。判定ではなくシグナルとして扱ってください。

また、これは検証ツールではありません。構文的に完璧なアドレスでもバウンスします。到達性を証明できるのは確認メールだけです。

オープンソースに関する注記:各プロバイダーの公開されている挙動に基づき、バニラ JavaScript で独自に実装しています。サードパーティライブラリもネットワーク通信も使用しません。

よくある質問

元のアドレスの代わりに正規化後を保存すべきですか?
いいえ。両方保存してください。送信には元のアドレスを、検索や重複検出には正規化形を一意インデックスとして使います。
なぜ Gmail だけドットを除去するのですか?
ドットを無視するのが Gmail だけだからです。Outlook、Yahoo、企業ドメインでは john.smith@ と johnsmith@ が別の社員である可能性があり、統合すると誤配送になります。
+タグはすべてのプロバイダーで使えますか?
現代的なサービスの多くは対応していますが、すべてではありません。Yahoo はハイフンを使い、古いサーバーや自前構築のサーバーではプラスを拒否することがあります。
正規化は検証の一種ですか?
違います。文字列を正準形に書き換えるだけです。メールボックスが実在するかは、確認メールを送る以外に確かめる方法はありません。
入力したアドレスはどこかに送信されますか?
いいえ。一覧全体がブラウザ内の純粋な JavaScript で処理され、ページの外に出ることはありません。