Beaucoup d'administrateurs de serveurs passent des heures à reparamétrer DKIM suite à un changement de serveur ou un upgrade. Les principales raisons que j'ai détectées sont:

  1. les logs systemd ne rapportent pas les erreurs correctement
  2. systemd override la conf initiale de opendkim
  3. si vous êtes amené à modifier la conf DNS il faut tenir compte des temps de propagation éventuels qui peuvent aller jusqu'à 48 heures et fait que les changements ne sont pas nécessairement actifs immédiatement.

Configuration DKIM sous DEBIAN-BUSTER/POSTFIX/BIND

Si vous avez un parefeu il risque de gêner la communication par socket. J'ai donc choisi la méthode "local"

Voici ma conf:

> nocomment.sh /etc/opendkim.conf
Syslog yes
UMask 0002
Domain webologix.com
KeyFile /etc/opendkim/private.key
Selector dkim
Canonicalization simple
Mode sv
> nocomment.sh /etc/default/opendkim
RUNDIR=/var/spool/postfix/var/run/opendkim
SOCKET=local:$RUNDIR/$NAME.sock"
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
> grep dkim /etc/bind/pri.webologix.com
dkim._domainkey IN TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5wWRerEFReOgPVfkKQEsToK76hAAWiWU0IhwTa2iKcvJPtmyNEDAkdcb/iiKYZYfNpxnt/UFVVKAZ6Zvnt0VXlg2lKSPsZT9pA2rpLI+/e5/y0kiytxXNofMmthZtlH5Tcma8L8nAKEsPd7YkfZ70SjiPHwnDYNHkT9/lnh1KdQIDAQAB;"
> grep milter /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 2
smtpd_milters = local:/var/spool/postfix/var/run/opendkim/opendkim.sock
non_smtpd_milters = local:/var/spool/postfix/var/run/opendkim/opendkim.sock
milter_content_timeout = 300s

Vérifiez bien que :

  1. le selector est le même dans /etc/opendkim.conf et /etc/bind/zone_dns_de_votre domaine
  2. le socket déclaré dans /etc/default/opendkim est le même que smpt_milters de /etc/postfix/main.cf
  3. la clé publique doit être copiée sur une seule ligne sans espaces dans votre /etc/bind/zone_dns_de_votre domaine

postionnez correctement les droits d'accès du RUNDIR déclaré dans opendkim:

> ll /var/spool/postfix/var/run/opendkim/
total 4
-rw-rw---- 1 postfix root 5 avril 13 12:46 opendkim.pid
srwxrwxr-x 1 postfix root 0 avril 13 12:46 opendkim.sock

 

ATTENTION : systemd repositionne les droits d'accès des sockets:

> ll /var/spool/postfix/var/run/opendkim/
total 4
-rw-rw---- 1 postfix root 5 avril 13 12:46 opendkim.pid
srwxrwxr-x 1 postfix root 0 avril 13 12:46 opendkim.sock
> systemctl restart opendkim
> ll /var/spool/postfix/var/run/opendkim/
total 4
-rw-rw---- 1 root root 5 avril 13 12:54 opendkim.pid
srwxrwxr-x 1 root root 0 avril 13 12:54 opendkim.sock

 

Test

Le meilleur test que j'ai trouvé est basé sur l'envoi d'un mail (certaines plateformes valideront votre enregistrement DKIM d'après les clés publiées sur votre DNS mais ce n'est as suffisant pour garantir la signature):

https://dkimvalidator.com

Une commande pour vérifier la présence de votre clé publique sur votre serveur DNS:

> dig TXT dkim._domainkey.example.com. @votre.serveur.DNS.primaire doit donner quelquechose de la forme:

~$ dig TXT dkim._domainkey.webologix.com. @ks307144.kimsufi.com

; <<>> DiG 9.16.1-Ubuntu <<>> TXT dkim._domainkey.webologix.com. @ks307144.kimsufi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60025
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: b23c01821a0a982ba69c1faa6075a186921b9a37c2ccdf84 (good)
;; QUESTION SECTION:
;dkim._domainkey.webologix.com. IN      TXT

;; ANSWER SECTION:
dkim._domainkey.webologix.com. 3600 IN  TXT     "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5wWRerEFReOgPVfkKQEsToK76hAAWiWU0IhwTa2iKcvJPtmyNEDAkdcb/ii
KYZYfNpxnt/UFVVKAZ6Zvnt0VXlg2lKSPsZT9pA2rpLI+/e5/y0kiytxXNofMmthZtlH5Tcma8L8nAKEsPd7YkfZ70SjiPHwnDYNHkT9/lnh1KdQIDAQAB;"

;; AUTHORITY SECTION:
webologix.com.          3600    IN      NS      ns.kimsufi.com.
webologix.com.          3600    IN      NS      ks307144.kimsufi.com.

;; Query time: 32 msec
;; SERVER: 94.23.227.123#53(94.23.227.123)
;; WHEN: mar. avril 13 15:49:58 CEST 2021
;; MSG SIZE  rcvd: 373