immerda:OfflineIMAP
Setup
- OfflineIMAP kümmert sich um die Synchronisation zwischen Immerda und dem lokalen Verzeichnis.
- Verbindung über TOR.
- Passwort verschlüsselt abgespeichert (im aktuellen Beispiel in pass).
- Dovecot kümmert sich um die Auslieferung des lokalen Verzeichnisses an dein E-Mail Program.
OfflineIMAP
Konfiguration
Normalerweise wird eine OfflineIMAP Konfiguration in der Datei ~/.offlineimaprc
erstellt.
[general] accounts = alice pythonfile = ~/.offlineimap.py [Account alice] localrepository = alice-local remoterepository = alice-remote [Repository alice-local] type = Maildir localfolders = /var/mail/alice@immerda.ch/Maildir nametrans = lambda name: re.sub('^\.', , name) [Repository alice-remote] cert_fingerprint = 2991ea70a0fa0d8cabf26050e69be43ec080fd0f type = IMAP keepalive = 300 starttls = no ssl = yes remotehost = ysp4gfuhnmj6b4mb.onion remoteport = 993 remoteuser = alice@immerda.ch remotepasseval = mailpasswd("email/immerda.ch/alice@immerda.ch") folderfilter = lambda folder: not re.search('^(|INBOX\.(Trash\..*|spam))$', folder) nametrans = lambda name: '.' + name
In dieser Konfiguration sind folgende Punkte zu beachten / anzupassen:
- Es gibt immer zwei Repositories pro Account, eines lokal und eines remote (hier alice-local und alice-remote genannt).
- Die E-Mail Adresse
alice@immerda.ch
muss durch deine eigene E-Mail Adresse ersetzt werden. - Das Passwort wird mithilfe des Scriptes
~/.offlineimap.py
ausgelesen, das kann in deinem Setup anders sein.remotepasseval
gibt die Funktion an, mit welcher das Passwort ausgelesen wird.email/immerda.ch/alice@immerda.ch
ist der Password Store Pfad.
- Diverse Ordner werden nicht synchronisiert (
'^(|INBOX\.(Trash\..*|spam))$'
):INBOX.Trash.*
(gelöschte Ordner)INBOX.spam
("spam" / "Junk" / "junk", es braucht nicht alle)""
(das sollte immer vorhanden sein)
- Der cert_fingerprint ist der Fingerprint des Zertifikates von Immerda. Dieses kann von Zeit zu Zeit ändern.
Synchronisation
Um die Synchronisation immer wieder zu triggern, kannst du systemd verwenden. Du kannst dafür einen User Service erstellen (~/.local/share/systemd/user/offlineimap.service
).
[Unit] Description=OfflineIMAP Service After=network.target [Service] Type=simple ExecStart=/usr/bin/torsocks /usr/bin/offlineimap -c "${HOME}/.offlineimaprc" [Install] WantedBy=default.target
Einen entsprechenden Timer (~/.local/share/systemd/user/offlineimap.timer
) startet dabei den Service immer wieder.
[Timer] OnUnitInactiveSec=300s Unit=offlineimap.service
Password Store
Das Passwort wird in diesem Beispiel in pass abgelegt. Das ist ein Passwort Manager, welcher deine Passwörter mithilfe von deinem GPG Key verschlüsselt.
Im aktuellen Beispiel sollte eine Passwort Datei in etwa wie folgt aussehen:
kei-k3ohf9foukoodeaV3zooshah^jet login: alice@immerda.ch offlineimap: Eis9teir^aeghee4ieseiMiphohofahN
Das erste ist dein Hauptpasswort, welches du brauchst um dich bei https://users.immerda.ch/ einzuloggen (dein Hauptpasswort). Das Passwort, welches OfflineIMAP verwendet, ist ein App Passwort. App Passwörter können über https://users.immerda.ch/app_passwords erstellt werden.
Das Script, welches die Passwörter ausliest, ist in diesem Beispiel unter ~/.offlineimap.py
abgelegt:
#!/usr/bin/env python3 import subprocess import sys def mailpasswd(secret): proc = subprocess.Popen( ['pass', secret], stdout=subprocess.PIPE, ) output = proc.communicate()[0].decode("utf-8").splitlines() retcode = proc.wait() if retcode != 0: return line = [l for l in output if l.startswith('offlineimap: ')][0] password = line.split(": ", 1)[1] return password if __name__ == '__main__': print(sys.argv[1]) print(mailpasswd(sys.argv[1]))
Dovecot
Users
Pro Account muss ein User im Dovecot erstellt werden. Dazu solltest du eine Datei /etc/dovecot/users
anlegen. Die Passwörter können mithilfe von doveadm pw -s SHA512-CRYPT
erstellt werden. Dabei sollte das Passwort, welches auch OfflineIMAP nutzt, verwendet werden.
# user:password:uid:gid:(gecos):home:(shell):extra_fields alice@immerda.ch:{SHA512-CRYPT}$6$Odd6jdsJirKzaT.u$zAWlZlgcGo0U1H21k6LfViAkl82.gM3F8ovbCGs54DEjuCP0bUNXZY69nvf1o.8IzsbcuBIL.3NY1Jug7jUtq/:1000:1000::/home/alice::
Authentication
Die Konfiguration /etc/dovecot/local.conf
in etwa wie folgt aussehen:
passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/users } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/users }
mail_location = maildir:/var/mail/%u/Maildir:INBOX=/var/mail/%u/Maildir/.INBOX
Dovecot wird nach einem Neustart die E-Mails, welche von OfflineIMAP gesynct werden, an dein lokales E-Mail Program ausliefern.
Lokales E-Mail Program
Dein lokales E-Mail Program muss so umgestellt werden, dass es nicht mehr direkt von imap.immerda.ch, sondern neu von deinem lokalen Dovecot die E-Mails abholt.
IMAP-Server : localhost Port : 143 (STARTTLS (TLS Verschlüsselung) muss aktiviert sein, ohne Verschlüsselung funktioniert kein Zugriff!) oder 993 (SSL Verschlüsselung) Benutzername: Dein Benutzername inkl. Domain, z.B. alice@immerda.ch Password : Dein Passwort
Der Postausgangsserver bleibt nach wie vor derselbe.