Neutron : un serveur open-source pour ProtonMail

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous !

Vous connaissez probablement ProtonMail, un service de mél centré sur la sécurité. D'une part, les données sont stockées sur des disques intégralement chiffrés dans un datacenter directement contrôlé par ProtonMail, dans un ancien bunker en Suisse. D'autre part, les messages envoyés entre utilisateurs de ProtonMail (et bientôt, de PGP) sont chiffrés de bout en bout par un mot de passe qui n'est jamais envoyé au serveur.

ProtonMail a publié le code source de son client web. Néanmoins, le code du serveur reste propriétaire.

J'aime beaucoup l'interface de ProtonMail, mais je préfère conserver (pour le moment en tout cas) mon serveur e-mail actuel. J'ai donc créé le projet Neutron, un serveur open-source pour ProtonMail.

Le client web envoie des requêtes au serveur via une API HTTP REST. Le serveur doit donc correctement répondre aux requêtes du client.

Pour l'instant, le projet n'en est qu'à ses débuts. Les étapes sont les suivantes :

  • Définir une interface pour le backend (fait): les emails et autres données pourront être stockées sur plusieurs supports (serveur IMAP, base de données SQL, disque dur…). Il faut donc définir une interface générique qui fera le lien entre Neutron et le support en question.
  • Coder un serveur basique (presque terminé): à des fins de tests et pour vérifier le comportement du serveur, il est commode de créer un serveur "idiot" (avant d'attaquer le support de IMAP). Pour cela, il faut créer un backend qui stocke en mémoire les données et supporter l'ensemble de l'API de ProtonMail.
  • Coder un backend: probablement un backend IMAP

Pour ceux qui sont intéressés, voici quelques liens :

Édité par emersion

+10 -0

Hello,

Ça fait plaisir de voir un projet codé en Go. :p
En revanche concernant la démo, 132 / 151 requêtes sont des fichiers Javascript ce qui alourdit le chargement de la page. :(

Bon courage pour la suite

HTTP/1.1 418 I'm a teapot

+0 -0
Auteur du sujet

Oui, c'est parce que j'ai fait un build de développement et donc qu'il n'y a aucune optimisation de ce côté-là pour faciliter le debug ! C'est donc tout à fait normal, et lorsque le projet sera un peu plus mature il suffira de faire des builds de production à la place. :-)

J'ai pas mal avancé, le backend qui stocke des données en mémoire ainsi que l'API sont utilisables et couvrent la majorité des fonctionnalités. J'ai commencé le backend IMAP et les résultats sont plutôt encourageants ! Le listage et l'affichage des messages fonctionne, ainsi que le déplacement et la gestion des flags (lu, brouillon, répondu, etc…). La difficulté est de combler les différences entre l'API de ProtonMail et le protocole IMAP : des fonctionnalités sont en plus dans l'API, il y a des limitations du protocole qui rendent les choses difficiles…

Bon allez, un petit screenshot pour la route :

+2 -0
Auteur du sujet

Oui, c'est l'idée ! Neutron peut être vu comme un webmail tel que Roundcube, qui supporte en plus le chiffrement des emails avec PGP. À terme, il sera même possible d'utiliser les applications Android et iOS !

Un autre point est la modularité : il sera possible de faire un serveur qui utilise IMAP pour recevoir les emails, SMTP pour les envoyer, LDAP pour les contacts, qui va chercher les clefs PGP sur des serveurs de clefs publics et qui stocke le reste (labels, préférences) dans une base de données.

+2 -0
Auteur du sujet

Merci !

En attendant, j'approche de plus en plus d'une version utilisable. :)

Le backend IMAP est presque fonctionnel, et de même pour SMTP. Le gros morceau qui reste, c'est principalement le support des pièces jointes.

+1 -0
Auteur du sujet

Et hop, je viens de publier la première version de Neutron !

Au programme, le support de IMAP et SMTP ! Neutron est maintenant utilisable au quotidien sans trop de problèmes. Les clefs, contacts et préférences sont stockées dans des fichiers.

L'installation est beaucoup plus facile grâce à des paquets pour Debian/Ubuntu. La configuration est stockée dans un petit fichier JSON.

Pour en savoir plus : https://github.com/emersion/neutron

+3 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte