Dépannage DANE/TLSA : diagnostiquer et corriger les erreurs courantes
Par CaptainDNS
Publié le 23 février 2026

- Les 5 erreurs DANE les plus courantes : DNSSEC absent, hash TLSA obsolète, mauvais nom DNS, STARTTLS mal configuré, propagation incomplète
- Commandes essentielles :
dig +dnssec,openssl s_client -starttls smtp,postfix/smtpd[]: TLSdans les logs - Le renouvellement du certificat Let's Encrypt est la cause n°1 des échecs DANE en production
- Notre DANE TLSA Checker identifie automatiquement ces problèmes
- Les rapports TLS-RPT (RFC 8460) signalent les échecs DANE avant que vos correspondants ne vous alertent
Vous avez déployé DANE/TLSA sur votre serveur email en suivant les bonnes pratiques, tout fonctionnait, puis un jour les emails commencent à être refusés par certains destinataires. Le message d'erreur mentionne "failed DANE validation" ou "TLSA record not found", mais les logs ne vous disent pas exactement ce qui a changé. Que s'est-il passé entre hier et aujourd'hui ?
Ce scénario est le quotidien des administrateurs DANE. La difficulté ne vient pas du protocole lui-même : DANE repose sur quatre composants interdépendants, et un seul maillon défaillant casse toute la chaîne. DNSSEC, certificat TLS, enregistrement TLSA, configuration MTA : chacun peut tomber indépendamment des trois autres.
Ce guide couvre les 5 erreurs DANE/TLSA les plus fréquentes avec, pour chacune, le symptôme, les commandes de diagnostic et la correction. Il s'adresse aux administrateurs système et DevOps qui ont déjà une configuration DANE en place. Si vous n'avez pas encore déployé DANE, commencez par le premier article de cette série (voir "Guides connexes" en bas de page).
La première chose à contrôler est l'état DNSSEC de votre zone. C'est le point de départ obligatoire : sans DNSSEC valide, tout enregistrement TLSA est purement et simplement ignoré. Utilisez
digavec le flag+dnssecpour vérifier que les signatures sont présentes et valides :dig +dnssec MX captaindns.com dig +dnssec A mail.captaindns.comLe flag
ad(Authenticated Data) dans la réponse confirme que DNSSEC est valide. Si ce flag est absent, le problème est au niveau DNSSEC, pas au niveau TLSA. Vérifiez aussi que la chaîne de confiance est complète avecdelv:delv @8.8.8.8 mail.captaindns.com A +rtraceLe TLSA existe-t-il au bon endroit ? C'est la question clé de cette étape. Le nom DNS doit correspondre au hostname MX, pas au domaine :
dig TLSA _25._tcp.mail.captaindns.com +shortLa réponse doit contenir les 4 champs : usage, selector, matching type et hash. Si la requête ne retourne rien, le TLSA est publié au mauvais nom DNS ou n'existe pas.
Le hash publié dans le DNS correspond-il au certificat réellement présenté par le serveur ? Récupérez le certificat et calculez son hash pour comparer :
# Récupérer le certificat via STARTTLS openssl s_client -connect mail.captaindns.com:25 \ -starttls smtp -servername mail.captaindns.com \ 2>/dev/null | openssl x509 -outform DER \ | openssl dgst -sha256Pour un TLSA avec selector SPKI (1), calculez le hash de la clé publique :
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 -sha256Comparez le résultat au hash dans le TLSA. Si les valeurs divergent, le certificat a été renouvelé sans mettre à jour le TLSA.
Vérifiez que le serveur propose correctement STARTTLS sur le port 25 :
openssl s_client -connect mail.captaindns.com:25 \ -starttls smtp -verify 5 \ -servername mail.captaindns.comContrôlez que le certificat retourné correspond au hostname MX et que la chaîne de certificats est complète. Un certificat expiré ou un hostname incorrect provoque un échec DANE même si le hash TLSA est correct.
Si les étapes précédentes n'ont rien révélé, les logs MTA contiennent la réponse. Les logs Postfix enregistrent chaque tentative de validation DANE. Filtrez les entrées pertinentes :
grep "dane" /var/log/mail.log | grep -i "fail\|error\|unusable"Les rapports TLS-RPT (si configurés) signalent les échecs vus par les serveurs émetteurs. Cherchez les champs
failure-typecontenantdane-requiredoutlsa-invaliddans les rapports JSON reçus par email.
Les 5 erreurs DANE les plus courantes
Les problèmes DANE se répartissent en 5 catégories. Laquelle affecte votre serveur ? Chaque section ci-dessous décrit le symptôme observable, la commande de diagnostic et la correction.

Erreur 1 : DNSSEC non signé ou signature expirée
Symptôme : les serveurs émetteurs signalent "DANE required but not available" ou "no DNSSEC" dans les rapports TLS-RPT. Sans DNSSEC, pas de DANE : les emails passent en mode opportuniste ou sont refusés.
Diagnostic :
# Vérifier le flag AD (Authenticated Data)
dig +dnssec MX captaindns.com | grep flags
# Résultat attendu : flags: qr rd ra ad
# Vérifier la validité des signatures RRSIG
dig +dnssec SOA captaindns.com | grep RRSIG
# La date d'expiration est dans le champ RRSIG
Causes fréquentes :
- Le registrar a désactivé DNSSEC après un transfert de domaine
- Les clés DNSSEC (KSK/ZSK) ont expiré sans rotation automatique
- Le DS record chez le registrar ne correspond plus à la DNSKEY active
Correction : vérifiez que le DS record chez votre registrar correspond à votre DNSKEY. Si vous utilisez Bind9, vérifiez les dates d'expiration des clés avec dnssec-settime et configurez la rotation automatique.
Erreur 2 : hash TLSA obsolète après renouvellement du certificat
Symptôme : "TLSA validation failed" ou "certificate mismatch" dans les logs. C'est l'erreur DANE la plus fréquente en production. Elle survient typiquement 60 à 90 jours après le déploiement initial, au premier renouvellement Let's Encrypt.
Diagnostic :
# Hash du certificat actif (selector 0 : Full cert)
openssl s_client -connect mail.captaindns.com:25 \
-starttls smtp 2>/dev/null \
| openssl x509 -outform DER \
| openssl dgst -sha256
# Hash publié dans le DNS
dig TLSA _25._tcp.mail.captaindns.com +short
# Comparer les 64 caractères hexadécimaux
Causes fréquentes :
- Le hook de renouvellement Certbot ne met pas à jour le TLSA
- Le selector est Full (0) au lieu de SPKI (1) : chaque renouvellement change le hash
- L'usage est DANE-EE (3) sans
--reuse-keydans Certbot
Correction :
- Solution rapide : générez le nouveau hash avec notre DANE TLSA Generator et mettez à jour le DNS
- Solution durable : utilisez SPKI selector (1) avec
--reuse-keydans Certbot, ou passez à DANE-TA (2) avec le certificat CA Let's Encrypt. Consultez notre tutoriel Postfix/Bind/Let's Encrypt (article 2 de cette série) pour la configuration du hook de renouvellement automatique
Erreur 3 : TLSA publié au mauvais nom DNS
Symptôme : "no TLSA records found" alors que vous avez bien créé l'enregistrement. Vous avez publié le TLSA, mais au mauvais endroit. C'est le piège classique des débutants DANE.
Diagnostic :
# Trouver le hostname MX
dig MX captaindns.com +short
# Résultat : 10 mail.captaindns.com.
# Vérifier le TLSA au bon endroit (hostname MX)
dig TLSA _25._tcp.mail.captaindns.com +short
# Erreur typique : TLSA publié sur le domaine au lieu du MX
dig TLSA _25._tcp.captaindns.com +short
# Ce TLSA est IGNORE par les serveurs émetteurs
Cause : confusion entre le domaine et le hostname MX. Le domaine reçoit le courrier, le hostname MX le traite. Le TLSA doit être publié sur _25._tcp.<hostname-MX>, pas sur _25._tcp.<domaine>, conformément à la RFC 7672 section 2.1.1.
Correction : publiez le TLSA sur _25._tcp.mail.captaindns.com (ou le hostname que retourne votre enregistrement MX). Si votre domaine a plusieurs MX, chaque hostname doit avoir son propre TLSA.
Erreur 4 : STARTTLS non disponible ou mal configuré
Symptôme : DANE est configuré côté DNS mais le serveur ne propose pas STARTTLS, ou le certificat présenté ne correspond pas au hostname. Un TLSA parfait ne sert à rien si le serveur ne chiffre pas la connexion. Les logs montrent "TLS handshake failed" ou "certificate hostname mismatch".
Diagnostic :
# Tester si STARTTLS est proposé
openssl s_client -connect mail.captaindns.com:25 \
-starttls smtp -verify 5
# Vérifier le Common Name et les SAN du certificat
openssl s_client -connect mail.captaindns.com:25 \
-starttls smtp 2>/dev/null \
| openssl x509 -noout -subject -ext subjectAltName
Causes fréquentes :
smtpd_tls_cert_filepointe vers un mauvais fichier dans Postfix- Le certificat ne contient pas le hostname MX dans ses Subject Alternative Names
- Le firewall bloque STARTTLS ou le port 25 n'est pas accessible en TLS
Correction : dans Postfix, vérifiez que smtpd_tls_security_level est au minimum may et que les chemins des certificats sont corrects :
# /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

Erreur 5 : propagation DNS incomplète
Symptôme : DANE fonctionne par intermittence. Un test local passe, mais des serveurs distants signalent des erreurs. Ce comportement aléatoire pointe presque toujours vers un problème de propagation DNS, surtout après une mise à jour récente.
Diagnostic :
# Comparer les réponses entre serveurs NS
dig TLSA _25._tcp.mail.captaindns.com @ns1.captaindns.com +short
dig TLSA _25._tcp.mail.captaindns.com @ns2.captaindns.com +short
# Vérifier le TTL restant
dig TLSA _25._tcp.mail.captaindns.com +noall +answer
Causes fréquentes :
- Transfert de zone incomplet entre serveurs DNS primaire et secondaire
- TTL élevé sur l'ancien enregistrement (les caches DNS gardent l'ancienne valeur)
- Un serveur NS ne répond pas ou retourne une version obsolète de la zone
Correction : vérifiez que tous vos serveurs NS retournent la même valeur TLSA. La règle d'or : ne jamais supprimer un ancien TLSA avant l'expiration de son TTL. Pour les rotations de certificat, publiez le nouveau TLSA au moins 2x TTL avant la rotation effective.
Surveiller DANE en production
Corriger une erreur ponctuelle ne suffit pas. DANE casse silencieusement : sans monitoring, vous ne découvrez le problème que lorsque vos correspondants vous signalent des rejets. Les 3 mécanismes suivants préviennent les incidents récurrents.
TLS-RPT : activez les rapports TLS-RPT (RFC 8460) pour recevoir les signalements d'échec DANE de la part des serveurs émetteurs. Le champ failure-type dans le rapport JSON indique précisément le type d'erreur :
| failure-type TLS-RPT | Signification | Action |
|---|---|---|
dane-required | TLSA exigé mais absent | Vérifier publication TLSA |
tlsa-invalid | TLSA présent mais invalide | Vérifier hash et syntaxe |
dnssec-invalid | Signature DNSSEC invalide | Vérifier clés DNSSEC |
certificate-expired | Certificat TLS expiré | Renouveler le certificat |
starttls-not-supported | Pas de STARTTLS | Vérifier config Postfix |
Monitoring certificat : configurez une alerte 14 jours avant l'expiration du certificat TLS. Le renouvellement Let's Encrypt est automatique, mais le hook de mise à jour TLSA peut échouer sans aucune alerte visible.
Vérification automatique : planifiez une vérification quotidienne avec notre DANE TLSA Syntax Checker ou un script cron qui compare le hash publié au certificat actif :
#!/bin/bash
# Vérification quotidienne DANE
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 "ALERTE : hash TLSA diverge du certificat actif" | \
mail -s "DANE TLSA mismatch" admin@captaindns.com
fi
Plan d'action recommandé
- Diagnostiquer : utilisez la méthodologie en 5 étapes ci-dessus ou notre DANE TLSA Checker pour identifier le problème
- Identifier : classez l'erreur dans l'une des 5 catégories (DNSSEC, hash, nom DNS, STARTTLS, propagation)
- Corriger : appliquez la solution correspondante avec les commandes fournies
- Vérifier : testez la correction avec
dig +dnssecetopenssl s_clientavant de considérer le problème résolu - Prévenir : mettez en place TLS-RPT, le monitoring certificat et la vérification automatique
FAQ
Pourquoi la validation DANE échoue après le renouvellement du certificat ?
Le renouvellement génère une nouvelle paire de clés (sauf si --reuse-key est activé dans Certbot). Le hash dans l'enregistrement TLSA ne correspond plus au nouveau certificat. Deux solutions : utiliser SPKI selector (1) avec --reuse-key pour conserver la même clé publique entre les renouvellements, ou passer à DANE-TA (2) avec le certificat de l'autorité de certification Let's Encrypt qui ne change pas à chaque renouvellement.
Comment corriger l'erreur 'no TLSA records found' ?
Cette erreur signifie que le TLSA est absent du DNS ou publié au mauvais endroit. Le TLSA doit être publié sur _25._tcp.<hostname-MX>, pas sur _25._tcp.<domaine>. Vérifiez avec dig MX captaindns.com quel est le hostname MX, puis publiez le TLSA sur le nom correct. Si le TLSA existe, vérifiez que DNSSEC est actif car les résolveurs ignorent les TLSA sans DNSSEC.
DANE fonctionne-t-il si DNSSEC est signé sur le domaine mais pas sur le hostname MX ?
DNSSEC doit être signé sur la zone qui contient le TLSA. Si votre hostname MX est mail.captaindns.com et que le TLSA est dans cette même zone, alors cette zone doit avoir DNSSEC actif. La zone du domaine émetteur n'a pas besoin de DNSSEC. En revanche, si le MX pointe vers un hostname dans une autre zone (hébergement mutualisé), c'est cette zone qui doit avoir DNSSEC.
Comment déboguer DANE avec les logs Postfix ?
Activez le niveau de log TLS dans Postfix avec smtp_tls_loglevel = 2 (sortant) ou smtpd_tls_loglevel = 2 (entrant) dans main.cf. Les lignes contenant Verified TLS connection confirment un succès. Les lignes avec dane et unusable ou failed indiquent un échec. Recherchez aussi DANE TLSA dans les logs pour voir les détails de la vérification.
Que signifie 'DANE required but TLSA absent' dans un rapport TLS-RPT ?
Ce message indique que le serveur émetteur a détecté une politique DANE (via DNSSEC sur la zone MX) mais n'a pas trouvé d'enregistrement TLSA. Soit le TLSA n'est pas encore publié, soit il est au mauvais nom DNS, soit le résolveur du serveur émetteur n'a pas encore propagé la mise à jour. Vérifiez la publication avec dig TLSA _25._tcp.mail.captaindns.com depuis un résolveur externe.
Le hash TLSA est correct mais la validation échoue, pourquoi ?
Plusieurs causes possibles : le selector dans le TLSA (Full vs SPKI) ne correspond pas à la méthode de hash utilisée, le certificat intermédiaire manque dans la chaîne présentée par le serveur, ou le matching type (SHA-256 vs SHA-512) ne correspond pas au hash publié. Vérifiez les 3 premiers champs du TLSA (usage, selector, matching type) et recalculez le hash avec les bons paramètres.
Comment tester DANE sans risquer la perte d'emails ?
Publiez d'abord le TLSA avec un TTL bas (300 secondes) et vérifiez-le avec dig et notre DANE TLSA Checker. Testez l'envoi depuis un serveur DANE-aware (Gmail, Microsoft 365) vers votre domaine. Si la validation échoue, corrigez le TLSA. Les serveurs émetteurs conformes à la RFC 7672 section 2.2 retombent en mode opportuniste si le TLSA est invalide, sauf si leur politique impose DANE strict. Augmentez le TTL une fois la configuration validée.
📚 Guides DANE/TLSA connexes
- DANE/TLSA : le guide complet pour authentifier les certificats email par DNS : fonctionnement, anatomie TLSA, usages recommandés et comparaison avec MTA-STS
- Configurer DANE/TLSA avec Postfix, Bind et Let's Encrypt : tutoriel pas-à-pas avec commandes copiables, automatisation du renouvellement et vérification
- Déployer DANE pour Exchange Online et Microsoft 365
Sources
- RFC 7672 - SMTP Security via Opportunistic DANE TLS
- RFC 7671 - The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance
- RFC 6698 - The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA
- Postfix TLS README - DANE
- ISC BIND 9 DNSSEC Guide


