8 de Febrero, 2007

Clasificación triestado en bogofilter

Clasificación triestado

Llevo unos días intercambiando correos con Borja debido a un problema que está teniendo con bogom en su servidor.

Él ya ha implantado antes una solución con bogom + bogofilter sin problemas, y en este caso (instalando desde fuentes la versión 1.1.5, lo que no sé si es bueno), tras un tiempo el servicio se degrada si no activa las cabeceras con el valor de spamicity.

Es un fallo muy raro, porque aparentemente se queda enganchada alguna ejecución de bogofilter, y las que llegan detrás se bloquean, hasta que el servidor SMTP acaba por no aceptar más correos.

No he conseguido reproducirlo en mi máquina (trabajo con 0.92.8, instalada desde ports). Hasta que no descubra qué pasa no me voy a quedar tranquilo, aunque no sea cosa de mi programa ;).

Estudiando la situación, uno de los temas que más me han llamado la atención es que ahora por defecto bogofilter se configura con una respuesta triestado: spam, ham y unsure.

Si miramos las opciones de configuración responsables del comportamiento triestado, en mi versión nos encontramos:

#### CUTOFF Values
#
#       both ham_cutoff and spam_cutoff are allowed.
#       setting ham_cutoff to a non-zero value will
#       enable tristate results (Yes/No/Unsure).
#
#ham_cutoff  = 0.00
#spam_cutoff = 0.99
#
## with Yes/No/Unsure output:
## ham_cutoff = 0.45
## spam_cutoff= 0.99

Con esta configuración (comentado con una sola almohadilla tenemos los valores por defecto), todo lo que no sea spam (una puntuación de 0.99 o más), será ham (correo legítimo).

Ahora se aplica sin embargo la propuesta de más abajo: es correo legítimo si la puntuación es 0.45 o menos, spam si hablamos de 0.99 o más en el valor de spamicity (que es como se conoce a la puntuación), y unsure (análisis no concluyente) a todo lo demás.

Relación spam/ham/unsure
Clasificación del correo procesado ayer

Por si eso tuviera relación con el problema, poco probable (el código de esa parte del milter es tan sencillo que no veo cómo puede fallar :S), he activado la clasificación triestado poniendo ham_cutoff a 0.45, como se recomienda, por ejemplo, en este interesante artículo de Greg Louis sobre parámetros de bogofilter.

La mala noticia es que sigo sin reproducir el problema, tras un par de días trabajando con triestado, con y sin cabeceras de spamicity, y la buena es que he podido comprobar que mis scripts para actualizar la gráfica de relación spam/ham diario funcionan bien con esta clasificación (en amarillo las clasificaciones no concluyentes).

Pese a que bloqueo el spam en el servidor (dando un error SMTP que informa de la detección de un patrón de spam, ofreciendo una solución fácil para no ser filtrado; curiosamente nunca me ha llegado un mensaje que emplee esa característica :D), el hecho de que pasen mensajes clasificados con dos niveles puede ser muy útil.

Podríamos, por ejemplo, atender primero los correos que son ham, ya que será muy poco probable que nos encontremos un falso negativo (un correo de spam que no ha sido clasificado), y luego revisar los no concluyentes, en los que quizás sí nos encontremos algún mensaje susceptible de ser reclasificado para mejorar el trabajo del filtro con mensajes futuros.

Anotación por Juan J. Martínez, clasificada en: antispam, spam.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: