Portada del sitio > Internet > Instalar un servidor > Antispam (III)
Instalar un servidor - XV
Antispam (III)
Lucha contra el spam - Parte III
Jueves 3 de agosto de 2006, por
SpamAssassin
spamassassin es un filtro para detectar el correo basura o spam.
Instalamos spamassassin
# apt-get install spamassassin spamc
Integración con amavis
La integración con amavis la habíamos hecho en el capítulo anterior comentando la línea:
# @bypass_spam_checks_acl = qw( . )
en el fichero /etc/amavis/amavisd.conf
Configuración de spamassassin
Puesto que spamassassin es llamado por amavis, es la configuración de amavis la que prima. En el fichero de configuración de spamassassin tan sólo nos interesa que no se ejecute como demonio (puesto que lo llama amavis). Para ello debemos asegurarnos que en el /etc/default/spamassassin tengamos el demonio no habilitado:
# Change to one to enable spamd
ENABLED=0
Razor, pyzor, dcc-client y filtros bayesianos
Razor, Pyzor y dcc son filtros antispam que usan redes corporativas con bases de datos de mensajes spam. Suelen comprobar las sumas de verificación (checksum) de un mensaje y las comparan con la base de datos (donde tienen sumas que saben que son spam).
Dudo bastante de estos sistemas, pues imagino que con insertar una cadena aleatoria en el texto del mensaje (con letra blanca para no ser vista) cambiaría el checksum
Se supone que deben hacer algún efecto, por tanto los instalamos e integramos con spamassassin:
# apt-get install razor pyzor dcc-client
Además le decimos que use los filtros bayesianos, que después explicaré para qué sirven.
El fichero de configuración /etc/spamassassin/local.cf debe quedar así:
# How many hits before a message is considered spam.
required_score 5.0
## Hay que modificar el /etc/amavis/amavisd.conf pues tiene preferencia. ## Modificamos la siguiente línea
## $sa_tag2_level_deflt = 5.0; # add 'spam detected' headers at that level
# Change the subject of suspected spam
rewrite_header Subject *****SPAM*****
# Esta línea creo que tampoco hace efecto, pues toma la de amavis
# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
bayes_auto_learn 1
bayes_path /var/lib/amavis/.spamassassin/bayes
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
Ahora deberíamos reiniciar todo para que funcione:
# /etc/init.d/postfix restart
# /etc/init.d/amavis restart
Filtros bayesianos
Se basan en estudios de probabilidad asignando una serie de puntos a ciertas partes de los mensajes. Si el mensaje supera la puntuación establecida por nosotros, es considerado como SPAM.
Veamos en primer lugar las puntuaciones. Cualquier programa de correo tiene las opciones de Mostrar Cabeceras. Veamos un ejemplo:
Si nos fijamos en la línea:
X-Spam-Status: No, hits=6.1 tagged_above=4.0 required=6.3 tests=BAYES_99,
Vemos que No ha sido considerado como spam porque tiene 6.1 puntos y se necesitan 6.3. Además los filtros bayesianos le dan una probabilidad superior al 99% de ser spam
Hemos puesto el listón muy alto (6.3) y se cuelan los spam fácilmente. Aunque en las configuraciones por defecto suele venir a 5.0 a mí se me colaban algunos spam que tenían 4.2, 4.3, etc. por lo que he tenido que bajarlo (cuanto más lo bajes, menos spam te entra pero corres riesgo de que rechace algún mensaje bueno.
Las puntuaciones las establecemos en el /etc/amavis/amavisd.conf
...
$sa_tag_level_deflt = 4.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 4.1; # add 'spam detected' headers at that level
$sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions
...
Recuerda que si modificas el fichero de configuración, tienes que reiniciar.
Entrenamiento bayesiano
Puesto que los filtros bayesianos se basan en probabilidad, cuanto más mensajes tengan para aprender, mejor funcionarán. Se dice que necesitamos mostrarle al menos 200 mensajes spam y 200 mensajes buenos.
Para ello es conveniente que crees en tu buzón (y que también lo hagan los usuarios de tu servidor) dos carpetas nuevas de nombres, por ejemplo spam y NOspam , de forma que los correos spam que te lleguen los muevas a la carpeta spam y, procurando mantener al menos el mismo número, mover a la carpeta NOspam los correos buenos (puedes aprovechar los correos buenos que quieras tirar a la papelera para meterlos en NOspam).
Ahora solo queda decirle a spamassassin que aprenda de esos correos:
# sa-learn --spam --mbox /home/dani/mail/spam
Learned from 30 message(s) (34 message(s) examined).
La carpeta /home/dani/mail es la que contiene mi correo (en tu configuración puede ser otra).
La respuesta nos dice que ha aprendido de 30 mensajes (de los 34 que ha examinado).
Con sólo 30 mensajes aún no está lo suficientemente entrenado (recuerda que necesita al menos 200)
Ahora le decimos que aprenda de los mensajes buenos:
# sa-learn --ham --mbox /home/dani/mail/NOspam
Learned from 28 message(s) (28 message(s) examined).
Fíjate que ahora ponemos ham en lugar de spam
Además usamos la carpeta NOspam
No es normal que aprenda de todos (los 28) los mensajes. En este caso le he puesto mensajes seleccionados de forma que sean todos distintos y de distintos remitentes (incluyendo correos clásicos: yahoo, hotmail, etc. , listas de correo, etc.) para conseguir que aprenda más rápido.
También es previsible que nos equivoquemos, por ejemplo moviendo a la carpeta spam un mensaje que sea bueno.
Pues eso también está previsto: creamos una carpeta temporal, por ejemplo temp, movemos el mensaje mal clasificado a la carpeta temp y le decimos que se olvide de todo lo que ha aprendido de ese mensaje.
# sa-learn --forget --mbox /home/dani/mail/temp
Entonces movemos el mensaje a la carpeta correcta.
Conclusión
Aunque no debería haberlo hecho, mi dirección de correo (dani@lubrin.org) aparece públicamente en demasiados sitios de la red. Como consecuencia de ello recibía entre 10 y 20 mensajes spam al día. Después de aplicar todo lo explicado en estos artículos, el spam que recibo se ha reducido a 1 mensaje cada 10 días (más o menos), lo que de momento apenas molesta. Llegará un día en que se intesificará y llegará a ser molesto de nuevo; entonces lo primero será actualizar (si no lo están) postfix, amavis y spamassassin a sus últimas versiones y si no basta con ello habrá que investigar el usar reglas particulares u otras restricciones (que seguro darán pié a un nuevo artículo de profundización). Sin embargo, para el objetivo de este manual (un pequeña red casera) las restricciones aplicadas y explicadas serán más que suficientes (espero te sirvan de ayuda)