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 que 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á comentado, lo que se 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 a 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:

Fichero /etc/clamav/clamd.conf
AllowSupplementaryGroups yes

Solucion 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/