DKIMProxy vous permet de signer numériquement vos mails. Ce n’est pas une solution pour éviter la boite à Spam, mais elle permet de prouver au receveur que vous êtes bien l’émetteur de l’email. Yahoo! et Gmail utilise cette technologie depuis un petit moment et à été développé par Yahoo! à l’origine.
Installation des paquets
Commencez d’abord par installer les paquets de base. (PostFix doit déjà être installé).
# Si vous précisez uniquement les deux premiers # Apt-Get vous proposera d'installer le reste apt-get install dkimproxy libnet-dns-perl \ libcrypt-openssl-rsa-perl libmail-dkim-perl libmilter1.0.1 libio-stringy-perl
Apt-Get se charge d’installer les paquets et vous génère une clé publique par défaut. Tout est lancé et préconfiguré (plutôt succinctement).
Configuration de PostFix pour utiliser DKIMProxy
Rendez-vous dans le répertoire de configuration de PostFix.
cd /etc/postfix/
Configurez votre main.cf pour utiliser le Filter DKIMProxy.
nano /etc/postfix/main.cf # Si la clé de configuration content_filter n'est pas présente # Rajoutez-la. # On indique à PostFix de filtrer le contenu sur le port # 12028 en local. content_filter = dksign:[127.0.0.1]:12028
PostFix renverra à partir de maintenant tous les mails vers le service (défini dans master.cf) nommé dksign, sur le port 12028. Les crochets indiques à PostFix de ne pas faire de vérification MX.
Configuration du master.cf pour rajouter les filtres adéquates.
nano /etc/postfix/master.cf
# Rajout d'un filter en sortie
# Modifier le SMTP
smtp inet n - n - 250 smtpd
-o smtpd_proxy_ehlo=no
-o content_filter=dksign:[127.0.0.1]:12028
# Création du service dksign
# Rajoutez à la fin
dksign unix - - n - 10 smtp
-o smtp_send_xforward_command=no
-o content_filter=
# On souhaite accepter les messages venant de dksign
127.0.0.1:12029 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
Génération des clés
DKIM utilise une authentification par clé, il faut donc les créer à l’aide d’OpenSSL
cd /etc/dkimproxy/ mkdir keys/ cd keys/ openssl genrsa -out private.key 1024 openssl rsa -in private.key -out public.key -pubout -outform PEM # DKIMProxy doit pouvoir lire ces clés chown dkimproxy:dkimproxy *
Vos clés sont désormais prêtes, il faut ensuite ajouter les enregistrements TXT à votre serveur DNS.
Ajout des enregistrement DNS à votre serveur DNS
Pour fonctionner, le serveur de mail sur lequel vous envoyez votre mail interroge votre serveur DNS pour vérifier que la clé qu’il reçoit correspond bien à celle que vous avez déclarée.
Vous devez créer un enregistrement TXT de la forme [sélecteur]._domainkey.[votre_domaine.com]. Je n’ai jamais bien compris l’utilité du sélecteur, mais il servirait au cas où vous installeriez plusieurs serveurs de mail sur la même machine.
Dans notre cas, notre sélecteur sera postfix, mais vous pouvez utilisez « mail » si vous préférez. Notre enregistrement TXT sera donc, pour nous : postfix._domainkey.admin-serv.net.
Le format d’ajout du champ DNS est le suivant :
[sélecteur]._domainkey IN TXT "k=; t=; p= ;"
Dans notre exemple, notre clé privée est :
cat /etc/dkimproxy/keys/public.key -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCceTBoACziImQH/gzyuayV6XdN 2417hY5ThOL6YPTSXbAFcMDIPGJLqy9BnB5qXB9h0zJm5e5WqKxQmapNt6cLdU4N ExLc8fKENk2ohP7oOAM1emecr3xUXdmKNJqJ9MZ0s3C+OgbvdF3uAdznbO8yVBYI MxJP3xjC6OYsgZu41QIDAQAB -----END PUBLIC KEY----- # Notez qu'elle est wrappée. Vous devez donc la remettre en ligne.
Votre enregistrement TXT sera donc :
# Ajoutez une ligne précisant que votre domaine utilise DKIM # Le t=y est facultatif si vous savez ce que vous faites. postfix._domainkey.admin-serv.net IN TXT "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCceTBoACziImQH/gzyuayV6XdN2417hY5ThOL6YPTSXbAFcMDIPGJLqy9BnB5qXB9h0zJm5e5WqKxQmapNt6cLdU4NExLc8fKENk2ohP7oOAM1emecr3xUXdmKNJqJ9MZ0s3C+OgbvdF3uAdznbO8yVBYIMxJP3xjC6OYsgZu41QIDAQAB;" # Patientez un peu le temps que l'enregistrement # Soit pris en compte puis vérifiez. dig -t TXT postfix_domainkey.admin-serv.net # Si vous souhaitez précisez que votre domaine signe tous les mails # Vous pouvez aussi rajouter un enregistrement TXT supplémentaire # Par défaut, uniquement votre domaine _domainkey.admin-serv.net IN TXT "o=-"
Référence : RFC 4870
Configuration de DKIMProxy
Maintenant que tout est prêt, nous allons pouvoir configurer DKIMProxy pour signer vos emails sortant.
Rendez-vous dans le répertoire de configuration de DKIMproxy
cd /etc/dkimproxy/ nano dkimproxy_out.conf # Nous n'utilisons pas les ports par défaut listen 127.0.0.1:12028 # Nous avons spécifié un relay sur le port 12029 relay 127.0.0.1:12029 # Spécifiez le domaine que vous souhaitez signer domain admin-serv.net # Spécifiez les signatures à rajouter signature dkim(c=relaxed) signature domainkeys(c=nofws) # Indiquez l'emplacement de votre clé privée keyfile /etc/dkimproxy/keys/private.key # Votre sélecteur selector postfix
Redémarrez Postifx et DKIMProxy pour prendre en compte les modifications que nous venons de faire
# DKIMProxy /etc/init.d/dkimproxy restart Shutting down inbound DomainKeys-filter: dkimproxy.in. Shutting down outbound DomainKeys-filter: dkimproxy.out. Starting inbound DomainKeys-filter: dkimproxy.in. Starting outbound DomainKeys-filter: dkimproxy.out. # PostFix /etc/init.d/postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix.
Test de la signature des messages sortant
Tentez d’envoyer un mail depuis votre serveur afin de voir si celui-ci signe correctement les messages.
# Choisissez de préférence une adresse Gmail mail -s "Petit message de test voir si DKIM fonctionne" boris17480@gmail.com Ceci est un petit message de test. . Cc: # On va rapidement voir dans les logs cd /var/log/ tail -f mail.info # On aperçoit la ligne nous montrant que DKIM # Signe correctement les messages Nov 24 18:56:39 lucy dkimproxy.out[12097]: DKIM signing - signed; message-id=<20091124175639.04FD986F2@lucy.admin-serv.net>, signer=, from=
Le but d’avoir choisis une adresse Gmail est de pouvoir voir rapidement si oui, ou non, DKIM fonctionne bien.
Ouvrez la source du message et regardez dans les headers de votre mail la ligne de test effectuée par GMail
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of root@lucy.admin-serv.net designates 91.121.169.79 as permitted sender) smtp.mail=root@lucy.admin-serv.net; dkim=pass header.i=@admin-serv.net
Comme vous le voyez, nous avons réussi le test Gmail. Maintenant nous allons pouvoir effectuer un test sur Yahoo qui donne de bien plus jolie résultats
mail -s "Petit message de test voir si DKIM fonctionne chez Yahoo! " borispigeot@yahoo.fr Ceci est un petit message de test. . Cc:
Si vous voyez la petit serrure numérique, c’est que ça fonctionne chez eux.
Voilà, l’installation et la configuration est terminée, il ne vous reste plus qu’à regarder votre taux d’ouverture des messages. Bien que ça ne soit pas utilisé par la plupart comme AntiSpam, le fait d’avoir une signature prouve que l’administrateur du serveur fait ses efforts pour lutter, au mieux, contre le Spam et le Fishing.
No responses yet