Gluon, une bibliothèque IMAP open source de Proton Mail

bibliothèque gluon-imap

Gluon cherche à combler ce fossé et à surmonter les limites des bibliothèques IMAP open source existantes.

la société suisse Proton SA, qui développe les services Proton Mail et Proton VPN, a récemment introduit la bibliothèque Gluon IMAP, conçu ppour créer vos propres serveurs IMAP. La bibliothèque est remarquable car elle prend en charge le protocole IMAP4rev1 (RFC-3501) et est incluse dans la nouvelle 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

Il est mentionné que la raison pour créer une nouvelle implémentation du protocole IMAP est le désir d'une solution fiable et performante qui peut fonctionner avec de grandes boîtes aux lettres. Selon les développeurs de Proton Mail, les bibliothèques IMAP open source existantes ont rencontré des problèmes de maintenance ou n'ont pas évolué.

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 très bien avec plusieurs clients. en même temps, par exemple, lorsqu'un utilisateur consulte le courrier via l'interface Web et utilise un client de messagerie distinct en même temps.

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, ainsi que d'organiser le traitement de plusieurs connexions parallèles d'un client, gluon implémente le mécanisme d'instantané. L'essentiel de ce mécanisme est que Gluon attribue son propre instantané de boîte aux lettres à chaque client.

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 garde une trace de deux états de boîte aux lettres : persistant et 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 de chaque client sur le contenu de la boîte aux lettres.

Pour synchroniser l'état par session entre plusieurs clients connectés, Gluon utilise un système de "répondeurs". Ce sont des types qui encapsulent un changement d'état et, lorsqu'ils sont exécutés, sont convertis en réponses IMAP. 

Lorsqu'un client effectue une action (comme marquer un message comme lu) qui modifierait l'état d'un autre client, le backend crée un répondeur pour l'action et le pousse vers l'état affecté. L'état affecté reste inchangé jusqu'à ce que le répondeur soit exécuté, 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 mentionné que l'État IMAP est stocké dans un SGBD qui prend en charge SQL. Les tests bêta du service Proton Mail Bridge, traduit en Gluon, ont montré une augmentation significative (1000%) de la vitesse de travail avec IMAP. Le code de la bibliothèque est écrit en Go et est distribué sous la licence MIT.

Si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.