ImapSpamScan.pl – Anti-spam IMAP distant / déporté

imapSpamScan.pl - scriptPour 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 et même 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) :

  1. 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…
  2. (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

Installer Postgrey avec Postfix (Greylist) + postgreyreport

Postgrey permettra à votre serveur mail de lutter de manière radicale contre le Spam..

Son fonctionnement est simple, il refuse une première fois n’importe quel mail qui arrive et enregistre l’IP de l’hôte distant, les vrais serveurs mail gardent les messages en queue et tentent de les renvoyer quelques minutes plus tard.

C’est là que Postgrey acceptera le message, seulement s’il est renvoyé : Les spammeurs ne renvoient que très rarement un même mail avec une même IP. Nous utiliseront donc une blacklist pour supprimer ceux qui auraient réussi à passer.

Le greylist se base sur le respect de la RFC 2821, page 4647

Lorsqu’un même serveur envois 5 mails et qu’ils sont valides, il enregistre automatiquement son IP en whitelist.

Installation :

aptitude install postgrey

Editer le fichier /etc/postfix/main.cf :

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:60000

Pour avoir des rapports sur l’acivité de postrey taper :

cat /var/log/mail.log | postgreyreport --nosingle_line --check_sender=mx,a --separate_by_subnet=":==================\n

File d’attente (queue) de Postfix

Des mails indésirable dans sa file d’attente postfix :

# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
C5854E2C00C     5114 Sun Apr 11 19:30:41  MAILER-DAEMON
(connect to mail.aaaaaa.net[11.22.33.44]:25: Connection timed out)
zzzzzzzz@aaaaaaa.net
97497E2C334     4952 Thu Apr 15 18:10:41  MAILER-DAEMON
(connect to mail.xxxxxxx.net[11.22.33.45]:25: No route to host)
yyyyyyy@xxxxxx.net

Vérifier que le mail n’est pas important (voir est un SPAM) en l’affichant avec le « Queue ID »

find /var/spool/postfix/ -name 97497E2C334 -exec cat {} \;

Ou plus simplement  :

postcat -q 97497E2C334

Et enfin le ménage par le vide :postsuper -d ALL

En voir plus

En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations

Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations

Fermer