POPとは
POP(Post Office Protocol)とは、メールサーバ(POPサーバ)上のメールボックスに貯まった自分宛てのメールを、メールクライアント(POPクライアント)に取り込むためのプロトコルです。POP3の基本仕様は RFC1939 で、拡張機能は RFC2449 で規定されています。
POPがサポートする機能はシンプルで、ユーザの認証、サーバ上のメールボックスに届いたメールの情報取得、ダウンロード、削除などです。POPサーバは、メール配送そのものを行うわけではなく、SMTPサーバが受信したメールをメールボックスに保存し、取得要求に応答します。
現在はバージョン3(POP3)が主に使われており、バージョン2以前とは互換性はありません。一般に「POP」と呼ばれているものは現在では POP3 を指します。そのため、以下は POP3 に限定して話しを進めます。
但し、現在では複数端末でメールを利用することが一般的となったため、POP3 よりも IMAP が広く利用されていますが、POP3 は現在でも ISP や一部のメールサーバで利用されています。POP3とIMAPの違いは以下になります。
| POP3 | IMAP |
| サーバからダウンロード | サーバ上で管理 |
| 基本1台向け | 複数端末向け |
| 容量を節約できる | 動機が容易 |
通信手順
POPでは、POPサーバに接続した後、3種類の状態を遷移することで手続きを行います。
- AUTHORIZATION状態
POPサーバに接続完了後の状態です。クライアントの認証が行われ、認証が成功すると、対象となるメールボックスが決定されます。 - TRANSACTION状態
クライアントの認証完了後の状態です。メールボックスの処理を行うことができます。 - UPDATE状態
QUITコマンドの発行後の状態です。消去マークが付けられたメッセージの削除とセッションの切断が行われます。
POPクライアントがコマンドを送り、それに対しPOPサーバがレスポンスを返す形でやり取りが行われます。尚、以下の通信例は TCP110 番ポートを使用していますが、SSL/TLS による暗号化通信(POP3S)では TCP995 番ポートが使用されます。
| 項 | POPクライアント | 方向 | POPサーバ |
| ① |
POPサーバへ接続(Connected to -) ー |
→ ← |
ー オープニングメッセージを応答 |
| 接続はTCPの110番ポートに対して行います。接続完了後はAUTHORIZATION状態に入ります。 | |||
| ② |
クライアントの認証情報[APOP] ー |
→ ← |
ー 認証情報の確認 |
| クライアントの身元が確認できたら、確認の応答を行い、TRANSACTION状態に入ります。 | |||
| ③ |
情報取得[SAT/LIST/UIDL] ー |
→ ← |
ー 情報の送信 |
| メールボックスに溜まったメールメッセージの数やサイズを取得します。 | |||
| ④ |
メールメッセージの取得[RETR] ー |
→ ← |
ー メールメッセージの送信 |
| メールメッセージを番号を取得して、メールメッセージを取得します。複数ある場合は、複数回繰返します。 | |||
| ⑤ |
メールメッセージの削除[DELE] ー |
→ ← |
ー 確認を応答 |
| 不要なメールメッセージに消去マークを付けます。消去マークを付けたメールメッセージは、UPDATE状態に遷移した特に削除されます。 | |||
| ⑥ |
切断を要求[QUIT] | → | ー 確認を応答 (メールメッセージの削除実行) |
| 切断 | ← | ||
| TRANSACTION状態を終了してUPDATE状態に遷移します。 | |||
尚、QUITコマンドでなく、タイムアウトでセッションが終了する場合は、UPDATE状態にはならず、メッセージの削除は行われません。
POPコマンド
POP3では、メールメッセージの取得や情報の確認などの操作を、コマンドによって行われます。尚、右側の列の「A」はAUTHORIZATION状態、「T」はTRANSACTION状態、「U」はUPDATE状態で使用可能であることを表します。
| コマンド | 必須 | 説明 | A | T | U |
| USER | ○ | 基本認証を行う際のユーザ名の指定 | ○ | ||
| PASS | ○ | 基本認証を行う際のパスワードの指定 | ○ | ||
| APOP | オプション | APOP認証を行う。引数としてユーザ名とMD5ダイジェストを渡す | ○ | ||
| STAT | ○ | メールメッセージの数や全体のサイズなど、メールボックスに関する情報取得 | ○ | ||
| LIST | ○ | メッセージサイズなどの、メッセージに関する情報取得 | ○ | ||
| UIDL | オプション | メッセージのサーバ固有に一意な識別子(Unique ID)のリストアップ | ○ | ||
| RETR | ○ | メッセージ番号を指定してメッセージの取得 | ○ | ||
| TOP | オプション | メッセージボディを指定行数取得 | ○ | ||
| DELE | ○ | メッセージの消去マークの付加。DELEでは削除予約を行い、QUIT時に削除が確定 | ○ | ||
| RSET | ○ | メッセージの消去マークの解除 | ○ | ||
| QUIT | ○ | 切断の要求 | ○ | ○ | |
| NOOP | ○ | 何もしない | ○ |
拡張コマンド
POP3で追加されたコマンドは以下になります。
| コマンド | 説明 | RFC |
| XTND | XTNDコマンドに拡張機能名を渡すことで拡張コマンドとして機能する。 | RFC1082 |
| AUTH | AUTHコマンドの引数に認証機構名を渡すことで、認証機構の利用が可能。 | RFC1734 |
| STSL | TLSプロトコルの利用することで、TSLによる暗号化が行われる。 | RFC2595 |
| CAPA | 拡張サービス名、オプションコマンドなどの拡張機能のリストアップ。 | RFC2449 |
APOP認証
APOP(Authenticated POP)認証とは、POPのクライアント認証の際に、パスワードを平文で送らなくするための仕組みです。USERコマンドとPASSコマンドによる認証では、パスワードを平文で送るため、盗聴のリスクがあります。
APOP認証では、サーバから送られてきた一意な文字列と、元のパスワード(共有鍵)を組み合わせてMD5ダイジェストという文字列を生成し、これをAPOP認証のパスワードとして使用します。
| POPクライアント | 方向 | POPサーバ |
| - | ← | オープニングメッセージで一意な文字列を送付 |
| MD5ダイジェストを計算 | - | MD5ダイジェストを計算 |
| MD5ダイジェストを送信 | → | 両方のMDダイジェストが一致すれば認証完了 |
| 認証 | ← |
尚、APOP認証のパスワードは平文で送信されますが、MD5 ダイジェストから元のパスワードを導き出すことはできないため、盗聴されても元のパスワードは守られます。但し、MD5 には既知の脆弱性があるため、現在では APOP よりも SSL/TLS による暗号化通信が推奨されています。



