bloccare lo spam con spamassassin, sendmail, spamass-milter e mailman.
prefazione: vista la situazione insostenibile del volume di spam che arrivava sulle mailinglist ospitate sulle macchine del circolab, abbiamo cominciato a considerare la possibilita' di un sistema antispam che andasse a bloccare lo spam in arrivo.
ATTENZIONE! CERCARE DI BLOCCARE LO SPAM PUO' PORTARE IN ALCUNI CASI A BLOCCARE ANCHE DEI MESSAGGI DI POSTA CHE NON SONO SPAM MA CI ASSOMIGLIANO. LO SPAM TROVATO DA SPAMASSASSIN NON DEVE ESSERE BUTTATO VIA, MA DEVE ESSERE CONTROLLATO.
software necessario: sul server del circolab abbiamo (fortunatamente) una debian, e quindi tutto il processo di installazione del sistema antispam e' stato decisamente breve. il software necessario e' il seguente:
sendmail (dovrebbero andare bene tutte le versioni che contengono la libmilter, comunque consiglio la 8.12 anche x questioni di sicurezza). http://www.sendmail.org/
spamassassin (la versione provata da noi e' la 2.55, consiglio comunque caldamente di tenere aggiornato questo pacchetto in quanto le versioni successive dovrebbero bloccare un maggior numero di spam) http://www.spamassassin.org/
spamass-milter ( un piccolo 'plugin' x sendmail che modifica la mail che proviene da sendmail come dettato da spamassassin. la versione utilizzata e' la 0.2.0, e anche in questo caso consiglio di tenere aggiornato il pacchetto in quanto nuove funzionalita' vengono aggiunte e molti bug vengono tolti). http://savannah.nongnu.org/projects/spamass-milt/
installazione: SPAMASSASSIN come prerequisito serve ovviamente sendmail preconfigurato e funzionante. cominciamo quindi con l'installazione di spamassassin. noi abbiamo utilizzato il pacchetto debian di spamassassin, ma dato che nella woody il pacchetto debian era decisamente vecchio, abbiamo aggiunto una nuova fonte 'apt' presa cercando 'spamassassin' su http://www.apt-get.org/
spamassassin funziona controllando gli header e il testo dei messaggi e controllando la presenza di caratteristiche comuni in tutti i messaggi di spam: se all'interno del messaggio e' presente piu' volte la parola viagra ad esempio, oppure se gli header risultano falsificati.
x ogni test eseguito sul messaggio spamassassin assegna un punteggio negativo o positivo: se il punteggio supera il valore di 5 positivo il messaggio e' considerato spam e viene modificato aggiungendo degli header tipo X-Spam-Flag: YES
una volta installato spamassassin si deve procedere con un paio di test x vedere se spamassassin sia installato correttamente: spamassassin -t < sample-nonspam.txt > nonspam.out spamassassin -t < sample-spam.txt > spam.out una volta verificato che il file nonspam.out non sia stato modificato e che invece spam.out sia stato modificato con gli header di spam, possiamo considerare installato correttamente spamassassin.
installazione: SPAMD spamassassin come ho detto non e' fatto x funzionare come demone: x fare questo in spamassassin sono stati inseriti una coppia di programmi (distributi insieme a spamassassin), spamc e spamd. spamd funge da server, e accetta in ingresso un messaggio di posta che gli viene passato da spamc.
per attivare questo demone, basta (in debian) editare il file /etc/default/spamassassin e mettere ENABLED=1
attiviamo quindi spamd lanciando /etc/init.d/spamassassin start
installazione: SPAMASS-MILTER spamass-milter e' una 'specie' di plugin x sendmail che permette di creare programmi che vanno a modificare il normale funzionamento di sendmail. in questo caso spamass-milter va a modificare il messaggio aggiungendo eventualmente i famosi header X-Spam-Flag: YES in caso di messaggio di spam.
purtroppo non esiste il pacchetto debian spamass-milter, e quindi non resta che prendere il buon vecchio compilatore e scaricarsi i sorgenti e compilarli.
una volta eseguito ./configure && make && make install siamo pronti x utilizzare il nostro milter: per fare cio' dobbiamo creare in /etc/init.d/ uno script che venga lanciato ad ogni boot e che attivi tale milter. x debian tale script e' gia' inserito all'interno dei sorgenti di spamass-milter, e richiede solo una modifica x segnalare dove e' stato installato spamass-milter nel nostro sistema. a questo punto con un semplice
cp spamass-milter /etc/init.d/'
e con un
update-rc.d -f spamass-milter defaults 19
abbiamo ottenuto gli script di inizializzazione corretti.
(si noti che il numero 19 serve a far partire spamass-milter PRIMA di sendmail, che di default parte con priorita' 20)
configurazione: SENDMAIL siamo oramai alla fine: configuriamo sendmail e aggiungiamo le righe
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/sendmail/spamass.sock, F=, T =C:15m;S:4m;R:4m;E:10m')dnl define(`confMILTER_MACROS_CONNECT',`b, j, _, {daemon_name}, {if_name}, {if_addr} ')dnl
nel file /etc/mail/sendmail.mc , lanciamo 'make' nella directory '/etc/mail' e eseguiamo l'eventuale riavvio di sendmail richiesto. a questo punto il sistema in automatico aggiunge l'header X-Spam-Flag: YES alle mail di spam.
configurazione: MAILMAN nella pagina di configurazione delle opzioni di privacy aggiungere la riga X-Spam-Flag: YES nello spazio "hold post with header value matching a specified regexp". in questo modo le mail di spam vengono bloccate e devono essere vagliate dall'amministratore della lista prima di arrivare alla mailinglist.
ciao e buon divertimento!