POP3とIMAP:メールプロトコルの歴史とYandex.MailのIMAPを介した手紙の収集

Mark Crispin 07/19/1956-12/28/2012専用)



しばらく前に、IMAPメールコレクターがYandex.Mailに登場しました。 この投稿では、POP3とIMAPの2つの重要なメールプロトコルと、それらが最新のメールシステムでどのように使用され使用されているかについて少し説明します。 これは、ほぼ30年にわたって開発されてきた技術から期待するほど単純で明白ではありません。



毎日100通の手紙を受け取るプロトコルの歴史を探検します。









Webで何ヶ月も何年も通信すると、たくさんの手紙が届きます。これは数百メガバイトとギガバイトの通信とファイルです。 多くの場合、これらは単なる有用なファイルではなく、それらからマイルストーンを呼び出して復元できます。 このデータは、コンピューターのローカルディスクの内容よりも価値があります。



時々、新しい便利なメールシステムに切り替えることがタスクですが、手紙の蓄積されたアーカイブが干渉します。 同じ場所に投げますか? ごめんなさい パスワードを忘れました。 復旧のために入力した携帯電話番号とメールアドレスが失われることがあります。 アーカイブを永久に失う可能性があります。 ローカルハードドライブにダウンロードしますか? ディスクまたはフラッシュドライブに転送しますか? しかし、それらは信頼できません:それらは壊れ、迷子になり、悪化します。



最も論理的な解決策は、メールアーカイブを新しいメールボックスにインポートすることです。 ただし、重要な手紙が引き続き古いメールボックスに届く可能性があるため、一度だけでは十分ではありません。 すべての受信メールを別のアドレスに無条件にリダイレクトするように設定できますが、技術的な観点からはこれが最も望ましいオプションです。 しかし、私たちはロボットではなく、技術的に経済的なソリューションは、常に使いやすいとは言い難いです。



長い間、POP3プロトコルは、新しいメッセージの一定のバックグラウンド同期を備えたメールシステム間でメールアーカイブを転送する唯一の方法でした。 外部のPOP3サーバーからメールを収集する機能は、あらゆる場所に実装されています。 いずれにせよ、プロトコルが許す限り良好であり、多くの不快な制限があります。



POP3は1984年に遡り、南カリフォルニア大学のコンピューター科学研究所の従業員の一人であるジョイスレイノルズは、電子メールを受信するための標準プロトコル(POP-Post Office Protocol)の提案であるRFC 918を公開しました。 4年後、POPプロトコルの第3版が登場し、ほぼ17年前の1996年春にPOP3の標準の最新の最新バージョンが公開されました。



POP3の重要な原則は、高価で通信速度が遅い状況でのメールサーバーへの短い接続の最適化です。 最初は、各接続内で、メールボックスからすべての文字をローカルドライブにダウンロードしてから、メールボックスの内容全体を消去することになっていた。 同様に、手紙や新聞の郵便受けはアパートの建物の入り口で機能します。 POPの最初のバージョンでは、個々の文字を読み取るコマンドすらなく、すべてを完全にアンロードするだけでした。



今では、メールがサーバーに保存されていないと想像するのは困難です。 それらは、できるだけ早くローカルコンピューターにアップロードされ、読み取られ、アドレス、トピック、および重要度によってローカルにソートされました。



興味深いことに、POP2プロトコルはサーバー上の複数のフォルダーを操作する機能を提供しましたが、それは主張されておらず、配布プロトコル自体は受信されませんでした。 そのため、POP3では、この機能を実装したFOLDチームは削除されました。 POP2が時間を超過しました。



現在、POP3では、サーバーからフォルダー構造をダウンロードする方法はなく、原則として、受信メッセージまたはユーザーフォルダーの組み合わせからなる文字の「フラットな」リストのみがダウンロードされます。 読みやすさと重要性のフラグは考慮できません。 これらの制限にもかかわらず、主にそのシンプルさとあらゆるデバイスでの非常に幅広いサポートのため、プロトコルは依然として広く使用されています。



POP3を改善するための多くの試みがありましたが、1985年以来ほぼ並行して開発されてきたIMAPプロトコルのような成功を達成したものはありません。 IMAPの歴史も非常に興味深いものです。 たとえば、最初の実装はLispで行われ、そのレガシーは、BODYSTRUCTUREなどの複雑なサーバー応答をエンコードしたS-expressionsの形式でプロトコルに永久に残りました。



IMAPの作者でありイデオロギー家でもあるMark Crispinは、メールサーバーに手紙を永続的に保存するという原則を定めました。 IMAPは、パーソナルコンピューターのローカルストレージを信頼できないものにするように設計された、最も初期の「クラウド」インターネットプロトコルの1つであることが判明しました。 さらに、個人は、メールを操作するための複数のパーソナルコンピューターやその他の端末を持っている場合があります。これは、今日の私たちにとって基本的なことです。



IMAPの最新バージョンである4rev1は、2003年にリリースされたRFC 3501に記載されています。 見かけの年齢にもかかわらず、プロトコルは初期段階で提供された拡張メカニズムのおかげで生きていることが判明しました。 もちろん、このメカニズムにも欠点がないわけではありませんが、それでもさまざまな人が50を超えるパブリックエクステンションを発行できるようになりました 。その多くはごく最近開発され、広く応用されています。



IMAPアクセスをサポートしない最新のメールシステムはナンセンスです。 Yandex.Mailは数年にわたり、Outlook、Thunderbird、Apple Mailなどの人気のあるクライアントプログラム、および多数のモバイルクライアントから作業するためのサーバーとしてIMAPをサポートしています。 ところで、IMAPが第2の開発の波を受けたのは、スマートフォンのおかげです。 かなり長い間パソコンで、ユーザーの大多数がメールへのWebインターフェースを選択した場合、モバイルデバイスでは状況はまったく同じではありません。 たとえばiOSなどの高速で美しいIMAPクライアントは、IMAPへのアプローチを、専業の「上級」ユーザーの選択肢として再考しています。



最近、Yandex.Mailは、POP3コレクターに加えて、IMAPクライアント(IMAPを介した外部サーバーからのメールのコレクター)の機能も導入しました。



この機能は実質的に設定を必要とせず、最初の電源投入後のバックグラウンド操作用に設計されています。 メールボックスのプロトコルの上記の機能により、IMAPを介してメールを収集する場合、以前のメールシステムを使用したときに使用したフォルダー構造が表示されます。 既読の手紙はすべて既読のままになり、未読の手紙は未読になります。







IMAPプロトコルをサポートするすべてのメールシステムから、Yandex。Mailのフォルダで収集を有効にできます。 プロトコルは単純ではなく、IMAPサーバーの各実装には独自のフックがあり、古いメールから新しいメールへの移行の最も大規模なバージョンを最初に処理することが重要でした。



文字自体は別として、最も一般的なメールサービスのアドレス帳からの連絡先はまだインポートされます。



IMAPプロトコルは、POP3よりも著しく複雑であり、機能とコマンドのセット、およびいくつかの基本的な動作原理によって単純になっています。 たとえば、IMAPはタグ付けクライアントコマンドとこれらのコマンドに対するサーバー応答を使用します。これにより、サーバーはランダムな順序でコマンドに応答できます。



各コマンドの前には何らかの識別子(タグ)が必要です。タグは、このコマンドに対する応答を生成するときにサーバーによって使用されます。 これにより、クライアントとサーバーとの「会話」を完全に非同期にすることができます。タグは、以前に発行されたコマンドに対する応答を明確に一致させるため、サーバーはクライアントコマンドに任意の順序で応答する権利を持ちます。 さらに、サーバーはこのようなコマンドを同時に実行できるため、メールの処理速度が向上し、Yandex.Mailでこれを使用できます。 同時に、これにはクライアントとサーバーの両方をプログラミングするための特別なアプローチが必要です。 この時点でTCPのシーケンス番号のメカニズムを覚えていたら、ギークcredに+1を書いてください:)



Yandex.Mail内にIMAPコレクターを実装するために、非同期フレームワークを使用して、yplatformという高性能ネットワークサービスを記述しました。 ソースコードは公開されていませんが、公開する可能性を検討しています。 ニュースをフォローしてください。



Yandex.Mailにアクセスし、IMAPでコレクターを構成します-いつでも古い手紙を見つけることができます。 それでは、Yandexは検索方法を知っています。



All Articles