Mettre en place dkim avec Exim4 pour les emails sortants

19 Sep 2014 , ,

Ce tutoriel est inspiré de nombreux autres tutoriels que j'ai trouvé sur le net. Ne vous formalisez donc pas sur la méthodologie appliquée ici car il existe de nombreuses autres façons de procéder. Depuis la version 4.7 de exim, il est possible de configurer dkim afin de signer les emails sortants. Ce tutoriel permet de mettre simplemnt en place la procédure sur un serveur dédié. J'ai choisi pour ma part de n'utiliser qu'une seule clé privée pour mon serveur mais il est possible en utilisant les variables d'exim4 d'avoir une clé par domaine.

La première étape consiste à installer et configurer Exim4, pour cela rien de compliqué. Il faudra juste penser à configurer Exim4 pour utiliser des fichiers de config séparés afin qu'Exim4 charge automatiquement les fichiers dans /etc/exim4/con.d/

Le fichier update-exim4.conf.conf doit donc contenir le paramètre suivant:

dc_use_split_config='true'

Générer les clés

Nous allons générer 2 clés qui serviront pour le processus de vérification. Vous pouvez les nommer comme bon vous semble, avec le domaine à l'intérieur ou juste un numéro de série lambda. J'ai utilisé la date comme numéro de série pour mon serveur.

cd /etc/exim4
openssl genrsa -out dkim.20140919.key 1024
openssl rsa -in dkim.20140919.key -out dkim.20140919.pub -pubout -outform PEM

Configurer Exim4

Créer le fichier /etc/exim4/conf.d/main/00_localmacros et y ajouter le code suivant:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20140919
DKIM_PRIVATE_KEY = /etc/exim4/dkim.20140919.key
DKIM_DOMAIN = ${lc:${domain:$h_from:}}

Voir La documentation exim4 pour plus de précisions sur les paramètres.

Ensuite appliquer la configuration:

update-exim4.conf
sudo service exim4 restart

Configurer les dns

Créer un enregistrement TXT pour le sous domaine [cle]._domainkey.[votredomaine.tld]

Exemple pour ebelair.fr:

20140919._domainkey.ebelair.fr

Le contenu de la clé devra contenir des paramètres dkim ainsi que la chaine de la clé publique sans les retours lignes

Exemple pour une clé publique contenant:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ9gPqCYHw0LXTEawScNOGvqlm
0ZmmaaZ3MFzBHRrXSJiGP5T54E0CFyxm7ItDaTkoWg8Z9HnY898yjdzRfr67nAAv
/3iW9pVS/87Xn8J/h7zGv7tyYRz7t5+TzAe1C8dGTF3LEu3MKp/j8wYD3I7omXAf
Qnz+Kx9GHTaSPk4s7QIDAQAB
-----END PUBLIC KEY-----

Le contenu sera:

v=DKIM1; t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ9gPqCYHw0LXTEawScNOGvqlm0ZmmaaZ3MFzBHRrXSJiGP5T54E0CFyxm7ItDaTkoWg8Z9HnY898yjdzRfr67nAAv/3iW9pVS/87Xn8J/h7zGv7tyYRz7t5TzAe1C8dGTF3LEu3MKp/j8wYD3I7omXAfQnz+Kx9GHTaSPk4s7QIDAQAB

Description des paramètres

v= DKIM1, version de DKIM
k= algorythme utilisé pour l'encryption.
t=y indique le test mode et indique au destinataire d'ignorer votre signature.
t=s indique que la clé n'est pas valide pour les sous-domaine de votre domaine.
p= Contenu de la clé publique sur une seule ligne.

Vérification et tests

Il faudra attendre la propagation des dns pour que cela soit pris en compte. Néanmoins vous pouvez vérifier l'existence de la clé en effectuant la commande suivante:

host -t txt [votre_cle]._domainkey.[votre_domaine.tld]

Vous pouvez également utiliser http://dkimcore.org pour effectuer des vérifications et des tests.

Enfin, le bon outil pour checker que vos mails vont être accepté sur la plupart des serveurs est d'utiliser http://www.mail-tester.com

comments powered by Disqus