Mailcow ADDITIONAL_SAN

Hallo zusammen,

Ich wollte in Mailcow weitere Zertifikate für „mail.example.com“ und weitere beantragen und haben das so in dir config eingetragen:

# Additional SAN for the certificate
#
# You can use wildcard records to create specific names for every domain you add to mailcow.
# Example: Add domains "example.com" and "example.net" to mailcow, change ADDITIONAL_SAN to a value like:
#ADDITIONAL_SAN=imap.*,smtp.*
# This will expand the certificate to "imap.example.com", "smtp.example.com", "imap.example.net", "imap.example.net"
# plus every domain you add in the future.
#
# You can also just add static names...
#ADDITIONAL_SAN=srv1.example.net
# ...or combine wildcard and static names:
#ADDITIONAL_SAN=imap.*,srv1.example.com
#

ADDITIONAL_SAN=mail.example.com,imap.example.com,pop3.example.com,smtp.example.com,autoconfig.example.com,autodiscover.example.com

# Skip running ACME (acme-mailcow, Let's Encrypt certs) - y/n

SKIP_LETS_ENCRYPT=n

Danach habe ich die Config gespeichert und den Server neu geartet.
Jetzt habe ich aber immer noch kein SSL Zertifikat, wenn ich mich über mail.example.com verbinden möchte.

Die DNS Einträge leiten alle per CNAME auf den Hostnamen von Mailcow weiter.
Woran liegt, das muss ich das erste Mal das Zertifikat beantragen manuell auslösen?

  1. Was wird denn in den Logs ausgegeben? Zum Prüfen der Logs einfach mal folgenden Befehl im Mailcow-Ordner ausführen: docker-compose logs --tail=200 -f acme-mailcow

  2. Bitte auch folgenden Auszug aus der Konfigurationsdatei beachten:

# Additional server names for mailcow UI
#
# Specify alternative addresses for the mailcow UI to respond to
# This is useful when you set mail.* as ADDITIONAL_SAN and want to make sure mail.maildomain.com will always point to the mailcow UI.
# If the server name does not match a known site, Nginx decides by best-guess and may redirect users to the wrong web root.
# You can understand this as server_name directive in Nginx.
# Comma separated list without spaces! Example: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f
ADDITIONAL_SERVER_NAMES=

Dieser scheint in vergangenen Updates erst eingeführt worden zu sein, sodass dies ziemlich am Ende der Konfigurationsdatei steht.

Damit kann ich mir leider nicht den Log anzeigen lassen

root@mail:~# docker-compose logs --tail=200 -f acme-mailcow
ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml

Ich denke mal du meist die Sache mit den Leerzeichen das hab ich bereits beachtet und alles ohne Leerzeichen geschrieben:

ADDITIONAL_SAN=mail.example.com,imap.example.com,pop3.example.com,smtp.example.com,autoconfig.example.com,autodiscover.example.com

Bist du im Stammverzeichnis von Mailcow? Bei einer Standard-Installation ist dies /opt/mailcow-dockerized.

Nein, es gibt seit neuestem den Config-Eintrag ADDITIONAL_SERVER_NAMES, welcher zusätzliche URLs für das Webinterface definiert. Wenn du also mail.example.com auf das Webinterface von Mailcow zugreifen möchtest, so muss der Eintrag wie folgt lauten: ADDITIONAL_SERVER_NAMES=mail.example.com

Hier der log:

acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Waiting for Docker API...
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Docker API OK
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Waiting for Postfix...
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Postfix OK
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Waiting for Dovecot...
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Dovecot OK
acme-mailcow_1       | Fri Aug 27 14:15:46 CEST 2021 - Waiting for database...
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Database OK
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Waiting for Nginx...
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Nginx OK
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Waiting for resolver...
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Resolver OK
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Waiting for domain table...
acme-mailcow_1       | OK
acme-mailcow_1       | Fri Aug 27 14:15:48 CEST 2021 - Initializing, please wait...
acme-mailcow_1       | unable to load certificate
acme-mailcow_1       | 139918749039432:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
acme-mailcow_1       | unable to load certificate
acme-mailcow_1       | 140664182156104:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
acme-mailcow_1       | unable to load certificate
acme-mailcow_1       | 139734746286920:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
acme-mailcow_1       | unable to load certificate
acme-mailcow_1       | 140125816531784:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
acme-mailcow_1       | Fri Aug 27 14:15:49 CEST 2021 - Using existing domain rsa key /var/lib/acme/acme/key.pem
acme-mailcow_1       | Fri Aug 27 14:15:49 CEST 2021 - Using existing Lets Encrypt account key /var/lib/acme/acme/account.pem
acme-mailcow_1       | Fri Aug 27 14:15:49 CEST 2021 - Detecting IP addresses...
acme-mailcow_1       | Fri Aug 27 14:15:49 CEST 2021 - OK: 88.99.171.56, 2a01:4f8:c0c:7371::1
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Validated CAA for parent domain example.com
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Found AAAA record for autodiscover.example.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Validated CAA for parent domain example.com
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Found AAAA record for autoconfig.example.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:50 CEST 2021 - Found AAAA record for autodiscover.host.de: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Found AAAA record for autoconfig.host.de: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Found AAAA record for autodiscover.host.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:51 CEST 2021 - Found AAAA record for autoconfig.host.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:52 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:52 CEST 2021 - Found AAAA record for autodiscover.host.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:52 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:52 CEST 2021 - Found AAAA record for autoconfig.host.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:52 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:53 CEST 2021 - Found AAAA record for mail.host.com: 2a01:4f8:c0c:7371::1 - skipping A record check
acme-mailcow_1       | Fri Aug 27 14:15:53 CEST 2021 - Confirmed AAAA record with IP 2a01:04f8:0c0c:7371:0000:0000:0000:0001
acme-mailcow_1       | Fri Aug 27 14:15:53 CEST 2021 - Certificate /var/lib/acme/mail.host.com/cert.pem validation done, neither changed nor due for renewal.
acme-mailcow_1       | Fri Aug 27 14:15:53 CEST 2021 - Certificates were successfully validated, no changes or renewals required, sleeping for another day.

Es scheint mir so als, wenn er die Zertifikate garniert beantragen würde…

Ich habe das ganze jetzt dort unten so eingetragen scheint aber immer noch nichts zu bringen

ADDITIONAL_SERVER_NAMES=mail.example.com,imap.example.com,pop3.example.com,smtp.example.com,autoconfig.example.com,autodiscover.example.com

Das ist auch komplett unnötig, meine Variante reicht aus.
Beachte, dass auch die ADDITIONAL_SAN korrekt sein müssen. Die Konfiguration könnte also wie folgt aussehen:

ADDITIONAL_SAN=mail.example.com,imap.example.com,pop3.example.com,smtp.example.com
ADDITIONAL_SERVER_NAMES=mail.example.com

Wichtig: Die Domains autosicover.domain.tld und autoconfig.domain.tld müssen nicht eingetragen werden, da diese so oder so von Mailcow beantragt werden.

Nachdem die Eintragungen vorgenommen wurden, einfach mittels docker-compose up -d (Ausführung im Stammverzeichnis) die Container aktualisieren.
Und wenn du Hostnamen oder IP-Adressen zensierst, bitte irgendeinen Anhaltspunkt angeben, welche Domain was macht. Beispiel:

  • mail.example.com ist die Domain, welche bei der Ersteinrichtung angegeben wurde (Haupt-Domain)
  • mail.example.org ist die neue Domain, welche ebenfalls für das Webinterface funktionieren soll
  • example.de und example.eu sind weitere E-Mail Domains, sollen aber nicht für den Zugriff auf das Webinterface bereitstehen.

Würde mir das ansonsten irgendwann mal live anschauen – Morgen Vormittag könnte ich.

Danke für den Lösungsvorschlag ich kann ihn aber leider erst am Sonntag Probieren dann melde ich nochmal, falls es noch irgendwelche Probleme geben sollte.

Deswegen habe ich auch Standard Mailcow Adresse durch host.de ersetzt und die ich hinzufügen möchte ist example.com ich versuche es aber besser erkenntlich zu machen bei den Nächsten Beiträgen :smiley:

Kleiner Nachtrag:
Nachdem die Einstellungen (wie oben beschrieben) umgesetzt wurden, kann eine Erneuerung der Zertifikate auch mit den folgenden Befehlen erzwungen werden:

cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
docker-compose restart acme-mailcow