POP3(Post Office Protcol version3: RFC1939)

メールサーバからメールを受信する際に使用する通信プロトコルでユーザ認証機能(USER, PASS)が最初にあるだけで、SMTPとは違って基本的にコマンド発行の順番はない

通信例
 
クライアント
 
サーバー
@

telnet サーバ名 110 等・・・

サーバへ接続要求を送信

@ 接続許可(OK)を返信
A ユーザーIDを送信 A 要求許可(OK)を返信
B パスワードの送信 B 要求許可(OK)を返信
C メール(メッセージ番号)一覧の取得要求の送信 C 要求許可(OK)とメッセージ番号を返信
D メッセージ番号で指定したメールの取得要求の送信 D 要求許可(OK)とメールのヘッダ、本文を返信
E メッセージ番号で指定したメールの削除要求の送信 E 削除要求許可(OK)を返信する

※1
RFC上はQUITを実行するまで削除しないが
ほとんどのサーバはコマンド許可で削除する
F メッセージ番号で指定したメールの
ユニークID(UID)取得要求を送信

UIDは新着メールか受信済みメールかを判断するのに使用される
(メーラーが保存しておく)
F OKとUIDを返信する
UIDはサーバ上でユニークにふられるのでクライアント側で受信済みかどうかの判断に使用される
G セッションの終了要求を送信 G 終了要求許可(OK)を返信する
H 接続を切断する    

POP3コマンド一覧
コマンド 説明
USER ユーザIDを送信する USER me
PASS パスワードを送信する PASS mypasswd
LIST サーバ上にあるメール(メッセージ番号)の一覧を取得する
サーバー上に存在するメッセージに連番をふった形でメール一覧を取得する
LIST
UIDL メールのユニークIDを取得する
メッセージ番号を引数に実行し、受信メールをユニークに識別できるユニークIDを取得する。
このIDは過去に受信済みであればクライアント側で記憶されており、メール受信時に各メールがすでに受信したものか未受信かの判断に使用される。
UIDL 1
RETR メールを取得する
メッセージ番号で指定したメールをクライアント側に取得する
RETR 1
DELE メッセージ番号で指定したメールを削除する。
このときRFC上厳密にはセッション終了時までは削除フラグが立った状態で削除しないことになっているが、実際の実装ではほとんどのメーラーがその場で削除している。
DELE 1
QUIT セッションの終了要求を送信する QUIT