DKIM fail: todas as causas e como corrigir
Por CaptainDNS
Publicado em 19 de fevereiro de 2026

- Um resultado
dkim=failsignifica que a assinatura DKIM do email não pôde ser verificada pelo servidor de recebimento - As 3 causas mais frequentes: body hash alterado (conteúdo modificado), chave pública não encontrada no DNS, assinatura expirada (prazo
x=ultrapassado) - O reencaminhamento de email quase sempre invalida a assinatura DKIM, é um comportamento esperado que apenas o ARC pode compensar
- Use o comando
dig TXT seletor._domainkey.captaindns.compara verificar se a sua chave pública está publicada corretamente - Sempre combine DKIM com DMARC e SPF para uma autenticação completa
Abre os cabeçalhos de um email e encontra dkim=fail. A mensagem foi enviada corretamente, a sua configuração parecia estar certa, mas a verificação DKIM falha. Esse cenário é frequente e as causas são múltiplas.
Este guia analisa cada causa de uma falha DKIM, explica como diagnosticá-la e apresenta a correção precisa a aplicar. Seja o problema no DNS, na assinatura, no reencaminhamento ou no alinhamento DMARC, saberá exatamente o que corrigir.
Como ler um resultado DKIM nos cabeçalhos de email?
Cada email recebido contém um cabeçalho Authentication-Results adicionado pelo servidor de recebimento. É nele que encontra o veredito DKIM.
Os vereditos possíveis
| Veredito | Significado |
|---|---|
dkim=pass | Assinatura verificada com sucesso |
dkim=fail | A assinatura existe, mas a verificação falhou |
dkim=none | Nenhuma assinatura DKIM encontrada na mensagem |
dkim=neutral | Assinatura presente, mas o verificador não conseguiu concluir |
dkim=temperror | Erro temporário (timeout DNS, servidor indisponível) |
dkim=permerror | Erro permanente (sintaxe DNS inválida, chave malformada) |
Exemplo de cabeçalho com falha
Authentication-Results: mx.google.com;
dkim=fail (body hash did not verify) header.d=captaindns.com header.s=google header.b=abc12345;
spf=pass smtp.mailfrom=captaindns.com;
dmarc=fail
O texto entre parênteses (body hash did not verify) indica a razão precisa da falha. Esse é seu ponto de partida para o diagnóstico.
As 7 causas de uma falha DKIM

Causa 1: body hash não verificado
Mensagem: body hash did not verify
Este é o erro mais comum. O servidor de envio calcula um hash do conteúdo do email e o inclui na assinatura (tag bh=). O servidor de recebimento recalcula esse hash. Se os dois não coincidem, ocorre uma falha.
Causas frequentes:
- Um relay intermediário modificou o conteúdo (adição de rodapé, reescrita de URL, antivírus)
- O servidor de mailing adiciona um pixel de rastreamento após a assinatura
- Um proxy de email ou DLP (Data Loss Prevention) altera o corpo da mensagem
Diagnóstico:
# Verificar se o registo DKIM está publicado corretamente
dig TXT google._domainkey.captaindns.com +short
Correção: identifique o serviço que modifica o conteúdo após a assinatura. Configure-o para agir antes da assinatura DKIM, ou elimine as modificações do corpo assinado.
Causa 2: chave pública não encontrada
Mensagem: key not found ou no key for signature
O servidor de recebimento não encontra o registo DNS seletor._domainkey.dominio. Sem chave pública, é impossível verificar a assinatura.
Causas frequentes:
- O seletor declarado na assinatura (
s=) não corresponde a nenhum registo DNS - O registo foi eliminado por engano
- O CNAME para o fornecedor (Google, Microsoft) não está configurado
- A propagação DNS ainda não foi concluída
Diagnóstico:
# Substitua "seletor" pelo valor do campo s= da assinatura
dig TXT seletor._domainkey.captaindns.com +short
Se o comando não retornar nada, o registo está ausente.
Correção: publique (ou republique) o registo DNS TXT ou CNAME correspondente ao seletor. Aguarde a propagação DNS (até 48h dependendo do TTL).
Causa 3: assinatura expirada
Mensagem: signature expired
A tag x= da assinatura DKIM define um timestamp de expiração. Se o servidor de recebimento verificar a assinatura após essa data, ocorre uma falha.
Causas frequentes:
- O email ficou na fila por tempo demais (greylisting, servidor de recebimento lento)
- O valor
x=é muito curto (ex: 1 hora em vez de 7 dias) - Diferença de relógio entre os servidores
Correção: aumente a duração de validade da assinatura. A maioria dos fornecedores utiliza 7 dias. Se controla o servidor de envio, verifique se x= deixa um prazo suficiente (mínimo de 72 horas recomendado).
Causa 4: erro de canonicalização
Mensagem: bad signature ou signature verification failed
A canonicalização define como o servidor normaliza a mensagem antes de verificar a assinatura. Existem dois modos: simple e relaxed. Se o cabeçalho DKIM declara c=simple/simple, mas um relay modifica espaços ou a capitalização dos cabeçalhos, a verificação falha.
Diagnóstico: na assinatura DKIM, procure a tag c=. Se o valor for simple/simple, essa é provavelmente a causa.
Correção: mude para c=relaxed/relaxed. Esse modo tolera modificações menores (espaços, capitalização) que os relays de email realizam com frequência.
Causa 5: chave curta demais
Mensagem: key too short ou insecure key
Desde 2024, Google e Yahoo recusam chaves RSA de 512 e 768 bits. O tamanho mínimo aceite é 1024 bits, e 2048 bits é o recomendado.
Diagnóstico:
# Recuperar a chave e verificar seu tamanho
dig TXT google._domainkey.captaindns.com +short
# Copiar o valor p= e decodificar em Base64 para contar os bits
Correção: gere um novo par de chaves RSA 2048 bits (ou Ed25519) e publique a nova chave pública no DNS. Atualize a configuração do seu servidor de envio com a nova chave privada.
Causa 6: reencaminhamento de email (forwarding)
O reencaminhamento de email é a causa mais difícil de resolver. Quando um servidor intermediário retransmite uma mensagem, ele pode modificar o conteúdo (adição de cabeçalhos, reescrita do endereço de retorno). A assinatura DKIM original fica então inválida.
Casos típicos:
- Reencaminhamento automático do Gmail/Outlook para outra caixa de correio
- Listas de distribuição (mailing lists) que adicionam um rodapé
- Aliases de email que redirecionam para outro domínio
Correção: não existe solução universal. O protocolo ARC (Authenticated Received Chain, RFC 8617) foi criado para esse caso: cada servidor intermediário adiciona a sua própria assinatura ARC, formando uma cadeia de confiança. Gmail e Microsoft suportam ARC. Do lado do remetente, não pode impedir a quebra da assinatura durante o reencaminhamento. No Microsoft 365, esse DKIM quebrado pelo reencaminhamento costuma aparecer como compauth=fail reason=000 no cabeçalho: consulte o guia sobre a autenticação composta e os reason codes compauth.
Causa 7: falha de alinhamento DMARC
Mensagem: dmarc=fail (enquanto dkim=pass)
Este caso é particular. A assinatura DKIM é tecnicamente válida (dkim=pass), mas DMARC falha porque o domínio d= da assinatura não corresponde ao domínio do From:. É um problema de alinhamento, não de assinatura.

Exemplo:
From: contact@captaindns.com- Assinatura DKIM:
d=sendgrid.net(o fornecedor assina com o seu próprio domínio)
DKIM passa, mas o alinhamento falha pois sendgrid.net ≠ captaindns.com.
Correção: configure o seu fornecedor de envio para assinar com o seu domínio (d=captaindns.com). Na maioria dos fornecedores (SendGrid, Mailchimp, Brevo), isso é feito criando um CNAME seletor._domainkey.captaindns.com apontando para a infraestrutura deles.
Diagnóstico rápido: tabela resumo
| Sintoma | Causa provável | Verificação | Correção |
|---|---|---|---|
body hash did not verify | Conteúdo modificado após assinatura | Identificar o relay que modifica | Assinar após as modificações |
key not found | Registo DNS ausente | dig TXT s._domainkey.dominio | Publicar o registo |
signature expired | Prazo x= ultrapassado | Comparar x= com a hora da verificação | Aumentar a duração |
bad signature | Canonicalização muito estrita | Verificar c= na assinatura | Mudar para relaxed/relaxed |
key too short | Chave RSA <1024 bits | Descodificar a chave pública | Regenerar em 2048 bits |
dkim=pass + dmarc=fail | Alinhamento de domínio | Comparar d= e From: | Assinar com o seu domínio |
Diferença entre dkim=fail, dkim=none e dkim=temperror
Esses três vereditos indicam situações muito diferentes.
dkim=fail: uma assinatura DKIM existe na mensagem, mas a sua verificação falhou. É um problema ativo a ser corrigido.
dkim=none: nenhuma assinatura DKIM está presente na mensagem. O servidor de envio não assina os emails. Configure DKIM no seu servidor ou no seu fornecedor.
dkim=temperror: o servidor de recebimento não conseguiu verificar a assinatura devido a um erro temporário (timeout DNS, servidor sobrecarregado). A verificação será tentada novamente. Se o problema persistir, verifique se os seus servidores DNS respondem rapidamente (TTL baixo, sem SERVFAIL).
Plano de ação recomendado
- Identifique o veredito exato: abra os cabeçalhos do email e anote o texto entre parênteses após
dkim=fail - Verifique o seu registo DNS: faça uma análise com o verificador DKIM para confirmar que a chave pública está publicada e sintaticamente válida
- Identifique os seus seletores ativos: use o DKIM Selector Finder para escanear os seletores conhecidos no seu domínio
- Corrija a causa identificada: aplique a correção correspondente ao seu caso (veja a tabela acima)
- Monitorize os resultados: após a correção, envie emails de teste e verifique se
dkim=passaparece nos cabeçalhos
FAQ
O que significa dkim=fail nos cabeçalhos de email?
O veredito dkim=fail indica que a mensagem contém uma assinatura DKIM, mas o servidor de recebimento não conseguiu verificá-la. O texto entre parênteses (ex: body hash did not verify) especifica a razão da falha. Isso não significa necessariamente que o email é fraudulento, uma modificação legítima do conteúdo em trânsito também pode causar essa falha.
Porque meu DKIM falha mesmo com o registo DNS correto?
Se o seu registo DNS é válido mas o DKIM falha, o problema provavelmente vem do conteúdo da mensagem. Um relay intermediário (antivírus, DLP, proxy) pode ter modificado o corpo após a assinatura. Verifique também se o seletor na assinatura (s=) corresponde ao publicado no DNS.
Qual é a causa da mensagem 'body hash did not verify'?
Essa mensagem significa que o hash do conteúdo calculado pelo servidor de recebimento não corresponde ao hash declarado na assinatura (tag bh=). O corpo da mensagem foi modificado entre a assinatura e a verificação. As causas mais frequentes são relays que adicionam rodapé, sistemas antivírus e ferramentas de reescrita de URL.
Um email pode ser entregue mesmo com uma falha DKIM?
Sim. DKIM sozinho não determina a entrega. É a política DMARC do domínio que decide: com p=none, o email é entregue mesmo se DKIM falhar. Com p=reject, o email é rejeitado apenas se SPF também falhar (DMARC exige que um dos dois passe). Muitos fornecedores entregam a mensagem na caixa de spam em vez de rejeitá-la.
Qual é a diferença entre dkim=fail e dkim=none?
dkim=fail significa que uma assinatura existe, mas a sua verificação falhou. dkim=none significa que nenhuma assinatura DKIM está presente na mensagem. O primeiro é um problema de configuração, o segundo indica que DKIM não está ativado no servidor de envio.
O reencaminhamento de email sempre invalida a assinatura DKIM?
Na maioria dos casos, sim. O reencaminhamento frequentemente modifica o conteúdo (adição de cabeçalhos, reescrita de endereços), o que invalida a assinatura DKIM original. O protocolo ARC (RFC 8617) foi criado para resolver esse problema, formando uma cadeia de confiança entre os servidores intermediários. Gmail e Microsoft suportam ARC.
Como verificar se minha correção DKIM funcionou?
Após aplicar a sua correção, envie um email de teste para um endereço Gmail ou Outlook. Abra os cabeçalhos da mensagem recebida e procure por Authentication-Results. Se vir dkim=pass, a correção está a funcionar. Também pode usar uma ferramenta de teste online que exibe os resultados detalhados de autenticação.
Glossário
- DKIM (DomainKeys Identified Mail): protocolo de autenticação de email por assinatura criptográfica, verificando a integridade das mensagens enviadas.
- Body hash: impressão digital SHA-256 do corpo do email, incluída na assinatura DKIM (tag
bh=). - Seletor: identificador de texto que forma o endereço DNS da chave pública DKIM (
seletor._domainkey.dominio). - Canonicalização: normalização da mensagem (espaços, capitalização) antes do cálculo da assinatura. Modos:
simpleourelaxed. - ARC (Authenticated Received Chain): protocolo RFC 8617 que preserva os resultados de autenticação durante o reencaminhamento de emails.
- Alinhamento DKIM: verificação pelo DMARC de que o domínio
d=da assinatura corresponde ao domínio doFrom:.
Gere as suas chaves DKIM em poucos segundos: use o Gerador DKIM para criar um par de chaves RSA 2048 ou Ed25519 com o registo DNS pronto para publicar.
📚 Guias DKIM relacionados
- Como encontrar o seu seletor DKIM: 4 métodos: cabeçalhos de email, DNS, console de administração e scan automático.
- O que é um registo DKIM? O guia completo: funcionamento, tags DNS, RSA vs Ed25519 e rotação de chaves.
- Validar DKIM no seu CI/CD: validação shift-left com GitHub Actions, GitLab CI, Terraform e pre-commit.


