Proton Mail のオープンソース IMAP ライブラリである Gluon

gluon-imap-ライブラリ

Gluon は、そのギャップを埋め、既存のオープン ソース IMAP ライブラリの制限を克服しようとしています。

Proton MailとProton VPNサービスを開発するスイス企業Proton AGは、カスタムIMAPサーバーを作成するためのGluon IMAPライブラリを最近発表しました。このライブラリは、IMAP4rev1プロトコル(RFC-3501)をサポートしており、Proton Bridgeサービスの最新バージョンにも含まれているため、注目に値します。

開発中は、実装の正確性、安定性、信頼性、開発者にとっての使いやすさ、および高性能に重点が置かれます。

グルオン IMAP について

IMAPプロトコルの新しい実装を作成した理由は、大容量のメールボックスを処理できる、信頼性が高く高性能なソリューションを求めていたためです。Proton Mailの開発者によると、既存のオープンソースIMAPライブラリは、メンテナンス上の問題があったり、拡張性に欠けていたりしたとのことです。

Gluon を作成するための最初のステップは、RFC3501(新しいウィンドウ) で指定された構文から IMAP パーサーを生成することでした。 人気のあるパーサー ビルダーである ANTLR4(新しいウィンドウ) を使用して、仕様に従って IMAP コマンドと応答を解析できるパーサーを作成しました。 これにより、入力の解析と検証ではなく、IMAP プロトコルのロジックの実装に集中することができました。

Gluonは、複数のクライアントが同時に動作する場合にも正しく機能します。例えば、ユーザーがWebインターフェース経由でメールを閲覧しながら、同時に別のメールクライアントを使用している場合などです。

このような作業の整理が複雑なのは、IMAP クライアントがメールボックス内のメッセージのシーケンス番号を使用してメール メッセージを識別するのが一般的であるという事実によるものですが、XNUMX つのクライアントがメッセージを削除すると、シーケンス番号が変更され、他の顧客がこの変更を利用する必要があります。アカウント。

このような状況では、サーバーはクライアントに変更通知を送信しますが、通知を確認する前に、サーバーは送信されたコマンドのメッセージ番号が正しく解釈されることを確認する必要があります。

電子メールは信頼できるものである必要がありますが、特に過去 XNUMX 年間で一般的な受信トレイのサイズが大幅に拡大したため、高性能である必要もあります。 多くのオープン ソース IMAP 実装は、どちらか一方を最適化して他方を最適化しない傾向があり、かなり大きなバグやトレードオフにつながります。

この問題を解決するため、また単一クライアントからの複数の並列接続の処理を管理するために、 Gluonはスナップショット機構を実装しています。この機構の本質は、Gluonが各クライアントに独自のメールボックススナップショットを割り当てることです。

各スナップショットは、クライアントに関連付けられたメールボックスの一意のビューを反映し、その状態を保持し、他のクライアントが実行したアクションに関係なく、シーケンス番号が同じままであることを保証します。

Gluonは、永続状態とセッション状態の2つのメールボックス状態を追跡します。永続状態は、選択されたメールボックス内のメッセージの実際の位置を反映し、セッション状態は、各クライアントから見たメールボックスの内容を反映します。

複数の接続されたクライアント間でセッションの状態を同期するために、 Gluonは「レスポンダー」と呼ばれるシステムを使用します。これらは状態の変化をカプセル化する型であり、実行されるとIMAP応答になります。

クライアントが(メッセージを既読にするなど)他のクライアントの状態を変更するような操作を実行すると、バックエンドはその操作に対応するレスポンダーを作成し、影響を受けるクライアントの状態にプッシュします。影響を受けるクライアントの状態は、レスポンダーが実行されるまで変更されず、実行時に更新され、対応するIMAP応答がクライアントに送信されます。

このアプローチにより、Gluon は複数のクライアント間で一貫性を確保しながら、セッションごとに状態を効率的に管理できます。

最後に、 IMAPの状態はSQLをサポートするDBMSに保存されることが述べられています。Gluonに移植されたProton Mail Bridgeサービスのベータテストでは、IMAP処理速度が大幅に向上(1000%)しました。ライブラリコードはGo言語で記述されており、MITライセンスの下で配布されています。

さらに詳しく知りたい場合は、以下のリンクから詳細をご確認いただけます。


Googleで優先ソースとして追加する