Filtro Anti Spam en el servidor
Copyright © 14 Marzo 2004 Lorenzo Gil Sánchez
Motivacion
El correo no deseado (spam) se puede filtrar en el cliente o en el servidor. Filtrarlo en el servidor tiene la ventaja de que si utilizamos varios clientes de correo distintos (webmail, Evolution, Thunderbird, Outlook, ...) o simplemente consultamos el correo desde sitios distintos (casa, oficina, cibercafe) no tenemos que mantener varias configuraciones para combatir el spam. Todo se hace desde el servidor y una unica vez.
Software elegido
Se ha elegido spambayes por su facil integracion con procmail, el programa que distribuye el correo desde el servidor SMTP a las distintas carpetas de cada usuario. Otras ventajas son:
- Facilidad de entrenamiento automatico (en una tarea de cron)
- Escrito en Python (si algo falla podemos tratar de arreglarlo)
- Usa varios algoritmos bayesianos para clasificar el spam
- Se configura por separado para cada usuario, asi, si alguien no quiere usarlo, no tiene por que hacerlo
- Es libre
Instalacion de spambayes
Spambayes requiere Python 2.2.2 pero en el servidor (Debian Woody) solo tenemos Python 2.2.1. Asi que se ha instalado Python 2.4 en /usr/local
Spambayes usa la base de datos Berkeley DB y es necesario que Python 2.4 tenga soporte para ella. Asi que, antes de compilar, se ha instalado el paquete Debian libdb4.2-dev
Configuracion de spambayes
Estos son los pasos a seguir para configurar spambayes para un determinado usuario.
Creamos el fichero .spambayesrc en nuestro directorio home:
[Storage] persistent_use_database = True persistent_storage_file = ~/.hammiedb
Spambayes se entrena dandole dos montones, uno de spam y otro de ham (correo bueno). Para ello primero creamos la base de datos:
sb_filter.py -n
A continuacion entrenamos inicialmente spambayes:
sb_mboxtrain.py -f -s ~/Maildir/.spam/ -g Maildir/.correobueno
Por ultimo modificamos nuestro fichero .procmailrc para que el spam y el ham vayan a las carpetas apropiadas:
:0 fw:hamlock | /usr/local/bin/sb_filter.py :0 * ^X-SpamBayes-Classification: spam .spam/ :0 * ^X-SpamBayes-Classification: unsure ./posible_spam
Estas lineas deben ir antes que cualquier otra regla de .procmailrc. La primera regla redirige todo lo que entre al filtro spambayes, la segunda coloca el spam en una carpeta llamada spam (que debe existir previamente) y la ultima coloca el correo que no es seguro que sea spam en la carpeta posible_spam. Todo lo demas (ham) se coloca en la carpeta inbox o en donde corresponda segun el resto de reglas que tengamos en .procmailrc
Entrenando a spambayes
Dia a dia debemos colocar los correos que sean spam y no hayan sido clasificados como tales por spambayes en la carpeta spam. Asi mismo es conveniente repasar de vez en cuando el spam por si spambayes se ha equivocado. Hay formas mas sofisticadas de hacer esto como la que se describe en el Wiki de Spam Bayes
Periodicamente debemos entrenar a spambayes, para lo cual podemos usar una tarea de cron:
crontab -e
Por ejemplo, para entrenarlo cada 2 horas:
0 */2 * * * /usr/local/bin/python /usr/local/bin/sb_mboxtrain.py -s /home/lgs/Maildir/.spam/ -g /home/lgs/Maildir/





