Entrenando al “Spamassassin”
Se supone que el SpamAssassin tiene un script que corre diariamente y revisa los correos enviados a las cuentas de junkmail y notjunkmail para mejorar el filtro bayes; bueno, hasta ahora no he encontrado ese script ni se donde buscarlo, así que mejor hice uno.
El primer paso es crear las cuentas de correo junkmail y notjunkmail, eso se hace con el Workgroup Manager, no necesariamente se les asigna un home folder, pero si se les da cuenta de correo, y es todo lo que hay que hacer con ese programa.
Ahora que ya existen esas cuentas, cada vez que alguien reciba un correo que se pueda considerar spam, puede redirigirlo a la cuenta junkmail. Si es el caso contrario, que se marcó como spam pero no lo es, hay que redirigirlo a la cuenta notjunkmail (ojo, los mensajes se redirigen, no se les da forward).
Ahora si, en el servidor.
Para que el SpamAssassin pueda aprender los patrones de los correos spam, el comando es el siguiente:
/usr/bin/sa-learn --spam /var/spool/imap/user/junkmail/*\.
Igualmente para que aprenda lo que no debe marcar como spam:
/usr/bin/sa-learn --ham /var/spool/imap/user/notjunkmail/*\.
Listo, ya se está entrenando al SpamAssassin.
Ahora hay que ir quitando lo que ya no se necesita para no ocupar espacio en el disco duro del servidor, para ello hay que eliminar el correo de las dos cuentas, pero para que sigan funcionando bien, también hay que actualizar los archivos de registro del administrador de correo, así que se retomará una parte de lo que se escribió el 2005-10-06.
Primero impunemente se elimina el correo:
cd /var/spool/imap/user/junkmail
/bin/rm *
cd /var/spool/imap/user/notjunkmail
/bin/rm *
Ya vacíos los directorios, hay que reconstruir los archivos necesarios:
/usr/bin/sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -r user/junkmail
/usr/bin/sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -r user/notjunkmail
Listo, ya se tienen las partes, ahora hay que armarlas en un script que pueda ejecutarse periodicamente, el cual puede quedar así:
#!/bin/sh# Primero la basura
/usr/bin/sa-learn --spam /var/spool/imap/user/junkmail/*\.
/bin/rm /var/spool/imap/user/junkmail/*
/usr/bin/sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -r user/junkmail# Luego lo inofensivo
/usr/bin/sa-learn --ham /var/spool/imap/user/notjunkmail/*\.
/bin/rm /var/spool/imap/user/notjunkmail/*
/usr/bin/sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -r user/notjunkmail
Este script va a quedar guardado en /usr/local/scripts con el nombre 820.entrena_spamassassin.
Ojo, no olvidar hacer lo siguiente:
chmod +x /usr/local/scripts/820.entrena_spamassassin
Finalmente se hará un enlace simbólico en el directorio de las tareas diarias:
cd /etc/periodic/daily
ln -s /usr/local/scripts/820.entrena_spamassassin