Letztes Jahr war auf einmal Schluss mit der bisher guten Verbindung zwischen Thunderbird und meinem eigenen, lokalen Mailserver.
Auf einmal wurde mein selbst erstelltes Zertifikat meines Mailservers nicht mehr akzeptiert. Ich dachte, das Zertifikat wäre ausgelaufen, aber es war noch ca 2 Jahre gültig. Auch der Import eines neu erstellten Zertifikates funktionierte nicht mehr. Ich habe lange gebraucht, um zu verstehen, was genau das Problem ist. Irgendwie kam das für mich ohne Vorwarnung. Dementsprechend war ich nicht gerade amused.
Was war passiert?
Irgendwann in 2023 gab es eine Änderung in Thunderbird, nicht jedes selbst erstelltes Zertifikat wurde nicht mehr akzeptiert. Bei meinen ehemaligen Kunden mit Linux-Server gab es hingegeben keinen Aufschrei- entweder war die Windows-Version von Thunderbird nicht betroffen, oder ich hatte dort etwas anders gemacht.
Aus Sicherheitsgründen akzeptiert Thunderbird keine Zertifikate mehr, die nicht für den Server ausgestellt wurden, mit dem sich Thunderbird verbindet. Wenn das Zertifikat also z.B. auf einen Servernamen „server-2016“ ausgestellt ist, sich Thunderbird aber mit 192.168.178.2 verbindet- Pecht gehabt.
Erst habe ich gedacht, es reicht aus, in die hosts-Datei einen Eintrag
192.168.178.2 server-2016
zu erstellen. Das hat nicht ausgereicht. Ich habe ausserdem versucht, in Thunderbird dann die Verbindung nach ’server-2016′ zu erstellen, auch das funktionierte nicht. Wie immer: viel Trail&Error führte zum Erfolg.
Die richtige Lösung
Also, wer einen eigenen Mailserver zur Mailvorsortierung betreibt, sollte folgende Punkte durchführen:
- eine lokale Domain einrichten, die auch aufgelöst wird oder durch einen hosts-Eintrag auf jedem Client gelöst werden kann (z.B. servername.fritz.box )
- den Server auch diesem Namen bei der Installation geben
- ein CA-Zertifikat erstellen
- ein Server-Zertifikat mit Subject Alternative Names (SAN) erstellen, indem auch die IP-Adresse und die gültige lokale Domain enthalten ist
- das Serverzertifikat mit dem CA-Zertifikat signieren
- das CA-Zertifikat in Thunderbird importieren
passende Code-Schnipsel
Erstellen der Datei openssl-san.cnf :
[ req ]
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
C = Länderkürzel
ST = Bundesland
O = Organisationsname
CN = servername.fritz.box
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = servername.fritz.box
IP.1 = 192.168.178.2
Danach diesen Code Stück für Stück ausführen:
# Erstelle den privaten Schlüssel der CA
openssl genpkey -algorithm RSA -out /etc/ssl/private/ca.key
# Erstelle das CA-Zertifikat mit einer Gültigkeit von 10 Jahren
openssl req -new -x509 -key /etc/ssl/private/ca.key -out /etc/ssl/certs/ca.crt -days 3650 \
-subj "/C=DE/ST=Bundesland/L=Stadt oder Ort/O=Organisation oder Firma/OU=Abteilung/CN=Firmenname, unter dem das Zertifikat in Thunderbird erscheinen soll"
# Erstelle den privaten Schlüssel für den Server
openssl genpkey -algorithm RSA -out /etc/ssl/private/<servername>.key
# Erstelle die Zertifikatsanforderung (CSR) für den Server
openssl req -new -key /etc/ssl/private/<servername>.key -out /etc/ssl/certs/<servername>.csr -config openssl-san.cnf
# Signiere das Server-Zertifikat mit der CA, Gültigkeit ebenfalls 10 Jahre
openssl x509 -req -in /etc/ssl/certs/<servername>.csr -CA /etc/ssl/certs/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out /etc/ssl/certs/<servername>.crt -days 3650 -extfile openssl-san.cnf -extensions req_ext
In der /etc/dovecot/conf.d/10-ssl.conf die Zeilen ergänzen:
ssl_cert = </etc/ssl/certs/<servername>.crt
ssl_key = </etc/ssl/private/<servername>.key
ssl_min_protocol = TLSv1.2
ssl_cipher_list = HIGH:!aNULL:!MD5
Danach die Datei /etc/ssl/certs/ca.crt herunterladen und auf allen Clients in Thunderbird importieren:
- Linux: „Bearbeiten“-„Einstellungen“-„Datenschutz Sicherheit“-„Zertifikate verwalten“-„Zertifizierungsstellen“-„importieren“
- Windows: „Extras“-„Einstellungen“-„Datenschutz Sicherheit“-„Zertifikate verwalten“-„Zertifizierungsstellen“-„importieren“
Für die Konfigurationen, in denen die verwendete Domain nicht sicher aufgelöst werden kann, einen Eintrag in der /etc/hosts wie oben beschrieben setzen.
Fertig!
Quellen:
