1 はじめに
メールサーバーをたててみると、毎日毎日不正アクセスを試みるヤツラが多いこと!
といことで、ヤツラがいったいどんな悪さを企んでいるのか具体的に知るため、
SMTPやPOP3のプロトコルを調べてみることにしました。
本記事は、上記のうちの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ファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。