Solução de problemas DANE/TLSA: diagnosticar e corrigir os erros mais comuns
Por CaptainDNS
Publicado em 23 de fevereiro de 2026

- Os 5 erros DANE mais comuns: DNSSEC ausente, hash TLSA desatualizado, nome DNS errado, STARTTLS mal configurado, propagação incompleta
- Comandos essenciais:
dig +dnssec,openssl s_client -starttls smtp,postfix/smtpd[]: TLSnos logs - A renovação do certificado Let's Encrypt é a causa nº 1 das falhas DANE em produção
- Nosso DANE TLSA Checker identifica automaticamente esses problemas
- Os relatórios TLS-RPT (RFC 8460) sinalizam falhas DANE antes que seus contatos o alertem
Você implantou DANE/TLSA no seu servidor de email seguindo as boas práticas, tudo estava funcionando, e então um dia os emails começam a ser recusados por alguns destinatários. A mensagem de erro menciona "failed DANE validation" ou "TLSA record not found", mas os logs não informam exatamente o que mudou.
Esse cenário é o cotidiano dos administradores DANE. A dificuldade não está na complexidade do protocolo, mas no número de componentes envolvidos: DNSSEC, certificado TLS, registro TLSA, configuração MTA. Um único elo defeituoso é suficiente para quebrar toda a cadeia.
Este guia cobre os 5 erros DANE/TLSA mais frequentes com, para cada um, o sintoma, os comandos de diagnóstico e a correção. Ele é destinado a administradores de sistema e DevOps que já possuem uma configuração DANE em funcionamento. Se você ainda não implantou DANE, comece pelo primeiro artigo desta série (veja "Guias relacionados" no final da página).
Diagnosticar uma falha DANE/TLSA
- Passo 1: verificar a resolução DNSSEC do domínio
A primeira coisa a verificar é o estado DNSSEC da sua zona. Sem DNSSEC válido, os registros TLSA são ignorados pelos servidores de envio. Use
digcom o flag+dnssecpara verificar se as assinaturas estão presentes e válidas:dig +dnssec MX captaindns.com dig +dnssec A mail.captaindns.comO flag
ad(Authenticated Data) na resposta confirma que o DNSSEC é válido. Se esse flag estiver ausente, o problema está no nível do DNSSEC, não do TLSA. Verifique também se a cadeia de confiança está completa comdelv:delv @8.8.8.8 mail.captaindns.com A +rtrace - Passo 2: verificar o registro TLSA publicado
Verifique se o TLSA está publicado no local correto e contém os valores corretos. O nome DNS deve corresponder ao hostname MX, não ao domínio:
dig TLSA _25._tcp.mail.captaindns.com +shortA resposta deve conter os 4 campos: usage, selector, matching type e hash. Se a consulta não retornar nada, o TLSA está publicado no nome DNS errado ou não existe.
- Passo 3: comparar o hash TLSA ao certificado ativo
Obtenha o certificado apresentado pelo servidor e calcule seu hash para compará-lo ao TLSA publicado:
# Recuperar o certificado 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 -sha256Para um TLSA com selector SPKI (1), calcule o hash da chave pública:
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 -sha256Compare o resultado com o hash no TLSA. Se os valores divergirem, o certificado foi renovado sem atualizar o TLSA.
- Passo 4: testar a conexão STARTTLS
Verifique se o servidor oferece corretamente STARTTLS na porta 25:
openssl s_client -connect mail.captaindns.com:25 \ -starttls smtp -verify 5 \ -servername mail.captaindns.comVerifique se o certificado retornado corresponde ao hostname MX e se a cadeia de certificados está completa. Um certificado expirado ou um hostname incorreto causa uma falha DANE mesmo se o hash TLSA estiver correto.
- Passo 5: analisar os logs MTA e os relatórios TLS-RPT
Os logs do Postfix contêm os detalhes das falhas DANE. Filtre as entradas relevantes:
grep "dane" /var/log/mail.log | grep -i "fail\|error\|unusable"Os relatórios TLS-RPT (se configurados) sinalizam as falhas vistas pelos servidores de envio. Procure os campos
failure-typecontendodane-requiredoutlsa-invalidnos relatórios JSON recebidos por email.
Os 5 erros DANE mais comuns
Os problemas DANE se dividem em 5 categorias. Cada seção abaixo descreve o sintoma observável, o comando de diagnóstico e a correção.

Erro 1: DNSSEC não assinado ou assinatura expirada
Sintoma: os servidores de envio reportam "DANE required but not available" ou "no DNSSEC" nos relatórios TLS-RPT. Os emails são entregues em modo oportunístico (sem verificação DANE) ou recusados.
Diagnóstico:
# Verificar o flag AD (Authenticated Data)
dig +dnssec MX captaindns.com | grep flags
# Resultado esperado: flags: qr rd ra ad
# Verificar a validade das assinaturas RRSIG
dig +dnssec SOA captaindns.com | grep RRSIG
# A data de expiração está no campo RRSIG
Causas frequentes:
- O registrar desativou o DNSSEC após uma transferência de domínio
- As chaves DNSSEC (KSK/ZSK) expiraram sem rotação automática
- O DS record no registrar não corresponde mais à DNSKEY ativa
Correção: verifique se o DS record no seu registrar corresponde à sua DNSKEY. Se você usa Bind9, verifique as datas de expiração das chaves com dnssec-settime e configure a rotação automática.
Erro 2: hash TLSA desatualizado após renovação do certificado
Sintoma: "TLSA validation failed" ou "certificate mismatch" nos logs. Esse erro ocorre tipicamente 60 a 90 dias após a implantação inicial, na primeira renovação Let's Encrypt.
Diagnóstico:
# Hash do certificado ativo (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 publicado no DNS
dig TLSA _25._tcp.mail.captaindns.com +short
# Comparar os 64 caracteres hexadecimais
Causas frequentes:
- O hook de renovação do Certbot não atualiza o TLSA
- O selector é Full (0) em vez de SPKI (1): cada renovação altera o hash
- O usage é DANE-EE (3) sem
--reuse-keyno Certbot
Correção:
- Solução rápida: gere o novo hash com nosso DANE TLSA Generator e atualize o DNS
- Solução durável: use SPKI selector (1) com
--reuse-keyno Certbot, ou mude para DANE-TA (2) com o certificado CA Let's Encrypt. Consulte nosso tutorial Postfix/Bind/Let's Encrypt (artigo 2 desta série) para a configuração do hook de renovação automática
Erro 3: TLSA publicado no nome DNS errado
Sintoma: "no TLSA records found" mesmo tendo criado o registro. Este é o erro mais comum entre iniciantes em DANE.
Diagnóstico:
# Encontrar o hostname MX
dig MX captaindns.com +short
# Resultado: 10 mail.captaindns.com.
# Verificar o TLSA no local correto (hostname MX)
dig TLSA _25._tcp.mail.captaindns.com +short
# Erro típico: TLSA publicado no domínio em vez do MX
dig TLSA _25._tcp.captaindns.com +short
# Esse TLSA é IGNORADO pelos servidores de envio
Causa: confusão entre o domínio (captaindns.com) e o hostname MX (mail.captaindns.com). O TLSA deve ser publicado em _25._tcp.<hostname-MX>, conforme a RFC 7672 seção 2.1.1.
Correção: publique o TLSA em _25._tcp.mail.captaindns.com (ou o hostname retornado pelo seu registro MX). Se o seu domínio tem vários MX, cada hostname deve ter seu próprio TLSA.
Erro 4: STARTTLS não disponível ou mal configurado
Sintoma: DANE está configurado no DNS, mas o servidor não oferece STARTTLS, ou o certificado apresentado não corresponde ao hostname. Os logs mostram "TLS handshake failed" ou "certificate hostname mismatch".
Diagnóstico:
# Testar se STARTTLS é oferecido
openssl s_client -connect mail.captaindns.com:25 \
-starttls smtp -verify 5
# Verificar o Common Name e os SAN do certificado
openssl s_client -connect mail.captaindns.com:25 \
-starttls smtp 2>/dev/null \
| openssl x509 -noout -subject -ext subjectAltName
Causas frequentes:
smtpd_tls_cert_fileaponta para um arquivo errado no Postfix- O certificado não contém o hostname MX nos seus Subject Alternative Names
- O firewall bloqueia STARTTLS ou a porta 25 não está acessível em TLS
Correção: no Postfix, verifique se smtpd_tls_security_level está no mínimo em may e se os caminhos dos certificados estão corretos:
# /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

Erro 5: propagação DNS incompleta
Sintoma: DANE funciona de forma intermitente. Alguns servidores de envio validam o TLSA, outros reportam um erro. O problema aparece frequentemente após uma atualização DNS recente.
Diagnóstico:
# Comparar as respostas entre servidores NS
dig TLSA _25._tcp.mail.captaindns.com @ns1.captaindns.com +short
dig TLSA _25._tcp.mail.captaindns.com @ns2.captaindns.com +short
# Verificar o TTL restante
dig TLSA _25._tcp.mail.captaindns.com +noall +answer
Causas frequentes:
- Transferência de zona incompleta entre servidores DNS primário e secundário
- TTL elevado no registro antigo (os caches DNS mantêm o valor anterior)
- Um servidor NS não responde ou retorna uma versão desatualizada da zona
Correção: verifique se todos os seus servidores NS retornam o mesmo valor TLSA. Se você acabou de atualizar o TLSA, aguarde a expiração do TTL anterior antes de remover o registro antigo. Para rotações de certificado, publique o novo TLSA 2x TTL antes da rotação efetiva.
Monitorar DANE em produção
Corrigir um erro pontual não é suficiente. Os 3 mecanismos de monitoramento a seguir previnem incidentes recorrentes.
TLS-RPT: ative os relatórios TLS-RPT (RFC 8460) para receber os avisos de falha DANE da parte dos servidores de envio. O campo failure-type no relatório JSON indica precisamente o tipo de erro:
| failure-type TLS-RPT | Significado | Ação |
|---|---|---|
dane-required | TLSA exigido mas ausente | Verificar publicação TLSA |
tlsa-invalid | TLSA presente mas inválido | Verificar hash e sintaxe |
dnssec-invalid | Assinatura DNSSEC inválida | Verificar chaves DNSSEC |
certificate-expired | Certificado TLS expirado | Renovar o certificado |
starttls-not-supported | Sem STARTTLS | Verificar config Postfix |
Monitoramento de certificado: configure um alerta 14 dias antes da expiração do certificado TLS. A renovação Let's Encrypt é feita automaticamente, mas o hook TLSA pode falhar silenciosamente.
Verificação automática: agende uma verificação diária com nosso DANE TLSA Syntax Checker ou um script cron que compara o hash publicado ao certificado ativo:
#!/bin/bash
# Verificação diária 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 "ALERTA: hash TLSA diverge do certificado ativo" | \
mail -s "DANE TLSA mismatch" admin@captaindns.com
fi
Plano de ação recomendado
- Diagnosticar: use a metodologia em 5 passos acima ou nosso DANE TLSA Checker para identificar o problema
- Identificar: classifique o erro em uma das 5 categorias (DNSSEC, hash, nome DNS, STARTTLS, propagação)
- Corrigir: aplique a solução correspondente com os comandos fornecidos
- Verificar: teste a correção com
dig +dnsseceopenssl s_clientantes de considerar o problema resolvido - Prevenir: implemente TLS-RPT, o monitoramento de certificado e a verificação automática
FAQ
Por que a validação DANE falha após a renovação do certificado?
A renovação gera um novo par de chaves (exceto se --reuse-key estiver ativado no Certbot). O hash no registro TLSA não corresponde mais ao novo certificado. Duas soluções: usar SPKI selector (1) com --reuse-key para manter a mesma chave pública entre as renovações, ou mudar para DANE-TA (2) com o certificado da autoridade de certificação Let's Encrypt que não muda a cada renovação.
Como corrigir o erro 'no TLSA records found'?
Esse erro significa que o TLSA está ausente do DNS ou publicado no local errado. O TLSA deve ser publicado em _25._tcp.<hostname-MX>, não em _25._tcp.<domínio>. Verifique com dig MX captaindns.com qual é o hostname MX e publique o TLSA no nome correto. Se o TLSA existe, verifique se o DNSSEC está ativo, pois os resolvedores ignoram os TLSA sem DNSSEC.
DANE funciona se o DNSSEC está assinado no domínio mas não no hostname MX?
O DNSSEC deve estar assinado na zona que contém o TLSA. Se o seu hostname MX é mail.captaindns.com e o TLSA está nessa mesma zona, então essa zona deve ter DNSSEC ativo. A zona do domínio de envio não precisa de DNSSEC. Por outro lado, se o MX aponta para um hostname em outra zona (hospedagem compartilhada), é essa zona que deve ter DNSSEC.
Como depurar DANE com os logs do Postfix?
Ative o nível de log TLS no Postfix com smtp_tls_loglevel = 2 (saída) ou smtpd_tls_loglevel = 2 (entrada) em main.cf. As linhas contendo Verified TLS connection confirmam um sucesso. As linhas com dane e unusable ou failed indicam uma falha. Procure também DANE TLSA nos logs para ver os detalhes da verificação.
O que significa 'DANE required but TLSA absent' em um relatório TLS-RPT?
Essa mensagem indica que o servidor de envio detectou uma política DANE (via DNSSEC na zona MX) mas não encontrou um registro TLSA. Ou o TLSA ainda não foi publicado, ou está no nome DNS errado, ou o resolvedor do servidor de envio ainda não propagou a atualização. Verifique a publicação com dig TLSA _25._tcp.mail.captaindns.com a partir de um resolvedor externo.
O hash TLSA está correto mas a validação falha, por quê?
Várias causas possíveis: o selector no TLSA (Full vs SPKI) não corresponde ao método de hash utilizado, o certificado intermediário está faltando na cadeia apresentada pelo servidor, ou o matching type (SHA-256 vs SHA-512) não corresponde ao hash publicado. Verifique os 3 primeiros campos do TLSA (usage, selector, matching type) e recalcule o hash com os parâmetros corretos.
Como testar DANE sem arriscar a perda de emails?
Publique primeiro o TLSA com um TTL baixo (300 segundos) e verifique-o com dig e nosso DANE TLSA Checker. Teste o envio a partir de um servidor DANE-aware (Gmail, Microsoft 365) para o seu domínio. Se a validação falhar, corrija o TLSA. Os servidores de envio em conformidade com a RFC 7672 seção 2.2 voltam ao modo oportunístico se o TLSA for inválido, exceto se sua política impõe DANE estrito. Aumente o TTL assim que a configuração for validada.
📚 Guias de DANE/TLSA relacionados
- DANE/TLSA: o guia completo para autenticar certificados de email via DNS: funcionamento, anatomia TLSA, usos recomendados e comparação com MTA-STS
- Configurar DANE/TLSA com Postfix, Bind e Let's Encrypt: tutorial passo a passo com comandos copiáveis, automação de renovação e verificação
- Implementar DANE para Exchange Online e Microsoft 365
Fontes
- 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


