3 Minutes NetWorking
No.81

3Minutes NetWorking

第81回POP3

■ メールを取りに行くプロトコル

インター博士

SMTPを説明したわけだが、ネット君。

ネット助手

はい、「メールを送るプロトコル」でしたよね。

インター博士

で、前も話したように、メールシステムは「メールを送る」と、もう1つでなりたっている。

エンベロープとメッセージ

[Figure78-05:メールシステム]

ネット助手

メールを必要なときにメールボックスから「取り出す」、メールボックスへ「取りに行く」プロトコル、がもう1つでしたよね。

インター博士

うむ、メールボックスにSMTPで送信されたメールがあるので、それを「取り出して」、自分のコンピュータへ保存するプロトコルだ。

ネット助手

なんでしたっけ、ぽっぷとあいまっぷ、でしたっけ?

インター博士

そう、POPIMAPだ。このうち、今回は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つの状態? 遷移?
どういうことです?

インター博士

AuthenticationTransactionUpdateの3つの状態だ。図に表すとこうなる。

3つの状態

[Figure81-01:3つの状態]

ネット助手

Authenticationと、Transactionと、Updateの3つの状態に順番になっていくわけですね?
ちなみに、日本語だとどういう意味です?

インター博士

「認証」「処理」「更新」だな。まぁ、「状態」というよりは「手順」と考えた方がわかりやすいかも、だ。
英語だと「State」だから「状態」と訳しているわけだが。

ネット助手

なるほど、「認証」手順、「処理」手順、「更新」手順、ですね。

インター博士

そういうことだ。で、この3つの「状態」でそれぞれコマンドを使用して、メールを受信していくわけだ。
使用するコマンドはいくつかあるが、よく使われるものは次の通り。

状態コマンド
AuthenticationUSER , PASS , APOP , QUIT
TransactionSTAT , LIST , RETR , DELE , RSET
UpdateQUIT
インター博士

一方、レスポンスは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でメールを消去し、切断する

3 Minutes NetWorking No.81

管理人:aji-ssz(at)selene.is.dream.jp