それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

telnet / openssl を用いて pop3/pop3s のサーバーの疎通を確認する。

pop3 サーバーにtelnet でアクセスする

telnet  pop3.myserver.example.com 110 

over tls /ssl の場合は、openssl を使う

SSL/TLS を経由した暗号化通信をする場合は、openssl コマンドを使います。次の例は、googlegmailpop3 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

実際の接続例

f:id:takuya_1st:20200323192014p:plain

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

関連資料

IMAP の場合 telnet(openssl)でIMAPプロトコルを喋ってGmailに命令を出す。 - それマグで!

SMTPの場合 SMTP の認証プロトコルを手作業で確認する - それマグで!