16 de Septiembre, 2005

Segunda oportunidad para falsos positivos

Ya comentaba ayer una excepción de correo mal clasificado como spam, que además había resultado especialmente problemática. También comentaba las posibles soluciones que estaba implementando, y ya las tengo en pruebas.

En servidores con tráfico moderado puede ser una idea que el administrador revise de forma periódica el correo clasificado como spam a la búsqueda de posibles falsos positivos, aunque creo que esta opción atenta contra la privacidad de los usuarios y es poco práctica a partir de cierto volumen de mensajes.

Así creo que más bien busco tener una segunda oportunidad que me permita rechazar los mensajes clasificados como spam, y a la vez guardar copia del mensaje rechazado por si algún usuario sospecha que ha perdido un correo.

Para las pruebas estoy empleando esta segunda opción, conservando el supuesto spam por un tiempo prudencial.

Por ahora la política es pass, para dejar pasar los mensajes después de la clasificación, al menos hasta que Pedro reciba los datos de sus billetes de avión :), aunque la idea es volver a activar reject pronto.

Además de emplear quarantine_mdir para guardar copia del spam, voy a combinar exclude_string junto a reject para que los remitentes de mensajes rechazados obtengan un error descriptivo útil. En /etc/bogom.conf:

# mensaje de error cuando se rechaza un correo
reject "Spam pattern detected, add *no filter* to the subject to fix this"

# con esta cadena en el asunto no filtramos
exclude_string "*no filter*"

Esto permite que el remitente nos ayude a corregir errores, siempre que se reciba el correo directamente en el servidor. Cuando se trata de un concentrador de correo y es fetchmail el que entrega los mensajes, el remitente no colaborará porque la entrega se hizo correctamente en el servidor externo y no le llegará un bounce con el error.

Además solo quiero conservar el spam durante cierto tiempo, así que en nuestro cron, de forma diaria, ejecutaremos algo como:

#!/bin/sh
# clean messages older than 7 days from spam maildir
# run from cron @daily

# days interval
INTERVAL=+7
# path to maildir
MAILDIR=/var/spool/bogofilter/spam.mdir

/usr/bin/find ${MAILDIR}/new/ -mtime $INTERVAL -type f -exec rm -f {} \;

# EOF

Esto nos permite coservar cada mensaje durante 7 días (6 en realidad si lo ejecutamos pasadas las 00:00h porque mtime computa fracciones de 24 horas).

Tras un periodo prudencial de pruebas, publicaré la versión 1.8 del milter con estas mejoras. El anuncio del parche para la versión 1.7.1 lo hice ayer.

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

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: