Hello,
J'héberge mes propres domaines et sur l'un d'eux, j'ai un serveur postfix + dovecot, avec clamav et support DKIM, DMARC, SPF. Je fais donc l'envoi et la réception des mails de mon domaine moi même.
Lorsque je teste SPF via des outils en ligne pour valider à la fois l'enregistrement SPF mais également son fonctionnement, si je déclare une mauvaise IP qui essaye d'envoyer depuis mon domaine, le test passe bien en FAILED et inversement en PASS si je déclare la bonne IP, exemple avec la séquence de test suivante (FAILED) :
+0 msSPF check starting.
IP:x.x.x.1
Sender: toto@mondomaine.net
Domain: mondomaine.net
EHLO/HELO domain:
+0 msRetrieving DNS TXT record for "mondomaine.net".
+24 msTXT record found.
Line #1: "v=spf1 mx a:mail.mondomaine.net ip4:x.x.x.11 -all"
+0 msStarting SPF policy evaluation.
Policy: "v=spf1 mx a:mail.mondomaine.net ip4:x.x.x.11 -all"
+0 msThe policy passed syntax validation.
+0 msEvaluating SPF mechanisms.
+1 msEvaluating mechanism "mx".
Qualifier: "pass"
DNS limits status: DNS terms 0 of 10 allowed. Void lookups 0 of 2 allowed. See RFC7208 Section 4.6.4.
+0 msNo domain argument is present, using the current domain: "mondomaine.net".
+0 msRetrieving DNS MX record for "mondomaine.net".
+24 msMX record found.
Answer #1: "10,mail.mondomaine.net"
+0 msRetrieving DNS A record for "mail.mondomaine.net".
+48 msA record found.
Answer #1: "x.x.x.11"
+0 msThe mechanism did not match.
+0 msEvaluating mechanism "a".
Qualifier: "pass"
Domain argument: "mail.mondomaine.net"
DNS limits status: DNS terms 1 of 10 allowed. Void lookups 0 of 2 allowed. See RFC7208 Section 4.6.4.
+0 msDomain argument after macro expansion: "mail.mondomaine.net".
+0 msRetrieving DNS A record for "mail.mondomaine.net".
+1 msDNS A record found.
Answer #1: "x.x.x.11"
+0 msThe mechanism did not match.
+1 msEvaluating mechanism "ip4".
Qualifier: "pass"
Network argument: "x.x.x.11"
+0 msThe mechanism did not match.
+0 msEvaluating mechanism "all".
Qualifier: "fail"
+0 msThe mechanism matched with the "fail" qualifier.
+0 msFinished evaluating SPF mechanisms.
+0 msFinished SPF policy evaluation.
DNS limits status: DNS terms 2 of 10 allowed. Void lookups 0 of 2 allowed. See RFC7208 Section 4.6.4.
+0 msPolicy evaluation finished with SPF "fail".
TEST SUMMARY
The evaluation completed in 99 ms, with 0 error and 0 warning.
Result: SPF fail
The policy does NOT designate the argument IP as permitted sender.
Jusque là vous me direz, tout a l'air bien et fonctionner comme on l'entend. En revanche, ça se corse quand on essaye de vraiment tester en situation :
- Lorsque j'émets un mail depuis un service de mail anonyme (www.envoyer-mail.fr) en me faisant passer pour admin@mondomaine.net (mondomaine.net étant mon domaine) et que j'envoie le mail sur une boîte mail existante de mon domaine, je m'attends à ce que SPF râle et me dise que l'IP qui envoie le mail en tant que admin@mondomaine.net n'est pas celle de mon serveur de courrier, seul légitime à envoyer des mails de ce domaine. Eh bien non, les mails passe bien en PASSED au test SPF. Je peux spoofer tranquillement avec mon domaine..
- Lorsque je fais un test similaire, mais en envoyant sur une boîte gmail, idem, SPF est en PASSED, mais par contre ça bloque au niveau DMARC (qui heureusement fait le boulot).
- Lorsque j'envoie un mail en tant que admin@gmail.com, tout va bien (ironie..), je reçois bien le mail sur la boîte de @mondomaine.net ......
Moi ce que je voudrais, c'est que les gens qui utilisent des adresses @mondomaine.net et qui donc se connectent sur mon mail.mondomaine.net ne puissent pas être spoofé par d'autres serveurs envoyant des mails en tant que @mondomaine.net . C'est quand même dingue que tous les tests de différents outils valident le fonctionnement de SPF, mais qu'en utilisant réelle, il y est tout qui passe.
Alors ma question est : est-ce que j'ai mal compris le fonctionnement de SPF ? Que me manque-t-il ? Pourquoi mon postfix laisse-t-il tout passer ?