Message d’erreur
dkim=fail reason="key not found in DNS"
Également affiché sous la forme
- dkim=neutral (no key)
La classification dépend du vérificateur (`fail` dans OpenDKIM, `neutral (no key)` dans mailauth, les deux reproduits) : c’est pourquoi le même message peut apparaître différemment dans les en-têtes de votre propre serveur et chez les grands fournisseurs de messagerie. Les en-têtes de Gmail indiquent généralement `dkim=neutral (no key for signature)`, une formulation propre au service en production qui ne peut pas être reproduite dans un conteneur. Un dépassement du délai d’attente DNS, au lieu d’un enregistrement absent, donne `dkim=temperror`.
Ce que cela signifie
Le message porte une signature DKIM pour le sélecteur `s=` et le domaine `d=`, mais l’enregistrement TXT `<selector>._domainkey.<domain>` n’existe pas : le destinataire ne peut donc rien vérifier. OpenDKIM le signale par `dkim=fail` avec cette raison ; d’autres vérificateurs classent la même situation autrement (mailauth en `dkim=neutral (no key)`, certains en `dkim=permerror`). Pour DMARC, aucun de ces résultats ne compte comme un pass DKIM.
Pourquoi cela se produit
L’enregistrement du sélecteur n’a jamais été créé
fréquenteUne nouvelle clé de signature (ou un nouveau fournisseur d’e-mail) a commencé à signer avec un sélecteur avant que son enregistrement TXT soit ajouté. Les fournisseurs de services e-mail (ESP) tels que Google Workspace, Microsoft 365 ou SendGrid ne commencent à signer correctement qu’une fois leurs enregistrements créés.
L’enregistrement existe sous un nom légèrement différent
fréquenteLes interfaces DNS qui ajoutent le nom de la zone produisent `s2026._domainkey.example.com.example.com` ; un enregistrement créé dans la zone parente alors qu’un sous-domaine est délégué ailleurs n’est pas trouvé non plus.
Cible CNAME ou enregistrement découpé défectueux
occasionnelleLes fournisseurs qui utilisent des CNAME pointant vers leurs propres enregistrements de clé (`s1._domainkey → s1.domainkey.u123.wl.sendgrid.net`) échouent si le CNAME est absent ou pointe vers une cible supprimée.
La clé a été supprimée alors que des messages l’utilisent encore
occasionnelleSupprimer l’ancien sélecteur juste après la rotation casse les messages encore en file d’attente ou revérifiés plus tard (transfert, ARC).
Comment corriger l’erreur
- 1.
Interroger le nom exact de l’enregistrement
Construisez le nom à partir de `s=` et `d=` de l’en-tête de signature, et interrogez-le depuis l’extérieur de votre réseau.
bash # s= and d= from the DKIM-Signature header name the record: <s>._domainkey.<d> dig +short TXT s2026._domainkey.example.com dig +short TXT s2026._domainkey.example.com @1.1.1.1 # bypass local caches - 2.
Publier la clé et conserver un temps les anciens sélecteurs
Publiez le nouveau sélecteur avant de l’utiliser pour signer, et conservez le précédent quelques jours après la bascule.
text ; zone example.com - long keys are split into several quoted strings of at most 255 characters s2026._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )
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=permerrorOpenDKIM (Authentication-Results); mailauth reports syntax errors as dkim=neutraldkim=fail (body hash did not verify)DKIM verifiers (Gmail, mailauth, Rspamd…)