Silently

DKIM — la signature de vos e-mails, et pourquoi on ne peut pas la deviner

DKIM signe vos messages avec une clé publiée dans le DNS. Ses sélecteurs ne sont pas énumérables, ce qui rend tout diagnostic externe partiel par nature.

Le principe

Votre serveur d’envoi signe chaque message avec une clé privée. La clé publique correspondante est publiée dans le DNS. Le destinataire récupère la clé publique et vérifie la signature : si elle est valide, le message n’a pas été modifié en route et vient bien d’un serveur détenant la clé.

La clé se publie sur un nom de la forme <sélecteur>._domainkey.exemple.fr :

google._domainkey.exemple.fr.  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBg..."

Pourquoi aucun outil ne peut prouver que DKIM est absent

Le DNS ne permet pas de lister les sous-domaines d’un nom. Il permet seulement de demander « que vaut ce nom précis ? ». Or le sélecteur est choisi librement par chaque prestataire d’envoi : google, selector1, k1, mail, s1, ovh, ou n’importe quelle chaîne arbitraire.

Conséquence directe : un outil externe ne peut que tester une liste de sélecteurs connus. S’il n’en trouve aucun, cela ne prouve rien. Votre DKIM peut parfaitement fonctionner avec un sélecteur que la liste ne contient pas.

C’est pour cette raison que Silently affiche « non vérifié » plutôt que « absent » quand aucun sélecteur ne répond, et que ce contrôle n’est pas compté dans la note. Un outil qui vous annonce « DKIM manquant » sur cette seule base vous raconte quelque chose qu’il ne peut pas savoir.

Pour connaître votre sélecteur avec certitude : ouvrez un message que vous avez envoyé, affichez la source, et cherchez l’en-tête DKIM-Signature. La valeur s= est le sélecteur.

La taille de clé

TailleStatut
512 ou 768 bitsCassable. À remplacer immédiatement.
1024 bitsEncore accepté, en fin de vie. À planifier.
2048 bitsLe standard actuel.

Une clé de 2048 bits produit un enregistrement TXT de plus de 255 caractères. Certaines interfaces d’hébergeur découpent alors la valeur en plusieurs morceaux entre guillemets : c’est normal et conforme, les morceaux sont recollés par le destinataire.

Le drapeau t=y

Un enregistrement contenant t=y déclare la clé en mode test : les destinataires sont invités à ignorer un échec de vérification. C’est utile pendant un déploiement, et c’est un problème quand on l’oublie — la signature devient décorative.

Rotation des clés

Changer de clé consiste à publier un nouveau sélecteur, basculer l’envoi dessus, puis vider l’ancien (p= vide, ce qui signifie « clé révoquée »). Garder l’ancien sélecteur avec sa clé intacte indéfiniment n’est pas dangereux en soi, mais un p= vide sur un sélecteur encore utilisé pour signer casse la vérification.