BULMA Bulma amb el projecta Defective by Desing
Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(02/09/2010 20:12:57)
    
Google


En bulma.net
En internet
Bogofilter mata mejor (20091 lectures)
Por Ricardo Galli Granada
gallir (http://mnm.uib.es/gallir/)
Creado el 07/10/2002 18:59 modificado el 01/11/2002 12:38

Hace un tiempo escribí que el spamassasin es muy bueno para detectar los spams, pero con tiempo de usarlo descubrí sus problemas. Entonces leí sobre métodos bayesianos de detección de spams. Y descubrí el bogofilter, que implementa este tipo de detección. En este artículo describo a grandes rasgos los fundamentos de funcionamiento y lo más importante, como configurarlo y "enseñarle" con un cuerpo (corpus) de spams que he ido coleccionado las últimas semanas.
Actualización: Cambios en la versión 0.7.6. Explicado en la página 3.

Pagina1/3

Problemas del spamassasin

Actualización
Ya se encuentra en un estado bastante estable (ya no hay cambios constantes de formatos y opciones). Lo estoy usando hace menos de un mes, hace más de una semana que no recibo ningún spam. Y lo más importante, no ha dado ningún positivo en todo ese tiempo.
Actualizado el fichero de spams, hay más de mil.
Cuidado: Si "entrenáis" al bogofilter con esos 1000 spams, tenéis que entrenarlo con el menos 3000 mensajes buenos (mantener la relación 1-3), sino dará muchos falsos positivos al principio.

El problema fundamental con el spamassasin es que está basado en el reconocimiento de patrones de texto usando reglas, lo que obliga a estar continuamente actualizando y agregando nuevas reglas para adaptarse a los cambios que introducen los spammers en sus mensajes. Además hay que elaborar reglas para cada lenguaje.

No sólo eso, para poder actualizar y mejorar la detección hay que introducir nuevas reglas, lo que hace que el proceso de análisis de cada mensaje sea aún más lento de lo que ya es actualmente, entre otras cosas porque está implementado en Perl y tiene que trabajar con muchas reglas.

Y no acaba aquí, en problema que creo que es el más grave, es que puede dar falsos positivos. Los falsos positivos son mensajes que no son spams, pero son considerados como tal por el filtro. Que de vez en cuando, como así sucede, llegue un spam que haya pasado el filtro (falso negativo), no pasa nada, pero los falsos positivos es lo peor que puede pasar, ya que puedes perder o dejar de leer mensajes importantes.

Me ha pasado bastante con amigos que me escriben en catalán, y con muchos mensajes de la lista de Bulma (las cabeceras “anti-abuse” que pone el mailman son consideradas como cabeceras de spammers por el spamassassin). Así que me decidí a probar otras cosas, el spamassasin aunqueme convenció en un principio, al poco tiempo mostró sus problemas.

Un plan para el spam

Durante un tiempo estuve investigando que métodos había para detección de spams, pensaba que la lógica difusa podía ser una solución, hasta que encontré el ensayo de Paul Graham, “A Plan for Spam”. En dicho ensayo Paul Graham opina que los métodos basados en reglas no sirven para detectar spams, no sólo por los problemas mencionados anteriormente, sino porque sería muy fácil para los spammers encontrar los trucos para saltarse las reglas de filtrados, ya que son de dominio público y común para todas las instalaciones.

La solución, según él (y yo también :-) pasa por usar métodos que “aprendan” de los mensajes que recibe cada usuario y generar su propia base de datos de palabras. Esta base de datos sirve para calcular las probabilidades combinadas de que un mensaje sea o no spam.

El método “bayesiano” que propone es muy interesante, aunque ha recibido críticas y sugerencias, ya que en éste caso el filtro se adaptaría automáticamente al idioma y tipos de mensajes que recibe cada uno.

El problema fundamental de ésta aproximación es que hay que entrenar inicialmente al programa con un conjunto relativamente de mensajes spams y otros válidos para que arme su base de datos inicial. A partir de allí el programa puede aplicar los métodos bayesianos y usar esos mismos mensajes, ya clasificados como spam o no, para realimentar la base de datos.

Fue así que encontré una implementación, levemente mejorada, de éste método, el bogofilter.

Bogofilter

El bogofilter es una implementación, muy eficiente, en C y con db2 para almacenar las palabras y sus apariciones en mensajes programado por Eric Raymond. Al día que estoy escribiendo ésto, el bogofilter está en su versión 0.7.4cvs1004 y a pesar que sufrió bastantes cambios “molestos” en los formatos utilizados (que obligaban a regenerar la base de datos por cada actualización), desde hace un par de semanas que no veo cambios de éste tipo, por lo que se puede estar casi tranquilo que no habrá trabajos “complejos” de migración hasta su versión estable.

Funcionamiento

Bogofilter mantiene un par de bases de datos en el directorio $HOME/.bogofilter/:

  • goodlist.db

  • spamlist.db

Cada una de ellas mantiene una lista de “tokens” (palabras) junto con la cantidad de veces que esa palabra ha aparecido en mensajes válidos o spams. Esos números son usados para calcular la probabilidad de que el mensaje sea un spam.

Una vez que se han calculado las probabilidades, se usan aquellas más alejadas de la media para combinarlas usando el Teorema de Bayes de probabilidades combinadas. Si la probabilidad combinada es mayor que 0.9, bogofilter retorna 1, caso contrario retorna 0.

La fiabilidad del bogofilter depende exclusivamente de la cantidad de palabras que tenga en su base de datos, mientras más tenga y mayor se la cantidad de aparciciones de cada palabra en un mensaje válido o spam, mejores serán sus resultados.

Si sólo le enseñanmos al principio cuales son mensajes válidos, no podrá detectar los spams. Al contrario, si sólo le “enseñamos” spams, considerará a muchos mensajes válidos como spams (falsos positivos...). O sea, el aprendizaje inicial es importantísimo, y nos ahorrará mucho trabajo de mantenimiento de la base de datos.

En resumen, lo que hay que hacer, además de instalar el programa (apt-get install bogofilter :-), son los siguientes pasos:

  1. Entrenarlo con un conjunto relativamente grande de mensajes válidos que tengamos almacenados.

  2. Entrenarlo con un conjunto grande de spams (no os preocupéis, os doy una lista de más de 700 spams).

  3. Configurar el .procmailrc.

  4. Seguimiento y mantenimiento de los primeros días.


Paginas:  1  2  3  Abreviatura Siguiente>>

Imprimir
Version para
imprimir

Imprimir
Version
PDF
GRACIAS
Distribuciones Universal
Por el servidor
Dpto. de Matematicas e Informatica
Calificacion
****
Vots: 49
Danos tu opinion:
**** Excelente
***0 Muy Bueno
**00 Bueno
*000 Regular
0000 Malo
Relacionados
. Exim 3 con MailScanner y ClamAV
. Control anti-spam corporativo con Exim4+Spamassassin
. Ensalada de correo: Courier-imap, Exim, Fetchmail, Procmail, Spamassassin, Kmail, Evolution, Thunderbird y Squirrelmail
. Ràdio - 'Des de la Xarxa' - S'editen 50.000 noves còpìes de LinEx - 'Halloween' a Microsoft - Augmenta el correu no desitjat
. Procesando correos con Procmail
. Asesinando spams
SECCIONES
Noticia
Breve
Truco
Enlace
Participa
Proyecto
Articulo
Webbulma
Manoletada :-)
Seguridad
Modificado: 9/9/2007 04:03:34 | Tiempo Total: 0.037 segs | Kernel: Linux - i686 - 2.6.26-1-686 | Last boot: 02/09/2010 20:37 CEST
Powered by Apache    MySQL    PHP    Gimp