Introducción a Amavisd-New en Postfix

En éste artículo hablaremos de que es Amavisd, para que nos sirve y cómo podemos integrarlo en Postfix.

Para ésta guía se da por hecho que ya se tiene un servidor Postfix funcionando con envío de correo.

¿Qué es Amavisd?

Amavisd es una interface de alto desempeño entre el software que se encarga de realizar los envíos de email (MTA) como lo es Postfix y entre los distintos analizadores de contenido como lo pueden ser: SpamAssassin, ClamAV entre otros.

Instalación de dependencias & software

sudo apt install lrzip liblz4-tool rpm2cpio unrar-free ripole p7zip-full p7zip-rar arj bzip2 cabextract cpio file gzip nomarch pax rar unrar unzip zip amavisd-new spamassassin clamav-daemon libnet-dns-perl libmail-spf-perl pyzor razor

¿Cómo funciona?

Ahora bien, Amavis es un software que está desarrollado en Perl, el cual se ejecuta como proceso en background escuchando en un puerto especifico, que por defecto es 10024.

# /etc/amavis/conf.d/20-debian_defaults
$inet_socket_port = 10024;

Amavis-new tiene la capacidad de detectar tanto desempaquetadores o descompresores (Zip, Bz2, gzip, lha, rar, etc…) como antivirus o spam scanners de manera automatica.

Una vez que se inicia amavis y hace un reconocimiento de los distintos softwares, está listo para recibir correos para su analisis. Para esto Postfix se configura para recibir los correos y pasarselos a Amavis mediante la directiva “content_filter” en /etc/postfix/main.cf.

# /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024

Y para que amavis funcione es necesario agregar al final del archivo /etc/postfix/master.cf la directiva de amavis para recibir los correos.

# /etc/postfix/master.cf ~144
smtp-amavis     unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o mynetworks=127.0.0.0/8
        -o max_use=20

Ahora solo necesitamos la directiva en donde inyectaremos a postfix los correos ya analizados amavis y que son hasta cierto punto seguros o libres de Spam.

Agregamos ahora al final del archivo master.cf la siguiente directriz.

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

pickup    fifo  n       -       -       60      1       pickup
    -o content_filter=
    -o receive_override_options=no_header_body_checks

Con esto le decimos a Postfix que reciba correos, pero que solo escuche en 127.0.0.1 en puerto 10025 y hacemos un override de las principales directrices para que no revise o haga ningun otro tipo de analisis al correo, ya que el correo que llegue a este puerto (10025) ya ha sido inspeccionado por spam y/o antivirus a través de amavis.

Troubleshooting

En caso de requerir más debug log de amavisd para ver los errores o si hay algun problema con el filtrado, es necesario agregar más verbosidad mediante la directriz de configuración de amavis.

# /etc/amavis/conf.d/50-user
$log_level = 5;

Ésto nos generara muchisima información de cuales fueron los procesos que ejecuto Amavis al recibir el correo. Se recomienda que una vez que se terminaron las pruebas bajar la verbosidad a 1 o comentar la directriz.

Tip

Antes de iniciar la configuración o integración de amavis, se recomienda agregar la siguiente directriz a Postfix

sudo postconf -e "soft_bounce = yes"
sudo postfix reload

Esta directriz nos ayuda a que si por alguna razón el procesamiento del correo falla, lo marque como problema temporal y le indica al servidor que ha enviado el correo a Postfix, que intente más tarde. En caso de no indicar esta configuración, todas las fallas de correo serán permantentes y por lo tanto tendremos perdidad de correos electrónicos.

Al terminar las configuraciones, es necesario quitar la directriz de “soft_bounce”.

DENIED ACCESS from IP xx.xx.xx.xx, policy bank

En caso de obtener el mensaje Denied Access en los logs de amavis, es necesario que se agregue una ACL a la configuración de amavis para permitir las IP’s que pueden hacer uso del servicios de amavis.

# /etc/amavis/conf.d/50-user
@inet_acl=qw( 127.0.0.1 [::1] 10.170.0.10 );

Referencias

  • https://www.ijs.si/software/amavisd/README.postfix.html
  • https://help.ubuntu.com/community/PostfixAmavisNew
  • https://www.howtoforge.com/amavisd_postfix_debian_ubuntu
Alejandro M.

Ingeniero Mexicano especialista en Seguridad Informática. Conocimientos en Cisco con la certificación Cisco Certified Network Professional - Security, Fortinet con ahora NSE-4, Certified Ethical Hacker. Trabajo con sistema operativos Linux para servidores de servicios web, dns, balanceo de carga, etc... Fanático de los MMORPG