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

  1. Créer un répertoire pour les clés :
sudo mkdir -p /etc/opendkim/keys
  1. Générer la paire de clés (remplacez example.com par votre domaine et mail par 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 à publier
  • mail.private — la clé privée (à conserver secrète)
  1. 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

  1. 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.)

  1. 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
  1. 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
  1. 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

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

Démarrer et tester

  1. Redémarrer les services :
sudo systemctl restart opendkim
sudo systemctl restart postfix
  1. Vérifier que les deux services fonctionnent :
sudo systemctl status opendkim
sudo systemctl status postfix
  1. Envoyer un e-mail de test depuis le serveur :
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
  1. 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.log ou /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 !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter