Introduction
Afin d’éviter de voir finir ses e-mails dans le dossier de spam, il peut être intéressant de mettre en place un DKIM dans ses e-mails.
DKIM ou DomainKeys Identified Mail est une méthode d’authentification des e-mails. Cette méthode permet de signer un e-mail avec un identifiant de domaine émetteur, utile pour savoir qui est responsable de l’envoi en cas de réclamations. Vous trouverez plus d’informations sur le DKIM sur la page Wikipedia disponible à cette adresse.
Cet article a pour but d’introduire l’installation d’OpenDKIM et sa configuration. Cet article n’est pas exhaustif sur les paramètres de configuration du service, il vous appartient de vérifier la cohérence de la configuration avec votre système.
Pré-requis
L’un des pré-requis essentiel est de conserver son système le plus à jour possible.
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l’impact de vos actions.
Mise en place
Installation d’OpenDKIM
- Tout d’abord installations OpenDKIM
Configuration d’OpenDKIM
La configuration d’OpenDKIM s’effectue au travers de deux fichiers : /etc/opendkim.conf et /etc/default/opendkim.
/etc/opendkim.conf
Le fichier principal de configuration d’OpenDKIM.
- Ouvrir le fichier
- Ajouter les lignes suivantes au fichier /etc/opendkim.conf, si certaines sont déjà présentes les commenter pour éviter tout problème
Voici les différents paramètres :
AutoRestart | Redémarrer automatiquement le service en cas d’erreur. |
AutoRestartRate | Le nombre de redémarrage maximum dans un temps donné. Par exemple, dix redémarrages par heure : 10/1h. |
UMAsk | Accorder les permissions totales pour l’utilisateur défini par son userID, et accorder des permissions en lecture et exécution pour les autres utilisateurs. |
Syslog / SyslogSuccess / LogWhy | Activer les journaux détaillés pour le service. |
Canonicalization | La mise en forme canonique des messages de log. |
ExternalIgnoreList | Les hôtes externes autorisés à envoyer des e-mails depuis ce serveur sans authentification. |
InternalHosts | Les hôtes internes pour lesquels les e-mails sortants doivent être signés. |
KeyTable | Assure la liaison des noms de clés avec les fichiers de clé. |
SigningTable | La liste des signatures qui seront utilisées pour un message. Le choix se base sur l’adresse expéditrice. |
Mode | Le mode opératoire d’OpenDKIM. (s) signature et (v) vérification. |
PidFile | Emplacement du fichier de pid contenant l’identifiant processus du service. |
SignatureAlgorithm | L’algorithme de chiffrement choisi pour encoder les signatures. |
UserID | L’utilisateur et son groupe qui exécutera le service OpenDKIM |
Socket | Le port d’écoute sur lequel Postifx et OpenDKIM échangeront les messages. Pour écouter en local sur le port 17789: 17789@localhost. |
Ceci est une configuration d’exemple, vous devez faire correspondre les paramètres à votre configuration actuelle et selon les besoins. Vous trouverez plus d’informations à propos du fichier de configuration d’OpenDKIM à cette adresse.
/etc/default/opendkim
- Ouvrir le fichier
- Ajouter la ligne suivante
Il faut modifier le port si celui-ci est différent dans le fichier de configuration précédent. Il faut être attentif sur le port défini précédemment afin de conserver le même à travers les différents fichiers de configuration.
Configuration de Postfix
- Editer le fichier de configuration de Postifx
- Vérifier que les lignes suivantes sont présentes et dé-commentées
- Si des filtres anti-spam sont installés il faut ajouter OpenDKIM à la liste
- Sinon ajouter OpenDKIM
Création des dossiers
Nous allons à présent créer les dossiers qui vont contenir toutes les données d’OpenDKIM comme les hôtes, les signatures, etc.
- Créer la structure
Autoriser les hôtes
Nous allons maintenant spécifier les hôtes autorisés à signer les e-mails avec OpenDKIM.
- Nous pouvons, afin de déclarer les domaines, utiliser des wildwards (*)
Ce fichier est un exemple de configuration pour le domaine *.example.tld
- Enregistrer et fermer le fichier TrustedHosts
Dictionnaire de clés
Le fichier dictionnaire est là pour assurer la liaison de chaque domaine à sa clé correspondante.
- Ajouter la ligne suivante
Dans cet exemple, le domaine example.tld devra aller chercher sa clé dans /etc/opendkim/keys/example.tld/mail.private
Il est important que vous adaptiez cette configuration à votre domaine.
Dictionnaire de signature
Le fichier dictionnaire de signature est là pour assurer la liaison de chaque adresse e-mail vers son domaine correspondant.
- Ajouter la ligne suivante ( l’utilisation des wildcards est autorisée )
Dans cet exemple les adresse en @example.tld devront être redirigées vers le sélecteur mail._domainkey.example.tld.
Il est important que vous adaptiez cette configuration à votre domaine.
Génération des clés publiques et privées
Nous allons à présent générer nos paires de clés publiques et privées.
- Se déplacer dans le dossier qui recevra les clés
- Créer un dossier pour notre nouveau domaine example.tld
- Se déplacer dans le dossier du domaine
- Générer les clés pour notre domaine example.tld
L’option -s permet de spécifier un sélecteur et -d le domaine. Cette commande va créer deux fichiers mail.private la clé privée et mail.txt la clé publique.
- Changer le propriétaire de la clé privée
Ajout des clés publiques aux enregistrements DNS
Nous possédons à présent nos clés publiques, nous devons maintenant les ajouter dans les enregistrements DNS.
- Récupérons notre clé publique
Vous devriez récupérer une ligne semblable à cette ligne d’exemple :
- Copier la clé, la partie “v=DKIM1 … +iGY”, dans notre exemple
- Ajouter un enregistrement DNS TXT contenant la clé
La propagation DNS peut prendre quelques heures pour être effective ( de 24h à 48h ).
- Redémarrer les services Postfix et OpenDKIM
Conclusion
L’utilisation d’OpenDKIM est maintenant effective pour les e-mails envoyés depuis les adresses du domaine @example.tld
Cet article n’est pas exhaustif sur la configuration d’OpenDKIM, il convient d’adapter ces exemples avec la configuration de votre serveur.