Edit : suite au commentaire de Gaël & mon problème de double signature, sa solution est la bonne, je modifie l’article en conséquence.
Après mettre passé de Amavis/SpamAssasin à Dspam j’ai voulu ré-implémenter DKIM (que j’avais implémenté avec Amavis) cette fois-ci avec OpenDKIM :
Installation :
$ aptitude install opendkim $ mkdir -p /etc/dkim
Modification du fichier de config postfix (/etc/postfix/master.cf)
smtp inet n - - - - smtpd < -o content_filter=dspam: > -o content_filter=dspam: -o smtpd_milters=inet:127.0.0.1:8891
Modification de la configuration d’OpenDKIM (/etc/opendkim.conf) :
Socket inet:8891@localhost LogWhy yes MilterDebug 1 # Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) UMask 002 KeyTable /etc/dkim/KeyTable SigningTable /etc/dkim/SigningTable ExternalIgnoreList /etc/dkim/TrustedHosts InternalHosts /etc/dkim/TrustedHosts
Il faut maintenant générer les clefs & ce script va nous y aider :
#!/bin/bash # Script sous licence BEERWARE SELECTOR="mail" REPERTOIRE="/etc/dkim" DOMAINE=$1 USERDKIM="opendkim" GROUPDKIM="opendkim" if ! [ -d "${REPERTOIRE}" ] ; then echo "Le répertoire ${REPERTOIRE} n'existe pas." exit 1 fi if [ -z ${DOMAINE} ] ; then echo "Vous devez avoir renseigner le domaine en argument du script." exit 2 fi if [ -d "${REPERTOIRE}/keys/${DOMAINE}" ] ; then echo "Le répertoire ${REPERTOIRE}/keys/${DOMAINE} existe déjà... vous devez déjà avoir dû lancé le script." exit 3 else mkdir -p ${REPERTOIRE}/keys/${DOMAINE} fi opendkim-genkey -D ${REPERTOIRE}/keys/${DOMAINE} -r -d ${DOMAINE} -s ${SELECTOR} chown ${USERDKIM}:${GROUPDKIM} ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.private echo "${SELECTOR}._domainkey.${DOMAINE} ${DOMAINE}:${SELECTOR}:${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.private" >> ${REPERTOIRE}/KeyTable echo "${DOMAINE} ${SELECTOR}._domainkey.${DOMAINE}" >> ${REPERTOIRE}/SigningTable echo "${DOMAINE}" >> ${REPERTOIRE}/TrustedHosts if [ -f ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.txt ]; then cat ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.txt else echo "Une erreur s'est produite !" fi
Exemple d’utilisation du script :
$ ./addDkimKey.sh mercereau.info mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEOxRe2sVbsmDYbnB1pRWdx5U6FgZiwUKRl0gPFmsgPNA035P7gBLmhXrmALeJLZv0n7ARkStoIvl/ZNAbUep/YUgMynW5q2fsh4Pa/q82ocPKRKGLBYTxFDa+tyhG0oi5pzI6d37Ji9M40c5DgD/2QqTfyY5ywLqKG47+HuivJQIDAQAB" ; ----- DKIM mail for mercereau.info
Le script vous sort l’enregistrement DNS a ajouter pour terminer la configuration
On redémarre les services :
$ service opendkim restart $ service postfix restart
Et pour finir on test ici ou là.
Ce tuto à été très fortement inspiré par le tuto de isalo.org
Bonjour, doc sympa, l’essentiel est la, merci pour l’avoir partagée !
Pour votre soucis de double signature, ne serait-il pas possible de jouer sur la surcharge de configuration (-o smtpd_milters= ) pour activer/désactiver le milter sur le port utilisé pour la réinjection Dspam dans le fichier master.cf de Postfix ?
Personnellement, j’ai opté pour une configuration Postfix multi-instance pour solutionner élégamment ce genre de problèmes.
@Gael : Super merci, effectivement plus de problème de double signature DKIM en passant par le fichier master.cf (& du coup la bonne instance…) Je modifie l’article !
Perso en ajoutant l’option no_milters à -o receive_override_options suffit à régler le problème de la double signature via DSpam !
Merci pour l’article !