Mailcow unter Traefik mit mehreren Domains und getrennt unabhängige Zertifikate ?

  • Vielleicht etwas genauer.

    In Mailcow befinden sich beispiel.de, beispiel.net und beispiel.com.

    Nun möchte ich aber, wenn ich beispielsweise "mail.beispiel.net" aufrufe nur die Zertifikat-Infos von "beispiel.net" einsehen kann und NICHT ebenso von "beispiel.de" und "beispiel.com". Dovecot, Postfix und Nginx sollen die passenden Zertifikate von den jeweiligen Domains geladen haben.

    Das klappt perfekt mit SNI ohne Traefik. Aber das ist nicht mein Ansatz.

  • Alfonso77 30. Januar 2026 um 17:20

    Hat den Titel des Themas von „Mailcow & Traefik mit mehreren Domains und getrennt unabhängige Zertifikate ?“ zu „Mailcow unter Traefik mit mehreren Domains und getrennt unabhängige Zertifikate ?“ geändert.
  • Wenn es nur um Web mit Traefik geht sollten sich die Zertifikate einzeln definieren und über Matcher Regeln zuweisen lassen.

    So wirklich oft nutz ich Traefik bei mir aber auch nicht.

    2 Mal editiert, zuletzt von paulv (2. Februar 2026 um 09:14)

  • Wenn Interesse besteht, kann ich später mal eine kleine Anleitung, was Traefik in Kombination mit Mailcow und 2 (oder mehrere) Domains betrifft, veröffentlichen.

    Stichworte sind:

    - docker-compose.override.yml

    - Certdumper

    - Hook-Script

    Ich habe es soweit hinbekommen. Traefik erstellt ein WildCard-Zertifikat pro Domain (Hab mich für WildCard entschieden). Diese werden später vom Certdumper (in docker-compose.override.yml integriert) in das richtige .cem - und .key-Format für Mailcow "gedumpt". Dieser Certdumper erstellt dann wiederum jeweils ein Ordner in '/opt/containers/mailcow/data/assets/ssl' mit den jeweiligen Domain-Namen, wo sich die jeweils passenden WildCard-Zertifikate befinden. Das Hook-Script, welches vom Certdumper gesteuert wird, kopiert die Zertifikate von den erstellten Ordnern dann in die richtigen Bereiche für Mailcow. Sobald abgeschlossen, startet Certdumper die betreffenden Container von Mailcow neu. Somit sind die Zertifikate dann geladen.

    Das war nur grob. Es gibt noch einige Vorarbeiten hierzu.

  • Wenn ich z.B. "mail.domain.com" aufrufe, dann möchte ich nicht, daß in den Zertifikats-Infos im Browser auch die Zertifikatsinfos von "mail.anderedomain.net" stehen.

    Jede in Mailcow eingetragene Domain soll sein explizites Zertifikat bekommen.

    Das ist mit der 'normalen' Mailcow-Installation mit SNI kein Problem.

    Wenn jedoch Traefik davor geschaltet ist, wird es heikler.

  • Das sollte mit den von mir verlinkten Einstellungen in Traefik möglich sein damit die Zertifikate explizit getrennt ausgestellt werden. Bzw wenn du die von außen irgendwie mit rein gibst müssen sie da schon getrennt ausgestellt sein.

    2 Mal editiert, zuletzt von paulv (2. Februar 2026 um 12:22)

  • Das sollte mit den von mir verlinkten Einstellungen in Traefik möglich sein damit die Zertifikate explizit getrennt ausgestellt werden.

    Das ist nur ein kleiner Teil dessen. Dovecot und Postfix sollen ja auch die Zertifikate erhalten.

    Was Du hier beschreibst sind in erster Linie nur die Zuweisungen von Zertifikaten an den entsprechenden Sub-Domains.

    Hier meine Dateien:


    traefik.yml


    docker-compose.override.yml


    hook.sh

  • Zertifikate in Dovecot und Postfix haben eigentlich auch nichts mit Traefik zu tun. Sofern die bei der Ausstellung nicht kombiniert sind werden die auch nicht kombiniert ausgeliefert.

    Was Certdumper damit macht kann ich dir nicht beantworten. Ich würde aber eher beide Lösungen von außen mit Zertifikaten versorgen (acme.sh) als die aus Traefik raus zu wursten.

  • Voraussetzung für alles ist:

    - Traefik für entsprechende Domains Wildcard-Zertifikate erstellen lassen, wenn erledigt, Traefik herunterfahren.

    - Mailcow normal laut deren Seite installieren (mailcow.conf: HTTP_REDIRECT=y, ADDITIONAL_SAN=mta-sts.*, AUTODISCOVER_SAN=y, SKIP_LETS_ENCRYPT=n, ENABLE_SSL_SNI=y

    - Mailcow installieren/starten

    - Neue Domain "domain.de" und "anderedomain.net" anlegen, so das Mailcow sich über sein internes acme seine Zertifikate holt. Damit erstellt er auch in '/data/assets/ssl' die passenden ORDNER, welche wichtig sind damit später der 'certdumper' die Zertifikate von Traefik hineinkopieren kann.

    - Wenn alles erfolgreich und Zertifikate wurden erstellt, dann Mailcow herunterfahren.

    - Jetzt die passende 'docker-compose.override.yml' in das Root-Verzeichnis von Mailcow kopieren und entsprechend abändern.

    - mailcow.conf öffnen, dann HTTP_REDIRECT=n, SKIP_LETS_ENCRYPT=y

    - Traefik starten

    - Mailcow starten (der Dumper holt sich nun die Zertifikate von Traefik und plaziert sie korrekt in die jeweiligen Verzeichnisse in '/data/assets/ssl' und startet automatisch die Postfix -und Dovecot-Container neu, womit dann die Zertifikate von Traefik geladen werden.

    Achso: Wenn das Zertifikat abläuft, erkennt der 'Certdumper' es, übersetzt, kopiert...startet neu...'

    UNBEDINGT ZUNÄCHST MIT STAGING-ZERTIFIKATEN TESTEN !!!!!!!!!!!

  • Zertifikate in Dovecot und Postfix haben eigentlich auch nichts mit Traefik zu tun. Sofern die bei der Ausstellung nicht kombiniert sind werden die auch nicht kombiniert ausgeliefert.

    Was Certdumper damit macht kann ich dir nicht beantworten. Ich würde aber eher beide Lösungen von außen mit Zertifikaten versorgen (acme.sh) als die aus Traefik raus zu wursten.

    Genau das wollte ich nicht. Alles soll in Docker geschehen.

    Traefik bietet es an, Wildcard-Zertifikate zu erstellen.

    Certdumper bietet es an, sie zu 'übersetzen', zu kopieren und die entsprechenden Container neu zu starten.

    Bei mir klappt es perfekt.

  • Wenn es perfekt funktioniert, verstehe ich nicht wo die Frage nach den getrennten Zertifikaten her kommt :/

    Sonst schau dir die Zertifikate an ob die korrekt ausgestellt wurden, dann sind in den Infos auch keine Hinweise auf die anderen Domains mit drin. Nicht das da einfach nur alte Zertifikate ausgeliefert werden und die veränderte Konfiguration ignoriert wird.

    Einmal editiert, zuletzt von paulv (2. Februar 2026 um 13:16)

  • Wenn es perfekt funktioniert, verstehe ich nicht wo die Frage nach den getrennten Zertifikaten her kommt :/

    Sonst schau dir die Zertifikate an ob die korrekt ausgestellt wurden, dann sind in den Infos auch keine Hinweise auf die anderen Domains mit drin.

    Wenn Du ON-TOP nur Mailcow unter Docker mit aktivierten SNI OHNE Traefik installierst, dann sind die Zertifikate voneinander unabhängig.

    Meine Installation ist aber MIT Traefik, daher der etwas grössere Aufwand um SNI über Traefik zu bewerkstelligen.

    Möglicherweise reden wir aber auch aneinander vorbei.

  • Das ist gut möglich.
    Nach der Dokumentation extrahiert Traefik die Hostnamen aus den Router Regeln und würde vermutlich über diese irgendwie eine Summe der benötigten Zertifikate anfordern. Mit der Konfiguration hingegen sollten die Zertifikate nur für bestimmte Hostnamen und Aliasse zusammen gelegt werden. Dann dürften da nach meinem Verständnis keine Kombinationen mehr raus kommen welche du nicht definiert hast.

    Wenn Traefik dennoch andere Kombinationen verteilt stimmt die Dokumentation da nicht oder die Änderung an den "Regeln" wird nicht erkannt.

    Einmal editiert, zuletzt von paulv (2. Februar 2026 um 13:33)

  • Das ist gut möglich.
    Nach der Dokumentation extrahiert Traefik die Hostnamen aus den Router Regeln und würde vermutlich über diese irgendwie eine Summe der benötigten Zertifikate anfordern. Mit der Konfiguration hingegen sollten die Zertifikate nur für bestimmte Hostnamen und Aliasse zusammen gelegt werden. Dann dürften da nach meinem Verständnis keine Kombinationen mehr raus kommen welche du nicht definiert hast.

    Das sind DNS-01 Wildcard-Zertifikate. Dazu braucht Traefik keine Router-Regeln um Hostnamen daraus zu extrahieren. Eher fragen die in den Router-Regeln eingetragenen Hostnamen (Sub-Domains) Traefik, wofür für welche Hostnamen Zertifikate da sind um sie dann bereitzustellen.

    z.b.

    "traefik.http.routers.domain-de-secure.rule: Host(`autoconfig.domain.de`) Host(`autodiscover.domain.de`) Host(`mta-sts.domain.de`)" ---> Anfrage an Traefik ---> Traefik antwortet ----> nimm *domain.de.

    Traefik macht das automatisch.

    Man sollte aber beachten, dass nicht automatisch Sub-Domains erstellt werden. Die sollten schon beim DNS-Provider eingetragen sein oder man gibt im Root der DNS-Einstellungen das berühmte '*' ein.

  • Ich kann da nur aus der Dokumentation zittieren:

    Zitat

    (...) domains are automatically extracted from router rules (...)

    Sollte mit der Konfiguration aber nicht mehr relevant sein weil Hostnamen verschiedener Zertifikate sich nicht kombinieren lassen.

    Wenn ich so drüber nachdenke was du beschreibst klingt es fast so als würden Traefik die Wildcard Zertifikate nicht verwenden (gar nicht erst ausstellen?) und extra neue mit diversen Aliassen beziehen...

    3 Mal editiert, zuletzt von paulv (2. Februar 2026 um 13:56)

  • Ich kann da nur aus der Dokumentation zittieren:

    Sollte mit der Konfiguration aber nicht mehr relevant sein weil Hostnamen verschiedener Zertifikate sich nicht kombinieren lassen.

    Wenn ich so drüber nachdenke was du beschreibst klingt es fast so als würden Traefik die Wildcard Zertifikate nicht verwenden (gar nicht erst ausstellen?) und extra neue mit diversen Aliassen beziehen...

    Sorry, du redest hier permanent von "SAN-Zertifikaten".

    In diesen Thread geht es um "Wildcard-Zertifikate".

  • Sorry, du redest hier permanent von "SAN-Zertifikaten".

    In diesen Thread geht es um "Wildcard-Zertifikate".

    Selbes Prinzip bis auf das der Wildcard Platzhalter im Name und Alias steht. Sowas sollte auch nie wirklich als Multi Domain Variante bei raus kommen...

    Traefik soll dir *.a.tld (+ a.tld) sowie *.b.tld (+ b.tld) als getrennte Zertifikate erzeugen. Wenn du eine Anfrage an Traefik sendest wird eines der beiden Zertifikate je nach deinem Host Matching ausgewählt und für die Verbindung verwendet.

    3 Mal editiert, zuletzt von paulv (2. Februar 2026 um 14:30)

  • Wo vermutest du den einen Unterschied in der Funktionsweise eines Wildcard Zertifikats? Das du für die Ausstellung etwas mehr dein Eigentum beweisen musst ist dem Client und Server bei der Wahl und Validierung recht egal.

    Unabhängig davon wie der Server das Zertifikat dynamisch oder statisch für deinen Host wählt, kommt nur das Zertifikat raus welches auch ausgestellt wurde.

    Einmal editiert, zuletzt von paulv (2. Februar 2026 um 14:46)