Mailcow erneuert das Let’s encrypt Zertifikat nicht weil es seine IPv6 AAAA Adresse nicht richtig erkennt

Von | Februar 23, 2024

Heute ist es wieder einmal passiert. Mein Mailclient kann keine Mails abrufen weil das Zertifikat der Mailcow abgelaufen ist. Blöd ist, dass man in diesem Moment auch nicht mehr auf das Webfrontend kommt weil, wegen HSTS Strict Transport Security mein Browser den Kontakt verweigert.

Das Problem hängt mit dem Container „mailcowdockerized-acme-mailcow-1“ zusammen, der sich um die Let’s Encrypt Verifizierung und das Erneuern der Zertifikate kümmert.

Ein Blick in die Logs mit „docker compose logs –tail=200 -f acme-mailcow“ zeigt mir wo das Problem liegt:

Using existing domain rsa key /var/lib/acme/acme/key.pem
Using existing Lets Encrypt account key /var/lib/acme/acme/account.pem
Detecting IP addresses...
OK: XX.35.XXX.250, 0000:0000:0000:0000:0000:0000:0000:0000

Found AAAA record for mail.schmueller.de: 2001:XXXX:af0a:XXXX:4a5d:35ff:fe40:a963 - skipping A record check
Cannot match your IP 0000:0000:0000:0000:0000:0000:0000:0000 against hostname mail.schmueller.de (DNS returned 2001:XXXX:af0a:XXXX:4a5d:35ff:fe40:a963)
Cannot validate any hostnames, skipping Let's Encrypt for 1 hour.
Use SKIP_LETS_ENCRYPT=y in mailcow.conf to skip it permanently.

Die eigene IPv6 wird nicht erkannt und mit 0000:0000:0000:0000:0000:0000:0000:0000 angenommen. Das führt dazu, dass die erkannte IPv6 nicht zur IPv6 aus dem AAAA Record im DNS passt.

Leider bevorzugt das Skript die IPv6 und ignoriert die IPv4, die richtig erkannt wurde und auch zum A Record im DNS passt.

Die Lösung habe ich hier gefunden.

Ich muss sicherstellen, dass die Verifikation auf Basis des A Records geschieht. Dazu muss ich eine Zeile im entsprechenden Skript auskommentieren:

docker exec -it mailcowdockerized-acme-mailcow-1 bash

Suche in der Datei /srv/functions.sh nach der Zeile: AAAA_DOMAIN=$(dig AAAA ${DOMAIN} +short | tail -n 1) und kommentiere diese aus indem Du ein # davor setzt.

Jetzt noch den Container neu starten und die Zertifikatserneuerung sollte gelingen.

docker restart  mailcowdockerized-acme-mailcow-1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert