Message d’erreur
dkim=permerror
Également affiché sous la forme
- dkim=neutral (signature syntax error)
OpenDKIM écrit un simple `dkim=permerror` sans raison (reproduit avec des signatures dépourvues de `bh=`, avec `v=2`, avec un `a=` inconnu et avec un `i=` hors de `d=`). mailauth signale les problèmes de syntaxe par `dkim=neutral`, avec un commentaire qui nomme le problème ou, à défaut, « signature syntax error ».
Ce que cela signifie
La signature DKIM n’a pas pu être évaluée du tout, et réessayer n’y changera rien : l’en-tête `DKIM-Signature` est syntaxiquement incorrect ou enfreint les règles de la RFC 6376 (balise obligatoire comme `bh=` ou `b=` absente, version inconnue, algorithme non pris en charge, identité `i=` hors du domaine `d=`, `From` absent des en-têtes signés), ou bien l’enregistrement de la clé publique est inutilisable. La RFC 8601 qualifie ce cas d’erreur permanente. Pour DMARC, ce n’est pas un résultat pass.
Pourquoi cela se produit
En-tête DKIM-Signature mal formé ou tronqué
fréquenteCode de signature maison qui omet des balises, relais qui replient sur plusieurs lignes ou tronquent incorrectement les en-têtes longs, ou en-tête de signature endommagé par un client de messagerie qui l’a réencodé.
Algorithme non pris en charge par le vérificateur
occasionnelle`a=rsa-sha1` (rendu obsolète par la RFC 8301) ou `ed25519-sha256` chez un destinataire plus ancien. Signer à la fois avec RSA-SHA256 et avec Ed25519 couvre tous les destinataires.
i= hors du domaine de signature
occasionnelleL’identifiant d’agent `i=` doit appartenir à `d=` ou à l’un de ses sous-domaines. `d=example.com; i=@example.org` est invalide.
L’en-tête From n’est pas signé
occasionnelleLa RFC 6376 exige `From` dans `h=`. Un signataire configuré avec une liste d’en-têtes personnalisée qui l’omet produit des signatures que les destinataires rejettent.
Comment corriger l’erreur
- 1.
Lister les balises de la signature
Dépliez l’en-tête et vérifiez les balises obligatoires et leurs valeurs ; le débogueur DKIM le fait pour vous et désigne la balise fautive.
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.
Utiliser une configuration de signataire standard
RSA-SHA256 (éventuellement complété par Ed25519), `From` signé (et sur-signé), et une implémentation de signature maintenue plutôt que du code maison.
text # OpenDKIM signer: standard algorithm, From always signed SignatureAlgorithm rsa-sha256 OversignHeaders From Canonicalization relaxed/simple
Erreurs associées
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…)