nuvoletta dei tag

mercoledì 12 marzo 2008

spamassassin : learning --ham --spam


Classica situazione per cui o passi tutte le mail a mano al programma sa-learn ( il parser per l'apprendimento del filtro bayesiano ) oppure ti tiri fuori dalla cacca sfruttando tutto quello che ti da il sistema, vabbhe sono sicuro che qualcuno ha gia creato qualcosa di simile ( c'è sul forum di roundcube una roba simile ), comunque c'ho voluto mettere del mio dato che quel bash era abbastanza un'emesi, per cui me ne sono fatto uno per conto mio, così rinfresco le basi di bash :) Precisiamo, non è uno spettacolo, lo so che in python o perl sarebbe stato meglio , ma python non lo conosco abbastanza per fare una roba del genere e perl .. bhe mi fischiano gia le orecchie .. lo ho deprecato. Piccola premessa prima della lettura. Il mio caso è quello di un server che gestisce via Virtuale gli utenti per cui ho le directory di tutti i domini in /home/vmail , ogni utente ha un account per la webmail via courier. Ad ogni utente ho forzato la creazione di 3 nuove directory IMAP , Spam , NoSpam e Spamadmin:

  • Spam: li ci vanno messi i messaggi che non sono stati filtrati e si vuole far apprendere a spamassassin
  • NoSpam l'inverso di Spam
  • Spamadmin : li ci sono tutti i messaggi passati dal filtro, li lascio li per eventuali ripensamenti che , se ci dovessero essere basterà mettere il messaggio filtrato in una delle dir precedentemente elencate per far fare il procedimento inverso
Il filtro così come è fatto non applicherà regole personalizzate, ma tanto spam è spam che arrivi a pippo o a pluto e che paperino ha segnalato come spam ( sta all'utente mettere in whitelist cosa gli interessa ).. lo so sono un inguaribile ottimista ma la vogliamo dare un po di responbilità ai LUSERS ? ed ora ecco a voi il parto di una mente malata :

#!/bin/bash
#
# Script created by
# Matteo Cisilino
# matteo.cisilino@sitonerd.com
# under GPL v2
#
# Use it carefully, it's a bash script so if
# something is not clear read the bash documentation
#
# No responsability for damages and/or usage
#

export base="/home/vmail"
for domain in `ls $base` ;
do
for user in `ls $base/$domain/` ;
do
# spam
if [ -d $base/$domain/$user/.Junk/cur/ ]
then
if [ "$(ls -A $base/$domain/$user/.Junk/cur/)" ]
then
/usr/bin/sa-learn --spam $base/$domain/$user/.Spam/cur/*
/bin/mv $base/$domain/$user/.Spam/cur/* \
$base/$domain/$user/.Spamadmin/cur/*
fi
fi

if [ -d $base/$domain/$user/.NoSpam/cur/ ]
then
if [ "$(ls -A $base/$domain/$user/.NoSpam/cur/)" ]
then
/usr/bin/sa-learn --ham $base/$domain/$user/.NoSpam/cur/*
/bin/mv $base/$domain/$user/.NoSpam/cur/* \
$base/$domain/$user/.Spamadmin/cur/*
fi
fi
done ;
done

script_spam.sh

Nessun commento: