Dovecot SSL alert number 46 mit Letsencrypt unter Ubuntu 20.04
Ich verwende Dovecot in Verbindung mit Let’s Encrypt schon viele Jahre.
Aber seit einiger Zeit und einem Apple-Update auf Mobilgeräten bekomme ich dauernd den Fehler, dass das R3 Zertifikat abgelaufen ist. Wenn man dann aber in das Zert prüft ist alles okay. Aber die Apple Geräte melden die ganze Zeit den Zertifikatsfehler und weigern sich das Zertifikat anzuerkennen.
Auf Android Geräten funktioniert das Abrufen ohne Fehler.
Wenn man das Log des Dovecot Mailservers mit tail -f /var/log/mail.log prüft findet man hunderte von Zeilen wir diese:

Nov 25 23:08:59 atlas dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=177.181.131.141, lip=192.168.4.1, TLS handshaking: SSL_accept() failed: error:14094416:SSL routines :ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46, session= Nov 25 23:08:59 atlas dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=177.181.131.141, lip=192.168.4.1, TLS handshaking: SSL_accept() failed: error:14094416:SSL routines :ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46, session= Nov 25 23:08:59 atlas dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=177.181.131.141, lip=192.168.4.1, TLS handshaking: SSL_accept() failed: error:14094416:SSL routines :ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46, session= Nov 25 23:08:59 atlas dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=177.181.131.141, lip=192.168.4.1, TLS handshaking: SSL_accept() failed: error:14094416:SSL routines :ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46, session=
Wenn man nach dem Error “ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46” sucht, dann findet man die wildesten Ergebnisse aber keins das zum Ziel geführt hat.

Die Lösung
Was den Apple Geräten fehlt ist das R3 Intermediate-Zertifikate. Aus irgendeinem Grund ist in der standard Dovecot Konfiguration nur das Root CA Zertifikat eingetragen (cert.pem). Um den Fehler beseitigen muss die komplette Zertifikatskette hinterlegt werden. Let’s Encrypt erstellt dank certbot die Datei “fullchain.pem” automatisch.
Unter Ubuntu ist die Dovecot SSL Config in mehrere Dateien unterteilt.
Wir brauchen die Datei /etc/dovecot/conf.d/10-ssl.conf
Folgende Zeile suchen
ssl_cert = </etc/letsencrypt/live/atlas.hagenfragen.de/cert.pem
und gegen diese Zeile ersetzen
ssl_cert = </etc/letsencrypt/live/atlas.hagenfragen.de/fullchain.pem
Dovecot neu starten
/etc/init.d/dovecot restart oder service dovecot restart
Danach das Log mit tail -f /var/log/mail.log beobachten
Nov 25 23:12:01 atlas dovecot: imap-login: Login: user=, method=PLAIN, rip=177.181.131.141, lip=192.168.4.1, mpid=133797, TLS, session=
Nov 25 23:12:01 atlas dovecot: imap-login: Login: user=, method=PLAIN, rip=177.181.131.141, lip=192.168.4.1, mpid=133799, TLS, session=
Nov 25 23:12:08 atlas dovecot: imap-login: Login: user=, method=PLAIN, rip=177.181.131.141, lip=192.168.4.1, mpid=133801, TLS, session=
Erledigt – Problem gelöst
Excellent workaround ! Previously I had to import CA in some iphones in 2021 when LetsEncrypt has moved to a new root cert. This worked also today for two Samsung Android smartphones which loose randomly negociation with dovecot imaps server.
Thanks a lot.
Thanks for the feedback!
I was not aware that even people from out-of-Germany read my blog.
How did u stumnble upon it?