【POP3】POP3プロトコル概要

1 はじめに

メールサーバーをたててみると、毎日毎日不正アクセスを試みるヤツラが多いこと!

といことで、ヤツラがいったいどんな悪さを企んでいるのか具体的に知るため、
SMTPPOP3のプロトコルを調べてみることにしました。

本記事は、上記のうちのPOP3の調査結果です。
この記事は、自分の備忘録として残しておくために記述したものです。

なお、この調査において、下に示す項目についても、
整理が済んだ、あるいはこれから整理するものです。

よければ、本記事と併せて読んでいただければと思います。

SMTPプロトル概要
SSL/TSLシーケンス(2022年08月31日までにアップ予定)
WiresharkによるSSL通信の解読と便利な使い方(2022年08月31日までにアップ予定)

2 POP3メール受信

2.1 POP3概要

POP3(Post Office Protocol version3)とは、電子メールを受信するためのプロトコルです。
SMTPと同じくアプリケーション層に含まれるプロトコルで、
トランスポート層TCPを利用しています。

# ここで言う「受信」は、クライアントの立場からを指します。

メールサーバー上には、
ユーザーのメールアカウントごとにメールボックスが作成されていて、
該当ユーザーのメールが保存されています。

POP3のコマンドと応答コードのやり取りで、
ユーザーは自分のアカウントのメールボックスにある電子メールをダウンロードして、
メールを読めるようにします。

POP3のポートは、標準で、非SSLは110番、SSL(POP3S)では995番が使用されます。
非SSL(POP3)、SSL(POP3S)とも、同じコマンドでメールサーバーからメールを読み出します。

なお、本記事では、クライアントとメールサーバーとのやりとりのことを、
以降POP3セッション、またはPOP3Sセッションと略すことにします。

SSLのPOP3Sの場合、POP3Sセッションの前に、暗号化のための鍵交換をするSSL/TSLシーケンスがあります。
SSL/TLSシーケンスが完了すれば、POP3Sセッションは非SSLのPOP3セッションと全く同じになります。

参考として、POP3Sセッションのパケットキャプチャを示します (暗号化部分は、Wiresharkで復号化)。

【備考】
コネクション確立のシーケンス
SSL/TLSシーケンス
POP3Sセッション(実際は、暗号化されている)

2.2 メール受信シーケンス

POP3セッションでは、クライアントとサーバーがコマンドと応答を1つずつ順に交換します。
クライアントとメールサーバーは、セッション終了までコマンドと応答のやり取りを継続します。

このセッションは、
AUTHORIZATION状態TRANSACTION状態、およびUPDATE状態の3つの状態に分かれます。

POP3プロトコルに関する詳細は、RFC1939を参照してください。

2.2.1 AUTHORIZATION状態

POP3セッションは、
通常はサーバーが110番ポートリスン(受信待機)することで開始されます。

クライアントがポート110番とのTCP接続を確立し、
サーバーがこれに応答すると、AUTHORIZATION状態が開始します。

クライアントは、自身のユーザーIDを続けたUSERコマンドを発行する必要があります。
サーバーが成功を示す肯定応答(+OK)を返すと、
ユーザーはPASSコマンドを発行し、これに続けてパスワードを提供します。
ここでもサーバーが肯定応答(+OK)を返すと、
サーバーは、サーバー上にありクライアントに関連付けられたメールドロップを取得します。

ここで、セッションはTRANSACTION状態に移行します。

このやり取りの例を、下に示します。

2.2.2 TRANSACTION状態

TRANSACTION状態では、クライアントが数種類あるコマンドのいずれかを発行し、
サーバーがこれに対して肯定または否定応答を返します。

これらのコマンドは、主にメールサーバー上のメールに関する情報を取得するものか、
またはメールサーバーからメールを取得するものです。
使えるコマンドについては、3.1項をご覧ください。

このやり取りの例を、下に示します。

2.2.3 UPDATE状態

UPDATE状態では、サーバーは削除マークの設定されたすべてのメッセージを削除し、
クライアントのメールドロップに関連付けられたリソースを解放し、TCP接続を終了します。

3 POP3コマンドと応答コード

本章では、主なPOP3コマンド応答コードを整理して、表にまとめて示します。

3.1 POP3コマンド一覧

3.2 POP3の応答とエラー応答一覧

3.2.1 応答コード

POP3の応答コードは、表3.2-1に示すように 正常応答異常応答の2種類しかありません。
異常応答の場合のエラーメッセージについては、3.2.2項で示します。

3.2.2 POP3エラーメッセージ一覧

以上

HTMLだと、
思うように編集することは難しく、やろうすればとっても時間が掛かります。
ですので、本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。

役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ