Archives par étiquette : postfix

DKIM – Signer ses mails

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.

sources :