Configurer OpenDKIM + Postfix sur Ubuntu
Configurer la signature DKIM pour améliorer la délivrabilité des e-mails.
DKIM (DomainKeys Identified Mail) est une méthode d'authentification des e-mails qui permet aux serveurs destinataires de vérifier que les messages proviennent bien de votre domaine et n'ont pas été altérés en transit. Une signature DKIM valide améliore considérablement les chances que vos e-mails arrivent en boîte de réception plutôt que dans le dossier spam, chez Gmail, Yandex, Outlook, Mail.ru et autres fournisseurs.
Ce guide explique comment configurer OpenDKIM avec Postfix sur Ubuntu — la méthode standard et la plus fiable pour signer les e-mails sortants depuis un VPS ou un serveur dédié.
Installer OpenDKIM
sudo apt update
sudo apt install opendkim opendkim-tools -y
Générer les clés DKIM
- Créer un répertoire pour les clés :
sudo mkdir -p /etc/opendkim/keys
- Générer la paire de clés (remplacez
example.compar votre domaine etmailpar le sélecteur de votre choix —dkim,2025,selector1, etc.) :
sudo opendkim-genkey -D /etc/opendkim/keys/ -d example.com -s mail
Après exécution, deux fichiers apparaîtront dans /etc/opendkim/keys/ :
mail.txt— l'enregistrement DNS TXT à publiermail.private— la clé privée (à conserver secrète)
- Définir les permissions :
sudo chown opendkim:opendkim /etc/opendkim/keys/*
sudo chmod 600 /etc/opendkim/keys/*
Publier l'enregistrement DNS TXT
Afficher l'enregistrement TXT :
cat /etc/opendkim/keys/mail.txt
Exemple de sortie :
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM+aKFwMV4FHLhghuhQs4vEIIIigO0KzRwQojURHI8QV0m/aHt6AqO2JDhXpl54d3uXJj7QWE9653McQZxPQZa6Hu34RY70ap9OZQ664fWeVuyUAZ+VeQ7gGXQBCxPF6nAlnBIsYak+KV/s1HtaUuySVMiwIDAQAB" )
Rendez-vous dans le panneau de gestion DNS de votre domaine et ajoutez un nouvel enregistrement TXT :
- Nom / Hôte : mail._domainkey
- Type : TXT
- Valeur : tout ce qui se trouve entre les parenthèses (sans les guillemets ni les sauts de ligne)
La propagation DNS prend généralement entre 5 et 60 minutes.
Configurer OpenDKIM
- Modifier le fichier de configuration principal :
sudo nano /etc/opendkim.conf
Assurez-vous que les lignes suivantes sont présentes (ou ajoutez-les) :
AutoRestart Yes
AutoRestartRate 10/1h
Umask 002
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:8891@localhost
(Le port 8891 est arbitraire — vous pouvez le modifier, à condition qu'il corresponde ensuite à la configuration Postfix.)
- Créer le fichier des hôtes de confiance (hôtes autorisés à envoyer des e-mails via OpenDKIM) :
sudo nano /etc/opendkim/TrustedHosts
Contenu :
127.0.0.1
localhost
example.com
*.example.com
- Créer le KeyTable (associe domaine/sélecteur à la clé privée) :
sudo nano /etc/opendkim/KeyTable
Contenu :
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/mail.private
- Créer le SigningTable (indique quel sélecteur utiliser pour quelles adresses) :
sudo nano /etc/opendkim/SigningTable
Contenu :
*@example.com mail._domainkey.example.com
Connecter OpenDKIM à Postfix
Modifier la configuration principale de Postfix :
sudo nano /etc/postfix/main.cf
Ajouter (ou compléter les lignes milter existantes) :
# OpenDKIM integration
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Nos produits et services
Démarrer et tester
- Redémarrer les services :
sudo systemctl restart opendkim
sudo systemctl restart postfix
- Vérifier que les deux services fonctionnent :
sudo systemctl status opendkim
sudo systemctl status postfix
- Envoyer un e-mail de test depuis le serveur :
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
- Ouvrir l'e-mail reçu → « Afficher l'original » (dans Gmail) et rechercher :
Authentication-Results: ... dkim=pass header.d=example.com ...
Si vous voyez dkim=pass, tout fonctionne correctement.
Remarques utiles
- Pour plusieurs domaines, ajoutez simplement des lignes supplémentaires dans KeyTable et SigningTable en suivant le même modèle.
- Pour une meilleure délivrabilité, configurez également les enregistrements SPF et DMARC.
- Logs pour le débogage :
/var/log/mail.logou/var/log/syslog(cherchez les entrées opendkim).
Aide
Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !