amavisd: Problem in antispam SA code: Can’t locate Mail/SpamAssassin.pm

amavisd spamassassin postfixDe un día para otro durante el fin de semana el servidor de correo de un cliente se convirtió en victima de un ataque de spam. Cuentas de correo empresariales que nunca habían recibido ni un solo correo spam amanecieron con las bandejas de entrada saturadas de puro spam.

Era momento de revisar la configuración antispam de spamassassin de la solución de correo postfix/amavisd y revisar cuales cambios podrían ser  necesarios para poder bloquear y eliminar el spam desde el servidor de correo.

amavis ANTI-SPAM code NOT loaded

Después de un rato de estar viendo las bitácoras de postfix, me di cuenta que no había nada de SPAM detectado, por lo cual decidí reiniciar el amavisd y ver que estaba fallando.

root@mail:/etc/amavis/conf.d# tail -f /var/log/syslog |grep amavis
 BSMTP-out proto code NOT loaded
 Mar  4 12:43:49 mail amavis[28919]: Local-out proto code loaded
 Mar  4 12:43:49 mail amavis[28919]: OS_Fingerprint code  NOT loaded
 Mar  4 12:43:49 mail amavis[28919]: ANTI-VIRUS code      loaded
 Mar  4 12:43:49 mail amavis[28919]: ANTI-SPAM code       NOT loaded
 Mar  4 12:43:49 mail amavis[28919]: ANTI-SPAM-EXT code   NOT loaded
 Mar  4 12:43:49 mail amavis[28919]: ANTI-SPAM-C code     NOT loaded
 Mar  4 12:43:49 mail amavis[28919]: ANTI-SPAM-SA code    loaded
 Mar  4 12:43:49 mail amavis[28919]: Unpackers code       loaded

Como podrán ver en el texto de la terminal de Linux anterior, el filtro ANTI-SPAM de amavisd no se esta cargando.

Como habilitar SpamAssassin con amavisd para Postfix

Para poder habilitar o cargar el modulo de SpamAssassin en amavisd es necesario editar el archivo:

vim /etc/amavis/conf.d/15-content_filter_mode

Donde al final podemos ver que las lineas para que amavisd pueda filtrar spam todavía están comentadas;

#
 # Default SPAM checking mode
 # Please note, that anti-spam checking is DISABLED by
 # default.
 # If You wish to enable it, please uncomment the following lines:
 #@bypass_spam_checks_maps = (
 #  \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1;  # ensure a defined return

Las descomentamos y ya con esto volvemos a reiniciar el servicio de amavisd.

amavisd: Problem in antispam SA code: Can’t locate Mail/SpamAssassin.pm

Al reiniciar el servicio del filtro de correo amavisd, me doy cuenta de lo siguiente;

root@mail:~# /etc/init.d/amavis restart
 Stopping amavisd: amavisd-new.
 Starting amavisd: Problem in antispam SA code: Can't locate Mail/SpamAssassin.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) at (eval 115) line 64.
 BEGIN failed--compilation aborted at (eval 115) line 64.
 (failed).

Al parecer el modulo de SpamAssassin.pm no esta instalado. Este modulo es utilizado por perl para escanear los correos con expresiones regulares. Para estar seguros que no ha sido instalado lo buscamos con el comando find, resulta lo siguiente;

root@mail:~# find / -name SpamAssassin.pm
root@mail:~#

Y como pueden ver, no existe en el sistema de archivos del servidor de correo ningún archivo llamado SpamAssassin.pm.

Como instalar SpamAssassin.pm en Linux Debian Mint o Ubuntu

Ahora que ya estamos seguros que el modulo de SpamAssassin para perl no esta instalado, pues procedemos a hacerla instalación:

 root@mail:~# apt-get install spamassassin pyzor razor
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 The following extra packages will be installed:
 libio-socket-inet6-perl libmail-spf-perl libnetaddr-ip-perl libsocket6-perl re2c spamc
 Suggested packages:
 libnet-ident-perl
 The following NEW packages will be installed:
 libio-socket-inet6-perl libmail-spf-perl libnetaddr-ip-perl libsocket6-perl pyzor razor re2c spamassassin spamc
 0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
 Need to get 1,941kB of archives.
 After this operation, 6,558kB of additional disk space will be used.
 Do you want to continue [Y/n]? y
 Get:1 http://archive.ubuntu.com/ubuntu/ lucid/main libsocket6-perl 0.23-1 [28.1kB]
 Get:2 http://archive.ubuntu.com/ubuntu/ lucid/main libio-socket-inet6-perl 2.54-1.1 [15.1kB]
 Get:3 http://archive.ubuntu.com/ubuntu/ lucid/main libnetaddr-ip-perl 4.024+dfsg-1build1 [97.6kB]
 Get:4 http://archive.ubuntu.com/ubuntu/ lucid/main libmail-spf-perl 2.007-1 [125kB]
 Get:5 http://archive.ubuntu.com/ubuntu/ lucid/universe pyzor 1:0.5.0-0ubuntu2 [33.2kB]
 Get:6 http://archive.ubuntu.com/ubuntu/ lucid/universe razor 1:2.85-3 [125kB]
 Get:7 http://archive.ubuntu.com/ubuntu/ lucid/main re2c 0.13.5-1build1 [217kB]
 Get:8 http://archive.ubuntu.com/ubuntu/ lucid/main spamassassin 3.3.1-1 [1,232kB]
 Get:9 http://archive.ubuntu.com/ubuntu/ lucid/main spamc 3.3.1-1 [68.8kB]
 Fetched 1,941kB in 23s (84.3kB/s)
 Selecting previously deselected package libsocket6-perl.
 (Reading database ... 73934 files and directories currently installed.)
 Unpacking libsocket6-perl (from .../libsocket6-perl_0.23-1_i386.deb) ...
 Selecting previously deselected package libio-socket-inet6-perl.
 Unpacking libio-socket-inet6-perl (from .../libio-socket-inet6-perl_2.54-1.1_all.deb) ...
 Selecting previously deselected package libnetaddr-ip-perl.
 Unpacking libnetaddr-ip-perl (from .../libnetaddr-ip-perl_4.024+dfsg-1build1_i386.deb) ...
 Selecting previously deselected package libmail-spf-perl.
 Unpacking libmail-spf-perl (from .../libmail-spf-perl_2.007-1_all.deb) ...
 Selecting previously deselected package pyzor.
 Unpacking pyzor (from .../pyzor_1%3a0.5.0-0ubuntu2_all.deb) ...
 Selecting previously deselected package razor.
 Unpacking razor (from .../razor_1%3a2.85-3_i386.deb) ...
 Selecting previously deselected package re2c.
 Unpacking re2c (from .../re2c_0.13.5-1build1_i386.deb) ...
 Selecting previously deselected package spamassassin.
 Unpacking spamassassin (from .../spamassassin_3.3.1-1_all.deb) ...
 Selecting previously deselected package spamc.
 Unpacking spamc (from .../spamc_3.3.1-1_i386.deb) ...
 Processing triggers for man-db ...
 Setting up libsocket6-perl (0.23-1) ...
Setting up libio-socket-inet6-perl (2.54-1.1) ...
 Setting up libnetaddr-ip-perl (4.024+dfsg-1build1) ...
 Setting up libmail-spf-perl (2.007-1) ...
 Setting up pyzor (1:0.5.0-0ubuntu2) ...
Setting up razor (1:2.85-3) ...
Setting up re2c (0.13.5-1build1) ...
 Setting up spamassassin (3.3.1-1) ...
 SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin
Setting up spamc (3.3.1-1) ...
 Processing triggers for python-support ...

Buscamos nuevamente el modulo de SpamAssassin y ahora ya aparece correctamente en el sistema de archivos de nuestro sistema operativo;

root@mail:~# find / -name SpamAssassin.pm
 /usr/share/perl5/Mail/SpamAssassin.pm

Les recuerdo que este no es un howto convencional de principio a fin. Mas que todo estamos resolviendo la falta de un componente (spamassassin) en un MTA con postfix y amavisd ya en producción.

Comentario, Preguntas o agradecimientos?

%d bloggers like this: