This page looks best with JavaScript enabled

Protonmail Bridge

 ·  ☕ 4 min read  ·  ✍ ghislain

Quezako ?

Proton Mail est une messagerie web chiffrĂ©e crĂ©Ă©e en 2013 par Jason Stockman, Andy Yen et Wei Sun. Plus d’infos sur la page wikipedia.
La version gratuite ne dispose que d’un webmail, la version payante propose les services imaps/smtp pour connecter un client lourd, type thunderbird.
Pour accĂ©der au service via un client lourd, il faut installer un client local sur votre desktop protonmail-bridge qui “simule” imaps/smtp via l’api de protonmail.

Si vous consulter protonmail depuis plusieurs postes, il faut installer le client sur chaque poste.

Le but de ce billet, est de montrer comment installer le service sur une serveur Gnu Linux et ainsi de pouvoir l’utiliser via plusieurs clients lourds sans rien a avoir Ă  installer sur le poste de travail.

Dans mon cas, le serveur est une Rocky linux en version 9, mais il est possible de l’installer sur n’importe quel Gnu Linux du moment que le service protonmail-bridge peut ĂȘtre installĂ©: Ă  l’heure actuelle : protonmail-bridge-3.0.21-1.x86_64

J’ai rencontrĂ© 2 soucis:

  • Il faut installer un gestionnaire de mot de passe pour que protonmail-bridge y stocke vos identifiants protonmail.
  • Le service ne fonctionne que sur le loopback du serveur, il faut donc ruser pour pouvoir y accĂ©der via une interface rĂ©seau classique.

Gestionnaire de mot de passe

Comme protonmail-bridge est conçu pour fonctionner en mode desktop, il faut installer un gestionnaire de mdp, dans mon cas j’ai pris celui de gnome gnome-keyring, il faut donc installer le paquet de votre distribution et le lancer au dĂ©marrage via systemctl ou sysinit.

Il faut aussi ajouter un utilisateur pour ne pas faire tourner le service en root, logiquement j’ai crĂ©Ă© l ‘utilisateur protonmail.

Normalement, si tout es ok, il suffit de lancer protonmail-bridge –cli qui, la premiĂšre fois va vous demandez vos identifiants protonmail et va les stocker dans le gestionnaire de mot de passe pour les fois suivantes.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[protonmail@Rocky9 ~]$ protonmail-bridge --cli


            Welcome to Proton Mail Bridge interactive shell
                              ___....___
    ^^                __..-:'':__:..:__:'':-..__
                  _.-:__:.-:'':  :  :  :'':-.:__:-._
                .':.-:  :  :  :  :  :  :  :  :  :._:'.
             _ :.':  :  :  :  :  :  :  :  :  :  :  :'.: _
            [ ]:  :  :  :  :  :  :  :  :  :  :  :  :  :[ ]
            [ ]:  :  :  :  :  :  :  :  :  :  :  :  :  :[ ]
   :::::::::[ ]:__:__:__:__:__:__:__:__:__:__:__:__:__:[ ]:::::::::::
   !!!!!!!!![ ]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![ ]!!!!!!!!!!!
   ^^^^^^^^^[ ]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^[ ]^^^^^^^^^^^
            [ ]                                        [ ]
            [ ]                                        [ ]
            [ ]                                        [ ]
    ~~^_~^~/   \~^-~^~ _~^-~_^~-^~_^~~-^~_~^~-~_~-^~_^/   \~^ ~~_ ^
>>> info
Configuration for Snake.Plissken@protonmail.com
IMAP Settings
Address:   127.0.0.1
IMAP port: 2143
Username:  Snake.Plissken@protonmail.com
Password:  nteWJzz7n10wRk6fAzaNx
Security:  STARTTLS

SMTP Settings
Address:   127.0.0.1
SMTP port: 2025
Username:  Snake.Plissken@protonmail.com
Password:  nteWJzz7n10wRk6fAzaNx
Security:  STARTTLS

L’appli va gĂ©nĂ©rer un mot de passe identique pour imaps/smtp, nteWJzz7n10wRk6fAzaNx, c’est ce mot de passe Ă  mettre dans thunderbird. Le port d’Ă©coute smtp est 2025 et imaps 2143 (dans mon cas).
Protonmail bridge map les 2 services sur le loopback (localhost/127.0.0.1), il faut donc utiliser iptables pour natter les 2 ports (imaps et smtp) sur l’interface rĂ©seau qui va permette la connexion sur le service.
Par dĂ©faut, le kernel linux ne permet pas de natter sur localhost, il faut donc l’autoriser via net.ipv4.conf.all.route_localnet

1
2
3
4
sysctl -w net.ipv4.conf.all.route_localnet=1
sysctl net.ipv4.ip_forward=1 
iptables   -t nat -A PREROUTING -p tcp --dport 2025 -j DNAT --to-destination 127.0.0.1:2025
iptables   -t nat -A PREROUTING -p tcp --dport 2143 -j DNAT --to-destination 127.0.0.1:2143

Pour finir il faut créer un script systemd pour démarré automatiquement le service.

En root:

1
vi /etc/systemd/system/protonmailbridge.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[Unit]
Description=Protonmail client bridge service

[Service]
Type=simple
StandardOutput=journal
ExecStart=/usr/bin/protonmail-bridge --noninteractive
User=protonmail
StandardOutput=syslog
StandardError=inherit

SyslogIdentifier=protonmailbridge
SyslogFacility=local4 

[Install]
WantedBy=default.target

Puis:

1
2
3
systemctl daemon-reload
systemctl start protonmailbridge
systemctl enable protonmailbridge

En conclusion, tout fonctionne bien, pour 3 clients lourds, cĂ  n’a jamais plantĂ©. J’espĂšre juste que l’implĂ©mentation des protocoles imap et smtp et bien sĂ©curisĂ© si on dĂ©cide de l’ouvrir sur un serveur visible sur internet.

@+


Ghis
WRITTEN BY
ghislain
AdminSys