Gluon, open source knihovna IMAP od Proton Mail

gluon-imap-library

Gluon se snaží překlenout tuto mezeru a překonat omezení existujících open source IMAP knihoven.

Švýcarská společnost Proton AG, která vyvíjí služby Proton Mail a Proton VPN, nedávno představila knihovnu Gluon IMAP , určenou pro vytváření vlastních serverů IMAP . Knihovna je pozoruhodná, protože podporuje protokol IMAP4rev1 (RFC-3501) a je součástí nejnovější verze služby Proton Bridge.

Při vývoji je kladen důraz na správnost implementace, stabilitu, spolehlivost, snadnost použití pro vývojáře a vysoký výkon.

O Gluonu IMAP

Důvodem pro vytvoření nové implementace protokolu IMAP je touha po spolehlivém a vysoce výkonném řešení schopném zvládat velké poštovní schránky. Podle vývojářů Proton Mail měly stávající open-source knihovny IMAP problémy s údržbou nebo se jim nedařilo škálovat.

Naším prvním krokem při psaní Gluonu bylo vygenerování IMAP parseru ze syntaxe uvedené v RFC3501 (nové okno). Použili jsme ANTLR4 (nové okno), oblíbený analyzátor, abychom vytvořili analyzátor, který dokáže analyzovat IMAP příkazy a odpovědi podle specifikace. To nám umožnilo zaměřit se na implementaci logiky protokolu IMAP namísto analýzy a ověřování vstupu.

Gluon také funguje správně s více klienty současně, například když uživatel prohlíží e-maily přes webové rozhraní a zároveň používá samostatného e-mailového klienta.

Složitost organizace takové práce je způsobena skutečností, že klienti IMAP obecně používají k identifikaci poštovních zpráv pořadová čísla zpráv v poštovní schránce, ale když jeden klient zprávu smaže, pořadová čísla se změní a druhý zákazník by tuto změnu měl vzít v úvahu. účet.

V takové situaci server odešle klientům oznámení o změně, ale před potvrzením oznámení se server musí ujistit, že čísla zpráv v přenášených příkazech jsou správně interpretována.

E-mail musí být spolehlivý, ale také musí být vysoce výkonný, zejména proto, že velikost typické doručené pošty za poslední desetiletí výrazně vzrostla. Mnoho implementací IMAP s otevřeným zdrojovým kódem má tendenci optimalizovat pro jednu a ne pro druhou, což vede k poměrně velkým chybám nebo kompromisům.

Aby se tento problém vyřešil a také aby se zvládlo zpracování více paralelních připojení z jednoho klienta, implementuje Gluon mechanismus snapshotů. Podstata tohoto mechanismu spočívá v tom, že Gluon přiřadí každému klientovi vlastní snapshot své poštovní schránky.

Každý snímek odráží jedinečný pohled na poštovní schránku přidruženou ke klientovi, který zachovává její stav a zajišťuje, že pořadová čísla zůstanou stejná bez ohledu na akce provedené ostatními klienty.

Gluon sleduje dva stavy poštovní schránky: trvalý a relační. Trvalý stav odráží skutečnou pozici zpráv ve vybrané schránce, zatímco stav relace odráží pohled každého klienta na obsah schránky.

Pro synchronizaci stavu relace mezi více připojenými klienty používá Gluon systém „odpovídačů“. Jedná se o typy, které zapouzdřují změnu stavu a po spuštění se stávají odpověďmi IMAP.

Když klient provede akci (například označení zprávy jako přečtené), která by změnila stav jiného klienta, backend vytvoří pro tuto akci respondéru a převede ji do ovlivněného stavu. Ovlivněný stav zůstává nezměněn, dokud respondér neprovede akci, načež se aktualizuje a klientovi se odešle odpovídající odpověď IMAP.

Tento přístup umožňuje Gluonu efektivně spravovat stav na relaci a zároveň zajistit konzistenci napříč více klienty.

Nakonec je zmíněno, že stav IMAP je uložen v DBMS, který podporuje SQL . Beta testy služby Proton Mail Bridge, přeložené do jazyka Gluon, ukázaly významný nárůst (1000 %) rychlosti zpracování IMAP. Kód knihovny je napsán v jazyce Go a distribuován pod licencí MIT.

Pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu