pop 電子メールの取り出し
前回の記事で電子メールのシステムとsmtpついて説明をしました。
SMTPと言うプロトコルにより、送信側のメーラー(MUA)から送信側のメールサービスのあるサーバー(MTA)、送信側のメールサービスのあるサーバー(MTA)から受信側の メールサービスのあるサーバー(MTA)へ転送されるわけです。
そして、受信側のメールサービスのあるサーバー(MTA)にメールの受信しに、メールをとりに行きます。
このメールを取りに行くことを、POPやIMAPでおこなっています。
SMTPによって宛先メールアドレスが示すメールボックスに到着したメールを、受信側が取りに行くわけです。そこで使用されるのが、どちらかのプロトコル(POPかIMAP)と言うことになります。
順番に解説していきます。
メール受信に大切なプロトコル POPって何?
Post Office Protocol です。 郵便局プロトコルです。 前回のメールSMTPの記事でメールサーバーはポストや郵便局の役割をする、と言うような話をしました。
その名前の由来から、POPとされています。 ともかく現在利用されているバージョンは、バージョン3でPOP3 と呼ばれています。
これから解説するのはこのPOP3 の話をしていきます。 バージョン1とバージョン2はかなり古いプロトコルなので、バージョン3と互換性がありません。なので、POPと言えば、POP3のことを指すのが普通です。
POP3 は、TCPのポート110番を使ったお馴染みのクライアントとサーバーによるやり取りでメールを転送しています。POP3 は、クライアントからのコマンドと、サーバーからのレスポンスでやりとりを行っています。
このやりとりは3つの状態に分類することができます。
- 認証(AUTHENTICATION)
- 処理(TRANSACTION)
- 更新(update)
この3つの手順を実行することで、メールボックスからメールを取り出す、と言うことをやるのです。
メールボックスへの認証
この3つの手順を順番に解説していきます。
大まかな流れは画像の通りです。 USERやPASS、STAT などがコマンドです。サーバーが返すレスポンスが「+OK」 です。「+OK」は正常です。
POP3のレスポンスは「+OK」「-ERR」のどちらかです。
ユーザ認証の段階では、ユーザIDとパスワードにより、サーバに接続してきたユーザの身元の確認を行います。SMTPはもともと認証機能を持っておらず、拡張機能であるSMTP認証で行っていましたが、POP もともと認証機能を持っています。
なぜならPOP メールボックスに対し、メールを取り出すよう要求するプロトコルです。まったくの別人のメールボックスのメールを取り出したり、自分のメールボックスを別の誰かに読み取られないために認証機能があります。 正確に言えば、ユーザIDを送ることでメールボックスを指定し、パスワードでそのメールボックスを操作できる状態にするユーザであることを証明していると言うことです。
そのためユーザでユーザID、パスでパスワードを送信しています。ですがこれには少し問題があります。
その問題はユーザIDとパスワードを平文で送信していると言うことです。 平文で送信と言うのは盗聴されてしまうと、盗聴した人がメールボックスから勝手にメールを取り出すことができるからです。
それを防ぐために、チャレンジアンドレスポンス方式のAPOP 使用することができます。
簡単に言うとハッシュ関数を使ってパスワード盗聴されても大丈夫な形に変換し、認証を行うので、パスワードを暗号化できるのです。
- POP には3つの状態がある。「認証」「処理」「更新」
- ユーザIDとパスワードの認証を行うことでメールボックスとそれの持ち主を特定できる
- ユーザIDとパスワードを平文で送信される場合がある
- チャレンジ&レスポンス方式でハッシュ関数を使い、パスワードを盗聴されても大丈夫な形にできる
POPによるメールの取り出し
認証について解説しましたが、ここから処理について解説していきます。
メールの取り出して実行するコマンド、「STAT」「LIST」「RETR」「DELE」 の4つのコマンドです。
「STAT」 でメールの数と早バイト数を入手します。「LIST」 でメールの一覧を入手します。
「RETR」 メールの取得を行うコマンドです。「DELE」 で削除マークをつけます。
ここで削除マークをつけていますが完全に消すわけではないです。転送された後で削除されるので、送信元からは消えますが、転送先へ移動したようになります。
つまりPOP の基本的な特徴としてメールボックスにメールを残らないと言うことになります。メール移動のためのプロトコルだからです。もちろん設定によってメールを残すことや1部メールだけ移動させると言うことも可能ですが通常はメールを空っぽにすると言うふうに覚えておいてください。
POP BEFORE SMTP
ポップについてもう一つ話をします。SMTPのメールを送信の際にメール送信者の特定を行わないと言う話もしました。送信者の特定をしないので、スパムメールの第三者中継に利用されたりする可能性がありますなのでSMTP認証が存在すると言う話でした。
SMTP認証はSMTPに付加する拡張機能です。その時に2つの方法があると言う話をしています。その1つがSMTP認証もう一つが、「 POP BEFORE SMTP」 です。SMTP前のPOPです。 SMTP認証は拡張機能なので、拡張機能に対応しているメールサーバーでないと 使用できないという欠点があります。そこで SMTP場合に利用するのが、「 POP BEFORE SMTP」です。
「 POP BEFORE SMTP」、メールボックスがあるサーバーと、送信用メール転送サービスが同一のサーバーの場合に使用されます。そのサーバーは送信と取り出しに使うので、メール送信時と、メールを取り出すときの両方に接続します。つまり、SMTPとポップの両方で接続するわけです。
SMTPにはユーザ認証の機能は無いサーバーで、ポップの認証を使って両方で接続を行います。そこでポップの認証とSMTPの認証も同時に行う事を「 POP BEFORE SMTP」と言います。
- POPではメールボックスにあるメールを移動させます
- 通常メールボックスにあるメールは全て移動されます
- POPの場合、メールボックスは空っぽになるのが通常です
- SMTP認証の代わりとして、「 POP BEFORE SMTP」 が利用できます