Consejos para lidiar contra el spam y virus en postfix

Este es un borrador realizado a partir de un mensaje enviado a la lista por Roger Durañona Vargas

Mailscanner está hecho en perl, y (al menos cuando lo use, hace años) mete las manos en la cola de los MTA y levanta dos instancias: una para recibir y otra para enviar. En cambio el amavis se configura como un filtro. Yo por mi parte prefiero usar clamav con clamsmtp, asi el postfix inyecta el correo directo a clamav y lo recibe de vuelta revisado. Lo mismo para el SA. Cuesta un poco más de trabajo que montar amavis, pero al final consume menos recursos.

Bien, lo primero que necesitas es bajar el clamsmtp. No esta en el repositorio,1) así que hay que compilarlo a mano e instalarlo, eso es fácil.

A continuación modificamos master.cf, y agregamos lo siguiente:

# AV scan filter (used by content_filter)
scan      unix  -       -       n       -       16      smtp
        -o smtp_send_xforward_command=yes
        -o smtp_enforce_tls=no
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet  n -       n       -       16      smtpd
        -o content_filter=
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_helo_restrictions=
        -o smtpd_client_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks_style=host
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Vamos a main.cf y agregamos esto:

content_filter = scan:[127.0.0.1]:10025

Ponemos el siguiente comando en el arranque, ya sea en rc.local o como quiera que sea en tu distribución:

clamsmtpd -f /path/to/clamsmtpd.conf

Hay que asegurarse de que el clamd este levantado, este es el demonio del clamav, otro detalle que ayuda en rendimiento, porque no necesitamos ejecutar clamav por cada cosa que revisemos.

En clamsmtp.conf podemos agregar esto:

VirusAction: /usr/local/sbin/virus_action.sh

Este es un script sencillo que genera una notificación a root (esto es puramente cosmético, y opcional).

#!/bin/sh
 
cat<<EOF | sendmail -f clamav postmaster
To: postmaster
Subject: VIRUS discarded ($VIRUS)
 
Sender:  $SENDER
Recipients:  $RECIPIENTS
Virus:  $VIRUS
EOF

Como ven, es fácil. Si yo lo hice, cualquiera puede hacerlo. Les debo el de spamassassin, porque ahí hay que escribir más.

1)
Esto se aplica para Centos; otras distribuciones como Debian, Ubuntu y Gentoo si lo traen