Qu'est-ce que DKIM ?

DKIM (DomainKeys Identified Mail) ajoute une signature cryptographique aux e-mails sortants. Les destinataires la vérifient avec une clé publique publiée dans le DNS : le message a été autorisé par ce domaine et n'a pas été modifié.

Le serveur d'envoi signe certains en-têtes et le corps du message avec une clé privée, et ajoute un en-tête DKIM-Signature. Cet en-tête nomme le domaine signataire (d=) et un sélecteur (s=). Le destinataire récupère la clé publique dans l'enregistrement TXT situé sous selecteur._domainkey.domaine et vérifie la signature.

Les sélecteurs permettent à plusieurs clés de coexister : une par service d'envoi, ou une ancienne et une nouvelle pendant un renouvellement de clé. Cela signifie aussi que DKIM ne peut pas être découvert à partir du seul nom de domaine. Un outil ne peut vérifier un enregistrement DKIM que s'il connaît le sélecteur, lequel se trouve dans l'en-tête DKIM-Signature d'un vrai message.

Contrairement à SPF, une signature DKIM survit généralement au transfert, parce qu'elle voyage avec le message. Elle casse lorsqu'un intermédiaire, typiquement une liste de diffusion, modifie l'objet ou le corps. Des clés de 2048 bits sont le choix raisonnable aujourd'hui. À lui seul, DKIM ne dit pas aux destinataires quoi faire des e-mails non signés ; c'est DMARC qui fournit cette politique.

Exemple

sel1._domainkey.example.com.  3600  IN  TXT  "v=DKIM1; k=rsa; p=<public key>"

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=sel1; h=from:to:subject; bh=...; b=...

Vérifier

Voyez ce que cela donne sur un vrai domaine (DKIM) :

Recherche MX