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
Un « ps » montre le mot de passe… Il faudrait mettre les paramètres de connexion dans un fichier et lire celui-ci, voire vérifier comme avec ssh que le fichier est pas en lecture pour tout le monde.
Effectivement, je viens d’ajouter l’argument « imappasswordfile » 🙂
Pour la vérification ‘lecture seulement pour l’utilisateur » ça ne me semble pas être de la « responsabilité » du programme de faire ça… J’ajouterais éventuellement un warning…
Merci Gabriel
bonjour
il y aurait un moyen de rendre le SpamAssassin embarqué plus méchant ?
ça fonctionne, mais il me laisse pas mal de faux négatifs…
Merci
Bonjour DC,
De façon « simple » j’ai pas l’impression… Dans la librairie embarqué tu peux ajouter/personnaliser des adresses à rejeter ect… mais ça demande de coder pour pouvoir interagir, blacklisté ect… : http://search.cpan.org/dist/Mail-SpamAssassin/lib/Mail/SpamAssassin.pm
Sinon, à tester et moins pénible, il y a des chances pour qu’il lise les fichiers dans /etc/spamassassin/* du coup tu peux tester en touchant à la variable « required_score 5.0 » (et en diminuant à 3 par exemple)
Belle journée,