Combattere lo spamming con Spamassassin

Spamassassin e' un software open-source scritto in perl che consente di analizzare messaggi email per determinare quali di essi e' spam. Nell'articolo vedremo come scaricarlo, installarlo ed integrarlo con procmail e l'mta postfix. Utilizzando una distribuzione linux Debian oppure Ubuntu, si potra' utilizzare il packet manager apt per installare spamassassin in questo modo

apt-get install spamassassin

Con Fedora linux invece il comando da eseguire e' questo

yum install spamassassin

Utilizzando Gentoo linux

emerge mail-filter/spamassassin

Per chi vuole procedere all'installazione manuale da sorgente puo'  fare cosi'

cd /usr/local/src
wget http://www.apache.org/dist/spamassassin/source/Mail-SpamAssassin-3.2.5.tar.bz2
tar jxvf Mail-SpamAssassin-3.2.5.tar.bz2
cd Mail-SpamAssassin-3.2.5
perl Makefile.PL
make
make install

Completata l'installazione dovremo modificare il file di configurazione local.cf presente nella directory  /etc/spamassassin/ Dovremo decommentare (cancellare il carattere # ad inizio riga) queste direttive e cambiare il valore di report_safe da 1 a 0

rewrite_header Subject *****SPAM*****
report_safe 0
required_score 5.0

Dopo aver salvato potremmo verificare che non vi siano errori nella configurazione:

spamassassin --lint

L'integrazione con postfix e procmail e' davvero semplice. Nella guida "Elaborare i messaggi di posta con Procmail" abbiamo visto come installare e configurare procmail. Adesso quindi non ci restera' che memorizzare nel file procmailrc 'globale' (/etc/procmailrc)  queste righe:

DROPPRIVS=yes
PATH=/bin:/usr/bin:/usr/local/bin
SHELL=/bin/sh
DEFAULT=$HOME/Maildir/

#Spamassassin
:0fw
* < 300000
| /usr/bin/spamassassin

Proviamo adesso ad inviarci un messaggio di posta e diamo un'occhiata agli header dell' email.

Spamassassin inserira' queste informazioni nel messaggio:

X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on vps.lucaercoli.it
X-Spam-Level:
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham
version=3.2.5

Quando un'email verra' considerata spam, Spamassassin inserira' una serie di * nel campo "X-Spam-Level" in base al punteggio attribuito al messaggio. Un * per ogni unita'.  Ecco un esempio:

X-Spam-Level: *******

X-Spam-Status: Yes, score=7.0 required=5.0 tests=none autolearn=ham

X-Spam-Status avra' valore "Yes" e verra' aggiunto un campo X-Spam-Report dove saranno memorizzati in maniera chiara e concisa le motivazioni per cui il messaggio e' stato considerato spam.Con tutte queste informazioni sara' facile poter utilizzare una regola 'individuale' di procmail per poter spostare in un'apposita cartella (oppure eliminare direttamente) i messaggi di spam. Bastera' creare un file chiamato  '.procmailrc'  nella home dell'utente e memorizzare queste istruzioni al suo interno:

MAILDIR=$HOME/Maildir/

:0
* ^X-Spam-FLAG: YES
.DirectorySpam/cur

N.B. Dobbiamo creare manualmente la cartella .DirectorySpam/cur nella home dell'utente

E' possibile anche archiviare in una directory tutti i messaggi che sono stati considerati spam ma che hanno un punteggio basso ed eliminare direttamente quelli a cui e' stato attribuito un punteggio elevato. Ecco come:

MAILDIR=$HOME/Maildir/

:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
/dev/null

:0
* ^X-Spam-FLAG: YES
.DirectorySpam/cur