// so behebst du es
DANE für SMTP einrichten: TLSA-Einträge und DNSSEC für deinen Mailserver
DANE schützt SMTP mit DNSSEC-signierten TLSA-Einträgen und geprüftem TLS. So veröffentlichst du einen TLSA-3-1-1-Eintrag, wechselst Schlüssel sicher und testest.
Was das bedeutet
Standardmäßig nutzen Server, die dir E-Mails zustellen, TLS (STARTTLS) nur „wenn möglich“, und sie prüfen dein Zertifikat nicht. Ein Angreifer im Netzwerk könnte STARTTLS entfernen oder ein gefälschtes Zertifikat vorlegen. DANE für SMTP (RFC 7672) schließt diese Lücke: Du veröffentlichst im DNS einen TLSA-Eintrag, der angibt, welches Zertifikat oder welchen Schlüssel dein Mailserver nutzt, und DNSSEC beweist, dass dieser Eintrag echt ist. Sendende Server mit DANE-Unterstützung stellen dann nur noch mit gültigem, passendem TLS zu.
Ein TLSA-Eintrag für einen Mailserver wird unter _25._tcp. gefolgt vom MX-Hostnamen veröffentlicht:
_25._tcp.mail.yourdomain.com. IN TLSA 3 1 1 8f1c...e4a2
Die drei Zahlen bedeuten: 3 = das eigene Zertifikat des Servers (DANE-EE), 1 = nur den öffentlichen Schlüssel vergleichen (nicht das ganze Zertifikat), 1 = SHA-256-Hash. 3 1 1 ist die übliche Wahl für SMTP.
DANE und MTA-STS lösen dasselbe Problem auf unterschiedliche Weise. MTA-STS nutzt HTTPS und funktioniert ohne DNSSEC; DANE braucht DNSSEC. Du kannst beide veröffentlichen und mit TLS-RPT (in der MTA-STS-Anleitung behandelt) Berichte für beide erhalten.
Warum das passiert
Du richtest DANE vielleicht ein, weil:
- ein Sicherheitsaudit, eine Behörden- oder Branchenvorgabe oder ein Test wie internet.nl es verlangt (häufig in den Niederlanden und in Deutschland);
- du eingehende E-Mails vor Downgrade-Angriffen schützen willst;
- ein DANE-Test meldet, dass dein TLSA-Eintrag nach einer Zertifikatserneuerung nicht mehr passt, wodurch Absender mit DANE dir nichts mehr zustellen.
So prüfst du es
- DNSSEC: Die Zone deines MX-Hostnamens muss signiert sein. Achte mit
digauf dasad-Flag eines validierenden Resolvers:dig +dnssec MX yourdomain.com @1.1.1.1 ;; flags: qr rd ra ad;
Zeigt der MX auf den Host deines Anbieters (Google, Microsoft 365...), braucht dessen Zone DNSSEC und TLSA, nicht deine. - TLSA-Eintrag:
dig +dnssec TLSA _25._tcp.mail.yourdomain.com
- Mit dem aktiven Zertifikat vergleichen:
openssl s_client -connect mail.yourdomain.com:25 -starttls smtp \ -servername mail.yourdomain.com </dev/null 2>/dev/null \ | openssl x509 -noout -pubkey \ | openssl pkey -pubin -outform DER | openssl dgst -sha256
Der Hash muss dem letzten Feld des TLSA-Eintrags entsprechen. - Postfix-Tool:
posttls-finger -t30 -T180 -c -L verbose,summary yourdomain.comzeigt, ob die DANE-Validierung gelingt. - Nutze den Domain-Scanner, um vor dem Start deine MX-Hostnamen zu bestätigen.
So behebst du es
1. DNSSEC aktivieren
Schalte DNSSEC bei deinem DNS-Anbieter ein und trage dann den DS-Eintrag bei deinem Registrar ein (viele machen das automatisch). Prüfe mit Whois, welcher Registrar die Domain verwaltet. Ohne gültige DNSSEC-Kette werden TLSA-Einträge ignoriert.
2. Den Hash des Serverschlüssels ermitteln
Auf dem Mailserver, aus der verwendeten Zertifikatsdatei:
openssl x509 -in /etc/ssl/mail/fullchain.pem -noout -pubkey \ | openssl pkey -pubin -outform DER | openssl dgst -sha256
3. Den TLSA-Eintrag veröffentlichen
Host: _25._tcp.mail (for MX host mail.yourdomain.com) Type: TLSA Usage: 3 Selector: 1 Matching type: 1 Value: <the SHA-256 hex hash>
Veröffentliche einen Eintrag pro MX-Hostname. Das Zertifikat sollte trotzdem ein normales, gültiges Zertifikat sein, dessen Name zum Host passt, damit Absender ohne DANE und MTA-STS weiter funktionieren.
4. Zertifikatserneuerungen planen
Genau hier brechen die meisten DANE-Einrichtungen. Bei 3 1 1 folgt der Hash dem Schlüssel, nicht dem Zertifikat, also:
- Erneuere Zertifikate und behalte dabei denselben privaten Schlüssel (zum Beispiel mit der Certbot-Option
--reuse-key), oder - Nutze ein Schema „aktuell + nächster“: Erzeuge den nächsten Schlüssel vorab, veröffentliche einen zweiten TLSA-Eintrag dafür, warte mindestens zwei TTLs, stelle dann den Server auf den neuen Schlüssel um und entferne den alten Eintrag später.
5. DANE beim Senden prüfen (optional)
Betreibst du Postfix und einen lokalen Resolver, der DNSSEC validiert, aktiviere DANE für ausgehende E-Mails in main.cf:
smtp_dns_support_level = dnssec smtp_tls_security_level = dane
Zu den TLS-Grundlagen auf deinem eigenen Server siehe E-Mails ohne TLS gesendet.
Prüfe, ob es behoben ist
Warte, bis die DNS-Caches abgelaufen sind, führe dann dig +dnssec TLSA erneut aus (die Antwort sollte das ad-Flag haben), vergleiche den Hash mit dem aktiven Zertifikat und starte posttls-finger noch einmal. Schick von einem externen Postfach eine E-Mail an deine Domain und prüfe im Mail-Log, ob die Verbindung über TLS lief. Mach auch einen Delivmail-Test von deinem Server, um zu bestätigen, dass der Versand weiterhin funktioniert. Prüfe nach jeder Zertifikatserneuerung erneut.
Prüfe, ob es behoben ist
DNS-Änderungen können ein paar Minuten bis einige Stunden dauern. Sende danach eine neue Test-E-Mail oder scanne deine Domain erneut.
Ähnliche Anleitungen
- Kein SPF-Eintrag auf deiner DomainDeine Domain sagt nicht, welche Server E-Mails für sie senden dürfen. Füge einen TXT-Eintrag hinzu, dann können Empfänger deine echten E-Mails von Fälschungen unterscheiden.
- SPF-Fehler: zu viele DNS-Lookups (permerror)SPF erlaubt höchstens 10 DNS-Lookups. Darüber geht der ganze Eintrag kaputt und Empfänger behandeln ihn als ungültig. So verschlankst du ihn.
- Mehrere SPF-Einträge auf einer DomainEine Domain darf nur einen SPF-Eintrag haben. Bei zwei oder mehr geht SPF für jede E-Mail kaputt. Fasse sie zu einer einzigen Zeile zusammen.
- SPF scheitert: Der sendende Server ist nicht berechtigtDeine Domain hat einen SPF-Eintrag, aber der Server, der deine E-Mail gesendet hat, steht nicht darin. Finde heraus, welcher Dienst die E-Mail gesendet hat, und füge ihn hinzu.
- Keine DKIM-Signatur auf deinen E-MailsDKIM fügt eine digitale Signatur hinzu, die beweist, dass eine E-Mail wirklich von deiner Domain kommt. Schalte es bei deinem E-Mail-Anbieter ein und veröffentliche den Schlüssel im DNS.