Je ne vais pas décrire ce qu’est DKIM, ni à quoi ça sert, d’autres le font bien mieux que moi :
Blog Stéphane Bortzmeyer
Il s’agit juste d’un mémo expliquant comment signer les messages sortants, la vérification des mails entrants ne sera pas abordée ici, disons simplement qu’il existe des modules dans la plupart des antispam.
Je note juste ici un exemple de configuration avec dkim-filter et Postfix sur une Debian Squeeze.
On part d’un postfix bien configuré qui envoi directement ses mails sur Internet.
On commence par installer le paquet dkim-filter
apt-get install dkim-filter
Puis on créé un certificat qui va nous servir à signer les mails
mkdir /etc/postfix/dkim/ cd /etc/postfix/dkim/ openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key chmod 640 private.key chown dkim-filter private.key
On configure dkim-filter
/etc/default/dkim-filter :
SOCKET="inet:12345@localhost"
/etc/dkim-filter.conf
#On log les actions dans le syslog Syslog yes #Utile si vous passez par un socket UNIX UMask 002 #Les domaines à signer (on peut utiliser un fichier) Domain mondomaine.tld #La clef privée, s'il faut signer plusieurs domaines avec plusieurs clefs, #il faut utiliser le paramètre KeyList à la place de Domain/KeyFile et Selector KeyFile /etc/postfix/dkim/private.key #Le selector à utiliser pour vérifier la signature Selector monselector #La liste des domaines/ip à signer mais pas à vérifier InternalHosts /etc/postfix/dkim/InternalHosts.list #La liste des domaines/ip à ignorer (pas de signature ni de vérification) PeerList /etc/postfix/dkim/PeerList.list #On supprimes les anciennes signatures dans le message (en cas de relai) RemoveOldSignatures yes #Ces 2 paramètres peuvent être utile pour débugguer X-Header no LogWhy no
/etc/postfix/dkim/InternalHosts.list
127.0.0.0/8 192.168.1.0/24
/etc/postfix/dkim/PeerList.list
192.168.2.0/24
S’en est fini de la configuration de dkim-filter, il faut maintenant dire à postfix de l’utiliser :
/etc/postfix/main.cf
smtpd_milters = inet:localhost:12345 non_smtpd_milters = inet:localhost:12345
On relance les 2 daemons
/etc/init.d/dkim-filter restart /etc/init.d/postfix restart
et on test l’envoi de mails, normalement une signature devrait être présente dans l’entête des messages sortants du serveur.
Si c’est correct, on peut ajouter l’enregistrement DNS contenant la clef public
; DKIM du selector monselector pour le domaine mondomaine.tld monselector._domainkey.mondomaine.tld. IN TXT "v=DKIM1; k=rsa; p=Afd5g46fdg46fIGfM...9zwIDAQAB"
On peut alors tester en conditions réelles l’envoi de mails vers une domaine qui supporte la vérification DKIM (gmail par exemple)
S’il n’y a pas d’erreurs, on peut ajouter un enregistrement ADSP (Author Domain Signing Practices) dans les DNS, attention, l’enregistrement suivant indique que TOUS les messages non signés venant de mondomaine.tld doivent être jetés !!
; Politique DKIM pour mondomaine.tld _adsp._domainkey.mondomaine.tld. IN TXT "dkim=discardable"
Cette configuration ne doit pas être installée en production, elle est très incomplète et potentiellement dangereuse pour vos mails !!!
Il s’agit juste d’un mémo, pour le reste RTFM.