コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

2023年3月時点ではメールアドレスのローカル部の文字は大文字小文字を区別しないのが多数派

実態と合わせてザッとまとめる

先にまとめ

  • メールアドレスのローカル部(アットマークより前)は大文字小文字を区別しないことが多い。そのため hoge@example.comHoGe@example.com も同じアドレスとみなす場合がほとんど。
  • 「区別しないこと多い」という表現をしているのは区別しないという仕様ではないため。
  • 一部のWebサービスではメールアドレスのローカル部は小文字で保存しているケースもある

仕様から考える

仕様としてはRFC5321を参照すると以下の通り

The local-part of a mailbox MUST BE treated as case sensitive. Therefore, SMTP implementations MUST take care to preserve the case of mailbox local-parts. In particular, for some hosts, the user "smith" is different from the user "Smith". However, exploiting the case sensitivity of mailbox local-parts impedes interoperability and is discouraged. Mailbox domains follow normal DNS rules and are hence not case sensitive. - RFC 5321: Simple Mail Transfer Protocol - 2.4

日本語訳verだと以下の通り

つまり、コマンド動詞、メールボックスのローカル部分以外の引数値、および自由形式のテキストは、大文字、小文字、または大文字と小文字の任意の組み合わせでエンコードされても、その意味には影響しません。メールボックスのローカル部分は、大文字と小文字を区別する必要があります。したがって、SMTP実装は、メールボックスのローカル部分の大文字と小文字を維持するように注意する必要があります。特に、一部のホストでは、ユーザー「smith」はユーザー「Smith」とは異なります。ただし、メールボックスのローカル部分の大文字と小文字の区別を悪用すると、相互運用性が妨げられるため、お勧めしません。メールボックスドメインは通常のDNSルールに従うため、大文字と小文字は区別されません。 - RFC 5321 - Simple Mail Transfer Protocol 日本語訳

わかりにくい部分ではありますが、「区別する必要がある」と書かれており、最後の最後で「大文字と小文字を区別して運用することはオススメされておらず、区別しないほうがよい」とされている。

実際のメール送信において

実際のメール送受信の挙動としては、RFCの挙動の「メールボックスドメインは通常のDNSルールに従うため、大文字と小文字は区別されません。」の部分に準じて動く。そのため大文字と小文字を区別しないため HoGe@example.comhoGE@examole.com も同じメールアドレス扱いになり、正しく届く。

サービスによってはメールアドレスは小文字で保存されることがある

一部のWebサービスではメールのローカル部が大文字だった場合は小文字で保存するなどの処理をとっている。例えばSalesforceでは以下のように記載がある

Salesforce ではメールアドレスは小文字で保存されます。 - メールアドレスの検証

関連リンク