Eclaircissement et simplification section config avec plusieurs clés privées + passage en méthode conseillée (comme avant)

This commit is contained in:
whirigoyen 2023-06-21 18:05:19 +02:00
parent 1acde63d3f
commit 18c5476741

View file

@ -46,7 +46,118 @@ Les options de configuration se combinent principalement sur deux modes :
* Pas de Domain, ni KeyFile, ni de Selector.
### Configuration avec une seule clé privée (conseillé)
### Configuration par adresse ou domaine d'expédition, avec plusieurs clés privées (conseillé)
Cette méthode est conseillée dans le cas où on gère de nombreux domaines.
Elle évite de devoir changer en une fois les enregistrement TXT de tous les domaines (ils contiennent les clés publiques) en cas en de génération d'une nouvelle clé privée.
~~~
# cat /etc/opendkim.conf
UserID opendkim:opendkim
Syslog yes
#SyslogSuccess yes
#LogWhy yes
UMask 007
InternalHosts /etc/opendkim/dkim.peers
Mode sv
OversignHeaders From
#DisableADSP true
Socket inet:8891@localhost
PidFile /var/run/opendkim/opendkim.pid
RemoveOldSignatures yes
SigningTable refile:/etc/opendkim/SigningTable
KeyTable refile:/etc/opendkim/KeyTable
~~~
Le fichier `KeyTable` définit les clés privées et leur sélecteur :
~~~
key1 example.com:key1_selector:/etc/ssl/private/dkim_example.com.key
key2 example.org:key2_selector:/etc/ssl/private/dkim_example.org.key
~~~
Un **sélecteur** est un mot clé qui sert aux clients à trouver le sous-domaine de l'enregistrement TXT qui contient la clé publique DKIM du domaine (via `<SELECTOR>._domainkey.example.com`).
Le fichier `SigningTable` indique quelle clé utiliser pour signer en fonction du champ `From:`.
Si on a plusieurs serveurs de messagerie (et donc plusieurs clé privées), des sélecteurs différents permettent d'avoir plusieurs clés publiques associées à un même domaine, dans des enregistrements TXT de différents sous-domaines.
~~~
*@example.com key1
*@example.org key2
~~~
Pour générer les clés, on utilise la commande :
~~~
# opendkim-genkey -h sha256 -b 4096 -D /etc/ssl/private/ -d example.com -s foo -v
opendkim-genkey: generating private key
opendkim-genkey: private key written to foo.private
opendkim-genkey: extracting public key
opendkim-genkey: DNS TXT record written to foo.txt
# mv /etc/ssl/private/foo.private /etc/ssl/private/dkim_example.com.key
# chown opendkim:opendkim /etc/ssl/private/dkim_example.com.key
# chmod 640 /etc/ssl/private/dkim_example.com.key
~~~
Il faut ensuite publier l'enregistrement DNS à partir du fichier `/etc/ssl/private/foo.txt` généré, en ajoutant la ligne suivante dans la zone DNS du domaine en question :
~~~
foo._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtdnoCyrwNyCAttQz0VaJq3cheWtki8KTfCwPu+QDcyv8IHLpQGK2UsEw03epEjTI/ijdyyVsElDPoqsCZ4+R3H5I41Vj8xcGLvqIaG3mbgOhcxuD+eEPR1K+JbSptwMiP/oja7VFyftQtx5XkQh8oj458WR/EE++SzjOGXOVmFYzf+LnNXJ/Rc0avAUPcTF1NmoU8IP52aKTvw"
"nrbPFhIPkUyIR1/5k+5h4ZJqY+2h+JqDuol0E73Yl79rsF5ycjwLtBCPsz80jzCpOF5YHkDx0CYPyTKoIA3eZlgOVSJPmDYUWCrj/9k2bL/nSL5EJoB/X/kQcLRTy83dqf+gzWd850yP9vpUQQ2d+Z1hdlAFvzVMboSNz12+au7kAglXmN47l9Z8igxVWJfl7BEsegQF8gYPB4yepSW3DtfxBC5zCjLYYN1xXabf3wZfeCF6yOoQk1C2yN"
"ThvBa4NyQDWizZGs4t9eHTR8QHMzJogPQQvyS45ILN1HHeikIQZP/lormmFQzq9X8sDGt4Edy8A3OMLjHom81tP6zxb4I8Pq0V4bEt4m4KA+K89A+b9cTD2Xr/wbqgQ1nwTcnEfGgBxbc3iRKkUnwhjeIocsxmwHqmDIVV8HKB5egUg8US/eo9al8w4JYEdzx9tETW/5dQOeLTMVw2N0/A7M9zVbBQEyuaMCAwEAAQ==" ) ; ----- DKIM key foo for example.com
~~~
On utilise le fichier `/etc/opendkim/dkim.peers` pour mettre la liste des adresses IP autorisées à envoyer des messages pour lesquels on va rajouter une signature DKIM (a priori des serveurs SMTP internes uniquement) :
~~~
127.0.0.1
::1
192.0.2.142
192.0.2.0/25
~~~
On ajuste les droits ainsi :
~~~
# chown -R opendkim:opendkim /etc/opendkim*
# chmod 640 /etc/opendkim.conf /etc/opendkim/*
# chmod 750 /etc/opendkim/
~~~
Et l'on peut enfin démarrer le démon :
~~~
# systemctl start opendkim
# opendkim -V | head -4
opendkim: OpenDKIM Filter v2.11.0
Compiled with OpenSSL 1.1.0f 25 May 2017
SMFI_VERSION 0x1000001
libmilter version 1.0.1
# systemctl status opendkim
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Docs: man:opendkim(8)
man:opendkim.conf(5)
man:opendkim-genkey(8)
man:opendkim-genzone(8)
man:opendkim-testadsp(8)
man:opendkim-testkey
http://www.opendkim.org/docs.html
Process: 13917 ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf (code=exited, status=0/SUCCESS)
Main PID: 13918 (opendkim)
Tasks: 6 (limit: 7372)
CGroup: /system.slice/opendkim.service
└─13918 /usr/sbin/opendkim -x /etc/opendkim.conf
~~~
### Configuration avec une seule clé privée
Générer une paire de clés avec le sélecteur `dkim-<SERVER_NAME>` (par exemple) dans le répertoire `/etc/opendkim/keys/` :
@ -124,112 +235,6 @@ Puis, ajouter le domaine à la liste `/etc/opendkim/domains_whitelist` et redém
~~~
### Configuration par adresse ou domaine d'expédition, avec plusieurs clés privées
~~~
# cat /etc/opendkim.conf
UserID opendkim:opendkim
Syslog yes
#SyslogSuccess yes
#LogWhy yes
UMask 007
InternalHosts /etc/opendkim/dkim.peers
Mode sv
OversignHeaders From
#DisableADSP true
Socket inet:8891@localhost
PidFile /var/run/opendkim/opendkim.pid
RemoveOldSignatures yes
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
~~~
Le fichier `SigningTable` contient la liste des domaines qui vont générer des signatures DKIM, et les sélecteurs associés.
Un **sélecteur** est un mot clé à choisir qui sera associé à la signature DKIM et servira notamment pour l'enregistrement DNS TXT qui stocke la clé publique.
Si l'on a plusieurs serveurs de messagerie, on pourra utiliser des sélecteurs différents, et donc des clés et un enregistrement DNS différents également.
~~~
*@example.com foo._domainkey.example.com
*@example.org bar2018._domainkey.example.org
~~~
Le fichier `KeyTable` contient les chemins vers les clés privées :
~~~
foo._domainkey.example.com example.com:foo:/etc/ssl/private/dkim_example.com.key
bar2018._domainkey.example.org example.org:bar2018:/etc/ssl/private/dkim_example.org.key
~~~
Pour générer les clés, on utilise la commande :
~~~
# opendkim-genkey -h sha256 -b 4096 -D /etc/ssl/private/ -d example.com -s foo -v
opendkim-genkey: generating private key
opendkim-genkey: private key written to foo.private
opendkim-genkey: extracting public key
opendkim-genkey: DNS TXT record written to foo.txt
# mv /etc/ssl/private/foo.private /etc/ssl/private/dkim_example.com.key
# chown opendkim:opendkim /etc/ssl/private/dkim_example.com.key
# chmod 640 /etc/ssl/private/dkim_example.com.key
~~~
Il faut ensuite publier l'enregistrement DNS à partir du fichier `/etc/ssl/private/foo.txt` généré, en ajoutant la ligne suivante dans la zone DNS du domaine en question :
~~~
foo._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtdnoCyrwNyCAttQz0VaJq3cheWtki8KTfCwPu+QDcyv8IHLpQGK2UsEw03epEjTI/ijdyyVsElDPoqsCZ4+R3H5I41Vj8xcGLvqIaG3mbgOhcxuD+eEPR1K+JbSptwMiP/oja7VFyftQtx5XkQh8oj458WR/EE++SzjOGXOVmFYzf+LnNXJ/Rc0avAUPcTF1NmoU8IP52aKTvw"
"nrbPFhIPkUyIR1/5k+5h4ZJqY+2h+JqDuol0E73Yl79rsF5ycjwLtBCPsz80jzCpOF5YHkDx0CYPyTKoIA3eZlgOVSJPmDYUWCrj/9k2bL/nSL5EJoB/X/kQcLRTy83dqf+gzWd850yP9vpUQQ2d+Z1hdlAFvzVMboSNz12+au7kAglXmN47l9Z8igxVWJfl7BEsegQF8gYPB4yepSW3DtfxBC5zCjLYYN1xXabf3wZfeCF6yOoQk1C2yN"
"ThvBa4NyQDWizZGs4t9eHTR8QHMzJogPQQvyS45ILN1HHeikIQZP/lormmFQzq9X8sDGt4Edy8A3OMLjHom81tP6zxb4I8Pq0V4bEt4m4KA+K89A+b9cTD2Xr/wbqgQ1nwTcnEfGgBxbc3iRKkUnwhjeIocsxmwHqmDIVV8HKB5egUg8US/eo9al8w4JYEdzx9tETW/5dQOeLTMVw2N0/A7M9zVbBQEyuaMCAwEAAQ==" ) ; ----- DKIM key foo for example.com
~~~
On utilise le fichier `/etc/opendkim/dkim.peers` pour mettre la liste des adresses IP autorisées à envoyer des messages pour lesquels on va rajouter une signature DKIM (a priori des serveurs SMTP internes uniquement) :
~~~
127.0.0.1
::1
192.0.2.142
192.0.2.0/25
~~~
On ajuste les droits ainsi :
~~~
# chown -R opendkim:opendkim /etc/opendkim*
# chmod 640 /etc/opendkim.conf /etc/opendkim/*
# chmod 750 /etc/opendkim/
~~~
Et l'on peut enfin démarrer le démon :
~~~
# systemctl start opendkim
# opendkim -V | head -4
opendkim: OpenDKIM Filter v2.11.0
Compiled with OpenSSL 1.1.0f 25 May 2017
SMFI_VERSION 0x1000001
libmilter version 1.0.1
# systemctl status opendkim
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Docs: man:opendkim(8)
man:opendkim.conf(5)
man:opendkim-genkey(8)
man:opendkim-genzone(8)
man:opendkim-testadsp(8)
man:opendkim-testkey
http://www.opendkim.org/docs.html
Process: 13917 ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf (code=exited, status=0/SUCCESS)
Main PID: 13918 (opendkim)
Tasks: 6 (limit: 7372)
CGroup: /system.slice/opendkim.service
└─13918 /usr/sbin/opendkim -x /etc/opendkim.conf
~~~
## Ajout dans Postfix
Pour configurer avec [Postfix](HowtoPostfix) on ajoute simplement les instructions suivantes dans le fichier `/etc/postfix/main.cf` :