Mailcow Let's Encrypt funktioniert nicht

  • Läuft mailcow vllt hinter einem Reverse Proxy?


    In dem Fall evtl. die Zertifikate selbst requested z.B. mit achme.sh und anschließend zu mailcow rüberschieben und die entsprechenden Container restarten 😊🙃

  • Der Server ist über Port 80 erreichbar. Ein Reverse Proxy existiert nicht. Die Ports gehen direkt zum Container.

    Die Logs zeigen folgendes:

    Code
    1. 26.5.2019, 00:49:57 Use SKIP_LETS_ENCRYPT=y in mailcow.conf to skip it permanently.
    2. 26.5.2019, 00:49:57 Cannot validate hostnames, skipping Let's Encrypt for 1 hour.
    3. 26.5.2019, 00:49:57 Cannot match your IP NO_IPV6_LINK against hostname mail.domain.tld (IPv6)
    4. 26.5.2019, 00:49:57 Found AAAA record for mail.domain.tld: IPv6 - skipping A record check
    5. 26.5.2019, 00:49:57 Cannot match your IP NO_IPV6_LINK against hostname autodiscover.domain.tld (IPv6)
    6. 26.5.2019, 00:49:57 Found AAAA record for autodiscover.domain.tld: IPv6 - skipping A record check
    7. 26.5.2019, 00:49:53 OK
    8. 26.5.2019, 00:49:05 Detecting IP addresses...
    9. 26.5.2019, 00:49:05 Using existing Lets Encrypt account key /var/lib/acme/acme/account.pem
    10. 26.5.2019, 00:49:05 Using existing domain key /var/lib/acme/acme/key.pem
  • Der Server ist über Port 80 erreichbar. Ein Reverse Proxy existiert nicht. Die Ports gehen direkt zum Container.

    Die Logs zeigen folgendes:

    Code
    1. 26.5.2019, 00:49:57 Use SKIP_LETS_ENCRYPT=y in mailcow.conf to skip it permanently.
    2. 26.5.2019, 00:49:57 Cannot validate hostnames, skipping Let's Encrypt for 1 hour.
    3. 26.5.2019, 00:49:57 Cannot match your IP NO_IPV6_LINK against hostname mail.domain.tld (IPv6)
    4. 26.5.2019, 00:49:57 Found AAAA record for mail.domain.tld: IPv6 - skipping A record check
    5. 26.5.2019, 00:49:57 Cannot match your IP NO_IPV6_LINK against hostname autodiscover.domain.tld (IPv6)
    6. 26.5.2019, 00:49:57 Found AAAA record for autodiscover.domain.tld: IPv6 - skipping A record check
    7. 26.5.2019, 00:49:53 OK
    8. 26.5.2019, 00:49:05 Detecting IP addresses...
    9. 26.5.2019, 00:49:05 Using existing Lets Encrypt account key /var/lib/acme/acme/account.pem
    10. 26.5.2019, 00:49:05 Using existing domain key /var/lib/acme/acme/key.pem

    In den Logs steht ja eigentlich schon ganz genau wo der Hund begraben liegt: Im obersten Ordner deiner Mailcow (z.B. /opt/mailcow-dockerized) liegt eine Datei mailcow.conf (ist glaube ich ein Symlink zu einem docker-compose file)

    In mailcow.conf gibt es eine Zeile "SKIP_LETS_ENCRYPT" welche bei dir auf Y gestellt ist. Also wird Let's Encrypt nicht verwendet. Stelle die Zeile auf "N" und nach einem

    Code
    1. docker-compose down
    2. docker-compose up -d

    sollte ein Zertifikat mit Let's Encrypt erstellt und von Mailcow verwendet werden.


    Viele Grüße

    marpri

  • Code
    1. Cannot match your IP NO_IPV6_LINK against hostname mail.domain.tld (IPv6)

    Hier liegt wohl das Problem. Das hatte ich aber selbst noch nie und konnte auf Anhieb auch keine klare Ursache finden. Ein Anfang wäre, die Issues auf GitHub dazu durchzugehen und zu schauen, ob einer der dort gemachten Vorschläge für Dich funktioniert: https://github.com/mailcow/mai…q=is%3Aissue+NO_IPV6_LINK

    Scheinbar könnten z.B. eigene IPTables-Regeln oder UFW eine Ursache für das Problem sein.

  • Es gibt zwei Konfigurations-Parameter, die hier Abhilfe schaffen können. Wichtig dabei ist anzumerken, dass das eigentliche Problem damit evtl. nur umgangen, aber nicht behoben wird.

    Code
    1. # Skip IPv4 check in ACME container - y/n
    2. SKIP_IP_CHECK=y
    3. # Skip HTTP verification in ACME container - y/n
    4. SKIP_HTTP_VERIFICATION=y

    Den ersten Parameter bzgl. IP_CHECK benötige ich z.B., da die Mailcow hinter Cloudflare betrieben wird und daher für manche Domains die im DNS hinterlegte Adresse nicht zur echten passt. Außerdem kann das nötig sein, wenn die Mailcow in einem LXD-Container liegt, da sie dann nur eine interne IP sieht.

  • Das ist des Rätsels Lösung. Problem ist scheinbar, dass bei mir die IPv6 config unter /etc/network/interfaces.d/50-cloud-init.cfg

    auf

    Code
    1. auto eth0:1
    2. iface eth0:1 inet6 static

    statt

    Code
    1. auto eth0
    2. iface eth0 inet6 static

    steht.


    Leider erhalte ich bei der Änderung der config einen Fehler beim Restart des Netzwerkes und die V6 Adresse wird gar nicht gebootet.

  • Ich sehe gerade, dass in deinen Logs nur steht, dass du SKIP_LETS_ENCRYPT=y benutzen kannst. Daher ist mein Vorschlag von weiter oben natürlich in deinem Fall nicht zielführend, sorry. Habe ich heute Nacht um halb 2 wohl nicht gecheckt :S