Control anti-spam corporativo con Exim4+Spamassassin


Sigo con mis configuraciones del Exim4. Esta vez quería que el pequeño ordenador que hace de MX en la red de casa también ejecutara el spamassassin para todos los mails entrantes, tanto para los destinados a recipientes en ese mismo ordenador como para los que hace de MX. O sea, una configuración ideal para un MX coporativo que quiera filtrar spams.
Nota: minutos antes que yo ponga este artículo, Josep de forma independiente puso otro en la misma línea, pero con el Postfix. ¿Se nota que estamos hasta los huevos de spams?

Actualización: Evitar rebotes en servidores muy cargados.

El exim4 para Debian tiene la configuración en varios ficheros dentro de /etc/exim4/conf.d, lo que hay que hacer para ejecutar el spamassassin es agregar un router y un transport donde definiremos las reglas para ejecutar y pasar por el spamassassin. El nombre que le ponemos a los ficheros es importante, porque definen el orden que tendrán en el fichero final de configuración que genera el update-exim4.conf () Con lo que doy aquí ya debería funcionar perfectamente. Por supuesto, se asume que el spamassassin ya lo tienes instalado y configurado correctamente.
Agregar un transport

Hay que crear un fichero nuevo dentro de /etc/exim4/conf.d/transport, por ejemplo 31_spamassassin (el nombre no interesa en este caso). Ese fichero tendrá:

# /etc/exim4/conf.d/transport/31_spamassassin
# Spam Assassin
spamcheck:
driver = pipe
command = /usr/sbin/exim4 -oMr spam-scanned -bS
use_bsmtp = true
transport_filter = /usr/bin/spamc
home_directory = “/tmp”
current_directory = “/tmp”
# must use a privileged user to set
# $received_protocol on the way back in!
# Alerta
# Poned aquí el usuario y grupo correspondiente
# al exim. Últimamente es “Debian-exim” el usuario
user = mail
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =

Con este fichero estamos definiendo como tiene que hacer para ejecutar el spamc.

IMPORTANTE: Si vuestro servidor está muy cargado o tiene poca capacidad y véis algún mensaje rebotado con texto similar a:

An error was detected while processing a file of BSMTP input.
The error message was:

421 SMTP incoming data timeout – message abandoned

The SMTP transaction started in line 0.
The error was detected in line 3.
0 previous messages were successfully processed.
The rest of the batch was abandoned.

o Cannot open bayes databases en /var/log/syslog, lo mejor es agregar la siguiente opción al fichero anterior:

ignore_status = true

Lo que hace es ignorar el estado de salida del comando exim4, generado porque el spamc le retornó un error.

Agregar el router
Hay que crear otro router dentro del directorio /etc/exim4/conf.d/router. En este caso el nombre del fichero sí importa, porque debe estar definido antes que los demás routers si queremos que se ejecuten para todos los mensajes que llegan y que posiblemente sean re-enviados hacia otro MX. En mi caso lo he llamado <199_spamassassin/tt>· El contenido es el siguiente:

# /etc/exim4/conf.d/router/199_spamassassin
# Spam Assassin
spamcheck_router:
no_verify
debug_print = “R Spammassassin”
domains = +local_domains : +relay_to_domains
# When to scan a message :
# – it isn’t already flagged as spam
# – it isn’t already scanned
condition = “${if and { {!def:h_X-Spam-Flag:} \
{!eq {$received_protocol}{spam-scanned}}} {1}{0}}”
driver = accept
transport = spamcheck

La línea domains = +local_domains : +relay_to_domains es para indicar que el transporte spamcheck debe ejecutarse para todos los mensajes cuyo destinatario sea un dominio local del ordenador o uno que esté destinado a uno de los MX del que hacemos relay.
Et voilà
Sólo basta ejecutar update-exim4.conf y /etc/init.d/exim4 restart.
Más información: Exim4 para Debian, Exim4 and Spamassassin, Exim SpamAssassin at SMTP time.
Delicatessen final
¿Queréis además que en vuestro ordenador personal se use el resultado del spamassasin para entrenar al bogofilter y además hacer un segundo filtrado? Eso es lo que hago con mi cuenta en mi ordenador, y hace varios días que no veo ningún spam en el Kmail 😉
Éste es mi ~/.procmailrc:

# Si es un spam se lo indico al bogofilter…
:0 c
* ^X-Spam-Status: Yes
|bogofilter -s -l

# …y luego lo pongo en ~/mail/spams
# a veces, cuando estoy aburrido, me divierto leyéndolos
:0:
* ^X-Spam-Status: Yes
mail/spams

# Hago el segundo filtrado
:0HB
* ? bogofilter -u -l
mail/spams

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1800 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.