relecture / amélioration autour de DMARC
This commit is contained in:
parent
3546cf9117
commit
b9a4ec4a45
|
@ -1297,7 +1297,8 @@ Chez Evolix, on utilise ainsi `include:spf.protection.evolix.net`. Si vous utili
|
||||||
|
|
||||||
#### Vérification SPF
|
#### Vérification SPF
|
||||||
|
|
||||||
Pour vérifier les enregistrements SPF des emails :
|
Pour vérifier les enregistrements SPF des emails puis rejeter les emails invalides et marquer le résultat de la vérification
|
||||||
|
via un entête `Received-SPF` nous utilisons [policyd-spf](https://manned.org/man/debian/policyd-spf) :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
# apt install postfix-policyd-spf-python
|
# apt install postfix-policyd-spf-python
|
||||||
|
@ -1331,12 +1332,23 @@ Mail_From_reject = Softfail # Rejete les mails si le check SPF échoue même en
|
||||||
Reject_Not_Pass_Domains = aol.com,hotmail.com # Transoforme un ~all en -all pour des domaines en particuliers.
|
Reject_Not_Pass_Domains = aol.com,hotmail.com # Transoforme un ~all en -all pour des domaines en particuliers.
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
Voir [policy-spf.conf(5)](https://manned.org/man/debian/policyd-spf.conf).
|
||||||
|
|
||||||
|
|
||||||
Cela ajoutera l'entête suivant aux emails :
|
Cela ajoutera l'entête suivant aux emails :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.0.2.1; helo=mail.example.com; envelope-from=jdoe@example.com; receiver=<UNKNOWN>
|
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.0.2.1; helo=mail.example.com; envelope-from=jdoe@example.com; receiver=<UNKNOWN>
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
ou en cas d'échec :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Received-SPF: Softfail (mailfrom) identity=mailfrom; client-ip=192.0.2.1; helo=mail.example.com; envelope-from=jdoe@example.com; receiver=<UNKNOWN>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Note : `receiver=<UNKNOWN>` est une anonymisation pour des raisons de confidentialité, cf l'option par défaut `Hide_Receiver = Yes`
|
||||||
|
|
||||||
Cet entête pourra notamment être utilisé par des filtres, SpamAssassin, etc.
|
Cet entête pourra notamment être utilisé par des filtres, SpamAssassin, etc.
|
||||||
|
|
||||||
> *Note* : attention, pour les emails locaux, cela n'ajoutera pas l'entête `Received-SPF` ce qui peut poser des soucis avec les outils s'appuyant dessus, notamment SpamAssassin ou OpenDMARC.
|
> *Note* : attention, pour les emails locaux, cela n'ajoutera pas l'entête `Received-SPF` ce qui peut poser des soucis avec les outils s'appuyant dessus, notamment SpamAssassin ou OpenDMARC.
|
||||||
|
@ -1411,7 +1423,7 @@ _dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
|
||||||
|
|
||||||
On pourra spécifier :
|
On pourra spécifier :
|
||||||
* `p=none` si l'on ne veut pas que les emails non conformes soient rejetés
|
* `p=none` si l'on ne veut pas que les emails non conformes soient rejetés
|
||||||
* `p=reject` si l'on veut que les emails non conformes soient rejetés
|
* `p=reject` si l'on veut que les emails non conformes soient rejetés (rarement utilisé)
|
||||||
* `p=quarantine` si l'on veut que les emails non conformes soient mis de côté (dans une sous-boîte Spam en général)
|
* `p=quarantine` si l'on veut que les emails non conformes soient mis de côté (dans une sous-boîte Spam en général)
|
||||||
|
|
||||||
Attention, si vous spécifiez `rua=mailto:dmarc@example.com` vous recevrez pas mal de rapports
|
Attention, si vous spécifiez `rua=mailto:dmarc@example.com` vous recevrez pas mal de rapports
|
||||||
|
@ -1426,7 +1438,13 @@ _dmarc IN TXT "v=DMARC1;p=reject;rua=mailto:dmarc+aggr@example.com;ruf=mailto:dm
|
||||||
|
|
||||||
#### Vérification DMARC
|
#### Vérification DMARC
|
||||||
|
|
||||||
Pour vérifier la politique DMARC des emails :
|
Pour vérifier la politique des emails nous utilisons [OpenDMARC](https://github.com/trusteddomainproject/OpenDMARC).
|
||||||
|
|
||||||
|
OpenDMARC s'appuie sur [DKIM](HowtoOpenDKIM) qui ajoute l'entête `Authentication-Results`,
|
||||||
|
il faut donc au préalable avoir installé et configuré [OpenDKIM](HowtoOpenDKIM).
|
||||||
|
OpenDKIM s'appuye également sur l'entête `Received-SPF` mais il peut également faire la vérification SPF lui-même.
|
||||||
|
|
||||||
|
On installe :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
# apt install opendmarc
|
# apt install opendmarc
|
||||||
|
@ -1440,19 +1458,34 @@ On configure via `/etc/opendmarc.conf` :
|
||||||
AuthservID mail.example.com
|
AuthservID mail.example.com
|
||||||
PidFile /var/run/opendmarc/opendmarc.pid
|
PidFile /var/run/opendmarc/opendmarc.pid
|
||||||
PublicSuffixList /usr/share/publicsuffix
|
PublicSuffixList /usr/share/publicsuffix
|
||||||
Socket inet:8892@localhost
|
Socket inet:8893@localhost
|
||||||
#Socket local:/var/run/opendmarc/opendmarc.sock
|
#Socket local:/var/run/opendmarc/opendmarc.sock
|
||||||
Syslog true
|
Syslog true
|
||||||
UMask 0002
|
UMask 0002
|
||||||
UserID opendmarc
|
UserID opendmarc
|
||||||
IgnoreHosts /etc/opendmarc/ignore.hosts
|
IgnoreHosts /etc/opendmarc/ignore.hosts
|
||||||
|
SPFSelfValidate true
|
||||||
|
IgnoreAuthenticatedClients true
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
OpenDMARC s'appuie sur l'entête `Received-SPF`, il faut donc avoir installé [la vérification DKIM](#dkim).
|
Par défaut, OpenDMARC se contente de vérifier et d'ajouter l'entête `Authentication-Results` (AR).
|
||||||
|
Si l'on veut que les emails avec une politique DMARC invalide soit rejeté (mais c'est rare car `p=reject`
|
||||||
|
est rarement utilisé), on peut mettre l'option :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
RejectFailures true
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Voir [opendmarc.conf(5)](https://manned.org/man/debian/opendmarc.conf).
|
||||||
|
|
||||||
Et il faut ajouter un fichier `/etc/opendmarc/ignore.hosts` pour ignorer les emails locaux :
|
Et il faut ajouter un fichier `/etc/opendmarc/ignore.hosts` pour ignorer les emails locaux :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
|
# mkdir /etc/opendmarc
|
||||||
|
# touch /etc/opendmarc/ignore.hosts
|
||||||
|
# chown -R opendmarc:opendmarc /etc/opendmarc
|
||||||
|
|
||||||
|
# cat /etc/opendmarc/ignore.hosts
|
||||||
127.0.0.0/8
|
127.0.0.0/8
|
||||||
::1/128
|
::1/128
|
||||||
localhost
|
localhost
|
||||||
|
@ -1461,19 +1494,24 @@ localhost.localdomain
|
||||||
192.0.2.0/24
|
192.0.2.0/24
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Et l'on ajoute un milter :
|
Et l'on ajoute un milter à la suite de celui pour [OpenDKIM](HowtoOpenDKIM) :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
non_smtpd_milters = inet:127.0.0.1:8892
|
non_smtpd_milters = inet:127.0.0.1:8891 inet:127.0.0.1:8893
|
||||||
smtpd_milters = inet:127.0.0.1:8892
|
smtpd_milters = inet:127.0.0.1:8891 inet:127.0.0.1:8893
|
||||||
in_flow_delay = 0s
|
in_flow_delay = 0s
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Cela ajoutera les entêtes suivants aux emails :
|
Cela ajoutera un 2e entête `Authentication-Results` (AR) en plus de celui d'OpenDKIM :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
Authentication-Results: mail.smsmode.com; dmarc=pass (p=none dis=none) header.from=...
|
Authentication-Results: antispam.example.com; dmarc=pass (p=none dis=none) header.from=example.com
|
||||||
Authentication-Results: mail.smsmode.com; dkim=pass ...
|
~~~
|
||||||
|
|
||||||
|
ou en cas d'échec :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Authentication-Results: antispam.example.com; dmarc=fail (p=none dis=none) header.from=example.com
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Cet entête pourra notamment être utilisé par des filtres, SpamAssassin, etc.
|
Cet entête pourra notamment être utilisé par des filtres, SpamAssassin, etc.
|
||||||
|
|
Loading…
Reference in a new issue