Qu'est-ce qu'un enregistrement DKIM ?
DKIM (DomainKeys Identified Mail, RFC 6376) ajoute une signature numérique à chaque message envoyé par votre serveur. La signature est créée avec une clé privée qui reste sur le serveur. La clé publique correspondante est publiée dans le DNS sous forme d'enregistrement TXT à l'adresse selector._domainkey.yourdomain.com, et les serveurs de réception la récupèrent pour vérifier que le message vient bien de votre domaine et n'a pas été modifié en chemin.
Le sélecteur (selector) est simplement un libellé que vous choisissez, comme default ou s1. Il permet à un domaine de publier plusieurs clés à la fois, une par service ou par génération de clé. Une signature DKIM valide de votre propre domaine est aussi ce qui permet à un email de passer DMARC quand SPF ne peut pas s'aligner, par exemple après un transfert.

Devez-vous générer votre propre clé DKIM ?
Souvent, non. Google Workspace crée la clé pour vous (console d'administration, Applications, Google Workspace, Gmail, Authentifier les e-mails), et Microsoft 365 utilise deux enregistrements CNAME, selector1._domainkey et selector2._domainkey, qui pointent vers des clés gérées par Microsoft. La plupart des services de newsletter et d'emails transactionnels vous fournissent aussi leurs propres enregistrements.
Vous avez besoin de votre propre paire de clés quand vous gérez le serveur de messagerie, par exemple Postfix avec OpenDKIM ou rspamd, ou Exim, ou quand une application ou un relais vous demande d'importer une clé privée. C'est à cela que sert ce générateur.
Advertisement
Comment générer des clés DKIM et publier l'enregistrement
Le sélecteur peut être n'importe quel nom composé de lettres, de chiffres et de tirets. Un sélecteur daté, comme s2026, facilite le suivi de la rotation des clés.
RSA 2048 bits est le bon choix pour presque tout le monde. La paire de clés est créée dans votre navigateur dès le chargement de la page, puis à nouveau quand vous changez de type.
Téléchargez-la et installez-la sur votre serveur de messagerie. Elle n'est stockée nulle part : si vous la perdez, il vous faudra une nouvelle paire.
Ajoutez un enregistrement TXT avec l'hôte selector._domainkey et la valeur générée, envoyez-vous un message et vérifiez-le avec le vérificateur DKIM.
Syntaxe de l'enregistrement DKIM
Un enregistrement de clé DKIM est une liste de paires balise=valeur séparées par des points-virgules. Seul p= est obligatoire, mais publiez aussi v et k.
Identifie l'enregistrement comme une clé DKIM. S'il est présent, il doit venir en premier.
L'algorithme de la clé. rsa est la valeur par défaut si la balise est absente.
La clé publique en base64. Un p= vide signifie que la clé a été révoquée et que les signatures faites avec elle échouent.
Demande aux serveurs de réception de considérer que le domaine teste DKIM. Supprimez-le une fois que les signatures sont vérifiées.
Mode strict : l'identité i= d'une signature doit utiliser exactement le domaine d=, pas un de ses sous-domaines.
Limitent les algorithmes de hachage (h=sha256) ou le service auquel la clé est destinée (s=email). La plupart des enregistrements les omettent.
Advertisement
RSA 2048, 1024, 4096 ou Ed25519 ?
RSA 2048 bits : la taille recommandée. La RFC 8301 indique que les signataires devraient utiliser au moins 2048 bits. La valeur TXT fait environ 410 caractères.
RSA 1024 bits : encore vérifiée, et c'est le minimum accepté par les serveurs de réception, mais faible selon les normes actuelles. Les signatures faites avec des clés plus courtes ne comptent pas comme valides. Ne l'utilisez que si votre hébergeur DNS ne peut pas stocker une valeur plus longue.
RSA 4096 bits : les serveurs de réception doivent vérifier les clés jusqu'à 4096 bits, mais la valeur fait environ 750 caractères, et certains panneaux DNS et systèmes anciens la gèrent mal. Elle apporte peu par rapport à 2048.
Ed25519 : une clé moderne beaucoup plus courte (l'enregistrement entier fait environ 66 caractères, RFC 8463). Tous les serveurs de réception ne la vérifient pas encore : signez donc aussi avec une clé RSA, sous un second sélecteur.
Pourquoi mon enregistrement DKIM est-il découpé en plusieurs chaînes ?
Une seule chaîne TXT peut contenir au maximum 255 caractères, et une valeur DKIM de 2048 bits est plus longue. Le DNS résout ce problème en stockant la valeur sous forme de plusieurs chaînes entre guillemets que les serveurs de réception réassemblent.
La plupart des tableaux de bord DNS acceptent la valeur longue telle quelle et la découpent pour vous. Amazon Route 53 et les fichiers de zone BIND exigent que vous saisissiez vous-même la forme découpée, que vous obtenez avec le bouton du fichier de zone (dans Route 53, collez uniquement les chaînes entre guillemets, sur une seule ligne). N'ajoutez ni espaces ni retours à la ligne dans la clé, et ne mettez pas chaque moitié dans un enregistrement séparé.
Advertisement
Configurer la clé sur votre serveur de messagerie
Enregistrez la clé privée sous le nom default.private (avec votre propre sélecteur), rendez-la lisible uniquement par le service de signature et indiquez-lui où la trouver. Exemple OpenDKIM pour example.com avec le sélecteur default :
sudo mkdir -p /etc/opendkim/keys/example.com
sudo mv default.private /etc/opendkim/keys/example.com/
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private
sudo chmod 600 /etc/opendkim/keys/example.com/default.privatedefault._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private*@example.com default._domainkey.example.comopenssl genrsa -out default.private 2048
openssl rsa -in default.private -pubout -out default.publicopendkim-genkey -b 2048 -d example.com -s defaultComment effectuer la rotation des clés DKIM
Générez une nouvelle paire de clés sous un nouveau sélecteur, par exemple s2027.
Publiez le nouvel enregistrement TXT et attendez qu'il soit résolu partout.
Configurez le serveur de messagerie pour qu'il signe avec le nouveau sélecteur.
Gardez l'ancien enregistrement environ une semaine, jusqu'à ce que les emails signés avec lui aient été livrés et vérifiés.
Supprimez ensuite l'ancien enregistrement, ou publiez-le avec un
p=vide pour le révoquer.
Advertisement
Autres outils d'authentification email
DKIM est l'un des trois enregistrements que vérifient les serveurs de réception. Complétez l'ensemble :
Recherchez une clé publiée par sélecteur et vérifiez sa syntaxe et sa taille.
Créez un enregistrement SPF pour vos fournisseurs avec un décompte des requêtes en direct.
Créez une politique DMARC qui utilise vos résultats SPF et DKIM.
Voyez si un vrai message a passé DKIM, SPF et DMARC.