よくメール送受信のサーバを「メールサーバ」と呼びますが、 この表現にはちょっと語弊があります。なぜならメール送信とメール受信の サーバソフトウェアは全く別だからです。メール送信用サーバを SMTP サーバ、 メール受信用サーバを POP サーバ、あるいは POP3 (POP Version 3) サーバと言います。
sender@from.com さんの SMTP サーバは smtp.from.com、 receiver@to.com さんの POP3 サーバは pop3.to.com だとします。
sender@from.com さんが receiver@to.com さんにメールを送信すると、 メールは smtp.from.com で動いている SMTP サーバ宛に送られます。 smtp.from.com の SMTP サーバは、宛先が receiver@to.com 宛となっているので to.com の SMTP サーバに向けてメールを転送します。to.com の SMTP サーバがメールを受け取ると、 receiver さん宛のメールであることを確認して receiver さんのメールボックスに メールを格納します。
ここまでは全て SMTP サーバがメールを中継してきました。 POP3 というのは、メールボックス (SMTP サーバの中のファイル) を 自宅の PC に転送するためのシステムです。つまりメールボックス の中のメールを、自宅の PC に転送するプログラムを今から書こう というわけです。
POP3 サーバ名が pop3.foo.com で、あなたのユーザ名が hogehoge、 パスワードが secret だとします。POP3 のポート番号は 110 と決まっているので、 telnet で pop3.foo.com の ポート 110 に接続します。
% telnet pop3.foo.com 110 +OK QPOP (version 2.3+youbin) at pop3.foo.com starting. <10005.897840800@pop3.foo.com> USER hogehoge +OK Password required for hogehoge. PASS secret +OK hogehoge has 6 messages (10211 octets).POP3 サーバに接続すると、まず「USER ユーザ名」、「PASS パスワード」 という文字列を送信しなければいけません。ここで間違ったパスワードを 打つとメールは読めません。ユーザ認証に成功すると、 何通のメールが届いているか表示されます。 この場合は 6 通で、6 通の合計の長さは 10211 バイトであることがわかります (octet = byte です)。
また、LIST コマンドを使うと、各メールの長さ(バイト数)が POP3 サーバから送られてきます。
LIST +OK 6 messages (10211 octets) 1 1518 2 1612 3 1636 4 1486 5 1631 6 2328 .メールの内容を得るには「RETR メール番号」というコマンドを送ります。 メール番号というのは LIST コマンドで表示された番号です。
RETR 1 +OK 1518 octets …(1番のメールの内容)… .サーバからメールを削除するには「DELE メール番号」とします。
DELE 1 +OK Message 1 has been deleted本当に DELE コマンドを使うとメールが消えてしまうので、 ここでは試さない方がいいでしょう。
QUIT コマンドでサーバとの通信を終了できます。
QUIT +OK Pop server at pop3.foo.com signing off.
ご意見・ご指摘は Twitter: @68user までお願いします。