Ir para o conteúdo principal

DKIM fail: todas as causas e como corrigir

Por CaptainDNS
Publicado em 19 de fevereiro de 2026

Árvore de diagnóstico das causas de uma falha DKIM com as correções associadas
TL;DR
  • Um resultado dkim=fail significa 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.com para 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

VereditoSignificado
dkim=passAssinatura verificada com sucesso
dkim=failA assinatura existe, mas a verificação falhou
dkim=noneNenhuma assinatura DKIM encontrada na mensagem
dkim=neutralAssinatura presente, mas o verificador não conseguiu concluir
dkim=temperrorErro temporário (timeout DNS, servidor indisponível)
dkim=permerrorErro 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

Árvore de diagnóstico das falhas DKIM com as 7 causas principais

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.

Esquema do alinhamento DKIM no contexto DMARC

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.netcaptaindns.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

SintomaCausa provávelVerificaçãoCorreção
body hash did not verifyConteúdo modificado após assinaturaIdentificar o relay que modificaAssinar após as modificações
key not foundRegisto DNS ausentedig TXT s._domainkey.dominioPublicar o registo
signature expiredPrazo x= ultrapassadoComparar x= com a hora da verificaçãoAumentar a duração
bad signatureCanonicalização muito estritaVerificar c= na assinaturaMudar para relaxed/relaxed
key too shortChave RSA <1024 bitsDescodificar a chave públicaRegenerar em 2048 bits
dkim=pass + dmarc=failAlinhamento de domínioComparar 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

  1. Identifique o veredito exato: abra os cabeçalhos do email e anote o texto entre parênteses após dkim=fail
  2. 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
  3. Identifique os seus seletores ativos: use o DKIM Selector Finder para escanear os seletores conhecidos no seu domínio
  4. Corrija a causa identificada: aplique a correção correspondente ao seu caso (veja a tabela acima)
  5. Monitorize os resultados: após a correção, envie emails de teste e verifique se dkim=pass aparece 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: simple ou relaxed.
  • 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 do From:.

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

Fontes

Artigos relacionados