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-filteretdk-filter:# aptitude install dkim-filter dk-filterAjouter dans le fichier
/etc/dkim-filter.confun 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>.keyEt en extraire la partie publique :
# openssl rsa -in /etc/ssl/private/dkim_<domain>_<selector>.key \ -pubout -outform PEMDans 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_filterdans/etc/default/dkim-filter. Le fichier/etc/dkim.hostscontient 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 startReste 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:2506Et redémarrer Postfix :
# /etc/init.d/postfix restartUn test basique de fonctionnement est alors d'envoyer un mail à destination d'un domaine effectuant des vérifications DKIM,
yahoo.compar exemple.# nc 127.0.0.1 25 <<EOT HELO localhost MAIL FROM: root@<domain> RCPT TO: <account>@yahoo.com DATA Subject: Test DKIM . QUIT EOTLes signatures DKIM et DomainKeys sont correctement vérifiées si l'en-tête
Authentication-Resultscontientdkim=passetdomainkeys=pass.On peut également envoyer un mail à destination de son domaine, et vérifier que l'en-tête
Authentication-Resultsest bien ajoutée, et valide.
Blog de Thomas Martin
Entries tagged "postfix".
DSPAM est un logiciel anti-spam pouvant aisément être utilisé comme agent
de livraison Postfix. Cela évite d'utiliser certains hacks, comme la
réinjection SMTP. Dans ce mode, DSPAM agit comme un relais qui accepte un mail
sur son entrée standard, le traite en fonction de votre configuration (ajout
d'en-têtes, préfixage de [SPAM] au sujet, etc), et le délivre à un agent de
livraison final (directiveTrustedDeliveryAgentdansdspam.conf).Pour cela il suffit d'ajouter une ligne de ce type à votre
master.cf:dspam unix - n n - 1 pipe flags=DORqhu user=dspam:mail argv=/usr/local/bin/dspam-wrapper --user ${recipient} --deliver=innocent,spamEt de positionner ensuite une directive
virtual_transport = dspam, dans le
cas de l'utilisation de comptes virtuels. Il est aussi possible de l'activer
seulement pour certains utilisateurs à l'aide de la tabletransport(5).Toutefois, pour que cela reste fiable, il est nécessaire que DSPAM retourne un
code d'erreur 75 (tempfail) en cas de soucis, afin que Postfix conserve
celui-ci en file d'attente. Sur ce point, la version courante de DSPAM (3.8.0)
souffre d'un bug génant : si l'agent de livraison final retourne un code
d'erreur, DSPAM ne retournera pas ce même code (contrairement à ce qui est
indiqué dans la sectionEXIT VALUEde la page de man), mais 255. Ce qui
entraîne une perte pure et simple du mail !En attendant, pour contourner ce problème, il est possible de mettre en place
un wrapper qui retournera le code 75 dans toutes les situations d'erreur.Exemple d'un fichier
dspam-wrapper:#!/bin/sh cat | /usr/local/bin/dspam $* || return 75
Archive
- 2010
- 2009
- 2008