osob.de Unicorn Logo
Blogpost overview
Bild einer Kuh die eine E-Mail schreibt

IPv6 in Mailcow einrichten: Cannot validate any hostnames | 02.07.2024

IPv6 in Mailcow einrichten: Fehler "Cannot validate any hostnames"

Ich richte nun nicht jeden Tag eine Mailcow-Instanz ein. Aber es war mal Zeit für Xzit einen Mailserver einzurichten. Mailcow ist gigantisch. Habe ich ja schon hier und da beschieben. Also schnell VPS (hier bei Contabo) aufgesetzt und eine IPv6 statisch hinterlegt. Nachdem die IPv6-Konnektivität auf dem Server funktionierte und die korrekte IPv6-Adresse sowohl im Mailcow-UI als auch in den DNS-Einträgen hinterlegt war, stellte sich heraus, dass dennoch Probleme bestanden. Im Mailcow-UI wurde die richtige IPv6-Adresse angezeigt, die auch in den DNS-Einträgen hinterlegt war.

You like what you find here? A donation helps to keep this project running.

Fehlermeldung im ACME-Log:

02.07.2024, 21:45:53 fancy-xzit-mailserver - Use SKIP_LETS_ENCRYPT=y in mailcow.conf to skip it permanently.
02.07.2024, 21:45:53 fancy-xzit-mailserver - Cannot validate any hostnames, skipping Let's Encrypt for 1 hour.
02.07.2024, 21:45:53 fancy-xzit-mailserver - Confirmed AAAA record with IP 2a02:beef:beef:beef:beef:beef:beef:beef, but HTTP validation failed
02.07.2024, 21:45:53 fancy-xzit-mailserver - Found AAAA record for fancy-xzit-mailserver: 2a02:beef:beef:::1 - skipping A record check
02.07.2024, 21:45:53 fancy-xzit-mailserver - OK: 194.163.xxx.xxx, 2a02:xxxx:xxxx:xxxx::1
02.07.2024, 21:45:52 fancy-xzit-mailserver - Detecting IP addresses...
02.07.2024, 21:45:52 fancy-xzit-mailserver - Using existing Lets Encrypt account key /var/lib/acme/acme/account.pem
02.07.2024, 21:45:52 fancy-xzit-mailserver - Using existing domain rsa key /var/lib/acme/acme/key.pem
02.07.2024, 21:45:52 fancy-xzit-mailserver - Initializing, please wait...
02.07.2024, 21:45:52 fancy-xzit-mailserver - OK
02.07.2024, 21:45:51 fancy-xzit-mailserver - Waiting for domain table...
02.07.2024, 21:45:51 fancy-xzit-mailserver - Resolver OK
02.07.2024, 21:45:51 fancy-xzit-mailserver - Waiting for resolver...
02.07.2024, 21:45:51 fancy-xzit-mailserver - Nginx OK
02.07.2024, 21:45:51 fancy-xzit-mailserver - Waiting for Nginx...
02.07.2024, 21:45:51 fancy-xzit-mailserver - Database OK
02.07.2024, 21:45:51 fancy-xzit-mailserver - Waiting for database...
02.07.2024, 21:45:50 fancy-xzit-mailserver - Dovecot OK
02.07.2024, 21:45:50 fancy-xzit-mailserver - Waiting for Dovecot...
02.07.2024, 21:45:50 fancy-xzit-mailserver - Postfix OK
02.07.2024, 21:45:50 fancy-xzit-mailserver - Waiting for Postfix...
02.07.2024, 21:45:50 fancy-xzit-mailserver - Docker API OK
02.07.2024, 21:45:50 fancy-xzit-mailserver - Waiting for Docker API

Erst nach einigem Herumprobieren und Recherchieren stieß ich auf die Möglichkeit, die einzelnen Services direkt auf die IPv6-Adresse zu binden. Hätte ich mal die Anleitung von Anfang bis Ende gelesen ;-)

IPv6 in Mailcow aktivieren

In der Konfiguration ab Repo, kommt Mailcow eigentlich mit allen notwendigen Einstellungen. Und wenn nicht über einen Revers-Proxy gegangen wird, bedarf es nur einer kleinen Anpassung. Um Update-Fähigkeit zu behalten, wird einfach eine Datei docker-compose.override.yml erstellt. Diese wird mit der produktiven docker-compose.yml-Datei zusammengeführt und ermöglicht so eine stabile Konfiguration auch nach Updates. In diese Datei kommen dann die Definitionen der Services bzw. die Definition der IPv6-Konnektivität. Hier die Kopie aus der Dokumentation:

services:

    dovecot-mailcow:
      ports:
        - '[2001:db8:dead:beef::123]:143:143'
        - '[2001:db8:dead:beef::123]:993:993'
        - '[2001:db8:dead:beef::123]:110:110'
        - '[2001:db8:dead:beef::123]:995:995'
        - '[2001:db8:dead:beef::123]:4190:4190'

    postfix-mailcow:
      ports:
        - '[2001:db8:dead:beef::123]:25:25'
        - '[2001:db8:dead:beef::123]:465:465'
        - '[2001:db8:dead:beef::123]:587:587'

    nginx-mailcow:
      ports:
        - '[2001:db8:dead:beef::123]:80:80'
        - '[2001:db8:dead:beef::123]:443:443'

Schritt 2: Änderungen anwenden

Um die Änderungen anzuwenden, müssen Sie die Docker-Compose-Dienste neu starten. Nutzen Sie dazu die folgenden Befehle:

docker compose down
docker compose up -d