カレンダー

11 | 2016/12 | 01
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

広告



最近の記事

カテゴリー

DATE: CATEGORY:TECH


この件で、なぜか四面楚歌。

メールアドレスは大文字・小文字は区別されるはずなんですが、
「区別されないよ」って人に囲まれたので、あれれれ???
ってなってしまったので、少し調べてみた。

Where
Photo:Where's my mail? By Éole

正しい仕様


大文字・小文字を区別するか否かについて、
仕様は、以下の通り「区別する」が正しいです。

2.4 General Syntax Principles and Transaction Model

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.

2.4 一般的な構文の方針とトランザクションモデル

メールボックスのローカルパートは、大文字小文字を気にするもの
として扱わねばならない(MUST)。すなわち、SMTPの実装では、メール
ボックスのローカルパートの大文字小文字の区別は保存されるように
気にしなければならない(MUST)。

RFC2821より



なんで「区別されない」って人が多かったのか


仕様は「区別される」なのに、なぜ「区別されない」
っていう人が多かったのか。

理由は、実態として「区別されていない」から。

例えば、多くのメールサーバで使われているsendmailは、
デフォルトで「case insensitive」
(大文字小文字を区別しない)になっています。

もちろん「sensitive」にも設定できるんですが、
あえて「case insentive」の設定がされているようなんです。

で、RFC2822でこの記述。

3.4.1. Addr-spec specification

The local-part portion is a domain dependent string.
In addresses, it is simply interpreted on the particular host as a name of a particular mailbox.

3.4.1. addr-specの規定

local-partの部分はドメインに依存する文字列である。
特定のメールボックスとして、特定のホスト上で解釈されるだけである。

RFC2822より


正しい仕様local-partは「sensitive」なんですが、
ドメインに依存している部分でもある。

で、どこかのドメインが「case insentive」として管理している
かもしれないので、メールのリレーを考えると「sensitive」に
しているメールサーバが一般的になっている。

なので、実態としてはメールが大文字・小文字を区別してない
ケースが非常に多い。ってことじゃないかと。

確かに正しい仕様は「区別する」だけれども、
実は結果としては「区別していない」でも
ある意味で正しいのかもしれない。

もう少し整理しました(2015/7/12 追記)


本記事に頂いたコメントを元に、改めて本件について再考しています。
今回のものと結論に大きな差異はありませんが、もう少し整理してます。

メールアドレスの大文字小文字は区別されるのかどうか再考。:なんとなしの日記メールアドレスの大文字小文字は区別されるのかどうか再考。:なんとなしの日記hatena
だいぶ前の以下の記事にて。メールアドレスの大文字小文字は区別されるよ:なんとなしの日記この件で、なぜか四面楚歌。メールアドレスは大文字・小文字は区別されるは...


タグ : メール アドレス 大文字 小文字 区別 TECH

Comment

メールアドレスの大文字小文字は区別されないよ (^^;

SMTP の根拠を RFC822 に求めるのはいささか RFC が古いと思われます。
現在では、メールアドレスのローカル部を大小文字を区別するのは、
間違いだと言えるでしょう。

2008年提示の RFC5321 (SMTP) によると、その 4.1.2 節で、
「ローカル部の大小文字を区別するメールボックスを定義することは、
避けなくてはいけない(SHOULD avoid)」と記述されています。

「SHOULD NOT」ではなく「SHOULD avoid」というちょっと微妙な
表記になっているのは、2008年時点では大小文字を区別するシステムが
まだ存在していた状況を鑑みて、厳密に大小文字の区別を禁じる表現は
しなかったとものと推測します。

なお、RFC822 の 2.4 にある、
「MUST take care to preserve the case of mailbox local-parts.」との関係
ですが、ここではローカル部の大小文字を保持しろとは書いてありますが、
大小文字違いのメールボックスを区別しろとも同一視しろとも書いてありません。
(これが後に混乱を招く結果になったのだと思います。)

したがって、RFC通りの解釈をすると、ABc@... というメールアドレスは
必ず ABc@... として保持され(大小文字を変更せず)、かつ、
abc@ でも aBC@ でも受信するようメールボックスを実装するのが正解です。
で、その結果として、SMTP送信時にはメールアドレスの大文字小文字は
区別されなくなると思います。

いかがでしょうか。

区別されないんですね

コメントありがとうございます!
RFC5321 にそのような記載が・・・
確認してみた上で、ブログを再更新したいと思います。

やはりRFCには区別すると書いてある気がします

SE since 1995 さん

ご指摘の内容含めて、
RFC5321 を改めて確認しました。

内容がかなり長くなったので本記事の修正ではなく、別記事として投稿しましたが、やはりRFCには「区別する」と書いてある気がします。
4.1.2の記載にも言及してみましたので、ご確認・コメントいただければ幸いです。

メールアドレスの大文字小文字は区別されるのかどうか再考。
http://babyp.blog55.fc2.com/blog-entry-982.html

コメントの投稿

管理者にだけ表示を許可する


トラックバック


この記事にトラックバックする



copyright © なんとなしの日記 all rights reserved.
内職☆在宅ワークの最強は?アフィリエイト!. 初心者だってカッコ良いホームページ作るぅ!
Powered by FC2ブログ
Related Posts Plugin for WordPress, Blogger...