Mise en oeuvre de DKIM et DomainKeys sous Debian Lenny
Par Thomas Martin le lundi 5 octobre 2009, 22:52 - Tech - Lien permanent
Voici un récapitulatif de la mise en place des protocoles d'authentification
SMTP DKIM et DomainKeys sous Debian Lenny.
Le serveur de mail utilisé est Postfix, mais tout MTA sachant communiquer avec
les milter de Sendmail peut normalement
être utilisé. La signature et la vérification des messages sera effectuée
pour le domaine <domain>. Voici les étapes :
Installation de dkim-filter et dk-filter :
# aptitude install dkim-filter dk-filter
Ajouter dans le fichier /etc/dkim-filter.conf un ensemble de directives
indiquant le nom du domaine qui va utiliser DKIM, un nom de
selector (exemple : 2009),
et le nom du fichier qui contiendra la clé privée utilisée pour la signature.
L'utilisation des selector permet notamment de changer et/ou révoquer
facilement une clé, ou d'utiliser des clés différentes sur des serveurs de
mails différents.
Domain <domain>
KeyFile /etc/ssl/dkim_<domain>_<selector>.key
Selector <selector>
Générer la clé :
# openssl genrsa -out /etc/ssl/private/dkim_<domain>_<selector>.key
Et en extraire la partie publique :
# openssl rsa -in /etc/ssl/private/dkim_<domain>_<selector>.key \
-pubout -outform PEM
Dans la zone DNS du domaine <domain>, ajouter l'enregistrement suivant. La
valeur de <key> correspond à la sortie de la commande précédente, contenue
entre les lignes _BEGIN PUBLIC KEY_ et _END PUBLIC KEY_ :
<selector>._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=<key>"
Ajouter les paramètres de démarrage de dkim_filter dans
/etc/default/dkim-filter. Le fichier /etc/dkim.hosts
contient la liste des serveurs dont les mails sortants seront chiffrés :
SOCKET="inet:2505@localhost"
DAEMON_OPTIONS="-l -i /etc/dkim.hosts"
Les paramètres de dk-filter, dans /etc/default/dk-filter, sont similaires,
à l'exception que tout est passé via les options, celui-ci n'utilise pas de
fichier de configuration.
DAEMON_OPTS="$DAEMON_OPTS -d <domain> -S <selector> -i /etc/dkim.hosts \
-s /etc/ssl/private/dkim_<domain>_<selector>.key"
SOCKET="inet:2506@localhost"
Puis les redémarrer :
# /etc/init.d/dkim-filter start
# /etc/init.d/dk-filter start
Reste enfin à utiliser ces milter au niveau de Postfix, pour cela ajouter les
directives suivantes au fichier /etc/postfix/main.cf :
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:2505 inet:localhost:2506
Et redémarrer Postfix :
# /etc/init.d/postfix restart
Un test basique de fonctionnement est alors d'envoyer un mail à destination
d'un domaine effectuant des vérifications DKIM, yahoo.com par exemple.
# nc 127.0.0.1 25 <<EOT
HELO localhost
MAIL FROM: root@<domain>
RCPT TO: <account>@yahoo.com
DATA
Subject: Test DKIM
.
QUIT
EOT
Les signatures DKIM et DomainKeys sont correctement vérifiées si l'en-tête
Authentication-Results contient dkim=pass et domainkeys=pass.
On peut également envoyer un mail à destination de son domaine, et vérifier que
l'en-tête Authentication-Results est bien ajoutée, et valide.
Commentaires
Bonjour
Mais si le même serveur envoi des mails pour différents domaines ?
Par exemple moi@domaine1.com et moi@domaine2.fr ?
Merci
Bonjour,
Il est possible de spécifier plusieurs domaines dans la configuration de DK ou DKIM. Du coup, la paire de clés sera identique pour tous les domaines (même enregistrement DNS, même clé privée).