diagnóstico · resposta com fontes
DKIM fail "body hash did not verify": diagnóstico e solução
O erro "body hash did not verify" do DKIM ocorre quando o corpo do e-mail é modificado depois que a assinatura DKIM foi aplicada. O servidor receptor recalcula o hash do corpo recebido e descobre que ele não corresponde ao hash armazenado no cabeçalho DKIM-Signature, o que causa uma falha de verificação.
Causas de modificação do corpo
A causa mais comum é um servidor de e-mail intermediário ou um appliance de segurança que altera o conteúdo da mensagem. Isso inclui adicionar espaços em branco no final, inserir pixels de rastreamento, anexar avisos legais ou converter finais de linha de CRLF para LF. Até a alteração de um único caractere no corpo ou na estrutura MIME invalida o hash criptográfico e gera um resultado fail.
Configurações de canonicalização
O DKIM usa algoritmos de canonicalização para determinar quanta modificação é tolerada antes de o hash falhar. A canonicalização simple é rígida e falha com qualquer alteração. A canonicalização relaxed ignora certas mudanças de espaços em branco e diferenças de maiúsculas e minúsculas nos cabeçalhos. Se suas mensagens são modificadas com frequência por relays, mudar para a canonicalização relaxed pode evitar falhas desnecessárias.
Problemas de MIME e codificação
O tratamento incorreto do Content-Transfer-Encoding pode gerar divergências de hash. Se um relay converter uma mensagem de quoted-printable para 8bit ou modificar o charset, o body hash resultante mudará. Garanta que o agente de assinatura e as camadas de transporte sigam os padrões definidos no RFC 2045 para manter a integridade do corpo.
Etapas de diagnóstico
Para resolver o problema, examine os cabeçalhos brutos da mensagem que falhou. Compare o corpo enviado originalmente com o corpo recebido para identificar exatamente onde ocorreu a modificação. Você pode usar o SendHQ ou suas ferramentas gratuitas (https://sendhq.cc/tools) para verificar a configuração atual do seu registro DKIM e garantir que a chave pública esteja publicada corretamente no seu DNS.
Estratégias de prevenção
Evite relays de e-mail que modificam o conteúdo. Se você precisar usar um serviço que adiciona rodapés, garanta que a assinatura ocorra no último salto da cadeia de entrega. Outra opção é implementar o ARC (Authenticated Received Chain) para preservar os resultados de autenticação originais ao longo de vários saltos, permitindo que o receptor final confie na assinatura original.
Perguntas que as equipes fazem
Uma falha de body hash afeta o SPF?
Não, SPF e DKIM são independentes. Uma falha de body hash do DKIM não invalida um pass de SPF, mas pode afetar o alinhamento DMARC se o DKIM fosse o principal método de autenticação.
Adicionar um rodapé pode causar esse erro?
Sim. Adicionar um aviso legal corporativo ou o rodapé de uma lista de discussão depois que a mensagem é assinada altera o conteúdo do corpo, o que invalida o body hash do DKIM.
Qual é a diferença entre a canonicalização simple e a relaxed?
A simple é rígida e falha com qualquer alteração. A relaxed tolera pequenas mudanças em espaços em branco e em maiúsculas e minúsculas dos cabeçalhos, sendo mais resistente a modificações feitas por relays.
Alterar a linha de assunto causa uma falha de body hash?
Não, o assunto faz parte do cabeçalho. Uma alteração no assunto causaria uma falha de hash do cabeçalho, e não do corpo.
Fontes primárias
- RFC 6376: DomainKeys Identified Mail — RFC Editor (em inglês)
- RFC 2045: MIME Part One: Format of Internet Message Bodies — RFC Editor (em inglês)
- RFC 8617: The Authenticated Received Chain (ARC) — RFC Editor (em inglês)