Pour des besoins personnels j’ai codé un petit script en Perl (toujours sous licence beerware) afin de pouvoir scanner un répertoire IMAP avec la puissance de SpamAssassin à distance. ça s’avère très pratique :
- Quand on ne maîtrise pas le serveur de messagerie ;
- Qu’il n’y a pas d’anti-spam (ou un anti-spam tout pourrit) ;
- Que votre serveur est trop « petit » (en terme de ressource) pour accueillir un SpamAssassin ;
Des solutions anti-spam déporté existait ici ou là et même là mais elle ne me satisferaient pas pleinement.. Du coup j’ai pris mes petits doigts et c’est partie…
Commentaire
Petit commentaire sur le code (visible dans ma bébé forge) :
- Je n’ai pas trouvé mieux que la base sqlite pour dire « hey toi je t’ai déjà scanner je passe mon chemin » Ma première idée était de créer un flags IMAP personnalisé (genre « SpamChecked ») d’après ce que j’ai lu ça n’est pas permis dans le protocole IMAP standard… c’est moche…
- (Une amélioration à penser) Il faudrait pouvoir stocker le mot de passe en crypté.. le hic est qu’il faut que ça soit réversible pour le servir au serveur IMAP (?) là si quelqu’un à des idées je suis preneur…
Utilisation
Installer les lib perl dépendante :
Sous Ubuntu/Debian :
$ aptitude install libmail-imapclient-perl libmail-spamassassin-perl libdbi-perl libdbd-sqlite3-perl
Sinon pour les perl compilé ou autres systèmes :
$ cpan -i Mail::SpamAssassin Mail::IMAPClient DBI
Télécharger :
$ git clone https://forge.zici.fr/source/vrac.git $ mkdir /opt/imapSpamScan $ cp vrac/imapSpamScan.pl /opt/imapSpamScan $ chmod +x imapSpamScan/imapSpamScan.pl
La commande à mettre au lancement de votre poste (dans /etc/xdg/autostart.. ou /etc/rc.local ou .bashrc ou … ou …)
$ /opt/imapSpamScan/imapSpamScan.pl --daemon --imapsrv=serveur.a.scanner.fr --imapuser=brad --imappassword=pitt --db=~/.config/imapSpamScan.db