Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-selfhosting:mta-mda:dkim

DKIM

Avec Rspamd

Avec OpenDKIM

Installation

apt install opendkim opendkim-tools

Configuration

S'assurer de la présence des répertoires suivants, sinon les créer et leur donner les droits corrects :

mkdir -p /etc/opendkim/keys
chmod 700 /etc/opendkim/keys
chmod opendkim:opendkim -R /etc/opendkim

opendkim.conf

/etc/opendkim.conf
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
UserID                 opendkim:opendkim
Socket                 inet:8892@localhost
UMask                  0002

Syslog                 yes
SyslogSuccess          yes
LogWhy                 yes

Canonicalization       relaxed/simple
SignatureAlgorithm     rsa-sha256
OversignHeaders        From
RemoveOldSignatures    yes
  • Le mode s permet de signer les messages sortants.
  • Le mode v permet de vérifier les messages entrants.
  • Canonicalization : Règle de niveau de tolérance de la lecture des domaines. Le mode par défaut est simple. L'autre mode est relaxed. On peut mettre deux valeurs séparées par un slash, ce qui signifie les modes appliqués au header / et au body
  • SignatureAlgorithm : Algorithme de chiffrage utilisé. Le défaut est RSA-SHA-1 mais il est préférable d'utiliser RSA-SHA256

TrustedHosts

Créer les fichiers :

/etc/opendkim/TrustedHosts
127.0.0.1
localhost

192.168.0.1/24
*.domain.tld

Adapter à votre config : l'IP LAN + la liste complète des domaines à gérer

KeyTable

/etc/opendkim/KeyTable
default._domainkey.domain.tld domain.tld:mail:/etc/opendkim/keys/domain.tld/default.private
  • domain.tld : Domaine a configurer
  • default : Nom de la clé. On peut la changer si besoin ou en mettre plusieurs selon le(s) expéditeurs concerné(s)
  • Une ligne par clé, évidemment

SigningTable

/etc/opendkim/SigningTable
*@domain.tld default._domainkey.domain.tld
  • domain.tld : Domaine a configurer
  • default : Nom de la clé (le même qu'au dessus)
  • On peut utiliser un joker, mais aussi des expéditeurs précis
  • Une ligne par paire expéditeur(s)/clé, évidemment

Création d'une paire de clés DKIM

On créé le répertoire portant le nom du domaine :

mkdir /etc/opendkim/keys/example.tld
cd /etc/opendkim/keys/example.tld

et on utilise l'outil idoine :

opendkim-genkey -h sha256 -b 4096 -d domain.tld -s default -v
  • -h : Algorithme de chiffrement (il faut garder sha256 pour le moment, car ECDSA n'est pas encore supporté par tous les serveurs SMTP tiers qui vérifieront votre clé)
  • -b : Nombre de bits de la clé à générer
  • -d : Domaine
  • -s : Nom de la clé
  • -v : Verbose

Cette commande va créer deux fichiers :

  1. default.private : la clé privée
  2. default.txt : la clé publique (DNS)

Tout d'abord on donne les bons droits à la clé privée :

chmod 600 default.private && chown opendkim:opendkim default.private

L'autre fichier, lui, contient l'enregistrement DNS à appliquer sur le domaine concerné :

/etc/opendkim/keys/domain.tld/default.txt
default._domainkey	IN	TXT	( "v=DKIM1; h=sha256; k=rsa; "
	  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3F9cyVCFx8na1GTzGAJfsl3KupDUhwp8GFqre77HPsE3Zmp+o9Ze1b916g3q6Xcggrk6qot91O9/8IubRheFIvUVZWFt05YeK6bbX5gLDattfgyC4VUHY3ZJzIAAH/S2x4ZfMpo0HpVTgxb7VJEHTlbnyNrXOEd3jxzzE5xKrV4hQG8y9oXYGn9Acolz5E6BBC8j7qid8/TtSq"
	  "wH3p9Gu+M1Zn5Ajjm+NM5hhtQUF3Xt3QGjh673yJS1iZl30/vINCMvnc0AZpyndWv5BhnGRV60FKEvozuBL5pUuK1Mt4f0fPZursfDwEpGW8wQ1rKKzLTZ68VrIOxZMyffyI18ywIDAQAB" )  ; ----- DKIM key default for domain.tld

Pour bind, les 3 lignes peuvent êtres fusionnées en une, à condition de ne pas retirer les guillemets.

Application de la configuration pour postfix

Editer la conf de postfix et prendre en compte ces paramètres :

smtpd_milters = inet:127.0.0.1:8892
non_smtpd_milters = inet:127.0.0.1:8892
milter_protocol = 2
milter_default_action = accept
in_flow_delay = 0s
  • Ce milter permet d'ajouter à la volée le header DKIM-Signature à tous les messages sortants (option s d'openDKIM)
  • Cela permet également de vérifier les signatures du courrier entrant (option v d'openDKIM)

Finalisation

On va régler le service opendkim à attendre 5 secondes avant de redémarrer Il faut créer un fichier override pour systemd :

/etc/systemd/system/opendkim.service/override.conf
[Service]
RestartSec=5s

puis

systemctl daemon-reload

Ne pas oublier de démarrer/redémarrer les services opendkim et postfix

systemctl restart opendkim.service postfix.service
it/linux-selfhosting/mta-mda/dkim.txt · Dernière modification : 20 Nov 2023 :: 09:59 de CgX