Opendkim

De wiki.debian-fr.xyz
Aller à : navigation, rechercher

Voici une proposition pour identifier ses mails avec le principe DKIM (Domain Key Identified Mail : Courriel au domaine identifié par clé), afin de ne plus être considéré comme potentiel spammeur. (plus d'infos sur Wikipedia. Cela se fera avec opendkim, dont les dépendances sont moins lourdes que d'autres outils.

Installation des paquets

Tout simplement :

 apt-get install opendkim opendkim-tools

Création d'une clé

Nous allons créer les clés dans un répertoire fait exprès pour. Par exemple, nous allons créer /etc/dkim :

 mkdir -p /etc/dkim

Générons les clés dans ce répertoire :

 opendkim-genkey -D /etc/dkim/ -d votreDomaine.net -s mail

Vous pouvez voir dans ce répertoire 2 fichiers : mail.private et mail.txt

On rend l'utilisateur "opendkim" propriétaire de ce répertoire :

 chown opendkim:opendkim -R /etc/dkim

Configuration d'opendkim

Edition de /etc/opendkim.conf

Pour un domaine unique

Ajouter à la fin du fichier "/etc/opendkim.conf" les lignes suivantes :

 UserID opendkim:opendkim
 Domain		votreDomaine.net
 KeyFile		/etc/dkim/mail.private
 Selector		mail
 AutoRestart		yes
 DNSTimeout              5

Pour du multi-domaine

Ça se complique un peu, pour chaque domaine il est préférable de générer une paire de clé différente et de les classer dans des répertoires séparés, par exemple :

/etc/dkim/keys/<domaine.tld>/

Ajouter à la fin du fichier "/etc/opendkim.conf" ajouter les lignes suivantes :

KeyTable           /etc/dkim/KeyTable
SigningTable       /etc/dkim/SigningTable
ExternalIgnoreList /etc/dkim/TrustedHosts
InternalHosts      /etc/dkim/TrustedHosts

Les 3 fichier vont lier les domaines à signer avec les clés de signature :

  • TrustedHosts = Liste les domaines à signer
  • SigningTable = Donne la correspondance entre les domaines et les selectors
  • KeyTable = Donne la correspondance entre les selectors et les clés à utiliser
Automatisation

Pour vous simplifier la tâche voilà un script simple permettant la génération des clés et la création des fichiers de configuration.

selector=mail
repertoire=/etc/dkim
domaines=(domain1.tld domaine2.tld)

for domaine in $domaines; do
  mkdir -p $repertoire/keys/$domaine
  opendkim-genkey -D $repertoire/keys/$domaine -r -d $domaine -s $selector
  chown opendkim:opendkim $repertoire/keys/$domaine/$selector.private
  echo "$selector._domainkey.$domaine $domaine:$selector:$repertoire/keys/$domaine/$selector.private" >> $repertoire/KeyTable
  echo "$domaine $selector._domainkey.$domaine" >> $repertoire/SigningTable
  echo "$domaine" >> $repertoire/TrustedHosts
done

Edition de /etc/default/opendkim

Il faut que postfix et opendkim puissent communiquer. On ajoute alors dans /etc/default/opendkim ceci :

 SOCKET="inet:8891:localhost"

Configuration de postfix

Indiquons à postfix qu'il doit signer les mails avec opendkim. Pour cela, ajouter dans /etc/postfix/main.cf :

 # DKIM
 milter_default_action = accept
 milter_protocol = 2
 smtpd_milters = inet:localhost:8891
 non_smtpd_milters = inet:localhost:8891

Configurer les DNS

On y est presque! Il faut configurer aussi vos champs DNS. Je ne traite ici que le cas des DNS externes. Ajouter un champ DKIM ou TXT dans lequel sera mis le contenu du fichier /etc/dkim/mail.txt de la façon suivante :

  • Nom de domaine : mail._domainkey.votreDomaine.net
  • Contenu : v=DKIM; k=rsa; p=........

Finalement...

On redémarre les services :

 service opendkim restart
 service postfix restart

Tester si ça marche

Sur cette page, une adresse mail vous est donnée. Envoyez-lui un mail. Quelques minutes plus tard, vous recevrez une réponse, dans laquelle vous devriez voir :

 ============================================================
 DKIM result: pass
 ============================================================

Dans le mail vous trouverez aussi des infos sur  :

  • SPF est une autre méthode (simpliste) de vérification de la légitimité du serveur expéditeur.
  • DomainKey qui est le prédécesseur de DKIM, initié par Yahoo

Voir aussi