Zum Hauptinhalt springen

DANE/TLSA-Fehlerbehebung: häufige Fehler diagnostizieren und beheben

Von CaptainDNS
Veröffentlicht am 23. Februar 2026

DANE/TLSA-Fehlerbehebung: häufige Fehler diagnostizieren und beheben mit dig, openssl und Postfix
TL;DR
  • Die 5 häufigsten DANE-Fehler: DNSSEC fehlt, TLSA-Hash veraltet, falscher DNS-Name, STARTTLS falsch konfiguriert, unvollständige Propagation
  • Wichtige Befehle: dig +dnssec, openssl s_client -starttls smtp, postfix/smtpd[]: TLS in den Logs
  • Die Erneuerung des Let's-Encrypt-Zertifikats ist die häufigste Ursache für DANE-Ausfälle in der Produktion
  • Unser DANE TLSA Checker erkennt diese Probleme automatisch
  • TLS-RPT-Berichte (RFC 8460) melden DANE-Fehler, bevor deine Kommunikationspartner dich darauf hinweisen

Du hast DANE/TLSA nach Best Practices auf deinem E-Mail-Server eingerichtet, alles funktionierte, und dann werden eines Tages E-Mails von bestimmten Empfängern abgelehnt. Die Fehlermeldung erwähnt "failed DANE validation" oder "TLSA record not found", aber die Logs verraten dir nicht genau, was sich geändert hat.

Dieses Szenario kennt jeder DANE-Administrator. Die Schwierigkeit liegt nicht in der Komplexität des Protokolls, sondern in der Anzahl der beteiligten Komponenten: DNSSEC, TLS-Zertifikat, TLSA-Eintrag, MTA-Konfiguration. Ein einziges schwaches Glied reicht aus, um die gesamte Kette zu unterbrechen.

Dieser Leitfaden behandelt die 5 häufigsten DANE/TLSA-Fehler mit jeweils dem Symptom, den Diagnosebefehlen und der Korrektur. Er richtet sich an Systemadministratoren und DevOps, die bereits eine DANE-Konfiguration betreiben. Falls du DANE noch nicht eingerichtet hast, beginne mit dem ersten Artikel dieser Serie (siehe "Verwandte Leitfäden" am Ende der Seite).

5-Schritte-Methodik zur Identifikation der Ursache eines DANE-Validierungsfehlers
  1. Prüfe zuerst den DNSSEC-Status deiner Zone. Ohne gültiges DNSSEC werden TLSA-Einträge von sendenden Servern ignoriert. Verwende dig mit dem Flag +dnssec, um zu prüfen, ob Signaturen vorhanden und gültig sind:

    dig +dnssec MX captaindns.com
    dig +dnssec A mail.captaindns.com
    

    Das Flag ad (Authenticated Data) in der Antwort bestätigt, dass DNSSEC gültig ist. Fehlt dieses Flag, liegt das Problem bei DNSSEC, nicht bei TLSA. Prüfe auch, ob die Vertrauenskette vollständig ist, mit delv:

    delv @8.8.8.8 mail.captaindns.com A +rtrace
    
  2. Stelle sicher, dass der TLSA am richtigen Ort veröffentlicht ist und die korrekten Werte enthält. Der DNS-Name muss dem MX-Hostnamen entsprechen, nicht der Domain:

    dig TLSA _25._tcp.mail.captaindns.com +short
    

    Die Antwort muss die 4 Felder enthalten: Usage, Selector, Matching Type und Hash. Wenn die Abfrage nichts zurückgibt, ist der TLSA unter dem falschen DNS-Namen veröffentlicht oder existiert nicht.

  3. Rufe das vom Server präsentierte Zertifikat ab und berechne seinen Hash, um ihn mit dem veröffentlichten TLSA zu vergleichen:

    # Zertifikat über STARTTLS abrufen
    openssl s_client -connect mail.captaindns.com:25 \
      -starttls smtp -servername mail.captaindns.com \
      2>/dev/null | openssl x509 -outform DER \
      | openssl dgst -sha256
    

    Für einen TLSA mit SPKI-Selector (1) berechne den Hash des öffentlichen Schlüssels:

    openssl s_client -connect mail.captaindns.com:25 \
      -starttls smtp -servername mail.captaindns.com \
      2>/dev/null | openssl x509 -pubkey -noout \
      | openssl pkey -pubin -outform DER \
      | openssl dgst -sha256
    

    Vergleiche das Ergebnis mit dem Hash im TLSA. Wenn die Werte abweichen, wurde das Zertifikat erneuert, ohne den TLSA zu aktualisieren.

  4. Prüfe, ob der Server STARTTLS korrekt auf Port 25 anbietet:

    openssl s_client -connect mail.captaindns.com:25 \
      -starttls smtp -verify 5 \
      -servername mail.captaindns.com
    

    Stelle sicher, dass das zurückgegebene Zertifikat zum MX-Hostnamen passt und die Zertifikatskette vollständig ist. Ein abgelaufenes Zertifikat oder ein falscher Hostname verursacht einen DANE-Fehler, selbst wenn der TLSA-Hash korrekt ist.

  5. Die Postfix-Logs enthalten Details zu DANE-Fehlern. Filtere die relevanten Einträge:

    grep "dane" /var/log/mail.log | grep -i "fail\|error\|unusable"
    

    TLS-RPT-Berichte (falls konfiguriert) melden Fehler, die von sendenden Servern beobachtet wurden. Suche in den per E-Mail empfangenen JSON-Berichten nach failure-type-Feldern mit dane-required oder tlsa-invalid.

Die 5 häufigsten DANE-Fehler

DANE-Probleme lassen sich in 5 Kategorien einteilen. Jeder Abschnitt beschreibt das beobachtbare Symptom, den Diagnosebefehl und die Korrektur.

Entscheidungsbaum zur Diagnose von DANE/TLSA-Fehlern

Fehler 1: DNSSEC nicht signiert oder Signatur abgelaufen

Symptom: Sendende Server melden "DANE required but not available" oder "no DNSSEC" in TLS-RPT-Berichten. E-Mails werden im opportunistischen Modus (ohne DANE-Prüfung) zugestellt oder abgelehnt.

Diagnose:

# AD-Flag (Authenticated Data) prüfen
dig +dnssec MX captaindns.com | grep flags
# Erwartetes Ergebnis: flags: qr rd ra ad

# Gültigkeit der RRSIG-Signaturen prüfen
dig +dnssec SOA captaindns.com | grep RRSIG
# Das Ablaufdatum steht im RRSIG-Feld

Häufige Ursachen:

  • Der Registrar hat DNSSEC nach einem Domain-Transfer deaktiviert
  • Die DNSSEC-Schlüssel (KSK/ZSK) sind ohne automatische Rotation abgelaufen
  • Der DS-Record beim Registrar stimmt nicht mehr mit dem aktiven DNSKEY überein

Korrektur: Prüfe, ob der DS-Record bei deinem Registrar mit deinem DNSKEY übereinstimmt. Wenn du Bind9 verwendest, prüfe die Ablaufdaten der Schlüssel mit dnssec-settime und konfiguriere die automatische Rotation.

Fehler 2: TLSA-Hash veraltet nach Zertifikatserneuerung

Symptom: "TLSA validation failed" oder "certificate mismatch" in den Logs. Dieser Fehler tritt typischerweise 60 bis 90 Tage nach der Ersteinrichtung auf, bei der ersten Let's-Encrypt-Erneuerung.

Diagnose:

# Hash des aktiven Zertifikats (Selector 0: Full cert)
openssl s_client -connect mail.captaindns.com:25 \
  -starttls smtp 2>/dev/null \
  | openssl x509 -outform DER \
  | openssl dgst -sha256

# Im DNS veröffentlichter Hash
dig TLSA _25._tcp.mail.captaindns.com +short
# Die 64 Hex-Zeichen vergleichen

Häufige Ursachen:

  • Der Certbot-Renewal-Hook aktualisiert den TLSA nicht
  • Der Selector ist Full (0) statt SPKI (1): bei jeder Erneuerung ändert sich der Hash
  • Der Usage ist DANE-EE (3) ohne --reuse-key in Certbot

Korrektur:

  • Schnelle Lösung: Generiere den neuen Hash mit unserem DANE TLSA Generator und aktualisiere den DNS
  • Dauerhafte Lösung: Verwende SPKI-Selector (1) mit --reuse-key in Certbot, oder wechsle zu DANE-TA (2) mit dem CA-Zertifikat von Let's Encrypt. Siehe unser Postfix/Bind/Let's-Encrypt-Tutorial (Artikel 2 dieser Serie) für die Konfiguration des automatischen Renewal-Hooks

Fehler 3: TLSA unter falschem DNS-Namen veröffentlicht

Symptom: "no TLSA records found", obwohl du den Eintrag erstellt hast. Das ist der häufigste Fehler bei DANE-Einsteigern.

Diagnose:

# MX-Hostnamen ermitteln
dig MX captaindns.com +short
# Ergebnis: 10 mail.captaindns.com.

# TLSA am richtigen Ort prüfen (MX-Hostname)
dig TLSA _25._tcp.mail.captaindns.com +short

# Typischer Fehler: TLSA auf der Domain statt auf dem MX veröffentlicht
dig TLSA _25._tcp.captaindns.com +short
# Dieser TLSA wird von sendenden Servern IGNORIERT

Ursache: Verwechslung zwischen der Domain (captaindns.com) und dem MX-Hostnamen (mail.captaindns.com). Der TLSA muss auf _25._tcp.<MX-Hostname> veröffentlicht werden, gemäß RFC 7672 Abschnitt 2.1.1.

Korrektur: Veröffentliche den TLSA auf _25._tcp.mail.captaindns.com (oder dem Hostnamen, den dein MX-Eintrag zurückgibt). Wenn deine Domain mehrere MX-Einträge hat, benötigt jeder Hostname seinen eigenen TLSA.

Fehler 4: STARTTLS nicht verfügbar oder falsch konfiguriert

Symptom: DANE ist DNS-seitig konfiguriert, aber der Server bietet kein STARTTLS an, oder das präsentierte Zertifikat stimmt nicht mit dem Hostnamen überein. Die Logs zeigen "TLS handshake failed" oder "certificate hostname mismatch".

Diagnose:

# Testen, ob STARTTLS angeboten wird
openssl s_client -connect mail.captaindns.com:25 \
  -starttls smtp -verify 5

# Common Name und SAN des Zertifikats prüfen
openssl s_client -connect mail.captaindns.com:25 \
  -starttls smtp 2>/dev/null \
  | openssl x509 -noout -subject -ext subjectAltName

Häufige Ursachen:

  • smtpd_tls_cert_file zeigt in Postfix auf die falsche Datei
  • Das Zertifikat enthält den MX-Hostnamen nicht in seinen Subject Alternative Names
  • Die Firewall blockiert STARTTLS oder Port 25 ist nicht per TLS erreichbar

Korrektur: Prüfe in Postfix, dass smtpd_tls_security_level mindestens auf may steht und die Zertifikatspfade korrekt sind:

# /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.captaindns.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.captaindns.com/privkey.pem
smtpd_tls_security_level = may

DANE/TLSA-Fehlermatrix: Symptom, Ursache und Lösung

Fehler 5: unvollständige DNS-Propagation

Symptom: DANE funktioniert sporadisch. Einige sendende Server validieren den TLSA, andere melden einen Fehler. Das Problem tritt häufig nach einer kürzlich vorgenommenen DNS-Aktualisierung auf.

Diagnose:

# Antworten zwischen NS-Servern vergleichen
dig TLSA _25._tcp.mail.captaindns.com @ns1.captaindns.com +short
dig TLSA _25._tcp.mail.captaindns.com @ns2.captaindns.com +short

# Verbleibende TTL prüfen
dig TLSA _25._tcp.mail.captaindns.com +noall +answer

Häufige Ursachen:

  • Unvollständiger Zonentransfer zwischen primärem und sekundärem DNS-Server
  • Hohe TTL auf dem alten Eintrag (DNS-Caches behalten den alten Wert)
  • Ein NS-Server antwortet nicht oder liefert eine veraltete Version der Zone

Korrektur: Stelle sicher, dass alle deine NS-Server denselben TLSA-Wert zurückgeben. Wenn du den TLSA gerade aktualisiert hast, warte das Ablaufen der vorherigen TTL ab, bevor du den alten Eintrag löschst. Bei Zertifikatsrotationen veröffentliche den neuen TLSA 2x TTL vor der tatsächlichen Rotation.

DANE in der Produktion überwachen

Einen einzelnen Fehler zu beheben reicht nicht aus. Die folgenden 3 Überwachungsmechanismen verhindern wiederkehrende Vorfälle.

TLS-RPT: Aktiviere TLS-RPT-Berichte (RFC 8460), um Fehlermeldungen über DANE-Fehler von sendenden Servern zu erhalten. Das Feld failure-type im JSON-Bericht gibt den Fehlertyp genau an:

failure-type TLS-RPTBedeutungAktion
dane-requiredTLSA erforderlich aber fehltTLSA-Veröffentlichung prüfen
tlsa-invalidTLSA vorhanden aber ungültigHash und Syntax prüfen
dnssec-invalidDNSSEC-Signatur ungültigDNSSEC-Schlüssel prüfen
certificate-expiredTLS-Zertifikat abgelaufenZertifikat erneuern
starttls-not-supportedKein STARTTLSPostfix-Konfiguration prüfen

Zertifikats-Monitoring: Richte einen Alarm 14 Tage vor Ablauf des TLS-Zertifikats ein. Die Let's-Encrypt-Erneuerung erfolgt automatisch, aber der TLSA-Hook kann stillschweigend fehlschlagen.

Automatische Prüfung: Plane eine tägliche Prüfung mit unserem DANE TLSA Syntax Checker oder einem Cron-Skript, das den veröffentlichten Hash mit dem aktiven Zertifikat vergleicht:

#!/bin/bash
# Tägliche DANE-Prüfung
TLSA_HASH=$(dig TLSA _25._tcp.mail.captaindns.com +short | awk '{print $4}')
CERT_HASH=$(openssl s_client -connect mail.captaindns.com:25 \
  -starttls smtp 2>/dev/null \
  | openssl x509 -pubkey -noout \
  | openssl pkey -pubin -outform DER \
  | openssl dgst -sha256 | awk '{print $2}')

if [ "$TLSA_HASH" != "$CERT_HASH" ]; then
  echo "WARNUNG: TLSA-Hash weicht vom aktiven Zertifikat ab" | \
    mail -s "DANE TLSA mismatch" admin@captaindns.com
fi

Empfohlener Aktionsplan

  1. Diagnostizieren: Nutze die obige 5-Schritte-Methodik oder unseren DANE TLSA Checker, um das Problem zu identifizieren
  2. Einordnen: Ordne den Fehler einer der 5 Kategorien zu (DNSSEC, Hash, DNS-Name, STARTTLS, Propagation)
  3. Beheben: Wende die entsprechende Lösung mit den bereitgestellten Befehlen an
  4. Verifizieren: Teste die Korrektur mit dig +dnssec und openssl s_client, bevor du das Problem als gelöst betrachtest
  5. Vorbeugen: Richte TLS-RPT, Zertifikats-Monitoring und die automatische Prüfung ein

FAQ

Warum schlägt die DANE-Validierung nach der Zertifikatserneuerung fehl?

Die Erneuerung generiert ein neues Schlüsselpaar (außer wenn --reuse-key in Certbot aktiviert ist). Der Hash im TLSA-Eintrag stimmt nicht mehr mit dem neuen Zertifikat überein. Zwei Lösungen: SPKI-Selector (1) mit --reuse-key verwenden, um denselben öffentlichen Schlüssel zwischen den Erneuerungen beizubehalten, oder auf DANE-TA (2) mit dem CA-Zertifikat von Let's Encrypt wechseln, das sich nicht bei jeder Erneuerung ändert.

Wie behebt man den Fehler 'no TLSA records found'?

Dieser Fehler bedeutet, dass der TLSA im DNS fehlt oder am falschen Ort veröffentlicht ist. Der TLSA muss auf _25._tcp.&lt;MX-Hostname&gt; veröffentlicht werden, nicht auf _25._tcp.&lt;Domain&gt;. Prüfe mit dig MX captaindns.com, welcher MX-Hostname verwendet wird, und veröffentliche den TLSA dann unter dem korrekten Namen. Falls der TLSA existiert, prüfe ob DNSSEC aktiv ist, da Resolver TLSA ohne DNSSEC ignorieren.

Funktioniert DANE, wenn DNSSEC auf der Domain signiert ist, aber nicht auf dem MX-Hostnamen?

DNSSEC muss auf der Zone signiert sein, die den TLSA enthält. Wenn dein MX-Hostname mail.captaindns.com ist und der TLSA in derselben Zone liegt, dann muss diese Zone DNSSEC aktiv haben. Die Zone der absendenden Domain benötigt kein DNSSEC. Wenn der MX jedoch auf einen Hostnamen in einer anderen Zone zeigt (Shared Hosting), muss diese Zone DNSSEC haben.

Wie debuggt man DANE mit den Postfix-Logs?

Aktiviere das TLS-Log-Level in Postfix mit smtp_tls_loglevel = 2 (ausgehend) oder smtpd_tls_loglevel = 2 (eingehend) in main.cf. Zeilen mit Verified TLS connection bestätigen einen Erfolg. Zeilen mit dane und unusable oder failed zeigen einen Fehler an. Suche auch nach DANE TLSA in den Logs, um die Prüfungsdetails zu sehen.

Was bedeutet 'DANE required but TLSA absent' in einem TLS-RPT-Bericht?

Diese Meldung zeigt an, dass der sendende Server eine DANE-Policy erkannt hat (via DNSSEC auf der MX-Zone), aber keinen TLSA-Eintrag gefunden hat. Entweder ist der TLSA noch nicht veröffentlicht, oder er steht unter dem falschen DNS-Namen, oder der Resolver des sendenden Servers hat die Aktualisierung noch nicht propagiert. Prüfe die Veröffentlichung mit dig TLSA _25._tcp.mail.captaindns.com von einem externen Resolver aus.

Der TLSA-Hash ist korrekt, aber die Validierung schlägt fehl, warum?

Mehrere mögliche Ursachen: Der Selector im TLSA (Full vs. SPKI) stimmt nicht mit der verwendeten Hash-Methode überein, das Intermediate-Zertifikat fehlt in der vom Server präsentierten Kette, oder der Matching Type (SHA-256 vs. SHA-512) stimmt nicht mit dem veröffentlichten Hash überein. Prüfe die ersten 3 Felder des TLSA (Usage, Selector, Matching Type) und berechne den Hash mit den korrekten Parametern neu.

Wie testet man DANE ohne E-Mail-Verlust zu riskieren?

Veröffentliche den TLSA zunächst mit einer niedrigen TTL (300 Sekunden) und prüfe ihn mit dig und unserem DANE TLSA Checker. Teste den Versand von einem DANE-fähigen Server (Gmail, Microsoft 365) an deine Domain. Wenn die Validierung fehlschlägt, korrigiere den TLSA. Sendende Server, die RFC 7672 Abschnitt 2.2 einhalten, fallen bei ungültigem TLSA in den opportunistischen Modus zurück, es sei denn, ihre Policy erfordert striktes DANE. Erhöhe die TTL, sobald die Konfiguration validiert ist.

📚 Verwandte DANE/TLSA-Leitfäden

Quellen

Ähnliche Artikel