Use telnet



telnetでメールを受信する

POP3

POP3(Post Office Protocol version 3)は、クライアントとメールサーバーとの間でメールの受信に使われるシンプルなプロトコルです。

telnetを使うことで、メーラーがサーバーとどのような通信をしてメールを受信しているのかが解ります。ここではtelnetを利用してPOP3サーバーに接続し、手動でメールを受信してみましょう。

接続

基本的な設定としては、「ローカルエコー」オン、「漢字コード」JIS漢字、「エミュレーション」VT-100/漢字です。エンターキーを押下したときに送信するコードを変更できるクライアントをお使いの場合は、CRLFを送るようにしておきます。設定の仕方は[クライアントの設定・基本操作]を参照して下さい。

設定が済んだら接続してみましょう。「接続」の「リモートシステム」を選択して下さい。標準ではPOP3のポート番号は110なので、それを使用します。

ここではOperaMailPOP3サーバーに接続してみます。

正しく接続できたら次のように表示されます。サーバーによっては<1BC07518.3C649B3F@operamail.com>のようなタイムスタンプが無い場合もあります。

+OK InterChange POP3 Server v3.62 Ready (X-INF-V1) <1BC07518.3C649B3F@operamail.com>

このようなメッセージが表示されない場合は接続に失敗している可能性があります。ホスト名、ポート番号を確認して再度接続し直して下さい。

コマンド

POP3のコマンドは多くはありません。主なものをここに挙げておきます。斜体の部分は引数、[]の中の引数は省略可能です。

コマンドとその構文意味
USER usernameユーザー名を知らせます。認証に必要です。
PASS passwordパスワードを知らせます(平文)。認証に必要です。
APOP user digestAPOP認証を使用してログインします。接続時にタイムスタンプが表示されるサーバーでないと使えません。タイムスタンプとそのアカウントのパスワードの連結文字列を、MD5アルゴリズムを用いて変換したダイジェスト値を使います。
STATメールボックスの状態(メッセージ数、メールボックスのサイズ)を取得します。
LIST [number]メッセージのリスト(メッセージ番号、メッセージのサイズ)を取得します。numberの部分が指定されていれば、その番号に対応したメッセージがリストとして表示されます。
RETR numbernumberで指定したメッセージの全てを取得します。
DELE numbernumberで指定したメッセージに削除マークを付けます。
RSETそれまでにメッセージに付けた削除マークを全て取り除きます。
TOP number [lines]numberで指定したメッセージのメールヘッダと、それに続く文をlinesで指定した行数だけ取得します。
UIDL [number]メッセージに固有の番号を表示します。numberの部分が指定されていれば、その番号に対応したメッセージの固有の番号を表示します。
NOOP何もしません。タイムアウトにならないよう接続を維持しておきたい時や、接続、サーバーの動作の確認などに使います。
QUITログアウトしてコネクションを切断します。

DELEコマンドで削除マークを付けたメッセージは、QUITコマンドを発行するまで実際には消去されません。ですからやはり消すのをやめた、という時はRSETコマンドを打てば(仕様上は)全て戻ります。

APOP認証は通常平文で流れてしまうPOP3のパスワードを暗号化してログインするものです。暗号化にはMD5を用いる為、暗号の復号化は非常に困難ですから、パスワード自体は少なくとも盗聴に対しては安全になります。ただし、APOPではパスワードは暗号化されますが、メッセージ本文はそのまま流れます。曰く、盗聴が可能な環境において、パスワードのみを暗号化しても無意味である。パスワードを盗聴によって盗まれ、使用されることはなくなるでしょうが、メッセージ本体は依然盗聴可能なままであることに注意してください。

POP3についてもっと詳しく知りたいと言う方はRFC 1939をご覧になって下さい。

接続例

では実際にはどういう風になるのか、流れを示したいと思います。

まず接続します。DOSプロンプト等から[クライアントの設定・基本操作]で示した手順でtelnetを起動させ、接続して下さい。接続に成功すると次のようなメッセージが表示されます。

+OK InterChange POP3 Server v3.62 Ready (X-INF-V1) <1BC07518.3C649B3F@operamail.com>

続いて、ユーザー名"hogehoge"、パスワード"fugafuga"でログインします。

USER hogehoge
+OK User hogehoge accepted, send PASS command for password validation
PASS fugafuga
+OK Password accepted

コマンドが成功すると"+OK"を頭とする行が返り、失敗すると"-ERR"を頭とする行が返ります。ここでは"+OK"が返って来ていることから、コマンドが無事受け付けられたことがわかります。

STAT
+OK 2 10180
LIST
+OK 2 messages 10180 octets
1 5954
2 4226
.

STATとLISTコマンドを使ってメールボックスの中身をチェックしています。するとメッセージが2つあることが判りました。

TOP 2 5
+OK
Received: from platz.jp [210.143.104.205] (adv@csc.ne.jp) by operamail.com; Mon, 21 Jan 2002 02:45:53 -0500
Received: from adv (h133-191.tokyu-net.catv.ne.jp [210.149.133.191])
    by platz.jp (8.9.3/3.7Wpl201012312) with SMTP id QAA05582
    for <muller@operamail.com>; Mon, 21 Jan 2002 16:44:50 +0900
Date: Mon, 21 Jan 2002 16:44:50 +0900
Message-Id: <200201210744.QAA05582@platz.jp>
From: =?ISO-2022-JP?B?Q3liZXIgU3BhY2UgQ29tbXVuaXR5?=<adv@csc.ne.jp>
To: muller@operamail.com
Subject: =?ISO-2022-JP?B?gXWCYoJygmKCqYLngsyOqILmguiCyIKokm2C54K5gXY8j2+J74KildI
+?=
X-Mailer: Personal_ML11F
Reply-To: adv@csc.ne.jp
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
Cyber Space Community <CSCからのお知らせ> powered by RAT Co.,Ltd.
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
※クライアント企業からの広告です。以下に耳より情報があります※
.
RETR 1
+OK 5954 octets
Received: from www2.csc.ne.jp [203.141.151.50] (atmarkit-news-admin@atmarkit.co.jp) by operamail.com; Sun, 20 Jan 2002 21:51:20 -0500
Received: from atmarkit-www.atmarkit.co.jp (atmarkit-www.atmarkit.co.jp [211.4.251.193])
    by www2.csc.ne.jp (8.11.1/8.11.1) with ESMTP id g0L2ou432332
    for <muller@csc.jp>; Mon, 21 Jan 2002 11:50:56 +0900 (JST)
    (envelope-from atmarkit-news-admin@atmarkit.co.jp)
Received: from atmarkit-www.atmarkit.co.jp (IDENT:root@atmarkit-www.atmarkit.co.jp [211.4.251.193])
    by atmarkit-www.atmarkit.co.jp (8.9.3/8.9.3) with ESMTP id HAA21689
    for <muller@csc.jp>; Mon, 21 Jan 2002 07:26:05 +0900
Message-ID: <-2034930363.1011565565483.JavaMail.root@atmarkit-www.atmarkit.co.jp
>
Date: Mon, 21 Jan 2002 07:26:05 +0900 (JST)
From: membership@atmarkit.co.jp
To: muller@csc.jp
Subject: =?iso-2022-jp?B?GyRCIXcbKEJJVBskQj83Q2VCLkpzGyhCIC0gMjA=?=
=?iso-2022-jp?B?MDIvMS8xORskQiEhGyhCMUZEIA==?=
=?iso-2022-jp?B?TGludXgbJEIkRzpuJGs5YjUhRz0laxsoQg==?=
=?iso-2022-jp?B?GyRCITwlPxsoQiAbJEIhTiUkJXMlOSVIITwla0pUIU8bKEI=?=
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
┏━┳━┳━┓
┃@┃I┃T┃ 新着速報 (2002/1/19)
┗━┻━┻━┛
@ITの新着記事をお届けします。
(以下省略)
.

最初のTOPコマンドで、2番のメッセージのメールヘッダと、それに続く5行を取得しています。次にRETRコマンドで1番のメッセージの全文を取得しています。適切な漢字コード(JIS)を設定しておけば日本語のメッセージでも読むことができます。

メッセージは大抵長いので、画面に収まりきらない事の方が多いです。だからコマンドを実行する前にログを取っておきましょう。ログをとっておけば、メッセージが滝のように流れて行っても後で見返すことができます。ログのとり方については、[クライアントの設定・基本操作]を参照して下さい。

DELE 1
+OK message 1 deleted
LIST
+OK 1 messages (4226 octets)
2 4226
.
RSET
+OK Everything has been reset
LIST
+OK 2 messages 10180 octets
1 5954
2 4226
.
QUIT
+OK InterChange POP3 Server Signing Off

DELEコマンドで1番のメッセージを消去しました。LISTを使って確認します。(見かけ上は)確かに消えています。"1"が飛ばされて、いきなり"2"になっているのが判ります。しかし1番は実際にはまだ消えているわけではないので、RSETコマンドによる削除の取り消しが可能です。RSETを実行した後再びLISTで確認してみると、確かに元に戻っているのが判ります。

そして最後にQUITコマンドでコネクションを切って終了です。


Copyright (C) 2001-2005 Muller Norland.
Last Modified: 2003-11-01 20:18:46 (JST)