pop3 サーバーにtelnet でアクセスする
telnet pop3.myserver.example.com 110
over tls /ssl の場合は、openssl を使う
SSL/TLS を経由した暗号化通信をする場合は、openssl コマンドを使います。次の例は、google のgmail に pop3 over ssl したときのアクセス例です。
openssl s_client -connect pop.gmail.com:995 -crlf
POP3でログインする。
+OK ready for requests from USER USERNAME@myserver.example.com +OK send PASS PASS MY_PASSWORD +OK Welcome. STAT +OK 260 4516798
入力待ちになったら、まずユーザー名を呈示します
USER ユーザー名@ドメイン{enter}
ユーザー名がOKならサーバーから +OK
が返ります
+OK
次にパスワードを入れます
PASS MY_SECRET{enter}
するとサーバーからOKが返ります。
+OK Welcome.
コマンドが間違っていると サーバーから ERRが返ります。
-ERR
応答を+/-
だけ見ていればいいのでラクですね。
何件あるか
STAT
STAT を送信すると、件数が表示されます。( gmail の場合 迷惑メールやゴミ箱も併せて表示されるので、250 件前後になるそうです。)
メールの一覧
LIST
一覧が表示されます。 .
ピリオドが来るまでが一覧と番号です。 UIDL
(Unique ID Listing) でも可能です。
メールの取得
メールの取得は TOP か、RETR を使います、が、RETR は その名の通りRETREIVE で取り出して削除してしまうのであまり使いません。( gmail のpop サーバーはエラーになる。)。
メールを取り出します。メール取得は本文の行数分処理されます。
No. 260 を先頭から1000行取り出す例
TOP 260 1000
指定した行数に満たない場合は、有るだけ出てきます。これも .
ピリオドが来るまで、データが転送されます。
メールのヘッダがほしいときは 0
を指定すると楽です。
TOP 260 0
接続の終了
終了には次の文字列を送信します。
QUIT
無事切断されました。
quit +OK Farewell. read:errno=0
実際の接続例
gmail の pop接続した場合の注意点
最新の250件程度が表示されますが、スレッド表示されてないなど、GmailのWEBからみた表示とは異なります。
「250 件ほど」のメッセージのリストが提供される理由: POP クライアントから Gmail に対してメッセージのリストが要求されると、まだ POP でダウンロードされていない、日付の古い順に 250 件のスレッドが Gmail で取得されます。Gmail のスレッドは複数のメッセージで構成されている場合もあるため、メール クライアントでダウンロードされる個別のメッセージ数は通常 250 件よりも多くなります。 https://support.google.com/a/answer/6089246?hl=ja
POP3
そういえば、最近はPOPって使わなくなりましたね。IMAP / SMTP を直接叩いたことはあるんですが、popは長いこと触って無いなと思って改めてためしました。 とてもシンプルですね。
参考資料
POP3(Post Office Protocol version 3):インターネット・プロトコル詳説(7) - @IT