Eclaircissement et simplification section config avec plusieurs clés privées + passage en méthode conseillée (comme avant)
This commit is contained in:
parent
1acde63d3f
commit
18c5476741
219
HowtoOpenDKIM.md
219
HowtoOpenDKIM.md
|
@ -46,7 +46,118 @@ Les options de configuration se combinent principalement sur deux modes :
|
||||||
* Pas de Domain, ni KeyFile, ni de Selector.
|
* 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/` :
|
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
|
## Ajout dans Postfix
|
||||||
|
|
||||||
Pour configurer avec [Postfix](HowtoPostfix) on ajoute simplement les instructions suivantes dans le fichier `/etc/postfix/main.cf` :
|
Pour configurer avec [Postfix](HowtoPostfix) on ajoute simplement les instructions suivantes dans le fichier `/etc/postfix/main.cf` :
|
||||||
|
|
Loading…
Reference in a new issue