Mensagem de erro
dkim=permerror
Também aparece como
- dkim=neutral (signature syntax error)
O OpenDKIM grava só `dkim=permerror`, sem motivo (reproduzido com assinaturas sem `bh=`, com `v=2`, com um `a=` desconhecido e com `i=` fora de `d=`). O mailauth informa problemas de sintaxe como `dkim=neutral`, com um comentário que indica o problema ou, como padrão, “signature syntax error”.
O que significa
A assinatura DKIM não pôde ser avaliada de forma alguma, e tentar de novo não adianta: o cabeçalho `DKIM-Signature` tem a sintaxe quebrada ou viola as regras da RFC 6376 (falta uma tag obrigatória como `bh=` ou `b=`, a versão é desconhecida, o algoritmo não tem suporte, a identidade `i=` está fora do domínio `d=`, `From` não está entre os cabeçalhos assinados), ou o registro da chave pública é inutilizável. A RFC 8601 chama isso de erro permanente. Para o DMARC, isso não conta como aprovação.
Por que acontece
Cabeçalho DKIM-Signature malformado ou truncado
comumCódigo de assinatura caseiro que omite tags, servidores de retransmissão que quebram em linhas ou truncam cabeçalhos longos de forma incorreta, ou um cabeçalho de assinatura danificado por um cliente de e-mail que o recodificou.
Algoritmo que o verificador não aceita
ocasional`a=rsa-sha1` (descontinuado pela RFC 8301) ou `ed25519-sha256` em um receptor mais antigo. Assinar com RSA-SHA256 e com Ed25519 cobre todos os receptores.
i= fora do domínio de assinatura
ocasionalO identificador do agente `i=` precisa estar em `d=` ou em um subdomínio dele. `d=example.com; i=@example.org` é inválido.
O cabeçalho From não está assinado
ocasionalA RFC 6376 exige `From` em `h=`. Um signatário configurado com uma lista de cabeçalhos personalizada que o deixa de fora produz assinaturas que os receptores rejeitam.
Como corrigir
- 1.
Listar as tags da assinatura
Desfaça a quebra de linhas do cabeçalho e verifique as tags obrigatórias e os valores delas; o depurador de DKIM faz isso e aponta a tag problemática.
bash # Show the DKIM-Signature as one line and list its tags awk '/^DKIM-Signature:/{p=1} p&&/^[^ \t]/&&!/^DKIM-Signature:/{p=0} p' message.eml | tr -d '\r\n\t' | tr ';' '\n' # required: v=1 a= b= bh= d= h= (containing "from") s= - 2.
Usar uma configuração padrão de assinatura
RSA-SHA256 (opcionalmente com Ed25519), `From` assinado (e com oversigning) e uma implementação de assinatura com manutenção ativa, em vez de código próprio.
text # OpenDKIM signer: standard algorithm, From always signed SignatureAlgorithm rsa-sha256 OversignHeaders From Canonicalization relaxed/simple
Erros relacionados
dkim=fail reason="signature verification failed"OpenDKIM (Authentication-Results header added by the opendkim milter); mailauth reports the same as "bad signature"dkim=fail reason="key not found in DNS"OpenDKIM (Authentication-Results); mailauth reports it as dkim=neutral (no key)dkim=fail (body hash did not verify)DKIM verifiers (Gmail, mailauth, Rspamd…)