連載:インターネット・プロトコル詳説(7)
POP3(Post Office Protocol
version 3)
梁瀬介次
2001/6/5
■メール転送プロトコルのもう一方の担い手「POP3」
|
||||||
| 表1 POP3の歴史年表 |
今回はSMTPと並ぶメール転送プロトコルの一方の雄、POP3について解説しよう。POP3については、いまさら説明することもないだろう。メールサーバ(多くの場合、MTAサーバ)に到着したメールを、PCなどのクライアントに取り込む(ダウンロード)ためのプロトコルだ。皆さんが使っているメーラは、このPOP3に例外なく対応しているはずだ。
|
||||||||
| 表2 POP3関連の標準仕様 |
なおPOP3とは、「POP version3」という意味だ。ということは、「バージョン1や2もある」ということなのだが、現在では、これらはほとんど使われることはない。また、POP3とオリジナルのPOP/POP2とは、互換性も維持されていない。
■なぜPOP3が必要か
POP3の説明に入る前に、少しだけこのプロトコルの位置付けを確認してみよう。
![]() |
| 図1 POP3の動作模式図。POP3の主な仕事は、SMTPルーティングによって配信されたメールを、POP3サーバとPOP3クライアント(メーラ)との間でやり取りすることだ |
POP3は、ユーザーエージェント(「メーラ」または「POP3クライアント」)とメールサーバ(POP3サーバ)とをつなぐプロトコルである。前回説明したSMTPサーバとは別の機能だ。つまり、MTAを司るプロセスやジョブとは別のサーバ機能によって、POP3サーバ機能は提供されている。実際、TCPポートもMTA(SMTP)は25番を使用するが、POP3は110番を用いる。当然、設定も通常はまったく別々に行わなければならない。
MTAの仕事は、MTAサーバ上のユーザーごとの「メールボックス(POP3では「メールドロップ:mail drop」と呼ばれる)」に正しくメールを届けるところまでだ。メールボックスに届いたメールをどのように読んだり入手するかは、個々のユーザーの自由裁量である。
歴史的には、メールサーバはUNIXで運用されてきたので、ユーザーはメールサーバへTelnetなどでログインし、コマンドラインからメールを読めばよかった。また、当時はマシンが高価なため、共有環境が一般的で、MIMEなど複雑なメールもなかった頃の話である。
しかし、PCの普及に代表されるような1人1台の環境が整備されても、個々のマシンにMTAを立ち上げてメール配信をさせるのは非現実的だ。そこで、MUA(Mail User Agent)機能を個々のユーザーのPCに任せ、メールサーバはMTAに専念する方法が一般化した。そこで、メールをサーバからローカルPCに取り出すために考え出されたのがPOPなのである。POP3は、「ローカルPCまでは届かないメールの『最後の1ホップ』を埋めるためのプロトコルだ」という言い方ができるだろう。
POP3の特徴としては、以下のことが挙げられる。
- プロトコルやコマンド体系がシンプル
SMTPなどと同様に比較的実装しやすく、処理負荷も低い
- ストア・アンド・フォワード型のサービスである
ストア・アンド・フォワードとは、メールサーバにメールが溜まると、そこから一方的にメールを取り込むサービス方法のことだ。つまり、サーバとの関わりは最初にメールを取り込んだ時だけでしかない
元々メール取り込みのためだけに開発されたプロトコルなので当然なのだが、言い方を換えれば、個々のローカルマシンでしかメールの管理は行えず、モバイル環境などには不向きだ。
近年、こうした点から、POP3では十分にMUAの役割が果たせないことが明らかになりつつある。これらの問題点については、次回以降、IMAP4に関連して述べることにしよう。
■POP3コマンド
このような特徴をもつPOP3の機能は、SMTP以上にシンプルだ。主に以下の機能から成り立っている。
- 認証
ユーザー名とパスワードによる認証によって、対象とするユーザーのメールボックスを認識する
- メールのダウンロードや一覧情報の確認
メールボックスに届いているメールの取り出しや、届いているメール数、サイズの確認
- メールの削除
メールボックスからのメール削除
では、実際のプロトコル例を眺めてみよう。以下は、一般的なメーラでの例だ。
![]() |
| 図2 POP3による、サーバとクライアント間でのやり取りの様子 |
POP3も多聞に漏れず、HTTPやSMTPのようにテキスト(ASCIIコード)ベースのプロトコルである。文字列の終端が「CR(0x0d)+LF(0x0a)」で示される行からなるリクエストとレスポンスによって、通信が行われる。
リクエストは、コマンドとパラメータからなる、1行のみのデータだ。レスポンスは1行の場合もあれば、複数行に渡る場合もある。複数行に渡る場合は、最終行は「.(ピリオド)」のみの行によって、レスポンスの最終行であることを示さなければならない。
レスポンスの1行目は、必ずステータスを示している。ステータスは単純で、正常(+OK)かエラー(-ERR)かしか存在していない。エラー番号などは定義されておらず、詳細はステータス・メッセージから判断される。
[+OK|-ERR] ステータス・メッセージやパラメータ
まず接続が開始されると、サーバからはグリーティング・メッセージが返される((1))。次に、クライアントはログイン認証を行う。USERコマンドとPASSコマンドで、ユーザー名とパスワードを送出している。認証が正常に終了すると、サーバはユーザーのメールボックスに届いているメール数と全体サイズ(バイト単位)を表示する((2))。認証後は、そのユーザーのメールボックスをサービスすることになる。
なお、ほかのPCなどから同じユーザーですでにログインしていた場合には、エラーとなり、接続はできない。これは、POP3では「トランザクション状態」という考え方があるためだ。例えば、同時に同じユーザーがログインして別々のメールを削除したり、あるいはログイン中にも新規メールが届くかもしれないが、それによって処理に矛盾が出てしまう可能性がある。そこで、ログイン後はサーバによってメールボックスはロックされ、新規メールの到着も遅延される。このトランザクション状態は、ログイン後からログアウト時まで継続される。
では、そのほかのコマンドを説明しよう。
●STAT
現在のメールボックスのステータス表示を行う。正常終了時には、以下のようなレスポンスが返る。
+OK メールボックスに保存されているメール数 メール全体のサイズ
内容は、グリーティング・メッセージとほぼ同等だ。注意してほしいのは、「メール数」とは、あくまでメールボックスに現在存在しているメールの数だということだ。必ずしも新規に到着したメールとは限らない。POP3では、新規メールという概念は元々存在していないのだ。メーラで新規メールチェックなどの機能があるが、これはこの後説明するLISTやUIDLコマンドによって定期的にメールボックスをチェックし、前回と比べた変化から検出しているに過ぎない。
●LIST [メッセージ番号]
メールボックス内メールの一覧表示を行う。レスポンスの1行目はSTATのレスポンスとほぼ同じ意味だ。2行目以降に、以下のようなメールごとの情報が並ぶ。
メッセージ番号 メールごとのサイズ
メッセージ番号とは、メールボックス内での順序番号である。メールボックスへの到着順に1から順に割り振られる。注意しなければならないのは、例えば、途中の1メールだけが削除されると、次回接続時には、番号は再度到着の早い順に振られ直されるということだ。つまり、現在の接続で割り振られている番号が、次回接続時も同じメールを指しているとは限らない。おそらくは変わっていると考えるべきである。
引数として、メッセージ番号をとることもできる。この場合は、指定されたメッセージ番号のメールの情報のみを表示する。
●RETR メッセージ番号
メールメッセージの取得(ダウンロード)を行う。引数として、必ずメッセージ番号を指定する。例によって、レスポンスの1行目にステータスを表示した後、2行目以降に実際のメールデータが表示される。そして、最後の「.(ビリオド)」がデータの終端を示している。メールデータは、MIMEの回で説明したようなヘッダとボディからなるメールメッセージである。
RETRメッセージは、単にメールメッセージのダウンロードを行うだけだ。メールの削除は、明示的にDELEコマンドが発行されない限り行われないことに注意しよう。RETRコマンドは、メールのダウンロードを行う最もメインのコマンドである。通常は、LISTコマンドによって全メール数を取得して、RETRコマンドを繰り返して順にメールを取り出す……といった使い方をする。
●TOP メッセージ番号 Line数
TOPコマンドはRETRコマンドに酷似している。RETRは単にメールメッセージ全体をダウンロードするだけだったが、TOPコマンドは、Line数を指定することでダウンロードするメールメッセージのボディーの行数を指定できる。ヘッダーは必ずダウンロードされる。0とするとメールヘッダーのみ(メールメッセージのうち、最初の空行の部分まで)となるので、主にメール一覧のみ必要としている場合などによく使用される。
●DELE メッセージ番号
指定したメッセージ番号の示すメールをメールボックスから削除する。一般に、POP3対応メーラには「サーバにメールを残すかどうか」というオプションがあるが、これをオンにした場合には、このDELEコマンドによって、メールダウンロード後に該当メールを削除しているわけだ。
LISTコマンドの項でも述べたが、DELEコマンドによって欠番が生じると、次回接続時にはメッセージ番号が再度順番に割り振られる。ただし、DELEコマンドの発行後、ログアウトを行うまでは欠番のまま番号は保持される。
![]() |
| 図3 DELEコマンド後のメッセージ番号の変化。LISTコマンドを実行したところ、2が欠番となっているが、セッションが続いている間は欠番のまま保持される |
●RSET
これまで行われた処理のリセットを行う。おもに、DELEコマンドの結果を取り消すために行われる。つまり、それまでに行った削除命令はすべてキャンセルされる。
●UIDL [メッセージ番号]
UIDL(Unique ID Listing)によるメール一覧の表示を行う。ステータス行に引き続いて、メッセージ番号とUIDLからなるレスポンス行が返答される。UIDLとは、メールメッセージ個々に割り振られたユニークとなるIDのことだ。POP3サーバの管理下では、暗黙的にすべてのメールがこうしたIDを保持する。多くのPOP3サーバでは、実際にメールのヘッダにもUIDLヘッダを挿入する。
前述したメッセージ番号は、その接続でのみユニークであり、UIDLとはまったく意味合いは異なっている。形式は任意だが、英数字などのASCII文字を用いた1〜70文字からなる*1。例えば、メールボックスからメールを削除しなかった場合、全メールをダウンロードすることなく、前回まで存在していなかった新規のメールがあるかどうか見分けるためにUIDLが用いられる。
|
●NOOP
何もしない。必ず正常終了となる。クライアントが、サーバが稼働しているかを確認するために用いられる。
●QUIT
ログアウトを行う。トランザクション状態が終了し、削除処理が反映され、メールボックスのロックも解除される。
●APOP ユーザー名 ダイジェスト
USER/PASSコマンドに代わるログイン認証を行うコマンドだ。いわゆるチャレンジ・アンド・レスポンス方式を採用している。USER/PASS方式では、パスワードが生でネットワークを流れることになるが、チャレンジに対するダイジェストをクライアントからサーバへ渡すことでこれを防ぎ、セキュリティレベルを高めることを目的としている。
![]() |
| 図4 APOP(チャレンジ・アンド・レスポンス)の例 |
そのほか、SMTPの回に紹介したSASL(Simple Authentication and Security Layer)による認証も使用されることがある。
拡張仕様も含めて、コマンド一覧を別表にまとめた。参考にしてほしい(こちらをクリックすると、別ウィンドウで表示します)。
このようにシンプルなPOP3だが、メールシステムの足りない一角を埋める重要な位置を占めるに至っている。とはいえ、完全に満たされているわけではなく、これからのインターネットの発展において実力不足とされていることも事実だ。次回はそのような観点からも、IMAP4について解説しよう。
| 「Master of IP Network総合インデックス」 |
ホワイトペーパー(TechTargetジャパン)
- どこまで出る? LTEの通信速度 (2010/3/17)
光ファイバに匹敵する通信速度を実現すると期待されているLTE。ホントにそんなに出るの? という疑問に答えます - インターネット世界の地図 (2010/2/23)
荷物の届け先まではどの道を通っていけばいいのでしょう? それを決める「経路選択」の仕組みを説明します - Androidアプリはビジネスになるのか (2010/2/12)
「iPhoneアプリの次はAndroid?!」NECビッグローブのAndroidアプリ販売サイト「andronavi」を通して、その可能性に迫る - 知られざるLTEのネットワーク構成 (2010/1/13)
LTEのネットワーク構成やプロトコルスタックを詳解。それぞれどんな役割を果たしているかを解説します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |











