【メール】SMTP、POP3を使うときの行頭のピリオド
問題
SMTPのDATAコマンドでピリオドと改行の扱いについて。
コラム:メールの終わり
SMTPのDATAコマンドにおけるメールの終わりは「
. 」 で示される。もし、メールに「 . 」が含まれていた らどうなるのでしょうか。SMTPではメールに「 .」が含まれてい たときは「 ..」に変換してから送信します。そして受信側では 「 ..」は「 .」に変換します。つまり行頭にある「.」 は「..」に変換されるのです。それではなぜ、メール中の 「 . 」だけを「 .. 」と変 換しないのはなぜでしょうか。これは、メール中にもとからあった 「 .. 」と変換した結果である 「 .. 」とが区別がつかなくなるからです。 ですから、行頭にピリオドがあったら送信側ではもう一つピリオドを追加し、 受信側では行頭のピリオドを一つ削除します。
で、私がSMTPやPOP3をしゃべるときはどうしたらよいの?
試してみる
qmail環境で試した。MTAによって違いはある?
・SMTPで送信する
C:\>telnet mail.example.com 25 HELO mail.example.com 250 mail.example.com MAIL FROM: xxxx@example.com 250 ok RCPT TO: yyyy@example.jp 250 ok DATA 354 go ahead Subject: . no test FROM: x TO: y message message .... ... .. . 250 ok 1298079036 qp 22328 quit
・POP3で受信する → SMTPで送ったとおりのものが確認できる
C:\>telnet mail.example.com 110 USER yyyy@example.jp +OK Password required. PASS xxxxxxxx +OK logged in. STAT +OK 727 19217027 RETR 727 +OK 293 octets follow. Received: (qmail 27772 invoked from network); 19 Feb 2010 10:30:36 +0900 Received: from rrr.qqq.ppp.xxxxxx.com (HELO mail.example.com) (123.45.67.890) by 98.76.54.321 with SMTP; 19 Feb 2010 10:30:01 +0900 Subject: . no test FROM: x TO: y message message .... ... .. .
・メールソフトで受信する → ピリオドが減っている(CRLF..がCRLF.になっている)
Received: (qmail 27772 invoked from network); 19 Feb 2010 10:30:36 +0900 Received: from rrr.qqq.ppp.xxxxxx.com (HELO mail.example.com) (123.45.67.890) by 98.76.54.321 with SMTP; 19 Feb 2010 10:30:01 +0900 Subject: . no test FROM: x TO: y message message ... .. .
試してみる その2
・メールソフトで次の文面を送る
message message .... ... .. .
・メールソフトで受信する → 当然のように見た目そのままで受信される
message message .... ... .. .
・POP3で見てみる → 行頭のピリオドが増えている(CRLF.がCRLF..になっている)。メッセージ終了のCRLF.CRLFも見える。
message message ..... .... ... .. .
まとめてみる
受け取った CRLF.. を CRLF. に読み替えるのはクライアント(メールソフト、telnetして生のデータを見ている私)の仕事
送りたい CRLF. を CRLF.. にして送るのはクライアント(メールソフト、telnetして生のデータを見ている私)の仕事
コメント