7. ClamAV

Exim4 también incorpora soporte para algunos antivirus, en la documentación oficial (Content scanning at ACL time) se puede consultar el listado y las instrucciones para cada uno de ellos. En este capítulo se activará ClamAV aunque últimamente lo tengo desactivado por continuos errores socket timeout; además, no tengo muy claro que este antivirus sirva para algo aparte de consumir muchos recursos en el sistema.

El paquete a instalar es clamav-daemon el cual escucha en un socket por el que se comunica Exim4. Para instalarlo e iniciarlo estos son los comandos:

apt install clamav-daemon
systemctl start clamav-daemon

Para activarlo en Exim4 se establece la directiva av_scanner en el fichero general de definiciones tal y como se muestra a continuación:

Fichero /etc/exim4/conf.d/main/00_exim4-config_custom
av_scanner = clamd:/var/run/clamav/clamd.ctl

El siguiente paso es decidir qué hacer con los correos que contengan malware, y en el ejemplo propuesto por Debian en el fichero conf.d/acl/40_exim4-config_check_data se propone denegarlos (deny) pero la configuración está comentada, por lo que se debe activar tal y como se muestra a continuación:

Fichero /etc/exim4/conf.d/acl/40_exim4-config_check_data (línea 48 aprox.)
 deny
   malware = *
   message = This message was detected as possible malware ($malware_name).

La configuración no termina aquí, ya que puede aparecer en Debian un problema de permisos en la comunicación de Exim4 y ClamAV debido a los permisos de los ficheros. El problema viene cuando ClamAV necesita leer los correos desde las carpetas temporales de Exim4 y ambos se ejecutan con usuario/grupo diferente. A continuación muestro dos posibles soluciones:

Solución 1:

ClamAV necesita leer /var/spool/exim4/scan/ para escanear los correos. Para solucionarlo se puede añadir el usuario clamav al grupo Debian-exim mediante:

adduser clamav Debian-exim

Pero no basta con lo anterior, también hay que cambiar una directiva de ClamAV en la configuración de este servicio:

Fichero /etc/clamav/clamd.conf
AllowSupplementaryGroups yes

Solución 2:

Cambiar el grupo de /var/spool/exim4/scan/ a clamav y establecer los permisos de grupo adecuados para el directorio mediante:

chgrp clamav /var/spool/exim4/scan/
chmod g+xrs /var/spool/exim4/scan/