DKIM est utilisé par de nombreux fournisseur de boites mails qui souhaitent vérifier que le serveur qui envoit un email proviant bien du serveur MX qui a été déclaré dans le DNS.
Pour ma part, j’ai plusieurs domaines hébergés sur la même IP et tous les domaines peuvent avoir leur enregistrement DKIM.
Ce tutorial a été réalisé sous Debian.
apt-get install opendkim
Tous les fichiers de configuration liés aux domaines seront placés dans le dossier /etc/opendkim qu’il faut créer :
mkdir /etc/opendkim/
Modification du fichier de configuration principal pour déclarer les fichiers dont nous aurons besoin :
vi /etc/opendkim.conf KeyTable /etc/opendkim/KeyTable SigningTable /etc/opendkim/SigningTable ExternalIgnoreList /etc/opendkim/TrustedHosts InternalHosts /etc/opendkim/TrustedHosts
Déclaration des domaines que j’héberge :
cat > /etc/opendkim/TrustedHosts << EOF mon_domaine_1.com mon_domaine_2.com mon_domaine_3.com EOF
Définition du port d’écoute 8891 pour le Dkim :
vi /etc/default/opendkim SOCKET="inet:8891:localhost"
Pour générer les clés pour tous les domaines et les placer dans le dossier, j’utilise une boucle for dans le shell :
for domain in mon_domaine_1.com mon_domaine_2.com mon_domaine_3.com do mkdir -p /etc/opendkim/keys/$domain cd /etc/opendkim/keys/$domain opendkim-genkey -r -d $domain chown opendkim:opendkim default.private done
Puis on définit le domaine DKIM pour chaque domaine. Le selector est donc default :
for domain in mon_domaine_1.com mon_domaine_2.com mon_domaine_3.com do echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable done
Déclaration des domaines validés toujours avec le même nom default :
for domain in mon_domaine_1.com mon_domaine_2.com mon_domaine_3.com do echo "$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable done
Dans le fichier de configuration de Postfix il faut définir le port d’écoute que l’on a choisit précédemment :
vi /etc/postfix/main.cf # Filtres DKIM milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891
Redémarrage des démons pour la prise en compte :
/etc/init.d/postfix restart /etc/init.d/opendkim restart
Sur l’outil de gestion des DNS, par exemple chez OVH, il faut définir les clés de vos domaines pour que la résolution DKIM fonctionne.
Pour chaque domaine, la clé publique a recopié dans le DNS se trouve dans :
cat /etc/opendkim/keys/mydomain.com/default.txt
Une fois dans le manager de votre DNS :
- création du champ TXT qui va contenir : _domainkey.mon_domaine_1.com. IN TXT « t=y; o=-; »
- création du champ DKIM : default._domainkey.mon_domaine_1.com. IN DKIM « v=DKIM1; g=*; k=rsa; p=contenu_cle_publique »
Refaite cette étape pour chacun de vos domaines !
Pour tester, je vous conseiller le site DkimCore qui vous permet de valider que la clé est bien accessible.