ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2013:10:12:pyspfexport

pyspfexport

Script python pour exporter les enregistrements SPF d'un ou plusieurs domaines.

L’intérêt est de pouvoir mettre a jour des “whitelist” pour des domaines connus…
La méthode est imparfaite mais c'est un bon point de départ avant d'installer PostScreen (peut être bientôt:stay tune!)

PS: Je suis un total débutant en python… donc le code n'est pas Pythonic ! :-)

~~READMORE~~

Dépendances

# aptitude install python-dnspython python-ipcalc

pyspfexport

Voici le script “pyspfexport” :

Tests

1 domaine…

$ pyspfexport gmail.com
# ---------------------
#      cidr            
# ---------------------
# --- gmail.com ---
216.239.32.0/19     permit     # TXT/gmail.com/_spf.google.com/_netblocks.google.com (ip4)
64.233.160.0/19     permit     # ...
66.249.80.0/20      permit     # ...
72.14.192.0/18      permit     # ...
209.85.128.0/17     permit     # ...
66.102.0.0/20       permit     # ...
74.125.0.0/16       permit     # ...
64.18.0.0/20        permit     # ...
207.126.144.0/20    permit     # ...
173.194.0.0/16      permit     # ...
# ---------------------
# EOF

Plusieurs domaines, dont l'export ira dans un fichier:

$ pyspfexport ovh.com hotmail.com microsoft.com > ma_white_list.cidr

A partir du fichier “whitelist_clients” de PostGrey .

$ pyspfexport a-file:/etc/postgrey/whitelist_clients > my_white_list.cidr
:!:a-file:” ⇒ charger le fichier retrouvant l'IP, et non pas les enregistrements SPF

Pour exporter les IPs “SPF”, utiliser “file:” ou “spf-file:

Quelques infos

  • S'il y a des erreurs, elles sont envoyés sur STDERR
  • Les doublons ne sont pas ajoutés
  • N'exporte que les IPV4 (mais en IPV6, la notion de whitelist par l'IP est caduc)
  • L’interprétation du protocole SPF est sommaire
  • Pour les fichiers, ne prend en compte que les ip4 ou les nom de domaine (pas les “regex”!)
  • Les CIDR (IP/SIZE) sont normalisé, sinon ils peuvent être rejeté (Ex:157.56.206.0/21157.56.200.0/21)

Postfix et Postscreen

Aprés avoir créer ma liste:

$ pyspfexport a-file:/etc/postgrey/whitelist_clients gmail.com example.com whateveryouwant.fr >pyspfexport-whitelist.cidr

Dans le fichier /etc/postfix/main.cf de Postfix pour PostScreen (mais ça peut être utilisé dans d'autres contextes!) :

postscreen_access_list = permit_mynetworks,cidr:/etc/postfix/pyspfexport-whitelist.cidr

Sources

blog/2013/10/12/pyspfexport.txt · Dernière modification : 2013/10/12 23:41 de thierry