SMTP-TLS für Mailcow
Mailcow hat TLS 1.0/1.1 seit Februar 2020 in Dovecot und Postfix (SMTPS+SUBMISSION) deaktiviert. Cipher-Härtung erfolgt über data/conf/postfix/extra.cf mit tls_high_cipherlist (ECDHE-AEAD-Suites), smtpd_tls_ciphers=high und tls_preempt_cipherlist=yes — laut Hardening-Guide aus docs.mailcow.email.
SMTP-TLS bei Mailcow (Self-Hosted Docker)
Mailcow hat TLS 1.0 und TLS 1.1 seit Februar 2020 in Dovecot und Postfix (für SMTPS und SUBMISSION) deaktiviert — die Defaults erfüllen damit bereits BSI TR-02102-2 für Port 465/587. Für Port 25 (MX-zu-MX-Inbound) bleibt opportunistisches TLS mit Mailcow-Defaults aktiv. Die Cipher-Härtung erfolgt über die Datei data/conf/postfix/extra.cf mit den Direktiven tls_high_cipherlist (ECDHE-AEAD-Suites), smtpd_tls_ciphers=high und tls_preempt_cipherlist=yes — das offizielle Hardening-Guide unter docs.mailcow.email/manual-guides/Postfix/u_e-postfix-harden_ciphers/ ist die maßgebliche Referenz und entspricht den Internet.nl-Standards von Oktober 2024.
Anders als bei Managed-Providern haben Sie als Mailcow-Betreiber vollständige Kontrolle über TLS-Version, Cipher-Suiten und Zertifikats-Management. Mailcows ACME-Container stellt automatisch Let's-Encrypt-Zertifikate für den Mailcow-FQDN aus, die Postfix für Port 25/587 und Dovecot für IMAP/POP3 wiederverwendet. Bei Cluster-Setups oder Hochsicherheits-Umgebungen können Sie eigene Zertifikate (z.B. von einem internen CA-Server) per Override in data/assets/ssl/ einspielen. Der Wolf-Agents Email Security Scanner prüft pro MX-Host die TLS-Version, die Cipher-Stärke nach BSI TR-02102-2, das Zertifikats-Hostname-Match (CN/SAN muss mail.ihre-domain.de enthalten), die Chain-Vollständigkeit und das Ablaufdatum zeichengenau — gemeinsam mit MTA-STS-Status für die durchgesetzte TLS-Erzwingung.
Hardening-Pfad: SMTP-TLS-Härtung bildet den Abschluss der Mailcow-Hardening-Reihe — die SPF/DKIM/DMARC-Stack-Authentifizierung kombiniert mit Cipher-gehärtetem TLS und durchgesetztem MTA-STS ist nach BSI TR-03108 und NIS2-Stand-der-Technik vollständig. Falls MTA-STS noch nicht aktiviert ist, starten Sie mit MTA-STS für Mailcow (Built-in seit 2025-09). Bedrohungs-Cluster: Cipher-Härtung mit ausschließlich ECDHE-AEAD-Suites verhindert ein Downgrade auf schwache CBC-Cipher und schützt damit vor STARTTLS-Stripping als Spoofing-Vorbereitungsvektor — bei deaktiviertem TLS oder schwachem Cipher könnte ein Angreifer im Netzwerk-Pfad Mail-Verkehr im Klartext mitlesen und Reply-To-Manipulationen für gezielten Business Email Compromise vorbereiten (FBI IC3 2024: 2,77 Mrd. USD Schaden).
Default-TLS-Konfiguration prüfen
Vor der Härtung den Ist-Zustand prüfen — Mailcow-Defaults sind für die meisten Setups bereits BSI-TR-02102-2-konform. Bei älteren Installationen (vor 2020) kann TLS 1.0/1.1 noch aktiv sein.
# STARTTLS auf Port 25 prüfen
echo | openssl s_client \
-connect mail.ihre-domain.de:25 \
-starttls smtp \
-servername mail.ihre-domain.de \
2>/dev/null | grep -E "Protocol|Cipher|subject|issuer"
# Erwartet (mit Mailcow-Default):
# Protocol : TLSv1.3 (oder TLSv1.2)
# Cipher : TLS_AES_256_GCM_SHA384 (TLS 1.3) oder
# ECDHE-ECDSA-AES256-GCM-SHA384 (TLS 1.2)
# subject=CN = mail.ihre-domain.de
# issuer=CN = R11 (Let's Encrypt)
# Submission-Port 587 (STARTTLS)
openssl s_client -connect mail.ihre-domain.de:587 -starttls smtp -servername mail.ihre-domain.de
# Implicit-TLS Port 465 (SMTPS)
openssl s_client -connect mail.ihre-domain.de:465 -servername mail.ihre-domain.de
# Vollständiger Cipher-Audit
./testssl.sh --starttls smtp mail.ihre-domain.de:25 Cipher-Härtung in data/conf/postfix/extra.cf
Mailcow nutzt eine Override-Datei data/conf/postfix/extra.cf, die NACH der Default-main.cf geladen wird — Änderungen darin sind update-sicher. Die folgende Konfiguration entspricht exakt der Empfehlung aus docs.mailcow.email/manual-guides/Postfix/u_e-postfix-harden_ciphers/.
# /opt/mailcow-dockerized/data/conf/postfix/extra.cf
# Cipher-Härtung laut docs.mailcow.email/manual-guides/Postfix/u_e-postfix-harden_ciphers/
# Cipher-Suiten (TLS 1.2 — TLS 1.3 hat eigene Default-Suiten)
tls_high_cipherlist = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
# Server bevorzugt Cipher-Reihenfolge
tls_preempt_cipherlist = yes
# Alte Protokolle vollständig deaktivieren
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
# Cipher-Stärke "high" — entspricht ECDHE-AEAD-Suites
smtp_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
smtpd_tls_ciphers = high
smtpd_tls_mandatory_ciphers = high
# TLS-Logging für DSGVO-TOM-Nachweis
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1 Postfix neu laden
Nach dem Speichern der extra.cf reicht ein Postfix-Reload — kein Container-Restart, kein Mailcow-Downtime. Vorher mit postfix check die Syntax validieren, damit ein Tippfehler nicht den Mail-Service stoppt.
# Syntax prüfen
docker compose exec postfix-mailcow postfix check
# Konfiguration neu laden (keine Verbindungs-Unterbrechung)
docker compose exec postfix-mailcow postfix reload
# Effektive Konfiguration anzeigen
docker compose exec postfix-mailcow postconf | grep -E "tls_high_cipherlist|smtpd_tls_ciphers|smtp_tls_ciphers|tls_preempt_cipherlist"
# Logs prüfen
docker compose logs --tail=50 postfix-mailcow | grep -i "tls\|cipher" Verifikation nach Härtung
Nach dem Postfix-Reload denselben STARTTLS-Test aus Schritt 1 wiederholen und prüfen, dass nur noch ECDHE-AEAD-Cipher angeboten werden. testssl.sh oder nmap geben einen vollständigen Cipher-Audit.
Wolf-Agents Scanner prüft pro MX-Host
- TLS-Version: Mindestens TLSv1.2 (BSI TR-02102-2 Pflicht), TLSv1.3 bevorzugt
- Cipher-Stärke: Forward-Secrecy-Cipher (ECDHE-AEAD) ausschließlich — keine alten CBC/RSA-Cipher
- Zertifikat-Hostname-Match: CN/SAN müssen
mail.ihre-domain.deexakt enthalten — sonst MTA-STS-Hard-Fail - Chain-Vollständigkeit: Intermediate-Zertifikate korrekt mitgeliefert (Mailcows ACME stellt das automatisch sicher)
- Ablaufdatum: Warnung 14 Tage vor Ablauf — Mailcow-ACME erneuert automatisch 30 Tage vor Ende
- tls_preempt_cipherlist: Server-Side-Cipher-Reihenfolge aktiv (Internet.nl-Standard)
Der Scanner bewertet SMTP-TLS mit bis zu 5 Punkten der 165-Punkte-Email-Security-Analyse — gemeinsam mit MTA-STS (10 Punkte) und TLS-RPT (5 Punkte) ergeben sich bis zu 20 Transport-Verschlüsselungs-Punkte.
Postfix-3.10-Features in modernen Mailcow-Releases (Information-Gain)
- Native TLSRPT-Unterstützung (RFC 8460): Postfix 3.10 (Februar 2025) hat erstmals nativen TLSRPT-Support — Sie können eine DNS-Policy unter
_smtp._tlsveröffentlichen, um tägliche Aggregate-Reports von sendenden Servern zu erhalten. Quelle: postfix.org/announcements/postfix-3.10.0.html - RFC 8689 „TLS-Required: no“ Header: Postfix 3.10 unterstützt den Header zur expliziten Deaktivierung der TLS-Erzwingung für einzelne Nachrichten — relevant für TLSRPT-Zusammenfassungen selbst (die müssen auch dann zustellbar bleiben, wenn die TLS-Policy fehlschlägt). Mailcow nutzt diese Funktionalität automatisch für Aggregate-Report-Versand.
- Forward-Compat zu OpenSSL 3.5 PQC: Postfix 3.10 erlaubt leere
tls_eecdh_auto_curvesundtls_ffdhe_auto_groups, wodurch die Algorithmen-Auswahl von OpenSSL-Konfiguration übernommen wird — Voraussetzung für hybride Post-Quantum-Cipher-Suites wie X25519MLKEM768 ab OpenSSL 3.5. Vorbereitung für die NIST-PQC-Standardisierung 2024/2025.
Die BSI TR-02102-1 in Version 2026-01 (publiziert 23. Januar 2026) empfiehlt für langfristig schützenswerte Kommunikation Post-Quantum-Verfahren im hybriden Modus mit klassischen Mechanismen — die Empfehlung umfasst FrodoKEM-976/1344, Classic McEliece (mceliece460896/6688128/8192128), und ab NIST-Standardisierung ML-KEM-768/1024. OpenSSL 3.5 implementiert die hybride X25519MLKEM768-Cipher-Suite, die mit Postfix 3.10 nutzbar wird (siehe oben). Mailcow-Roadmap 2026: Releases 2026-01 bis 2026-05 brachten Security-Updates (HTML-Escaping, Forced-2FA, ACME-DNS-01), aber keine direkte PQC-Cipher-Integration im Admin-UI — die PQC-Aktivierung erfolgt weiterhin manuell via data/conf/postfix/extra.cf-Override sobald OpenSSL 3.5 als Default-Library in Postfix-Distributionen ausgerollt ist. Quelle: BSI TR-02102-1 V2026-01 + github.com/mailcow Releases (abgerufen 2026-05-13).
Häufige Fehler bei Mailcow-SMTP-TLS-Hardening
Diese drei Fehler treten bei der TLS-Härtung mit Mailcow besonders häufig auf — alle drei können dazu führen, dass die Konfiguration nicht greift oder Postfix den Service nicht startet.
main.cf statt extra.cf bearbeitet
Problem: Die Cipher-Direktiven werden direkt in data/conf/postfix/main.cf eingetragen statt in extra.cf. Bei einem Mailcow-Update wird die main.cf überschrieben — die Härtung ist wieder weg, ohne Warnung. extra.cf ist als Override-Datei vorgesehen und update-sicher.
Lösung: Alle Custom-Direktiven ausschließlich in data/conf/postfix/extra.cf eintragen — Mailcow lädt diese Datei automatisch NACH der main.cf und überschreibt damit die Defaults. Nach jedem Mailcow-Update mit docker compose exec postfix-mailcow postconf | grep tls prüfen, ob die Werte aus extra.cf noch aktiv sind.
smtp_tls_protocols ohne smtpd-Pendant
Problem: Nur die Outbound-Direktive smtp_tls_protocols wird gesetzt, nicht aber die Inbound-Direktive smtpd_tls_protocols. Postfix nutzt für Empfangsverbindungen smtpd_*-Direktiven, für Sendeverbindungen smtp_*-Direktiven — beide sind separat zu konfigurieren. Eine einseitige Härtung lässt eingehende Verbindungen weiterhin mit veralteten TLS-Versionen zu.
Lösung: Immer beide Direktiven setzen: smtpd_tls_protocols (eingehend, Port 25) und smtp_tls_protocols (ausgehend) — analog für smtpd_tls_ciphers und smtp_tls_ciphers. Mit postconf | grep tls_protocols beide Werte verifizieren.
Empfänger-Server nutzen noch TLS 1.0 — Mails bouncen
Problem: Nach Aktivierung von smtp_tls_protocols = !TLSv1, !TLSv1.1 bouncen ausgehende Mails an Empfänger-Server, die nur TLS 1.0 unterstützen (selten, aber bei einigen Legacy-Postfix-Setups oder älteren Embedded-Systemen anzutreffen). Postfix downgraded dann opportunistisch auf Klartext — was bei MTA-STS-Enforce zu komplettem Verbindungsabbruch führt.
Lösung: smtp_tls_protocols nur für die Mandatory-Variante härten (also smtp_tls_mandatory_protocols = !TLSv1, !TLSv1.1), während smtp_tls_protocols opportunistisch alle TLS-Versionen erlaubt — Postfix wählt dann die höchste Version, die der Empfänger anbietet, und fällt auf Klartext nur zurück, wenn keine TLS-Version übereinstimmt. Für Inbound (smtpd) kann strikter gehärtet werden, weil Sie hier den Server kontrollieren.
NIS2, BSI TR-02102-2 / TR-03108 und DSGVO Art. 32: SMTP-TLS bei Mailcow
NIS2 Art. 21 Abs. 2 lit. h fordert Konzepte und Verfahren für den Einsatz von Kryptografie und Verschlüsselung — Mailcow mit gehärtetem Cipher-Set (ECDHE-AEAD ausschließlich) und TLS 1.2/1.3 erfüllt BSI TR-02102-2 (Stand 2026-01) vollständig. BSI TR-03108 Abschnitt 4.3 verlangt TLS-Erzwingung; in Kombination mit MTA-STS-Enforce (siehe MTA-STS-Anleitung) ist die Erzwingung technisch durchsetzbar. DSGVO Art. 32 Abs. 1 lit. a benennt Verschlüsselung als technische Schutzmaßnahme — Mailcow-Logs mit smtpd_tls_loglevel=1 dokumentieren TLS-Version und Cipher pro Verbindung in den Postfix-Container-Logs, was als DSGVO-TOM-Nachweis dient. NIS2 Art. 23 (24h-Frühwarnung bei STARTTLS-Stripping-Vorfall mit Klartext-Mitlesen personenbezogener Daten) wird durch Postfix-TLS-Logs und TLS-RPT-Reports forensisch belegbar; bei Daten-Leak greift parallel DSGVO Art. 33. Bei Self-Hosting liegt die Verantwortung vollständig bei Ihnen — keine AVV-Delegation möglich. Wolf-Agents empfiehlt für Mailcow die Kombination aus extra.cf-Cipher-Härtung, MTA-STS-Enforce (Built-in seit 2025-09) und postfix-tlspol-mailcow für Outbound; CT-Log-Monitoring via Certstream-Integration alarmiert bei unautorisierten Zertifikats-Ausstellungen für Ihren Mailcow-FQDN. Der Wolf-Agents Email Security Scanner bewertet SMTP-TLS mit bis zu 5 Punkten der 165-Punkte-Analyse, gemeinsam mit MTA-STS (10 Punkte) und TLS-RPT (5 Punkte) ergibt das den vollständigen 20-Punkte-Transport-Verschlüsselungs-Score.
SMTP-TLS-Anleitung auch für:
Wie steht Ihre Domain bei SMTP-TLS?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 165 Prüfpunkte.