Check SPF pour postfix

Check spf dans postfix

Depuis quelques temps j’ai rajouté SPF sur mon serveur DNS . En gros SPF est un mécanisme qui permet de définir qui peut envoyer des mails en fonction de vos noms de domaines .
En fonction de comment sera configuré votre serveur vous pourrez oui ou non rejeter ou accepter le mail .

L’installation est relativement simple rien de bien compliqué comme dab

apt-get install postfix-policyd-spf-python (Il existe le même paquet mais en perl)

Commencer par ajouter les serveurs autorisés à envoyer des mails pour votre/vos domaines.

vi votre-zone-dns
IN TXT "v=spf1 ip4:x.x.x.x -all"

Il faut par la suite modifier le fichier master.conf

policyd-spf unix - n n - 0 spawn
user=nobody argv=/usr/bin/python /usr/bin/policyd-spf /etc/postfix-policyd-spf-python/policyd-spf.conf

On voit qu’un fichier de conf est appelé policyd-spf.conf . Voyons un peu ce qu’il nous cache

debugLevel = 1
defaultSeedOnly = 1
HELO_reject = SPF_Not_Pass
Mail_From_reject = Fail
PermError_reject = False
TempError_Defer = False
skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0//104,::1//128

debugLevel = 1 : Il y a 4 niveau de debug
defaultSeedOnly = 1 : Quand à 1 alors le SPF est pleinement fonctionnel et permet de rejeter les messages
HELO_reject = SPF_Not_Pass : le mail est rejeté si le retour sur SPF sur le HELO n’est pas pass/none/Tempfail
Mail_From_reject = Fail : Mail est rejeté si SPF retourne fail
PermError_reject = False :
TempError_Defer = False :
skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0//104,::1//128 : Adresse pour laquelle il n’y a pas de vérification de SPF

Vous pouvez consulter la documentation plutôt claire /usr/share/doc/postfix-policyd-spf-python/policyd-spf.conf.commented .

Maintenant que notre conf est ok il reste plus qu’à modifier le main.cf

smtpd_recipient_restrictions =
...
reject_unauth_destination
check_policy_service unix:private/policyd-spf
...

Dans la donc est bien spécifié ceci :

NOTE: Specify check_policy_service AFTER reject_unauth_destination or else your system can become an open relay.

Il vous suffit plus qu’à faire un petit reload de votre conf

Te fous pas de moi tu sais faire ca non 🙂

Dans votre fichier de logs vous pourrez voir cette ligne

***** policyd-spf[21125]: None; identity=mailfrom; client-ip=74.125.83.51; helo=mail-ee0-f51.google.com; envelope-from=*****@gmail.com; receiver=*****@robertain.com
***** policyd-spf[21125]: Pass; identity=mailfrom; client-ip=74.125.83.51; helo=mail-ee0-f51.google.com; envelope-from=*****@gmail.com; receiver=*****@robertain.com

Vous retrouverez ceci également dans vos entêtes mails.

Exemple de message rejeté par spf

Feb 17 22:56:40 mq policyd-spf[21759]: None; identity=helo; client-ip=124.195.156.119; helo=c156119.net124195.cablenet.ne.jp; envelope-from=nroberts@abf.com; receiver=*****@robertain.com
Feb 17 22:56:40 mq policyd-spf[21759]: Fail; identity=mailfrom; client-ip=124.195.156.119; helo=c156119.net124195.cablenet.ne.jp; envelope-from=nroberts@abf.com; receiver=*****@robertain.com
Feb 17 22:56:40 mq postfix/smtpd[21748]: NOQUEUE: reject: RCPT from c156119.net124195.cablenet.ne.jp[124.195.156.119]: 550 5.7.1 <*****@robertain.com>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=mfrom;id=nroberts@abf.com;ip=124.195.156.119;r=*****@robertain.com; from=<nroberts@abf.com> to=<*****@robertain.com> proto=ESMTP helo=<c156119.net124195.cablenet.ne.jp>
Feb 17 22:56:41 mq postfix/smtpd[21748]: lost connection after DATA from c156119.net124195.cablenet.ne.jp[124.195.156.119]
Feb 17 22:56:41 mq postfix/smtpd[21748]: disconnect from c156119.net124195.cablenet.ne.jp[124.195.156.119]

On voit bien que lors de la vérification du from le check passe en « fail » . Mais pourquoi il suffit de regarder les ips autoriser à envoyer des mails pour le domaine abf.com

dig abf.com TXT +short
"v=spf1 ip4:159.204.59.0/24 ip4:159.204.7.7 ip4:159.204.150.100 a:test.data-tronics.com mx:data-tronics.com include:data-tronics.com -all"

Ce qui permet d’avoir le retour fail est le « -all » qui n’est pas la même chose que « ~all » . SPF prends peut prendre certains paramètres : Extrait de la RFC 4408

"+" Pass
"-" Fail
"~" SoftFail
"?" Neutral

SPF associé à DKIM est une excellente façon de lutter contre le spam mais cela ne vas pas éradiquer le spam de vos boites mails . La lutte contre le SPAM est un combat de tous les instants . Donc prenez les armes (évitez les aka47 et les uzis) 🙂

Related posts

Leave a Comment