server-memo.net

popコマンド

      2016/01/22

telnet等でPOPサーバに接続しメールを確認する方法

メールサーバの動作試験を行う際、メールの受信確認のためだけにメーラーの設定を毎回するのが面倒な時に、telnetコマンドを使用してPOPサーバに接続してるのですが、その時の手順メモです。

接続手順

簡単な接続手順は下記の様になります。

  1. telnet でPOPサーバの110番ポートに接続
  2. USERコマンドにてユーザ名入力
  3. PASSコマンドにてパスワード入力
  4. メールの確認 (STAT,LIST,RETRコマンドを使用)
  5. QUITでログアウト

POPコマンド説明

よく使うコマンドの説明一覧です。

コマンド自体はまだありますが他のコマンドはあまり使用したことがありません。

コマンド 説明
USER [ユーザ名] メールを受信するユーザ名を入力
PASS [パスワード] メールを受信するユーザのバスワードを入力
STAT 受信しているメールの数とバイト数を表示させる
LIST 受信しているメールの一覧とバイト数を表示させる
RETR [メッセージ番号] 指定した番号のメールを受信(表示)させる
DELE [メッセージ番号] 指定した番号のメールを削除する
RSET メール削除の取り消し
QUIT 接続を終了する

手順詳細

実際にPOPサーバに接続した際のログを下記に記述します。このログの接続先POPサーバはdovecot-2.0.9となっています。

POPサーバ接続

telnetコマンドを使用してPOPサーバに接続します。一般的なPOPサーバの待ち受けポートは110ですので、110番ポート指定して接続します。

書式
telnet  [サーバのFQDNまたはIPアドレス] [ポート番号(通常は110番)]

今回はPOPサーバにSSHで接続している状態で、telnetコマンドを実行しているので、localhostに接続しています。

telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
ユーザ名入力

USERコマンドを使用してユーザ名入力します。

書式
USER [ユーザ名]

コマンドが正常に実行されるとOKと返ってきます。

※今回はtamohikoユーザでログインしています

user tamohiko
+OK
パスワード入力

PASSコマンドを使用してパスワードを入力します。

書式
PASS [パスワード]

ユーザ名とパスワードの認証がとおればPOPサーバにログインできます。

pass xxxxxxxxxxx
+OK Logged in.
認証失敗の場合

認証に失敗した場合は、「Authentication failed」と表示されログインできません。その場合はまた、USERコマンドからまた入力しなおす必要があります。

user test
+OK
pass test
-ERR Authentication failed.
メールデータの確認

メールデータの確認方法ですが、私がよく使っているのが「STAT」「LIST」「RETR」コマンドです。それぞれのコマンドを実際に使用した際のログと照らし合わせて記述します。

STAT

メール数とデータサイズの確認ができます。下記のログではメールが3通あり全部のメールデータが6475byteであることが表示されています。

stat
+OK 3 6476
LIST

メール一覧の確認確認ができます。STATコマンドとは違いメール一通ごとのサイズが表示されます。

list
+OK 3 messages:
1 2238
2 2236
3 2002
.
RETR

メールの中身を確認する事ができます。下記のログでは省略していますが、実際にはメールのヘッダー情報や本文、添付ファイルなども表示されますので、あまりにデータが大きいメールを確認してしまうと表示内容が膨大な量になり大変なことになってしまいますので注意してください。

また、htmlメールなどはエンコードされてるので、そのままでは理解不能だと思います。添付ファイルも同様にRETRコマンドでは内容は分からないと思います。

書式
RETR [メール番号]

メール番号が1番のメールを表示した際のログです。

retr 1
+OK 2238 octets
Return-Path: <tamohiko@server-memo.net>
##### 以下省略 #####
ログアウト(接続切断)

メールデータの確認が終わりましたら、「QUIT」コマンドでログアウトできます。

quit
+OK Logging out.
Connection closed by foreign host.

メールの削除

DELEコマンドを使用することで、サーバ上のメールを直接削除することも可能です。

書式
DELE [削除するメール番号]

今回は3番目のメールを削除していきます。

DELEコマンドを実行すると、「Marked to be deleted.」と表示され3番目のメールにdeleteフラグがマークされた事がわかります。

dele 3
+OK Marked to be deleted.

LISTコマンドを使用して確認すると、3番目のメールが表示されなくなっていることが分かりますが、この段階ではまだメールは削除されていません。実際にメールのデータが削除されるのはPOPサーバからログアウトする時となります。

list
+OK 2 messages:
1 2238
2 2236
.

メール削除の取り消し

間違ってメールデータをDELEコマンドで指定した場合などは、RSETコマンドを使用することで、メール削除処理を取り消すことができます。

このRSETコマンドですが、一つのメール削除処理を取り消すということができないので、DELEコマンドを実行した接続内でのすべての処理を取り消していまいますので、その辺は注意してください。(何通もDELEコマンドでメール削除をしていた場合はすべての処理が取り消しとなります。)

実際に「RSET」コマンドで削除処理を取り消した際のログとなります。「RSET」実行後に「LIST」コマンドで確認すると、3番目のメールがまた表示される様になったことが確認できます。

rset
+OK
list
+OK 3 messages:
1 2238
2 2236
3 2002

以上。

 - メールコマンド