jueves, 19 de marzo de 2015

Courier maildrop: Cómo enviar los mensajes marcados como SPAM a la carpeta de correo no deseado

Gracias a ISPConfig estoy empezando a jugar con Dovecot y su filtrado gestionado por ManageSieve. Este servicio permite a los usuarios gestionar sus scripts de filtrado sin necesidad de tener acceso físico (FTP, SCP, WebDAV o similar) al sistema de archivos mediante un estándar que puede ser integrado en diferentes clientes (como roundcube, horde, thunderbird, etc).

Como en la actualidad mantengo algunos servidores con postfix+courier hasta ahora usaba un script de maildrop genérico que detecta el flag de SPAM que deja Spamassassin en los mensajes para enviarlos a una carpeta IMAP en particular (SPAM hasta hace poco). Como la mayoría de clientes de correo usan la carpeta "Junk" como destino de los correos marcados como SPAM, decidí cambiar dicho directorio de destino y, de paso, publicar el script para que otras personas puedan usarlo.

Este es el archivo /etc/maildroprc genérico que uso en esos servidores:

# Global maildrop filter file

# Uncomment this line to make maildrop default to ~/Maildir for
# delivery- this is where courier-imap (amongst others) will look.
#DEFAULT="$HOME/Maildir"

# Compruebo si es un correo con puntuación mayor de 25. En ese caso lo mando a
# una carpeta que periódicamente usa "spamassassin -r" para reportar a Pyzor,
# Razor, DCC e incluso Spamcop (luego los valido manualmente en su web) y no
# permito que llegue al destinatario.
if (/^X-Spam-Level: *\*{25,}/)
{
    DESTINO="/var/mail/cron.SPAM"
    # Compruebo si la carpeta existe y en caso contrario la creo
    exception {
        `test -d "$DESTINO"`
            if( $RETURNCODE == 1 )
            {
                `/usr/bin/maildirmake "$DESTINO"`
            }
    }
    to "$DESTINO"
}

# Si está marcado como SPAM (y tiene una puntuación inferior a 25) lo mando a
# la carpeta "Junk" del usuario.
if (/^X-Spam-Flag: *YES/)
{
    # Compruebo si la carpeta existe y en caso contrario la creo
    exception {
        `test -d "$DEFAULT/.Junk"`
            if( $RETURNCODE == 1 )
            {
                `/usr/bin/maildirmake "$DEFAULT/.Junk"`
            }
    }
    to "$DEFAULT/.Junk"
}

# Si no es ninguno de los dos casos anteriores lo tramito normalmente.
to "$DEFAULT"

Por hacer: tener un patrón genérico de correo electrónico y línea de comandos para probar el correcto funcionamiento de maildrop.

No hay comentarios:

Publicar un comentario