Gluon cherche à combler ce fossé et à surmonter les limites des bibliothèques IMAP open source existantes.
La société suisse Proton AG, qui développe les services Proton Mail et Proton VPN, a récemment lancé la bibliothèque Gluon IMAP , conçue pour créer des serveurs IMAP personnalisés . Cette bibliothèque est particulièrement intéressante car elle prend en charge le protocole IMAP4rev1 (RFC-3501) et est intégrée à la dernière version du service Proton Bridge.
Pendant le développement, l'accent est mis sur l'exactitude de la mise en œuvre, la stabilité, la fiabilité, la facilité d'utilisation pour les développeurs et les hautes performances.
À propos de Gluon IMAP
La création d'une nouvelle implémentation du protocole IMAP répond au besoin d'une solution fiable et performante, capable de gérer des boîtes mail volumineuses. Selon les développeurs de Proton Mail, les bibliothèques IMAP open source existantes présentaient des problèmes de maintenance ou d'évolutivité.
Notre première étape dans l'écriture de Gluon a été de générer un analyseur IMAP à partir de la syntaxe donnée dans RFC3501(nouvelle fenêtre). Nous avons utilisé ANTLR4 (nouvelle fenêtre), un constructeur d'analyseur populaire, pour créer un analyseur capable d'analyser les commandes et les réponses IMAP conformément à la spécification. Cela nous a permis de nous concentrer sur la mise en œuvre de la logique du protocole IMAP au lieu d'analyser et de valider les entrées.
Gluon fonctionne également correctement avec plusieurs clients simultanément, par exemple lorsqu'un utilisateur consulte ses e-mails via l'interface web et utilise en même temps un client de messagerie distinct.
La complexité de l'organisation d'un tel travail est due au fait que les clients IMAP utilisent généralement les numéros de séquence des messages dans la boîte aux lettres pour identifier les messages électroniques, mais lorsqu'un client supprime un message, les numéros de séquence changent et l'autre client doit prendre ce changement en compte. compte.
Dans une telle situation, le serveur envoie une notification de changement aux clients, mais avant d'acquitter la notification, le serveur doit s'assurer que les numéros de message dans les commandes transmises sont interprétés correctement.
Le courrier électronique doit être fiable, mais il doit également être très performant, d'autant plus que la taille de la boîte de réception typique a considérablement augmenté au cours de la dernière décennie. De nombreuses implémentations IMAP open source ont tendance à s'optimiser pour l'un et pas pour l'autre, ce qui entraîne des bogues ou des compromis assez importants.
Pour résoudre ce problème, et pour gérer le traitement de plusieurs connexions parallèles provenant d'un même client, Gluon met en œuvre un mécanisme de snapshots. Ce mécanisme consiste à attribuer à chaque client son propre snapshot de boîte aux lettres.
Chaque instantané reflète une vue unique de la boîte aux lettres associée au client qui préserve son état et garantit que les numéros de séquence restent les mêmes, quelles que soient les actions entreprises par d'autres clients.
Gluon suit deux états de boîte aux lettres : l’état persistant et l’état de session. L’état persistant reflète la position réelle des messages dans la boîte aux lettres sélectionnée, tandis que l’état de session reflète la vue du contenu de la boîte aux lettres par chaque client.
Pour synchroniser l'état de session entre plusieurs clients connectés, Gluon utilise un système de « répondeurs ». Il s'agit de types qui encapsulent un changement d'état et qui, lorsqu'ils sont exécutés, deviennent des réponses IMAP.
Lorsqu'un client effectue une action (comme marquer un message comme lu) susceptible de modifier l'état d'un autre client, le serveur crée un gestionnaire d'événements pour cette action et l'applique à l'état concerné. Cet état reste inchangé jusqu'à l'exécution du gestionnaire, moment auquel il est mis à jour et une réponse IMAP correspondante est envoyée au client.
Cette approche permet à Gluon de gérer efficacement l'état par session tout en assurant la cohérence entre plusieurs clients.
Enfin, il est précisé que l' état IMAP est stocké dans un SGBD compatible SQL . Les tests bêta du service Proton Mail Bridge, traduit en Gluon, ont démontré une augmentation significative (1000 %) de la vitesse de traitement IMAP. Le code de la bibliothèque est écrit en Go et distribué sous licence MIT.
Si vous souhaitez en savoir plus, vous trouverez les détails en suivant ce lien.