Config OpenDKIM et Postfix sous Debian

Voici un article pour aider les gens sous Debian (Jessie ou autre) à installer une config OpenDKIM qui fonctionne avec postfix, car la FAQ officielle sur le wiki Debian ne permet pas, si on la suit a la lettre ,d’avoir une config qui marche. Elle omet aussi de parler de certaines options.

apt-get install opendkim opendkim-tools
mkdir /etc/postfix/dkim/

Nous faisons une configuration qui permettra de signer plusieurs domaines de courriers sortant, raison pour laquelle je crée des configs “multiples” même si je ne génère ici qu’une seule clé.

opendkim-genkey -D /etc/postfix/dkim/ -d example.com -s mail

(Le mot “mail” n’est pas une option ; c’est juste le nom des fichiers qui sera créé “mail.private” et “mail.txt” ! Cet exemple est trompeur mais je le garde quand même pour la brièveté du nom. )

Vous devez ensuite ajouter la clé qu’on vient de générer ( /etc/postfix/dkim/mail.private) dans le record DNS du domaine “example.com”

mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=LECONTENUDUMAIL.PRIVATE"

Remarquez le mot “mail” qui renvoie à notre clé. On peut aussi ajouter cette ligne, qui dit en substance que seul le mail signé devra être accepté.

_adsp._domainkey 3600 IN TXT "dkim=all"

Ensuite ajoutez ceci à la fin de /etc/opendkim.conf

Mode sv

KeyTable file:/etc/postfix/dkim/keytable
 SigningTable file:/etc/postfix/dkim/signingtable

ExternalIgnoreList file:/etc/postfix/dkim/TrustedHosts
 InternalHosts file:/etc/postfix/dkim/TrustedHosts

Canonicalization relaxed/simple
 SignatureAlgorithm rsa-sha256
 LogWhy Yes
 SyslogSuccess Yes

Les fichiers keytable et signingtable doivent être créés : ils configurent quels “domaines” sortants seront signés, et comment. Le premier dit simplement quel(s) domaine(s) signer

  •  /etc/postfix/dkim/signingtable
    example.com mail._domainkey.example.com
  •  /etc/postfix/dkim/keytable
    mail._domainkey.example.com example.com:mail:/etc/postfix/dkim/mail.private

Le fichier Keytable fait donc la jonction entre une entrée DNS et la clé privée.

Le fichier TrustedHosts (qui doit être créé aussi) précise de quels hosts le mail doit être signé (si votre postfix est un relay, il ne signera pas défaut que le mail qu’il émet en local, pas le mail qu’il relaye ! Debian ne parle absolument pas de ce fichier dans son exemple)

  • /etc/postfix/dkim/TrustedHosts
    127.0.0.1
    ::1
    votremailserver.example.com

J’ai changé la Canonicalization : sans cela, le mail sortant est systématiquement en “dkim=fail” sur Gmail. J’ai également ajouté du logging supplémentaire.

Le fichier /etc/default/opendkim, vous ajoutez à la fin ;

SOCKET=”inet:8891@localhost”

Et dans /etc/postfix/main.cf, vous ajoutez à la fin

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

Ensuite, un peu de ménage de permissions

chgrp opendkim /etc/postfix/dkim/ *
chmod g+r /etc/postfix/dkim/ *

Et enfin,

  • service opendkim restart
  • service postfix restart

Et vous devriez être parés 🙂

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *