Tutoriel : signer ses e-mails avec DKIM
La lutte contre le spam engendre des dommages collatéraux. Même si un e-mail que l'on expédie peut nous sembler sain, cela arrive parfois qu'il soit directement placé dans le dossier des indésirables de notre correspondant. Pour limiter cela, et dans le cas où vous gérez votre propre serveur, je vous propose d'installer DKIM.
Signer ses e-mails automatiquement
Il ne faut pas considérer DKIM (DomainKeys Identified Mail) comme une arme absolue pour passer tous les filtres anti-spam mais comme un outil supplémentaire pour montrer vos bonnes intentions.
Avant de commencer l'installation de DKIM, vérifiez que votre serveur est à jour :
$ aptitude update && aptitude upgrade
Comme d'habitude, vous ouvrez une connexion SSH et on commence par installer DKIM et ses outils :
$ aptitude install opendkim opendkim-tools
Nous pouvons passer à la configuration qui est au final assez light. Ouvrez le fichier suivant :
$ nano /etc/opendkim.conf
Et insérez les lignes suivantes en bas du fichier :
AutoRestartRate 10/1h Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple # Emplacement des fichiers ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable # Autres infos Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:PORT_DKIM@localhost
Enregistrez le fichier et ouvrez le suivant :
$ nano /etc/default/opendkim
On y indique le socket utilisé par DKIM :
SOCKET="inet:PORT_DKIM@localhost"
On enregistre et on créé le dossier qui contiendra les clés privées (une par nom de domaine) :
$ mkdir -p /etc/opendkim/keys
Enregistrez le fichier et ouvrez celui qui contiendra les infos de notre Host :
$ nano /etc/opendkim/TrustedHosts
Voici la configuration à mettre en place :
127.0.0.1 localhost 3_PREMIERS_BLOCS_IP_DU_SERVEUR.1/24
Enregistrez le fichier. DKIM fonctionne avec Postfix. Il nous faut donc modifier le fichier de configuration de ce dernier :
$ nano /etc/postfix/main.cf
Et ajoutez tout en bas :
# DKIM milter_protocol = 6 milter_default_action = accept smtpd_milters = inet:localhost:PORT_DKIM non_smtpd_milters = inet:localhost:PORT_DKIM
Redémarrez Postfix :
$ service postfix restart
DKIM utilise un port spécifique, il faut donc l'autoriser dans notre firewall :
$ nano /etc/init.d/firewall
Vous ajoutez les lignes suivantes :
# DKIM iptables -t filter -A INPUT -p tcp --dport PORT_DKIM -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport PORT_DKIM -j ACCEPT
Après avoir enregistré le fichier, il faut redémarrer le firewall pour la prise en compte :
$ /etc/init.d/firewall stop
$ /etc/init.d/firewall start
Nous en avons terminée avec l'installation et la configuration de DKIM.
Ajouter DKIM à un nom de domaine
On peut à présent ajouter l'ensemble des noms de domaine gérés sur le serveur. On commence par ouvrir le fichier suivant :
$ nano /etc/opendkim/TrustedHosts
En bas, ajoutez la ligne suivante (à répéter pour chaque domaine) :
*.DOMAINE1.COM
Enregistrez le fichier et ouvrez le suivant pour la configuration des clés privées :
$ nano /etc/opendkim/KeyTable
Et insérez la ligne comme suit :
mail._domainkey.DOMAINE1.COM DOMAINE1.COM:mail:/etc/opendkim/keys/DOMAINE1.COM/mail.private
Enregistrez à nouveau le fichier et ouvrez celui des infos de signature :
$ nano /etc/opendkim/SigningTable
Copiez la ligne suivante :
*@DOMAINE1.COM mail._domainkey.DOMAINE1.COM
Après avoir sauvegardé le fichier, nous allons créer le dossier pour notre premier domaine. On se déplace dans le dossier qui contiendra les clés privées des domaines :
$ cd /etc/opendkim/keys
On créé notre dossier et on s'y place à l'intérieur :
$ mkdir DOMAINE1.COM && cd DOMAINE1.COM
On créé la clé privée avec la commande suivante :
$ opendkim-genkey -s mail -d DOMAINE1.COM
On met les bons droits à notre clé, ceux de DKIM :
$ chown opendkim:opendkim mail.private
Il faut maintenant récupérer la clé publique en exécutant la commande suivante :
$ cat mail.txt
Copiez le résultat et mettez le au chaud, nous en aurons besoin pour l'insérer dans le fichier de configuration de DNS de notre domaine :
$ nano /etc/bind/db.DOMAINE1.COM
Modifiez la ligne suivante :
2015020901 // A incrémenter d'un chiffre à chaque modif
Et copiez tout en bas le résultat de votre clé publique (pour l'exemple, j'ai tronqué la mienne) :
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCi66..."
Enregistrez le fichier et redémarrez tous les services :
$ service opendkim restart
$ service bind9 restart
Il suffit maintenant d'attendre la propagation des DNS avant de tester le bon fonctionnement. Pour ce faire, rendez-vous sur le site http://www.mail-tester.com/. Copiez l'adresse e-mail contenue dans le champ à fond blanc et, sans fermer ni rafraichir la page, envoyez un e-mail à cette adresse. Retournez ensuite sur le site et cliquez sur le bouton bleu :
Si le test est OK, vous devriez avoir un message aussi sympa que celui-ci :
Voilà, vous êtes prêts à envoyer des mails avec une jolie signature. A noter que cet outil permet également de tester vos newsletters. C'est toujours bon à savoir car par exemple, l'oubli d'un simple attribut ALT sur une image ou une redirection sur un lien de tracking diminue votre score.
Amusez-vous bien. ;)
2 réflexions sur ce billet
Le 10/10/2015 à 05h57
Bonjour,
Merci beaucoup pour votre travail, encore un très bon tuto.
Petite question. Vous indiquez dans la première partie du tutoriel d'ajouter
127.0.0.1localhost3_PREMIERS_BLOCS_IP_DU_SERVEUR.1/24 dans le fichier /etc/opendkim/TrustedHosts
Voila ma question. Faut-il mettre la ligne comme vous l'indiquer donc sans espace
127.0.0.1localhost3_PREMIERS_BLOCS_IP_DU_SERVEUR.1/24 ou avec des espaces
127.0.0.1 localhost 3_PREMIERS_BLOCS_IP_DU_SERVEUR.1/24
Merci pour votre réponse
Cordialement
Le 10/10/2015 à 08h43
Bonjour Sébastien
Il faut bien entendu indiquer les espaces. J'ai corrigé le tutoriel. ;)
La création de site Internet sur mesure est le coeur de métier de l'agence web Infini'click.
D'autres prestations sont également proposées, découvrez-les !
- Tutoriel : installer un serveur Debian (wheezy)
- Tutoriel : Installer un certificat SSL
- Piwik : monitorez tous vos sites discrètement
- Tutoriel Paypal : Intégration et configuration du paiement en ligne
- Tutoriel PayPlug : intégration au panier d'achat
- Référencement des images : l'état de l'art
- Des onglets en CSS avec JQuery
- Gildas le 04/03/2022 à 18:00
Nop j'ai que le require('fpdf.php) ; Mais pas... - Hervé le 04/03/2022 à 17:58
Gildas Tu n'appelles pas de fichier externe via un... - Gildas le 04/03/2022 à 17:50
merci de ton retour rapide, effectivement dans ma... - Hervé le 04/03/2022 à 17:45
Bonjour Gildas Effectivement, 8 ans ça fait un bail.... - Gildas le 04/03/2022 à 17:37
Bonjour Hervé, Bon j'arrive 8 ans après la... - Olivier le 16/01/2022 à 23:09
C'est clair que les actions réalisées ne correspondent...