Table des matières
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
” :
- Python: pyspfexport
- Python/Txt: pyspfexport.txt
- Zippé: pyspfexport.zip
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/21
→157.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