ポストオフィスプロトコルを通してメールをフェッチする方法
リモートサーバーからメールを取得するために使用されるポストオフィスプロトコル(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が削除されないなどのエラーで応答します。