Einleitung
Für meine Emails nutze ich schon immer einen Anbieter im Internet, da ich Selfhosting in diesem Bereich für zu aufwändig halte, gerade wenn es um den Versand von Emails geht. Um trotzdem unabhängig von der Erreichbarkeit des Anbieters dauerhaft Zugriff auf meine Emails zu haben, speichere ich eine Kopie aller meiner Emails in einem lokalen Archiv. Dabei handelt es sich um einen einfachen Dovecot-Server, der in einem LXC läuft und ausschließlich über das LAN erreichbar ist. Die Synchronisation von Online- / und Offline-Postfach erfolgt über imapsync.
Besonderheit bei Proton Mail
Vor Kurzem bin ich zum Anbieter Proton Mail gewechselt. Die Besonderheit bei diesem Anbieter ist, dass die Daten dort Ende-zu-Ende verschlüsselt auf dem Server liegen. Das bedeutet, das nur ich die dort abgelegten Daten lesen kann und sonst niemand anderes, nicht mal Proton selbst. Dieser Vorteil führt auch gleichzeitig zu einem Nachteil, weil man damit gezwungen ist die offiziellen Programme und Apps von Proton Mail zu benutzen, um seine Emails einsehen zu können. Es ist somit nicht ohne weiteres möglich, das Mailprogramm eines Drittanbieters wie Thunderbird oder Apple Mail oder eben mein eingangs erwähntes Tool imapsync zu benutzen. Mir persönlich gefallen die Apps sehr gut, aber durch das Fehlen eines öffentlich zugänglichen IMAP-Servers ist ohne weiteres keine Synchronisation mit meinem Offline-Postfach möglich.
Die Proton Mail Bridge
Um weiterhin auch mit anderen Emailprogrammen arbeiten zu können, bietet Proton Mail die “Proton Mail Bridge” an. Dabei ist vorab direkt zu erwähnen, dass dieses Tool nur für zahlende Kunden zur Verfügung steht und nicht für Benutzer des kostenlosen Accounts.
Die Bridge ist ein kleines Tool, das man auf seinem Gerät installiert und mit dem man sich dann in seinem Mailaccount einloggt. Die Bridge wiederum stellt einen IMAP- und SMTP-Server bereit, die dann jeweils nur lokal verfügbar sind. Diese können nun von anderen Programmen genutzt werden, um wieder ganz normal Emails abrufen und versenden zu können. Die Proton Mail Bridge übernimmt dabei die Ent- und Verschlüsselung der Daten.
Die Bridge bietet eine Oberfläche an, über die alles leicht eingestellt werden kann. Ich persönlich benötige das Tool aber auf einem LXC, also einem kleinen Linux-Container ohne grafische Oberfläche. Deswegen geht es in diesem Beitrag um die Installation und den Betrieb der Proton Mail Bridge unter Linux ohne eine grafische Oberfläche.
Systemumgebung
Da mein System für die Mailbackups unter Debian läuft, ist dies die Basis für diesen Beitrag. Das Ganze sollte aber auch problemlos auf RHEL-basierten Systemen wie Alma Linux funktionieren. Für die Installation unter Linux stellt Proton ein deb-Paket (Debian/Ubuntu) und ein rpm-Paket (RHEL/openSUSE) zur Verfügung.
Installation und Einrichtung
Die Proton Bridge benötigt einen Passwortmanager, um sensible Daten sicher speichern zu können. Dafür kommt das Kommandozeilentool pass zum Einsatz. Dieser benötigt wiederum einen GPG-Key, um initialisiert werden zu können. Dies werden wir jetzt in den nachfolgenden Kapiteln Schritt für Schritt einrichten.
Notwendige Komponenten
Bevor es richtig losgehen kann, müssen wir sicherstellen dass alle notwendigen Tools installiert sind. Wir werden gpg
, pass
und tmux
benötigen.
|
|
Proton Mail Bridge installieren
Da wir zur Installation der Bridge nur ein Paket haben und keine Paketquellen, die wir bequem zum Paketmanager hinzufügen können, müssen wir uns selbst darum kümmern dass alle notwendigen Abhängigkeiten auf dem System installiert sind.
|
|
Anschließend laden wir das aktuellste Paket von der Proton Webseite herunter, dazu benötigen wir den direkten Downloadlink zum Paket.
Deswegen die Proton Mail Downloads aufrufen: Proton Mail Downloads und dort dann bis “Bridge” runterscrollen, auf “Linux” klicken und dort bei “Herunterladen (.deb)” einen Rechtsklick machen und mit “Linkadresse kopieren” die URL in die Zwischenablage kopieren.
Mit dieser URL können wir nun das Paket mit curl laden:
|
|
Und direkt installieren (den Dateinamen müsst ihr dann ggf. anpassen):
|
|
Die Installation der Bridge ist dann auch schon abgeschlossen und es geht weiter mit der Einrichtung.
Benutzer anlegen
Um zu verhindern dass andere Benutzer im System Zugriff auf die Daten haben, legen wir einen neuen Benutzer für den Betrieb der Proton Mail Bridge an:
|
|
Ein Passwort muss nicht unbedingt vergeben werden, weil wir den Benutzer anschließend für den direkten Login sperren werden. Nur root soll in den Benutzer wechseln können. Dazu führen wir nach der Erstellung des Benutzers folgenden Befehl aus:
|
|
Jetzt nur noch in den Benutzer wechseln, damit es weitergehen kann:
|
|
sudo apt install systemd-container
GPG-Key
Wir sind jetzt unter dem Benutzer protonbridge unterwegs und müssen als ersten Schritt einen GPG-Key anlegen. Dieser wird dann später vom Passwortmanager pass genutzt, um die Daten zu verschlüsseln. Dazu starten wir den Assistenten zur Keyerstellung mit nachfolgendem Befehl und beantworten die einzelnen Schritte wie unten angegeben:
|
|
- Key type: (1) RSA and RSA
- Keysize: 4096
- Key is valid for: 0 (= key does not expire)
- Dies muss dann nochmal explizit bestätigt werden: y
- Real Name: Pass for Proton Bridge (kann frei vergeben werden)
- Email address: Kann leer bleiben
- Comment: Kann leer bleiben
- Abschließend nochmal mit “O” für (O)kay bestätigen. Wenn dass System auf deutsch steht kann es ggf. auch ein “F” für (F)ertig sein.
- Dann kommt 2x eine Passwortabfrage. Der Key benötigt keine Passwortsicherung, deswegen einfach leer lassen und mit ENTER bestätigen, das muss man dann auch jeweils nochmal mit “Yes, protection is not needed” bestätigen.
Damit ist der Key fertig erstellt.
pass initialisieren
Nachdem wir jetzt einen GPG-Schlüssel haben, können wir den Passwortmanager pass mit diesem Schlüssel initialisieren. Dazu lassen wir uns zunächst alle verfügbaren Schlüssel von gpg anzeigen:
|
|
Ausgabe:
|
|
Die lange kryptische Zeichenkette “F37FAF340EFDFA881669F74CEB8571456FE77F8A” des Schlüssel benötigen wir zur Initialisierung von pass mit:
|
|
Mehr Beachtung müssen wir diesem Tool dann auch schon gar nicht mehr schenken.
Erster Login
Damit sind jetzt alle Voraussetzungen geschaffen, um die Proton Mail Bridge zu starten. Wir sind weiterhin als Benutzer protonbridge unterwegs und führen nachfolgenden Befehl aus:
|
|
Wir befinden uns jetzt direkt in der interaktiven Shell der Bridge und können dort Befehle ausführen. Die Bridge läuft jetzt im Vordergrund und wird beim Verlassen auch direkt wieder beendet, aber darum kümmern wir uns in einem späteren Schritt. Die Ausgabe sollte jetzt ungefähr so aussehen:
|
|
Mit help
könnt ihr euch alle verfügbaren Befehle anzeigen lassen.
Wir loggen uns jetzt in unseren Proton Account ein, dazu reicht die Eingabe von
|
|
gefolgt von der Taste ENTER. Ihr werdet dann dazu aufgefordert, den Proton “Username” anzugeben, das entspricht der Email-Adresse eures Accounts. Danach erfolgt die Eingabe des Passworts und wenn aktiviert, die des Zwei-Faktor-Codes.
Bei einem erfolgreichen Login beginnt die Bridge dann mit der Synchronisierung eures Email-Postfachs, diesen Prozess müssen wir jetzt einmal abwarten, bevor es weitergehen kann:
|
|
Sobald die Synchronisation abgeschlossen ist könnt ihr euch mit list
alle verbundenen Accounts anzeigen lassen. Wichtiger jedoch ist folgender Befehl:
|
|
Das sind die IMAP- und SMTP-Verbindungsdaten, die ihr dann für euer externes Mailprogramm oder Tool benötigt, deswegen kann man sich diese schonmal irgendwo sicher zwischenspeichern.
Mit exit
verlassen und beenden wir die Bridge nun und machen mit der Einrichtung des systemd-Dienstes weiter.
systemd Dienst
Die Proton Mail Bridge kann ohne GUI von sich aus nicht als Daemon laufen, sodass sie für einen im Hintergrund laufenden Dienst ungeeignet ist. Deswegen nehmen wir das Tool tmux zur Hilfe, mit der man Sessions im Hintergrund laufen lassen kann.
Für die nachfolgenden Schritte sind root-Berechtigungen (sudo) notwendig, deswegen verlassen wir den Benutzer protonbridge jetzt mit exit
.
Hilfsskript anlegen
Wir benötigen ein Hilfsskript, dass die Kommandos start/stop/status versteht und dann entsprechende tmux-Befehle ausführt. Also legen wir erstmal einen Ordner für das Skript an
|
|
um direkt danach das Skript dort zu platzieren:
|
|
Der Inhalt sieht folgendermaßen aus:
|
|
Speichern und Beenden mit STRG + O -> ENTER -> STRG + X (Mac: control statt STRG).
Jetzt benötigt das Skript nur noch Ausführungsberechtigungen:
|
|
systemd Service
Ein neu zu erstellender systemd-Service soll nun das soeben angelegte Skript nutzen. Um den Service anzulegen, führen wir den nachfolgenden Befehl aus:
|
|
Darin muss dann folgender Inhalt eingefügt werden:
|
|
Speichern und Beenden mit STRG + O -> ENTER -> STRG + X (Mac: control statt STRG).
Bei jeder Änderung an systemd-Services benötigen wir den Befehl:
|
|
Wir aktivieren den neuen Service und starten ihn auch direkt. Durch die Aktivierung startet er bei einem Neustart des Systems von selbst wieder mit:
|
|
Die Proton Mail Bridge nutzt die Ports 1143 und 1025 (nur lokal erreichbar). Um sicherzustellen dass die Bridge korrekt gestartet wurde, prüfen wir einfach ob einer dieser Ports geöffnet wurde:
|
|
Wenn die Ausgabe des Befehls nicht leer ist, ist der Port geöffnet. Ebenfalls kann man erkennen, dass das Programm “bridge” den Port belegt:
|
|
Laufende Bridge nutzen
Falls ihr nochmal an die interaktive Shell der im Hintergrund laufenden Bridge müsst, um euch zum Beispiel mit dem Befehl info
nochmal die Logindaten anzeigen zu lassen, so ist dies kein Problem. Da das Programm in einer tmux-Session im Hintergrund läuft, kann man diese auch ohne Probleme zur Laufzeit nach vorne holen.
Zunächst müsst ihr dafür in den Benutzer wechseln, unter der die Bridge läuft:
|
|
Mit tmux list-sessions
kann man sich alle aktuell laufenden Sessions anzeigen lassen, wenn man den Namen auch so schon kennt kann der auch direkt eingegeben werden. Um nun in die Session zu springen, reicht folgender Befehl:
|
|
Um die tmux-Session wieder zu verlassen ohne sie zu beenden, müsst ihr die Tastenkombination “STRG + b”, loslassen, dann “d” verwenden. (Mac: control statt STRG).
Abschluss
Die Proton Mail Bridge läuft jetzt automatisch im Hintergrund mit und ermöglicht den Zugriff auf das Proton Mail Postfach über jedes normale Email-Tool. Die Bridge aktualisiert sich auch automatisch im Hintergrund, diese Funktion ist standardmäßig aktiv und kann sonst über die interaktive Shell der Bridge angepasst werden. Damit ist es jetzt auch ohne weiteres möglich, mit einem Tool wie zum Beispiel imapsync eine lokale Kopie aller Mails anzulegen und diese automatisch aktuell zu halten.