広告
広告
https://www.7key.jp/nw/technology/protocol/pop3.html#whatPOP3はインターネットやイントラネット上で、電子メールを保存しているサーバ(MTA【Message Transfer Agent】と呼ぶ)から電子メールをダウンロード(maildrop)するサービスを提供する簡易プロトコルです。MTAはMTS【Message Transfer System】と呼ばれるメッセージ転送システムによって、宛先であるMTAに電子メールを一時的に保管します。この一時的な保管場所のことをメールボックス(又はPOPアカウント)と呼ぶのですが、MTAによる仕事はここまでで、メールボックスに保存してある電子メールをどのように扱うかを決定するのは個々のユーザに任されます。ほとんどのユーザはMTAを個々の端末に立ち上げておらず、MUA【Mail User Agent】機能を個々の端末に持たせ、MTAを別途用意する方法が一般化しました。そこで、メールボックスから個々の端末に電子メールをダウンロードするためのプロトコルが必要となったと言うわけです(下図参照)。

POP3クライアントにできることは、POP3サーバから電子メールを取り出す(maildrop)ことと、POP3サーバ上の電子メールを削除することだけです。電子メールを送信する場合はSMTPのような電子メール送信用のプロトコルを用いる必要があります。また、POP3プロトコルはクライアントサーバ型のTCP上で動作するアプリケーションプロトコルです。サーバ側の待受けポートは110番を使用し、クライアントから110番ポートへの接続があった場合にサーバはPOP3サービスを開始します。
https://www.7key.jp/nw/technology/protocol/pop3.html#com_and_resPOP3もHTTPやSMTPのようにASCIIコードベースのプロトコルです。即ち、文字列の終端がCR+LFで示されるリクエストとレスポンスによって通信が行われることとなります。リクエストを表すコマンド行は必ず1行ですが、レスポンス行は1行の場合もあれば複数行に渡る場合もあります。複数行に渡る場合は、最終行をピリオドのみとしてレスポンスの最終行であることを示さなければなりません(実際は終了行の前の行のCR/LFと合さり、「CR/LF.CR/LF」の5文字で最終行を表すこととなります)。
コマンドは3,4文字の印刷可能なASCII文字列のキーワードと、1つのスペースで区切られた一つまたは複数の最大40文字のパラメータからなります。レスポンスの1行目は必ずステータスを表し、正常(+OK)かエラー(-ERR)しか存在しません。エラー番号などは定義されていませんので、詳細はステータスメッセージから判断されることとなります。

| 状態 | コマンド | 意味 | パラメータ | レスポンス | 意味 | パラメータ | 
|---|---|---|---|---|---|---|
| - | - | POP3サービス開始の挨拶 | - | +OK | - | 任意のメッセージ列 | 
| AUTHORIZATION | USER | メールボックス名の送信 | メールボックス名 | +OK | 肯定応答 | 任意のメッセージ列 | 
| -ERR | メールボックス名誤り | 任意のメッセージ列 | ||||
| PASS | メールボックス名の送信 | メールボックスパスワード | +OK | 肯定応答 | 任意のメッセージ列 | |
| -ERR | パスワード誤り | 任意のメッセージ列 | ||||
| APOP | メールボックス、認証文字列の送信 | メールボックス名ダイジェスト | +OK | 肯定応答 | 任意のメッセージ列 | |
| -ERR | 否定応答 | 任意のメッセージ列 | ||||
| AUTH | IMAP4認証 | IMAP4認証文字列 | +OK | 肯定応答 | 任意のメッセージ列 | |
| -ERR | 否定応答 | 任意のメッセージ列 | ||||
| QUIT | サインオフ | - | +OK | サインオフ確認 | 任意のメッセージ列 | |
| TRANSACTION | STAT | mailrop情報問い合わせ | - | +OK | メールボックス全体の情報通知 | メッセージ数、合計サイズ | 
| LIST | 全体/特定情報問い合わせ | メッセージ番号 | +OK | 該当メッセージの情報通知 | メッセージ番号、サイズ | |
| RETR | メールのダウンロード要求 | メッセージ番号 | +OK | 肯定応答/後続メール、メッセージ行の列 | 任意のメッセージ列/メール、メッセージ行 | |
| -ERR | メール無し | 任意のメッセージ列 | ||||
| DELE | メールの削除要求 | メッセージ番号 | +OK | 削除OK | 任意のメッセージ列 | |
| -ERR | 削除不可 | 任意のメッセージ列 | ||||
| TOP | 指定メッセージのヘッダ及び指定した行数分のメッセージ部 | メッセージ番号、メッセージ行数 | +OK | 後続メール、メッセージ行の列 | 任意のメッセージ列/メール、メッセージ行 | |
| -ERR | メール無し | 任意のメッセージ列 | ||||
| UIDL | メッセージunique-idの問い合わせ | メッセージ番号 | +OK | 応答 | unique-id列、unique-id行の列 | |
| -ERR | メール無し | 任意のメッセージ列 | ||||
| NOOP | 無操作 | - | +OK | 応答 | - | |
| RSET | 削除マークのリセット | - | +OK | 応答 | 任意のメッセージ列 | |
| QUIT | 完了通知 | - | +OK | サインオフ確認 | 任意のメッセージ列 | |
| UPDATE | - | - | - | - | - | - | 
クライアントからのコマンドがRFCに規定されていないものであった場合、サーバ側は否定応答をしなければなりません。
ユーザ認証にはUSER/PASS、APOP、AUTHのいずれかが使われます。
| 状態名 | 意味 | 
|---|---|
| AUTHORIZATION | クライアントが正当なユーザかどうかをチェックする。 | 
| TRANSACTION | 通信中に外部からの変更等が無いよう、排他制御を行う。 | 
| UPDATE | メールの更新や使用したリソースの開放を行う。 | 

https://www.7key.jp/nw/technology/protocol/pop3.html#supplementPOP/POP2とPOP3は互換性が維持されていない。
広告