Usuario de Evolution harto de spam.

¿Usas Evolution y aún tienes Spam? ¿Quieres eliminarlo de una vez por todas? Bien... La verdad es que aún no lo he conseguido, pero estoy tras la pista. A ver si entre todos conseguimos quitarnos de enmedio el molesto spam.

Motivación

Uso Evolution 2.6.0 y me he propuesto no volver a ver un mail de Spam o, al menos, ver los menos posibles.

Buscando por ahí, he descubierto el paquete "evolution-plugins", que trae, entre otros, plugins para utilizar spamassessin (desde ahora SA) y bogofilter (BF).

Le pregunté a google y descubrí que SA utiliza más filtros que BF, pero que Evolution sólo permite utilizar el filtro bayesiano, que es el mismo que utiliza BF. Sin embargo, BF es más rápido que SA, por lo que la elección está clara.

Primeros pasos

Lo primero es abrir el evolution y editar los "complementos"; marcaremos el filtro para BF y desmarcaremos el de SA.

Con google como fuente de información, descubro que Evolution no ejecuta bogofilter para cada mail. Eso es bueno y es malo: por una parte tarda menos; por otra, el filtro se entrena peor. Por ello es necesario entrenarle a mano con e-mails buenos (NON-SPAM), ya que con e-mails malos le podremos ir entrando poco a poco.

Metiéndole caña

Vamos a probar. Marcamos un par de e-mails y con el botón derecho los "guardamos como" ejemplo.mail. Vamos a una consolita, hacemos lo siguiente:

$ cat ejemplo.mail|bogofilter -n

Con lo que le decimos que eso no es spam. Ahora probamos a ver lo que bogofilter ha aprendido:

$ bogoutil -H ~/.bogofilter/wordlist.db

Nos aparecerá un gráfico chulo con las cosas que sabe. Es el momento de meterle toda más caña:

$ cat ~/.evolution/mail/local/Inbox|bogofilter -n

Volvemos a ver el gráfico y vemos que ha cambiado.

Es el momento ideal para meterle algo de spam. En bulma encontré un fichero con spam interesante.

Para insertarlo, hacemos algo parecido a lo anterior:

$ zcat spams.txt.gz | bogofilter -s

Y podemos volver a ver el gráfico. Ahora estará más compensado.

Acelerando del aprendizaje

Con el fin de acelerar el proceso de aprendizaje y para que bogofilter sepa correctamente qué es spam y qué no de entre los correos que me llegan, decidí incluir un filtro para todos los correos que me llegasen. El filtro aplica la regla siguiente (la condición es apra que se aplique siempre):

Si puntuación igual -1, encauzar al programa `bogofilter -u`

Ésta es una opción peligrosa, pero a grandes males grandes remedios.

Dejé la opción puesta durante unas 3 ó 4 semanas y después la quité. La cantidad de falsos positivos y negativos ha sido demasiado alta durante esta época, pero 2 semanas después de quitar este filtro apenas hay falsos positivos o negativos. Me ha costado bastante, pero me he librado casi por completo del spam.

Situación actual

Me encuentro casi sin spam, aunque llegar a esta situación ha sido duro. La semana pasada recibí un par de falsos positivos y un par de falsos negativos. A menudo se comportaba mal con los mensajes en inglés, por lo que me apunté a un par de listas en inglés para poder enseñar a bogofilter y así solucionarlo. Cada día filtra mejor Laughing out loud

Sin embargo, si alguien conoce algún sistema para acelerar el proceso se lo agradecería mucho, ya que más de un mes es mucho tiempo.

Enlaces relacionados

Una noticia en Bulma: Bogofilter mata mejor.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

problema con el filtro

Hola

he seguido los pasos de este artículo y la cosa funciona bastante bien hasta en punto final, cuando trato de crear el filtro para que todos los mensajes sean analizados por bogofilter. supongo que es una cuestión de poner o no poner unas comillas, pero ya he hecho varias pruebas y al añadir este filtro al evolution

puntuación igual -1, encauzar al programa `bogofilter -u`

el bicho me da el siguiente error cuando va a descargar mensajes
Error mientras «Obteniendo mensajes».

Error ejecutando la búsqueda del filtro: Unknown identifier: -1: (and

(match-all (= (cast-int (user-tag "score")) -1))

)

En concreto, sospecho que el problema está en el `bogofilter -u` que incluyo literalmente a la hora de crear el filtro.

Un saludo y gracias por el artículo y la ayuda