domenica 27 giugno 2010

How to write Spamassassin plugin - part 1

Sono giunto a un buon punto di un progetto per un esame universitario (che verrà pubblicato non appena consegnato) che riguarda un argomento sul quale ho trovato pochissimo materiale.

Si sta parlando della scrittura di un plugin che valuti una regola complessa su un messaggio e-mail, per determinare se si tratta di spam oppure no.

C'è voluto molto tempo per raggiungere qualcosa di funzionante ma ora che ho fra le mani un po' di codice che gira posso scrivere un articolo come questo e colmare la lacuna che il web mi ha mostrato. (I'll translate this article soon for international usage)

Cominciamo con installare tutto quello che serve (a parte una VM con sopra Ubuntu): Documentazione Ubuntu - Mail Server

A questo punto il plugin ha bisogno di due cose:
  1. Un file di configurazione che permetta di richiamare la regola e le assegni un punteggio.
  2. Una classe Perl che implementi l'interfaccia Plugin e che definisca precisamente la regola che si vuole aggiungere a Spamassassin.


In questa prima parte ci concentreremo sul file di configurazione. Nel prossimo articolo parleremo di come scrivere un .pm che interroghi un database per la valutazione di un header.

Il file di configurazione che bisogna comporre va depositato all'interno della directory di sistema /etc/spamassassin.
Possiamo andare a scriverlo direttamente con il seguente comando:
sudo gedit /etc/spamassassin/25_myplugin.cf

All'interno di questo file andiamo a scrivere due cose. La prima è il collegamento della funzione che andremo a definire nella nostra classe. La seconda è lo score che la regola aggiunge alla valutazione se si verifica la condizione definita.
Il contenuto sarà pressochè il seguente:
# Rule load for MyPlugin
header MY_RULE eval:check_myplugin_header()
score MY_RULE 2.0

Per configurare la nostra personalizzazione manca solo un passaggio: bisogna far caricare a Spamassassin il nostro plugin. Va dunque cambiato un qualunque file *.pre. Apriamo quindi:
sudo gedit /etc/spamassassin/v310.pre

In coda a questo file vanno aggiunte le seguenti righe affinchè il nostro plugin venga caricato a successivo riavvio.
# load MyPlugin
loadplugin Mail::SpamAssassin::Plugin::MyPlugin

Conclusa la configurazione è il momento di scrivere il vero e proprio plugin ma sarà argomento del prossimo post.

Stay tuned ;)

Ah, quasi dimenticavo:
sudo /etc/init.d/postfix
sudo /etc/init.d/spamassassin
Posta un commento