メールの仕組み(POP3)

メールソフトを使ったときには、メールの送信と受信では全く別の仕組みが利用されます。 ここでは、そのうちの電子メールをメールサーバから手元の機器にダウンロードする仕組みであるPOP3(Post Office Protocol)について解説したいと思います。

POP3とは?

普通のISPを利用してADSLやFTTHなどでインターネット接続を行っている場合、メールソフトでメールサーバの設定を行っていると思います。 メールサーバの設定には2種類あって、一つが送信用(SMTP)、もう一つが受信用(POP3やIMAPなど)になっています。 自前でメールサーバを用意してリモートログインしてメールサーバ内でメールを読むような奇特な人以外は、ISPの用意しているメールサーバからメールを受信する設定を行っていると思います。 (自前でメールサーバを用意できたり、sshでメールサーバにログインして直接メールを読むような奇特な人はきっとこの文章読んでいないと仮定しています。)

では、何故、ISPの用意したメールサーバからメールを受信しないといけないのでしょうか? それはメールの届き方に関係しています。 葉書や小包と違い、電子データを送受信する場合は送り手と受け手の機器が同時に起動してある状態になっていないといけません。 そのため、メールサーバは常時起動されっぱなしになっていないといけません。 (厳密には起動されっぱなしじゃ無くても届きますが、とりあえず、そういうことにして置いてください) また、メールは特定のメールサーバに存在するユーザに対して送られるため、メールサーバの場所が変わると届かなくなってしまいます。

以上の理由により、メールの受信を行うためには、常時起動されっぱなしのメールサーバが必要ということになります。 普通のインターネットユーザは使うとき意外はパソコンの電源を切ったりするので、常時起動されっぱなしのメールサーバを運用しにくいです。 また、普通のユーザはメールが読みたいのであって自分でメールサーバの運用など行いたくありません。

一般的なISPはメールサーバを用意してくれているので、ユーザはそこにアカウントをもらってメールを受信します。 ということは、そのユーザのメールはISPが運用するメールサーバに溜まっているということになります。 メールサーバに溜まっているメールを手元に持ってくるためのプロトコルがPOP3です。

POP3以外にも色々なプロトコルがありますが、とりあえずここでは単純でわかりやすく普及しているPOP3の説明を行いたいと思います。

POP3仕組み

POP3の仕組みは非常に簡単です。 メールサーバに対してTCPでコネクションを確立して、メールの個数などを確認し、必要なものをダウンロードします。 POP3で利用されるTCPのポートは110番です。

POP3では、TCPコネクションを確立すると、まずユーザ名とパスワードを入力します。 例えば、ユーザ名がtaroでパスワードが「!4tana-mo-」だとしましょう。 その場合、TCPコネクション上でクライアントであるメールソフトは「USER taro(改行)PASS !4tana-mo-(改行)」という風にメールサーバに送信します。 そうすると、ユーザが認証されて、メールの中身が見られるモードに切り替わります。 そこで、メール数やサイズを確認できるSTATコマンドや、メールのリストを取得できるLISTコマンド、メール本文を取得できるRETRコマンドなどが利用できるようになります。 QUITと入力すると通信が終了します。

pop3mailserv.hogehoge.or.jpというメール受信用サーバがあったとして、POP3プロトコルを手動で話してみるサンプルを示します。 手動で通信を行うにはtelnetを利用するのが良いでしょう。 telnetはWindows、MacosX、Linux、その他UNIX系OSで大抵入っています。 Windowsで使う場合にはコマンドプロンプトをご利用ください。 以下に「telnet pop3mailserv.hogehoge.or.jp 110」したときの例を示したいと思います。 太字で示してるのがユーザが手で入力する部分です。


+OK pop3.hogehoge.or.jp POP3 v2.1.13 server ready <123456.1132@hogehoge.or.jp>
USER taro
+OK Password required for taro
PASS !4tana-mo-
+OK taro has 3 messages (5932 octets)
STAT
+OK 3 5932
LIST
+OK 3 messages (5932 octets)
1 1000
2 2000
3 2932
RETR 1 ←メールを受信
+OK 1000 octets
From: ほげほげマン <hogehoge@hogehoge.or.jp>
To: taro@hogehoge.or.jp
Subject: test mail

テストメールです。(^^)/~

.
DELE 1 ←メール番号1を削除
+OK Message 1 has been deleted
QUIT←通信終了
+OK ←TCP接続が切れる

以上がメールソフトの気持ちになったサンプルですが、何となく裏でメールソフトがやっていることのイメージがつかめれば幸いです。

POP3を使うときの注意点

普通のPOP3はTCPのコネクションを確立してその上でメールのやりとりを行います。 ユーザとメールサーバの間の通信路にパケットを監視している人がいて、何も暗号化をしていない場合には、TCPによりやり取りされるデータはそのまま中身が見えてしまいます。 POP3では、ユーザ名やパスワード、メールの内容などが暗号化されずそのまま流れるため、機密やプライバシ情報が第三者に見られてしまう可能性があります。

「通信路に誰かがいるわけがない」と思うかも知れませんが、無線LANなどを使っている場合、無線が届く範囲にいるひとに内容が見られているという可能性もあります。

非常にセキュリティレベルが低いPOP3ですが、最近ではSSLでPOP3のTCPセッションを暗号化するなどの方式で第三者に情報を見られてしまうことを防いでいます。 また、POP3の通信でパスワードだけを暗号化して他人によるなりすましだけを防ぐAPOPなどもあります。 (ただし、メールの中身はそのままなのでAPOPの場合は情報は漏れ放題です。そのため、APOPはわりと過去の技術と言えるでしょう。) もしメールサーバが対応しているのであれば、可能な限りSSLなどの暗号化を行う設定をお勧めいたします。

前(メールの仕組み) インターネット入門TOP 次(SMTPの仕組み)

IPv6基礎検定

YouTubeチャンネルやってます!