Antispam in Evolution con Bogofilter: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Riga 4: Riga 4:
Usando Evolution ho notato che il filtro antispam che richiede l'uso di spamassassin è molto lento soprattutto inserendo i controlli esterni (ovvero ogni mail viene confrontata con una lista di mail-spam note). Vi sarà capitato forse anche di usare Thunderbird che include un filtro anti-spam bayesiano (è un tecnica statistica) e di notare che questo tipo di filtro è molto più veloce ed ugualmente accurato (non so in termini assoluti quale sia il migliore ma per usi SOHO entrambi sono ampiamente soddisfacenti).
Usando Evolution ho notato che il filtro antispam che richiede l'uso di spamassassin è molto lento soprattutto inserendo i controlli esterni (ovvero ogni mail viene confrontata con una lista di mail-spam note). Vi sarà capitato forse anche di usare Thunderbird che include un filtro anti-spam bayesiano (è un tecnica statistica) e di notare che questo tipo di filtro è molto più veloce ed ugualmente accurato (non so in termini assoluti quale sia il migliore ma per usi SOHO entrambi sono ampiamente soddisfacenti).


È possibile usare un filtro bayesiano anche con evolution, con conseguente aumento della velocità. A tal scopo basta usare bogofilter, un filtro antispam bayessiano da linea di comando. Per i più smaliziati descriverò sinteticamente il procedimento, gli altri troveranno informazioni più dettagliate nel seguito. In pratica basta usare la funzionalità di evolution di creare filtri che come condizione di verifica discriminano il valore di ritorno di un programma al quale è stata mandata in pipe l'email. È molto più semplice di quello che sembra in realtà. Il vantaggio di velocità è notevole anche perchè si possono filtrare prima tutte le mail delle mailing list e mandare al filtro antispam solo le altre email. Lo svantaggio è che, usando una tecnica statistica, bisogna inizialmente "istruire" bogofilter a riconoscere lo spam, ma la cosa non presenta problemi se si dispone già di alcune decine di email di spam.
È possibile usare un filtro bayesiano anche con evolution, con conseguente aumento della velocità. A tal scopo basta usare bogofilter, un filtro antispam bayessiano da linea di comando. Per i più smaliziati descriverò sinteticamente il procedimento, gli altri troveranno informazioni più dettagliate nel seguito. In pratica basta usare la funzionalità di evolution di creare filtri che come condizione di verifica discriminano il valore di ritorno di un programma al quale è stata mandata in pipe l'email. È molto più semplice di quello che sembra in realtà. Il vantaggio di velocità è notevole anche perché si possono filtrare prima tutte le mail delle mailing list e mandare al filtro antispam solo le altre email. Lo svantaggio è che, usando una tecnica statistica, bisogna inizialmente "istruire" bogofilter a riconoscere lo spam, ma la cosa non presenta problemi se si dispone già di alcune decine di email di spam.




==Usare bogofilter sulle mailbox di Evolution==
==Usare bogofilter sulle mailbox di Evolution==


Evolution mette le mail in /home/$USER/.evolution/mail/local/, un file (in formato mbox) per ogni cartella che abbiamo in Evolution. Le email della cartella "Posta in arrivo" compreso lo spam ("da Cestinare") stà tutta nel file Inbox: evolution aggiunge infatti un header che gli permette di distinguere lo spam dall'ham (prosciutto in inglese: tutto ciò che non è spam). Ora, per istruire bogofilter è molto più comodo di disporre dello spam in un file separato. A tal scopo apriamo evolution e spostiamo tutta la posta in "Da cestinare" in una nuova cartella che chiameremo fantasiosamente Spam.
Evolution mette le mail in /home/$USER/.evolution/mail/local/, un file (in formato mbox) per ogni cartella che abbiamo in Evolution. Le email della cartella "Posta in arrivo" compreso lo spam ("da Cestinare") sta tutta nel file Inbox: evolution aggiunge infatti un header che gli permette di distinguere lo spam dall'ham (prosciutto in inglese: tutto ciò che non è spam). Ora, per istruire bogofilter è molto più comodo di disporre dello spam in un file separato. A tal scopo apriamo evolution e spostiamo tutta la posta in "Da cestinare" in una nuova cartella che chiameremo fantasiosamente Spam.
A questo punto non dimenticarsi di svuotare la cartella "posta indesiderata" e poi quella "da cestinare".
A questo punto non dimenticarsi di svuotare la cartella "posta indesiderata" e poi quella "da cestinare".


Riga 28: Riga 28:




Potremo ripetere il precendente comando anche per gli altri file corrispondenti a posta "pulita". Ad esempio io l'ho anche eseguito sugli altri file che contenevano i messaggi delle mailing list a cui sono iscritto. Se abbiamo indicato come mail "pulite" un file contentente spam, possiamo annullare l'operazione con lo stesso comando sostituendo -N al posto di -n.
Potremo ripetere il precedente comando anche per gli altri file corrispondenti a posta "pulita". Ad esempio io l'ho anche eseguito sugli altri file che contenevano i messaggi delle mailing list a cui sono iscritto. Se abbiamo indicato come mail "pulite" un file contenente spam, possiamo annullare l'operazione con lo stesso comando sostituendo -N al posto di -n.


Per vedere quanto adesso sia chiara a bogofilter la differenza tra spam e ham possiamo visualizzare un diagramma con il comando (dalla home):
Per vedere quanto adesso sia chiara a bogofilter la differenza tra spam e ham possiamo visualizzare un diagramma con il comando (dalla home):
Riga 67: Riga 67:
</pre>
</pre>


È importante che l'istrogramma che ne risulta sia molto simile a questo: cioè con 2 picchi separati e distinti (uno su 0.00 e l'altro su 0.95). Se abbiamo giocato troppo con i comandi per l'addestramento può darsi che il risultato sia diverso. Allora si consiglia di prendere il file wordlist.db (che si trova in /home/$USER/.bogofilter) cancellarlo e crearne uno nuovo con lo stesso nome. Non serve a nulla disinstallare i pacchetti del programma per poi reinstallarli.
È importante che l'istogramma che ne risulta sia molto simile a questo: cioè con 2 picchi separati e distinti (uno su 0.00 e l'altro su 0.95). Se abbiamo giocato troppo con i comandi per l'addestramento può darsi che il risultato sia diverso. Allora si consiglia di prendere il file wordlist.db (che si trova in /home/$USER/.bogofilter) cancellarlo e crearne uno nuovo con lo stesso nome. Non serve a nulla disinstallare i pacchetti del programma per poi reinstallarli.
Ovviamente il nuovo file sarà vuoto e necessiterà un'altra volta dell'addestramento.
Ovviamente il nuovo file sarà vuoto e necessiterà un'altra volta dell'addestramento.
Se l'istogramma è simile a quello mostrato allora possiamo dare in pipe una mail di prova "messaggio" che salviamo da qualche parte:
Se l'istogramma è simile a quello mostrato allora possiamo dare in pipe una mail di prova "messaggio" che salviamo da qualche parte:
Riga 78: Riga 78:
Se il valore di ritorno (echo $?) è 0 la mail sarà spam, se è 1 sarà ham, se è 2 bogofilter è incerto.
Se il valore di ritorno (echo $?) è 0 la mail sarà spam, se è 1 sarà ham, se è 2 bogofilter è incerto.


Da qui si capisce come sia possibile costruire un piccolo script al quale mandare in pasto (in pipe, tecnicamente) le nostre mail ed a seconda del valore di ritorno evolution sposterà o meno il messagio nella cartella dello Spam. Un esempio è il seguente:
Da qui si capisce come sia possibile costruire un piccolo script al quale mandare in pasto (in pipe, tecnicamente) le nostre mail ed a seconda del valore di ritorno evolution sposterà o meno il messaggio nella cartella dello Spam. Un esempio è il seguente:


<pre>
<pre>
Riga 114: Riga 114:




Potete, ad esempio, salvare lo script precedente col nome antispam, copiarlo nel PATH (ad es. /usr/local/bin/) e renderlo eseguibile (chmod +x antispam). Ogni volta che viene mandato in pipe una email a questo script, bogofilter viene aggiornato su cosa è spam e su cosa no e poi ci dirà se il messagio passato è spam o meno.
Potete, ad esempio, salvare lo script precedente col nome antispam, copiarlo nel PATH (ad es. /usr/local/bin/) e renderlo eseguibile (chmod +x antispam). Ogni volta che viene mandato in pipe una email a questo script, bogofilter viene aggiornato su cosa è spam e su cosa no e poi ci dirà se il messaggio passato è spam o meno.


==Configurare Evolution per l'uso di bogofilter==
==Configurare Evolution per l'uso di bogofilter==
Riga 120: Riga 120:
Non ci resta ora che configurare Evolution. Disabilitiamo innanzi tutto il filtro antispam integrato di evolution. Si trova in "Modifica/Preferenze/Preferenze di posta/Indesiderata". Poi creiamo un nuovo filtro per la posta in entrata. Come condizione di verifica del filtro (riquadro '''Se''') mettiamo "In pipe a programma", come nome del programma il nome dello script (/usr/local/antispam) e come valore di ritorno 0. Ora basterà aggiungere l'azione da compiere (riquadro '''allora''') che sarà ovviamente "Sposta nella cartella" Spam.
Non ci resta ora che configurare Evolution. Disabilitiamo innanzi tutto il filtro antispam integrato di evolution. Si trova in "Modifica/Preferenze/Preferenze di posta/Indesiderata". Poi creiamo un nuovo filtro per la posta in entrata. Come condizione di verifica del filtro (riquadro '''Se''') mettiamo "In pipe a programma", come nome del programma il nome dello script (/usr/local/antispam) e come valore di ritorno 0. Ora basterà aggiungere l'azione da compiere (riquadro '''allora''') che sarà ovviamente "Sposta nella cartella" Spam.


Ultimo consiglio che do è quello di inserire il filtro antispam alla fine della lista filtri (se ne avete altri), spostandolo in basso. Inserendo poi negli altri filtri come azione oltre a "Sposta nella cartella" anche "Arresta l'elaborazione" in modo che se il messagio corrisponde al filtro non verrà più processato dai filtri successivi. In questo modo arriveranno a bogofilter molti meno messaggi e l'elaborazione sarà ancora più veloce. Io uso questo metodo perchè non arriva spam alle mailng list a cui sono iscritto. Se vi arrivase spam anche dalle mailing list, potete non usarlo e fare filtrare tutto a bogofilter.
Ultimo consiglio che do è quello di inserire il filtro antispam alla fine della lista filtri (se ne avete altri), spostandolo in basso. Inserendo poi negli altri filtri come azione oltre a "Sposta nella cartella" anche "Arresta l'elaborazione" in modo che se il messaggio corrisponde al filtro non verrà più processato dai filtri successivi. In questo modo arriveranno a bogofilter molti meno messaggi e l'elaborazione sarà ancora più veloce. Io uso questo metodo perché non arriva spam alle mailng list a cui sono iscritto. Se vi arrivasse spam anche dalle mailing list, potete non usarlo e fare filtrare tutto a bogofilter.


==Conclusioni==
==Conclusioni==
6 999

contributi