L’efficienza di SpamAssassin dipende molto, oltre che dalla sua configurazione, anche dalla sua installazione. SpamAssassin è un sistema sviluppato in Perl, e alcuni moduli Perl sono molto utili per il suo funzionamento, ma come fare per controllare se l’installazione di SpamAssassin è corretta, e se tutti i moduli Perl che sono richiesti per il suo lavoro di filtro della posta indesiderata sono presenti, e soprattutto utilizzati?
Per prima cosa controlliamo se i moduli ci sono, passo fondamentale per scoprire se poi vengono utilizzati a modino.
Per fare questo, lanciamo da terminale un comando per effettuare un test della configurazione di SpamAssassin:
spamassassin --lint -D
Il risultato sarà una lunga lista di informazioni, ma nel nostro caso ci interessa solo una porzione all’inizio della risposta, come possiamo vedere dall’esempio che segue.
(....) [24318] dbg: diag: module installed: Digest::SHA1, version 2.12 [24318] dbg: diag: module installed: HTML::Parser, version 3.61 [24318] dbg: diag: module installed: Net::DNS, version 0.65 [24318] dbg: diag: module installed: MIME::Base64, version 3.08 [24318] dbg: diag: module installed: DB_File, version 1.816_1 [24318] dbg: diag: module installed: Net::SMTP, version 2.31 [24318] dbg: diag: module installed: Mail::SPF, version v2.006 [24318] dbg: diag: module installed: Mail::SPF::Query, version 1.999001 [24318] dbg: diag: module installed: IP::Country::Fast, version 604.001 [24318] dbg: diag: module installed: Razor2::Client::Agent, version 2.84 [24318] dbg: diag: module not installed: Net::Ident ('require' failed) [24318] dbg: diag: module installed: IO::Socket::INET6, version 2.56 [24318] dbg: diag: module installed: IO::Socket::SSL, version 1.26 [24318] dbg: diag: module installed: Compress::Zlib, version 2.012 [24318] dbg: diag: module installed: Time::HiRes, version 1.9719 [24318] dbg: diag: module not installed: Mail::DomainKeys ('require' failed) [24318] dbg: diag: module not installed: Mail::DKIM ('require' failed) [24318] dbg: diag: module not installed: DBI ('require' failed) [24318] dbg: diag: module installed: Getopt::Long, version 2.38 [24318] dbg: diag: module installed: LWP::UserAgent, version 5.813 [24318] dbg: diag: module installed: HTTP::Date, version 5.810 [24318] dbg: diag: module installed: Archive::Tar, version 1.54 [24318] dbg: diag: module installed: IO::Zlib, version 1.09 [24318] dbg: diag: module not installed: Encode::Detect ('require' failed) (....)
Come si può vedere, il test va a richiamare tutti i moduli in Perl necessari al buon funzionamento di SpamAssassin, e ci indica quelli che non sono installati nel sistema.
Per maggior comodità, ho evidenziato in grassetto i moduli mancanti di questa ipotetica (ma nemmeno tanto) installazione.
Nota bene: senza i moduli mancanti, SpamAssassin funziona comunque, ma essendo un sistema che si basa sulla somma di molteplici test su ogni messaggio di posta elettronica che gli viene passato, è evidente che se dei moduli sono configurati male o addirittura mancanti il risultato dei test può non essere così affidabile come invece ci si aspetterebbe da un buon sistema contro lo SPAM.
È chiaro che ci aspetta subito un compito importante:
Installare i moduli Perl mancanti
Personalmente ho individuato due modi per installare (o aggiornare se serve) dei moduli per:
- Da terminale, tramite CPAN (normalmente installato nei sistemi Linux)
- Da interfaccia web, tramite WEBMIN (se installato)
Tramite CPAN è un pochetto più brigoso ma sicuramente da preferire, a mio avviso, è più affidabile e l’installazione può essere seguita con maggior attenzione, che è sempre bene.
Ora giusto un cenno su come fare con CPAN, magari approfondiremo l’argomento in un altro articolo.
Usare CPAN per installare i moduli Perl
Diamo per scontato che CPAN sia installato e funzionante, lanciando cpan da terminale arriveremo a questo prompt:
cpan>
La sottolineatura ed il grassetto non sono un vezzo, CPAN si presenta proprio così 😉
Per installare un modulo Perl, prendendo ad esempio uno di quelli dell’esempio, basta lanciare il comando che segue e attendere le eventuali istruzioni a video, talvolta non viene richiesto nulla, altre occorre rispondere a semplici domande:
cpan> install Net::Ident
È possibile che occorra forzare l’installazione, allora il comando diventerà questo:
cpan> force install Net::Ident
Incrociando le dita, se tutto andrà per il meglio i moduli verranno aggiornati, altrimenti CPAN ci avviserà che non è stato possibile farlo per qualche motivo.
La prova del nove la si effettua uscendo da CPAN con il comando quit, riavviando SpamAssassin affinché ricarichi moduli e confgurazione, solitamente con il comando
/etc/init.d/spamassassin restart
oppure, a seconda della distribuzione, con
/etc/init.d/spamd restart
quindi rilanciare il test effettuato all’inizio di questo articolo
spamassassin --lint -D
e nel risultato controllare nuovamente la situazione dei moduli installati e non.
Per il momento ci fermiamo qui, per non mettere troppa carne sul fuoco…
Abbiamo comunque fatto un bel passo avanti, perché se mettiamo a posto gli errori di configurazione riguardanti i moduli Perl mancanti, e non ho mai incontrato installazione che non abbia questo problema, sicuramente il nostro sistema AntiSPAM basato su SpamAssassin effettuerà dei test sicuramente più precisi e affidabili di prima.
Nelle prossime occasioni continueremo ad analizzare il risultato del comando di test di SpamAssassin descritto sopra, e vedremo come sistemare altri eventuali errori allo scopo di migliorare sempre di più il riconoscimento dello SPAM, per la gioia delle nostre caselle di posta elettronica.
Chiunque abbia consigli, suggerimenti e approfondimenti, sul merito di questo articolo e su quelli che abbiamo anticipato, è ovviamente il benvenuto! 🙂