メールアドレスの「形式が正しい」と「実際に届く」は別物: RFC 5322 とブラウザの検証規則を読む
問い合わせフォームで「正しい形式で入力してください」と言われるメールアドレスの判定基準は、実はブラウザごと・サービスごとに違います。なぜそんな差が生まれるのかを規格から読み解きます。
「形式が正しい」の基準はどこにある?
問い合わせフォームに [email protected] のようなアドレスを入力すると、サイトによって「正しい形式で入力してください」と弾かれたり、何も言われずに通ったりすることがあります。これは実装のバグというより、「メールアドレスとして正しい形式」の基準自体が、参照する規格によって違うために起きる現象です。本サイトのツール「メールアドレス形式チェック」も、ある基準を選んで判定しているに過ぎません。この記事では、その基準がどこから来ているのかを整理します。
RFC 5322: 郵便の規則、ただし非常に広い
メールアドレス (正確には「メッセージの差出人・宛先を表す addr-spec」) の正式な文法は、IETF が策定した RFC 5322 (Internet Message Format) の第 3.4.1 節に定義されています。この文法は実務上の想定よりずっと広く、以下のようなものも文法上は許容されます。
- 二重引用符で囲んだ local-part:
"John Doe"@example.com(空白や@自体を含められる) - コメント (丸括弧で注記を書ける):
john(コメント)@example.com - 角括弧で囲んだ IP アドレスそのもののドメイン:
john@[192.0.2.1]
RFC 5322 は「メールシステムとして相互運用するために何を受理すべきか」を定める文書であり、「Web フォームでユーザーにどこまで入力を許すべきか」までは決めていません。この違いが、現実の判定基準にズレを生む原因です。
WHATWG HTML Living Standard: ブラウザが実際に使う基準
HTML を標準化している WHATWG (Web Hypertext Application Technology Working Group) は、<input type="email"> の検証アルゴリズムとして、RFC 5322 よりかなり狭い正規表現を HTML Living Standard の 4.10.5.1.15 節 で定義しています。Chrome・Firefox・Safari はこの正規表現をそのまま実装しているため、ブラウザの required + type="email" だけで入力チェックをしている問い合わせフォームは、事実上この基準で動いています。本サイトのツールもこの正規表現を使っています。
| アドレス例 | RFC 5322 (正式文法) | WHATWG (ブラウザ標準) |
|---|---|---|
[email protected] |
有効 | 有効 |
"John Doe"@example.com |
有効 (引用文字列) | 無効 (引用文字列を未サポート) |
john@[192.0.2.1] |
有効 (IP リテラル) | 無効 (角括弧ドメインを未サポート) |
john@localhost |
有効 (ドット無しドメインも可) | 有効 |
「形式が正しい」は「届く」を保証しない
どちらの基準で判定しても、わかるのは「文字列としてメールアドレスらしい形をしているか」だけです。次のことは文字列の形式チェックだけでは確認できません。
- そのドメインに実際にメールサーバー (MX レコード) が存在するか
- そのメールボックスが実在し、使われているか
- 送信先がメールを受け取る設定になっているか (迷惑メールフィルタなど)
これらを確認するには、実際に確認メールを送って本人にクリックしてもらう「ダブルオプトイン」のような運用上の確認が必要です。RFC 5321 (SMTP) が規定するメール配送プロトコル自体は、宛先が実在するかどうかを送信前に保証する仕組みを持ちません。フォームの入力チェックは「typo に気づける」程度の安全網として使うのが実態に合っています。