Authentification par DKIM pour signer les mails avec son domaine

 

L’authentification par DKIM (DomainKeys Identified Mail) permet de prouver, via un couple de clés publique / privée, que le domaine avec lequel vous envoyez les e-mails est celui attaché au serveur. En effet, votre serveur smtp va utiliser sa clef privée pour signer, et les serveurs réceptionnant vont quant à eux vérifier la signature des mails avec la clé publique que vous aurez mis à disposition dans un enregistrement DNS spécifique. Ceci permet de « montrer patte blanche » en prouvant que le domaine du mail est bien votre propriété. Et que le mail n’est pas envoyé par un autre que vous.

Comme nous pouvons le voir dans l’image précédente, l’enregistrement DKIM reste relativement simple : il consiste en une sorte de sous domaine formaté d’une certaine façon, qui va pointer non par sur une IP mais sur la clé publique de votre serveur. Voici comment est structuré le sous domaine (et attention, c’est nécessaire) :

identifiant._domainkey

alors que l’identifiant est libre, dans mon cas j’ai mis la date de création de l’enregistrement, il est impératif de mettre ._domainkey afin que l’enregistrement fonctionne. Tout ceci est défini par des RFC.
A ce propos, l’enregistrement doit commencer impérativement (encore !) par la version du protocole utilisée. Dans mon cas on peut voir v=DKIM1 (c’est la valeur par défaut), et ne pas oublier d’encadre le tout de doubles guillemets « ….. »

"v=DKIM1; p=LaCleFpUBlic"

 

Génération d’un couple de clé publique / privée sous Linux

La méthode est on ne peut plus simple, voici :

openssl genrsa -out cle-privee.key 2048
openssl rsa -in cle-privee.key -pubout -out cle-publique.key

Ceci étant attention, si l’enregistrement fait plus de 256 caractères (donc pour les clés de plus de 2048 bits de long) l’enregistrement risque de poser des soucis à plusieurs niveau (obligation de créer deux enregistrements pour diviser la clef, problème possible au niveau de firewall…). Aussi, il ne faudra pas oublier de supprimer les retours à la ligne de votre clé publique afin de la mettre dans l’enregistrement DNS.

 

Vérification d’un enregistrement DKIM

Il est possible de vérifier un enregistrement DKIM (que ce soit votre serveur, ou un autre) via une commande très simple sous Linux : nslookup.
Mais avant ça, il nous faut quelques informations, et nous allons les trouver dans les données brutes des mail. Sur Gmail par exemple, tout à droite (à droite de la flèche pour répondre, il y a une flèche vers le bas) et c’est via ce menu que nous allons afficher le mail brut, comme reçu par le serveur.

Voici donc où trouver ces informations dans le webmail de google, à savoir Gmail. (D’ailleurs au passage on peut voir que la caf ne chiffre pas ses mails, bouhhhh, c’est pas biiiieeen !)
Les informations brutes que l’on cherche :

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; s=s01; d=emailing.caf.fr; h=From:Message-ID:Reply-To:To:Subject:MIME-Version:List-Unsubscribe:Content-Type;
i=votre-caf@emailing.caf.fr; bh=ST3mPS/IFcxL27ashGG0KgJDAVyAWbnye9MY/Oem0yE=; b=JAtFyRt7nFaa6SqDGaxwAqaBJGJ1u2+xsTc3w+8fb44rZr23fIkFqV24DiTSw+LerhG6hdT2jPkI
 JDy/TqNBVMv6Uz+JNyGbYu0Ee19ZgvPEJFXJmnqDEgPATXHPln5b2bech7TiesOi6FL5hqvthLrt
 0CVQFxY+2EGWRvUQafI=
From: Votre Caf <votre-caf@emailing.caf.fr>

Il ne nous reste plus qu’à utiliser la commande adaptée, comme ceci :

nslookup -typte=TXT s01._domainkey.emailling.caf.fr

La valeur s=s01 est le sélecteur (dans mon cas j’avais mis la date 20171206 comme selecteur)
La valeur d=emailling.caf.fr nous présente quant à elle le domaine qui est authentifié, ici le sous domaine qui doit certainement pointer sur le serveur mail de la caf.

Pour ce qui est des résultats, les voici :

feodor@logd.fr:~$ nslookup -type=TXT s01._domainkey.emailing.caf.fr
Server: 208.67.222.222
Address: 208.67.222.222#53

Non-authoritative answer:
s01._domainkey.emailing.caf.fr text = "v=DKIM1\;t=s\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTKTtNHy+g+Y3wwrNU8ascmR+IWuw4rec
x33gCcx4GptQEkJWEjEZHffHFxsarOm8URq6cgXIPLrrrVNEGd2Kq1rFNHbV2XMf7/3vlvlsW7ouvqgQF58lv4gtkZUr+ydmAG5qGL4YJoTQORABK/9k8Hu8AEBsklmuEYtJqBL2IdQIDAQAB"

Authoritative answers can be found from:

feodor@logd.fr:~$

La valeur t=s est, d’après la RFC4871, un flag qui impose que le mail soit envoyé par une adresse mail i= n’étant pas un sous domaine de d= . Dans le cas de la CAF c’est correct :

d=emailling.caf.fr
i=votre-caf@emailling.caf.fr

On constate bien que le mail est envoyé par un domaine identique. Si par exemple l’adresse mail avait été ainsi : votre-caf@sous-domaine.emailling.caf.fr cela aurait été faux.

 

Lu 295 fois

2 réflexions au sujet de « Authentification par DKIM pour signer les mails avec son domaine »

  1. Salut !
    Très instructif comme article mais j’ai une question en tant que novice en DKIM.
    Est ce que l’on peut avoir plusieurs DKIM pour un seul domaine?
    Je m’explique, pour le service client je veux pouvoir utiliser Zoho mail et pour la promotion je veux utiliser Mandrill sous mailchimp pour démarcher. Est ce que c’est possible? Les DKIM ne vont pas se gêner ?

    • Salut Adrien!
      Il n’y aura aucun souci pour ce qui est des enregistrements DKIM vu que tu mets ce que bon te semble comme « sélecteur » (comprendre la partie toute à gauche de l’enregistrement DNS). Tu peux en déclarer autant qu’il t’en faut pour gérer de multiples domaines.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *