Exim4, SpamAssassin y Clamav
Todos juntos en una máquina funcionando bajo Debian, versión estable, y que no parecen estar muy de acuerdo unos con otros: se cuelan demasiados mensajes de Spam.
Paquetes involucrados
Documentación
Los siguientes enlaces proporcionan casi la misma información, pero con matices interesantes entre ellos, puesto que sus intereses son distintos:
- Exim4 with Antivirus and Antispam.
- Installing and configuring Exim 4 on Debian
- Adding SpamAssassin and Clamav to Exim4.
- Exim SpamAssassin at SMTP time
Configuración
La configuración de Exim4 merece otra entrada completa, baste decir que para este caso es necesario que la configuración sea del tipo dividida y no monolítica.
Los archivos interesantes son los siguientes:
- */etc/exim4/conf.d/main/01exim4-configlistmacrosdefs
- */etc/exim4/conf.d/000_localmacros
- */etc/exim4/sa-exim.conf
y para comprobar la configuración basta con efectuar una llamada a:
# update-exim4.conf
cosa que en Debian ya hace el programa de inicio de Exim4 (/etc/init.d/exim4).
Por otra parte es muy útil comprobar la configuración antes de liarla con el servicio en activo:
# exim4 -C /etc/exim/exim_example.conf -d -bt user@example.com
Spamassassin
Para activar SpamAssassin basta con incluír la siguiente línea en el archivo /etc/default/spamassassin:
ENABLED=1
Para activar el puente entre los dos, usando sa-exim, debe estar la siguiente línea en el archivo /etc/exim4/sa-exim.conf:
SAEximRunCond: 1
lo que hará que se efectúe una exploración sobre todos los mensajes.
Antivirus clamav
Respecto a clamav los pasos a seguir son dos:
Incluir el usuario clamav en el grupo Debian-exim:
Debian-exim:x:102:clamav
Definir el escaner en el archivo /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs ó en /etc/exim4/conf.d/main/000_localmacros dependiendo de la instalación, pero siempre pensando en que debe estar en el archivo que define macros.
av_scanner = clamd:/var/run/clamav/clamd.ctl
Tras reiniciar el sistema de correo
# /etc/init.d/exim4 restart
se deben vigilar los registros de actividad en /var/log/exim4/mainlog, /var/log/exim4/rejectlog y, el más importante, /var/log/exim4/paniclog.
Pruebas
Para efectuar pruebas un programa excelente es swaks, auxiliado por mpack, que puede usarse de la siguiente forma:
$ swaks -s localhost -f victor@localhost -t victor@taquiones.net
=== Trying localhost:25...
=== Connected to localhost.
<- 220 daga.taquiones.net ESMTP Exim 4.50 Wed, 25 Oct 2006 18:21:21 +0100
-> EHLO daga.taquiones.net
<- 250-daga.taquiones.net Hello localhost [127.0.0.1]
<- 250-SIZE 20000000
<- 250-PIPELINING
<- 250-AUTH PLAIN LOGIN
<- 250-STARTTLS
<- 250 HELP
-> MAIL FROM:<victor@localhost>
<- 250 OK
-> RCPT TO:<victor@taquiones.net>
<- 250 Accepted
-> DATA
<- 354 Enter message, ending with "." on a line by itself
-> Date: Wed, 25 Oct 2006 18:21:21 +0100
-> To: victor@taquiones.net
-> From: victor@localhost
-> Subject: test Wed, 25 Oct 2006 18:21:21 +0100
-> X-Mailer: swaks v20040404.1 jetmore.org/john/code/#swaks
->
-> This is a test mailing
->
-> .
<- 250 OK id=1GcmRN-0005Y4-Ai
-> QUIT
<- 221 daga.taquiones.net closing connection
=== Connection closed by foreign host.
y si se pretende comprobar los filtros de virus, lo mejor es descargarse, en cualquier de sus versiones de empaquetado, el armazón de virus estándar eicar y enviárselo así:
$ wget https://secure.eicar.org/download/eicar_com.zip
...
$ mpack -s "virus test" -o message eicar_com.zip
$ cat message | swaks -s localhost -f victor@localhost -t victor@taquiones.net -g
=== Trying localhost:25...
=== Connected to localhost.
<- 220 daga.taquiones.net ESMTP Exim 4.50 Wed, 25 Oct 2006 18:31:07 +0100
-> EHLO daga.taquiones.net
<- 250-daga.taquiones.net Hello localhost [127.0.0.1]
<- 250-SIZE 20000000
<- 250-PIPELINING
<- 250-AUTH PLAIN LOGIN
<- 250-STARTTLS
<- 250 HELP
-> MAIL FROM:<victor@localhost>
<- 250 OK
-> RCPT TO:<victor@taquiones.net>
<- 250 Accepted
-> DATA
<- 354 Enter message, ending with "." on a line by itself
-> Message-ID: <21712.1161797390@daga.taquiones.net>
-> Mime-Version: 1.0
-> Subject: virus test
-> Content-Type: multipart/mixed; boundary="-"
->
-> This is a MIME encoded message. Decode it with "munpack"
-> or any other MIME reading software. Mpack/munpack is available
-> via anonymous FTP in ftp.andrew.cmu.edu:pub/mpack/
-> ---
-> Content-Type: application/octet-stream; name="eicar_com.zip"
-> Content-Transfer-Encoding: base64
-> Content-Disposition: inline; filename="eicar_com.zip"
-> Content-MD5: bOb0FdhHVUW+W6EU8giw/w==
->
-> UEsDBAoAAAAAAOCYuCg8z1FoRAAAAEQAAAAJAAAAZWljYXIuY29tWDVPIVAlQEFQWzRcUFpY
-> NTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5EQVJELUFOVElWSVJVUy1URVNULUZJTEUhJEgrSCpQ
-> SwECFAAKAAAAAADgmLgoPM9RaEQAAABEAAAACQAAAAAAAAABACAA/4EAAAAAZWljYXIuY29t
-> UEsFBgAAAAABAAEANwAAAGsAAAAAAA==
->
-> -----
->
-> .
<** 550-El mensaje contiene un virus ó un programa malicioso
<** 550 (Eicar-Test-Signature).
-> QUIT
<- 221 daga.taquiones.net closing connection
El mensaje de error se ha personalizado editando el archivo /etc/exim4/conf.d/acl/40_exim4-config_check_data y cambiando directamente los textos en todas las órdenes message.