ajout d'infos pour vérifier SPF / DMARC
This commit is contained in:
parent
64f553f3a8
commit
ce02169fb1
111
HowtoPostfix.md
111
HowtoPostfix.md
|
@ -575,6 +575,52 @@ On peut utiliser un `include:` vers un autre enregistrement TXT, pratique pour l
|
||||||
|
|
||||||
Chez Evolix, on utilise ainsi `include:spf.protection.evolix.net`. Si vous utilisez [Mailchimp](https://mailchimp.com/developer/transactional/docs/authentication-delivery/) vous devez ajouter `include:spf.mandrillapp.com` par exemple.
|
Chez Evolix, on utilise ainsi `include:spf.protection.evolix.net`. Si vous utilisez [Mailchimp](https://mailchimp.com/developer/transactional/docs/authentication-delivery/) vous devez ajouter `include:spf.mandrillapp.com` par exemple.
|
||||||
|
|
||||||
|
#### Vérification SPF
|
||||||
|
|
||||||
|
Pour vérifier les enregistrements SPF des emails :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# apt install postfix-policyd-spf-python
|
||||||
|
# cp /usr/share/doc/postfix-policyd-spf-python/policyd-spf.conf.commented /etc/postfix-policyd-spf-python/policyd-spf.conf
|
||||||
|
~~~
|
||||||
|
|
||||||
|
On ajoutera dans `/etc/postfix/master.cf` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
policyd-spf unix - n n - 0 spawn
|
||||||
|
user=policyd-spf argv=/usr/bin/policyd-spf
|
||||||
|
~~~
|
||||||
|
|
||||||
|
et `/etc/postfix/main.cf` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
smtpd_recipient_restrictions =
|
||||||
|
...
|
||||||
|
reject_unauth_destination
|
||||||
|
check_policy_service unix:private/policyd-spf
|
||||||
|
...
|
||||||
|
policyd-spf_time_limit = 3600
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Voici les paramètres intéressants pour `/etc/postfix-policyd-spf-python/policyd-spf.conf` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
defaultSeedOnly = 0 # Mode simulation, aucun rejet, seulement la description de l'action dans les logs.
|
||||||
|
Mail_From_reject = Fail # Rejete les mails si le check SPF échoue.
|
||||||
|
Mail_From_reject = Softfail # Rejete les mails si le check SPF échoue même en « soft » (utilisation de ~all par exemple), non recommandé.
|
||||||
|
Reject_Not_Pass_Domains = aol.com,hotmail.com # Transoforme un ~all en -all pour des domaines en particuliers.
|
||||||
|
~~~
|
||||||
|
|
||||||
|
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>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
### DKIM
|
### DKIM
|
||||||
|
|
||||||
[DKIM](HowtoOpenDKIM) est une norme pour ajouter une signature cryptographique dans les entêtes d'un email envoyé.
|
[DKIM](HowtoOpenDKIM) est une norme pour ajouter une signature cryptographique dans les entêtes d'un email envoyé.
|
||||||
|
@ -596,12 +642,75 @@ Voici un exemple d'enregistrement DNS basique :
|
||||||
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
|
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Voici un exemple plus avancé :
|
On pourra spécifier :
|
||||||
|
* `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=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
|
||||||
|
`Report domain` de Google, Outlook, etc. vous notifiant des emails non conformes.
|
||||||
|
Les rapports incluent un fichier XML, on peut le lire via des outils comme [mxtoolbox](https://mxtoolbox.com/DmarcReportAnalyzer.aspx) ou [easydmarc](https://easydmarc.com/tools/dmarc-aggregated-reports).
|
||||||
|
|
||||||
|
Voici un exemple d'un enregistrement DNS plus avancé :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
_dmarc IN TXT "v=DMARC1;p=reject;rua=mailto:dmarc+aggr@example.com;ruf=mailto:dmarc+forensic@example.com;fo=1;adkim=r;aspf=r;sp=none;pct=100"
|
_dmarc IN TXT "v=DMARC1;p=reject;rua=mailto:dmarc+aggr@example.com;ruf=mailto:dmarc+forensic@example.com;fo=1;adkim=r;aspf=r;sp=none;pct=100"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
#### Vérification DMARC
|
||||||
|
|
||||||
|
Pour vérifier la politique DMARC des emails :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# apt install opendmarc
|
||||||
|
# systemctl enable opendmarc
|
||||||
|
# systemctl start opendmarc
|
||||||
|
~~~
|
||||||
|
|
||||||
|
On configure via `/etc/opendmarc.conf` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
AuthservID mail.example.com
|
||||||
|
PidFile /var/run/opendmarc/opendmarc.pid
|
||||||
|
PublicSuffixList /usr/share/publicsuffix
|
||||||
|
Socket inet:8892@localhost
|
||||||
|
#Socket local:/var/run/opendmarc/opendmarc.sock
|
||||||
|
Syslog true
|
||||||
|
UMask 0002
|
||||||
|
UserID opendmarc
|
||||||
|
IgnoreHosts /etc/opendmarc/ignore.hosts
|
||||||
|
~~~
|
||||||
|
|
||||||
|
OpenDMARC s'appuie sur l'entête `Received-SPF`, il faut donc avoir installé [la vérification DKIM](#verification-DKIM).
|
||||||
|
|
||||||
|
Et il faut ajouter un fichier `/etc/opendmarc/ignore.hosts` pour ignorer les emails locaux :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
127.0.0.0/8
|
||||||
|
::1/128
|
||||||
|
localhost
|
||||||
|
localhost.localdomain
|
||||||
|
192.168.0.0/16
|
||||||
|
192.0.2.0/24
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Et l'on ajoute un milter :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
non_smtpd_milters = inet:127.0.0.1:8892
|
||||||
|
smtpd_milters = inet:127.0.0.1:8892
|
||||||
|
in_flow_delay = 0s
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Cela ajoutera les entêtes suivants aux emails :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Authentication-Results: mail.smsmode.com; dmarc=pass (p=none dis=none) header.from=...
|
||||||
|
Authentication-Results: mail.smsmode.com; dkim=pass ...
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Cet entête pourra notamment être utilisé par des filtres, SpamAssassin, etc.
|
||||||
|
|
||||||
### Contacts des principaux fournisseurs d'email
|
### Contacts des principaux fournisseurs d'email
|
||||||
|
|
||||||
En cas de souci de _délivrabilité_ vers un domaine particulier, on est amené à contacter son responsable.
|
En cas de souci de _délivrabilité_ vers un domaine particulier, on est amené à contacter son responsable.
|
||||||
|
|
Loading…
Reference in a new issue