■ メールを取りに行くプロトコル
SMTPを説明したわけだが、ネット君。
はい、「メールを送るプロトコル」でしたよね。
で、前も話したように、メールシステムは「メールを送る」と、もう1つでなりたっている。
[Figure78-05:メールシステム]
メールを必要なときにメールボックスから「取り出す」、メールボックスへ「取りに行く」プロトコル、がもう1つでしたよね。
うむ、メールボックスにSMTPで送信されたメールがあるので、それを「取り出して」、自分のコンピュータへ保存するプロトコルだ。
なんでしたっけ、ぽっぷとあいまっぷ、でしたっけ?
そう、POPとIMAPだ。このうち、今回はPOP3について説明しよう。
ぽすとおふぃすぷろとこる。「郵便局」プロトコル、ですか?
そうだな、ネット君。メールサーバとは現実の郵便でいうところでは何にあたった?
MUAが手紙の差出人/受取人、プロトコルが郵便配達人、MTAはポスト/郵便局。
そう、ユーザはメールサーバのメールボックス、つまり郵便局の私書箱やマンションのポストに相当するものへメールを取りに行く、そうだな?
ん〜、ですね。
郵便局/ポストは、受け取りに来た人に対して、あれこれやりとりをする。だから「郵便局」側のプロトコルってことで、Post Office Porotoclと名前がついている、のではないかな。
う〜ん、そういわれれば納得できるような。
で、博士? 「POP3」の最後の「3」はなんですか?
バージョンだ。現行で使われているバージョンが「3」なのだよ。「1」と「2」もあることはあるが、古いのでもう使われてないし、「3」とも互換性がない。 ▼ link
へー。じゃあ、「POP3」だけ覚えておけばいいですね。
「1」「2」と「3」では10年違うしな。まぁ「POP3」だけ覚えておけばいい、といえるな。
了解です。
■ 3つの状態とコマンド
さて、POP3だが、お約束のクライアント・サーバシステムだ。
ユーザが使用するMTUがクライアントで、MTA側のPOP3サーバソフトがサーバ、ですね。
そう。で、クライアントからサーバに送るものをコマンド、サーバからコマンドに対する返事をレスポンスと呼ぶわけだ。
おなじみですね。SMTPもそうでしたし。
そうだな。それと、POP3はTCPポート110番を使うことを言い忘れてたな。
さてさて。このコマンド&レスポンスだが、POPでは3つの状態を遷移する。
3つの状態? 遷移?
どういうことです?
AuthenticationとTransactionとUpdateの3つの状態だ。図に表すとこうなる。
[Figure81-01:3つの状態]
Authenticationと、Transactionと、Updateの3つの状態に順番になっていくわけですね?
ちなみに、日本語だとどういう意味です?
「認証」「処理」「更新」だな。まぁ、「状態」というよりは「手順」と考えた方がわかりやすいかも、だ。
英語だと「State」だから「状態」と訳しているわけだが。
なるほど、「認証」手順、「処理」手順、「更新」手順、ですね。
そういうことだ。で、この3つの「状態」でそれぞれコマンドを使用して、メールを受信していくわけだ。
使用するコマンドはいくつかあるが、よく使われるものは次の通り。
状態 | コマンド |
---|---|
Authentication | USER , PASS , APOP , QUIT |
Transaction | STAT , LIST , RETR , DELE , RSET |
Update | QUIT |
一方、レスポンスは2種類だけ。+OKと-ERRだけ。
「ぷらすおーけー」と「まいなすえらー」だけ?
SMTPみたいに、「200」とか「400」とかじゃなくて?
そうだ。あぁ、あとメール本文をデータとして送るものもあるが、「+OK」「-ERR」だけだ。ただし、後ろに「+OK 1 100」と「-ERR invalid password」などの状態表示がつく。
へー。なんか今までとは随分違いますね。
■ Authentication
では順番に状態ごとに説明していこう。まず、Authentication。
「認証」でしたね?
うむ。アクセスしてきたユーザがメールボックスを持つユーザかどうか確かめる手順、となる。
ここで使用するのは、USERとPASS、またはAPOPだ。
あれ? QUITはないんですか?
QUITは終了だから、まぁ、あとで話そう。
ともかく、ユーザIDとパスワードにより、メールボックスを持つ正規のユーザかどうか確かめるわけだ。USERとPASSコマンドを使って行う。手順はこう。
[Figure81-02:Authentication State]
まぁ、わりと基本的な認証の手順だが。
FTPとかと一緒ですね。
そうだな。あー、言い忘れてた。上図では「USER」が存在しなかった場合、「-ERR」を返すとあるが、実装では、存在しなくても「PASS」を行う場合の方が多い。
ん? 「USER」「PASS」を送ってから、「-ERR」ってことですか?
そう。どっちにしろ存在しないユーザがパスワード送ってもエラーだからな。
さてこの認証のポイントは何かね? ネット君? 君の科白がヒントだ。
僕の科白がヒント? え〜っと。「はい、「メールを送るプロトコル」でしたよね。」かな?
………予想通りといえば、予想通りだ。さすがネット君。
えへへへへ。
褒めてねぇ
はぅっ。
「FTPとかと一緒ですね」、だ。FTPのユーザ認証の欠点といえば?
………平文?
そう、POPの「USER」「PASS」で送られるパスワードもやはり平文なのだ。盗聴とかされるとパスワードが盗まれてしまうわけだな。
あ〜、そりゃ困りますよね。
よって、サーバによってはAPOPを使用できるサーバもある。流れはこうなる。
[Figure81-03:APOP]
はっしゅ? はっしゅ? どこかで聴いた記憶が?
あぁ、HTTPのダイジェスト認証で説明しているな。もう一度その時使った画像を出しておこう。
[Figure77-09:一方向関数・ハッシュ関数]
あー、そうそうこれこれ。コレ使うと、盗聴されても大丈夫っぽいって奴ですよね。
まぁ、そういうことだな。「USER」「PASS」か、「APOP」かどちらかを使用して、認証することでAuthenticationはおしまいだ。
で、次のTransactionですね?
■ Transaction
Transactionは実際にメールを受け取る「状態」だ。ここでは「STAT」「LIST」「RETR」「DELE」などを使用する。役割としては次の通り。
- STAT … 受信メール数と総バイト数の通知要求
- LIST … 受信メールの一覧表示とバイト数の通知要求
- RETR … 指定したメールの転送要求
- DELE … 指定したメールの削除要求
通知と、一覧表示と、転送と、削除。
削除? 消すんですか?
うむ。ここは大事なポイントだ。POPはメールをクライアントに転送した後サーバから消去するのだ。設定によっては消さない設定もできるが、基本的には消す。
う? クライアントに転送した後ってことは、メールはクライアントが受け取った後ですよね?
その後サーバから消えてもいいじゃないですか、クライアントが持ってるんだから。
まぁ、確かにそうだが。サーバに残しておきたい場合もあるだろう。
POPの場合、サーバに残しておくにはそれようの設定が必要だ。あ〜、OutlookExpressならこれだな。
[Figure81-04:メールをサーバに残す]
まぁ、メールをサーバに残す残さないという話はIMAPの時に話そう。
ともかく、サーバからメールを「移す」のがPOPと覚えておくとよい。
なるほど、メールを「移す」からサーバにメールが残らないってことですね。
そういうことだな。さて、Transactionの基本的な流れはこうなる。
[Figure81-05:Transaction State]
「STAT」「LIST」「RETR」「DELE」の順番で、「RETR」と「DELE」をメール数分だけ繰り返す、と。
あれ? 「DELE」コマンドって「消去マーク」をつけるだけで消さないんですか?
うむ。それは最後のUpdateで行う。
さて、ポイントだが、1つ目はさっき言ったように、POPで受信したメールはサーバに残らないこと。
はい、でしたよね。
もう1つはサーバのすべてのメールを取り出すことだ。
このメールだけ受信、とかこっちのメールはいらない、とかできない。
あれ? そうなんですか?
うむ。メールボックスにあるメールはすべて取り出す。取捨選択はできないようになっている。
あと、消去を解除したい場合、「RSET」コマンドを送ると消去マークがなくなって消去されなくなる。
そういえば、さっきでてきませんでしたよね、「RSET」。
そうだな。「RSET」を送るとすべてのメールの消去マークが消えて、消去されなくなる。
ともかく、Transactionではこのようにメールの取り出しが行われるというわけだ。
了解です。
■ Update
最後がUpdateだな。Updateでは「QUIT」を使って終了する。
終了する? 終了するのにUpdate、「更新」なんですか?
んー、まぁ確かにそうなんだが。このUpdateでQUITを使うと先ほどの削除マークがついたメールが消えるんだよ。
「メールを消してメールボックスを初期状態に戻す」=「更新」なんじゃないかな。
[Figure81-06:Update State]
削除して、終了、と。
そういうことだ。さて、POP3の動作はだいたいこんな感じだ。
了解です。
今回はこれぐらいにして、次回も「取り出すプロトコル」の説明をしよう。
IMAP4ですね?
そういうことだ。
ではまた次回。
了解です。 3分間ネットワーキングでした〜♪
- POP
-
[Post Office Protocol]
読みは「ぽっぷ」。現行はバージョン3(「POP3」)。
RFC1939で既定。
- IMAP
-
[Internet Messages Access Protocol]
読みは「あいまっぷ」。現行はバージョン4.1(「IMAP4rev1」)。
RFC3501で既定。
- 10年違う
- POP1がRFC918(1984年)、POP2がRFC937(1985年)。POP3はRFC1725(1994年)で初出、後にRFC1939(1996年)で標準化。
- APOP
- [Authenticated Post Office Protocol]
- ネット君の今日のポイント
-
- メールを取り出すプロトコルとしてPOP3とIMAP4がある。
- AuthenticationとTransactionとUpdateの3つの状態がある。
- Authenticationはユーザの認証を行う。
- Transactionはメールの取り出しを行う。
- 取り出されたメールはサーバから消去される。
- すべてのメールを取り出す。
- Updateでメールを消去し、切断する