ポストオフィスプロトコルでのメールの取得方法

ポストオフィスプロトコルを通してメールをフェッチする方法

リモートサーバーからメールを取得するために使用されるポストオフィスプロトコル(POP)は、非常に簡単なプロトコルです。 基本的な機能を簡単に定義し、実装が簡単です。 もちろん、理解しやすいです。

あなたの電子メールプログラムがPOPアカウントでメールを取得するときに何が起こるのかを見てみましょう。 まず、サーバーに接続する必要があります。

こんにちは、それは私です

通常、POPサーバーは、着信接続をポート110で待ち受けます。 POPクライアント(あなたの電子メールプログラム)から接続すると、 + OK pop.philo.orgの準備が整っているか、それと似たようなことでうまくいきます。 + OKは、すべてがOKであることを示します。 その負の等価は-ERRです 。これは何かが間違っていることを意味します。 たぶんあなたの電子メールクライアントは、これらの否定的なサーバーの応答の1つを既に示しています。

ログオン

サーバーが私たちに挨拶したので、 ユーザー名を使用してログオンする必要があります (ユーザー名は "platoon"とし、サーバーはイタリック体で表記しています)。

+ OK pop.philo.org準備完了
ユーザー小隊

この名前のユーザーが存在するので、POPサーバーは+ OKで応答し、われわれは本当に気にしない、ちょっと気味が悪いかもしれません。 そのようなユーザーがサーバーにいない場合、もちろん、 -ERRユーザーが不明な状態でパニックに陥ることになります

認証が完了するためには、パスワードも与えなければなりません。 これは "pass"コマンドで行います:

+ OKパスワードを送信する
プラプラットを渡す

パスワードを正しく入力すると、サーバーは+ OKの大パスワードまたはPOPサーバーのプログラマーが念頭に置いたもので応答します。 重要な部分は+ OKです 。 残念ながら、パスワードも間違っている可能性があります。 サーバーはこれを、あなたのユーザー名をパスワードとして使用する場合と同様に、 -ERRのユーザー名とパスワードが一致しないことに注意します。

しかし、すべてがうまくいけば、私たちはサーバーに接続していて、誰であるかを知っているので、新しく到着したメールを見る準備が整いました。

あなたはGot Mailを入手しました!

サーバー上のPOPアカウントに正常にログインした後は、新しいメールがあるかどうか、次にメールがあるかどうかを知りたい場合があります。

これらの基本的なメールボックス統計情報を取得するコマンドはSTATです。

可能なサーバー応答は+ OK 18 67042です。 この場合、 + OK記号に続くものは重要です 。 直後には、メールボックス内のメッセージ数が空白で区切られ、メールボックスのサイズはオクテット単位(オクテットは8ビット)になります。

STAT
+ OK 18 67042

メールがない場合、サーバーは+ OK 0 0で応答します。 サーバー上には18の新しいメッセージがあるため、 LISTコマンドを使用してこれらのメッセージを一覧表示できます。 応答として、サーバーは次の形式でメッセージを一覧表示します。

リスト
+ OK 18メッセージ(67042オクテット)
1 2552
2 3297
...
18 3270

メッセージは一度に1つずつ表示され、各メッセージのサイズはオクテット単位で表示されます。 リストは1行に1ピリオドで終わります。

LISTコマンドはオプションの引数としてメッセージの番号を取ることができます(例えばLIST 2) 。 この要求に対するサーバーの応答は+ OK 2 3297 、メッセージ番号の後にメッセージのサイズが続きます。 あなたがリスト23のように存在しないメッセージをリストしようとすると、サーバは想像力を示さず、 -ERRはそのようなメッセージを表示しません

ビッグリトリーブ(および削除)

今度は、アカウントにいくつのメッセージがあり、どれくらいの大きさなのかを知るようになったので、最後にメッセージを読み込むことができます。

今、私たちが新しいメールを持っているかどうかを知った後、本当のことが起こります。 メッセージは、メッセージ番号をRETRコマンドの引数として1つずつ取り出されます。

サーバは+ OKとそのメッセージをそのまま複数の行で応答します。 メッセージは、1つの行にある期間だけ終了します。 例えば:

RETR 1
+ OK 2552オクテット
ブラッ!

存在しないメッセージを取得しようとすると、 -ERRにはそのようなメッセージはありません。

これで、 DELEコマンドを使用してメッセージを削除できます。 (当然のことながら、メッセージを検索せずにメッセージを削除することもできます)。

サーバーがすぐにメッセージをパージしないことを知っておくとよいでしょう。 単に削除対象としてマークされています。 実際の削除は、サーバーへの接続を定期的に終了する場合にのみ発生します。 たとえば、接続が突然終了すると、メールが失われることはありません。

DELEコマンドに対するサーバーの応答は+ OKメッセージが削除されました

DELE 1
+ OKメッセージ1が削除されました

実際にそれが当時のものであり、私たちが削除したくない削除のメッセージをマークした場合、削除マークをリセットすることによってすべてのメッセージを元に戻すことができます。 RSETコマンドは、メールボックスを、ログインする前の状態に戻します。

サーバーは、 + OKと可能なメッセージ数で応答します。

RSET
+ OK 18メッセージ

すべてのメッセージを取得して削除したら、 QUITコマンドを使用して別れを言います。 これにより、削除マークが付いたメッセージがパージされ、接続が閉じられます。 サーバーは+ OKと別れメッセージで応答します。

終了する
+ OKバイバイ、バイバイ

サーバーがメッセージを削除できなかった可能性があります。 それから、 -ERRメッセージ2が削除されないなどのエラーで応答します。