Spam y virus · 6 min read · Sep 24, 2025
Usar amavisd-new para escaneo de spam y virus
Integrando amavisd-new en Postfix para escaneo de spam y virus
Versión 1.0
Autor: Falko Timme
Este artículo muestra cómo integrar amavisd-new en un servidor de correo Postfix para el escaneo de spam y virus. amavisd-new es una interfaz de alto rendimiento entre MTAs como Postfix y verificadores de contenido: escáneres de virus y/o SpamAssassin. Usaremos ClamAV para el escaneo de virus y SpamAssassin para el escaneo de spam en este tutorial.
Quiero decir primero que esta no es la única manera de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero esta es la forma que elijo. No doy ninguna garantía de que esto funcione para ti.
1 Nota Preliminar
En este tutorial describiré cómo instalar/configurar amavisd-new en Debian Etch/Ubuntu 6.10 Edgy Eft (los pasos son idénticos para ambas distribuciones) y en Debian Sarge. La configuración de amavisd-new es adecuada para sistemas donde se utilizan usuarios del sistema para cuentas de correo electrónico; si usas usuarios virtuales, algunas modificaciones a la configuración de amavisd-new podrían o no ser necesarias (pero eso depende de la configuración real). Si usas usuarios de correo electrónico virtuales, echa un vistazo a estos dos tutoriales:
- Usuarios y dominios virtuales con Postfix, Courier y MySQL (Fedora Core 5)
- Usuarios y dominios virtuales con Postfix, Courier y MySQL (Debian Sarge)
amavisd-new funciona así: Postfix recibe un correo electrónico en el puerto 25, lo pasa a amavisd-new en el puerto 10024, que luego invoca ClamAV y SpamAssassin, y después amavisd-new reinserta el correo en Postfix en el puerto 10025, que finalmente entrega el correo (si está limpio). Aquí hay un pequeño esquema del proceso:
[SpamAssassin]
^
|
Email --> [(Puerto 25) Postfix] --> [(10024) amavisd-new] --> [(10025) Postfix] --> Buzón
|
v
[ClamAV]Asumo que Postfix y tus cuentas de correo electrónico ya están configurados y funcionando, ya que no cubro la instalación/configuración de Postfix aquí.
Todos los pasos en este tutorial se realizan como root, así que asegúrate de haber iniciado sesión como root.
2 Debian Etch/Ubuntu 6.10 Edgy Eft
Primero instalamos amavisd-new, SpamAssassin y ClamAV junto con algunos otros programas (principalmente programas que amavisd-new necesita para descomprimir archivos, porque los correos electrónicos pueden contener archivos como adjuntos):
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzopDespués debemos configurar amavisd-new. La configuración se divide en varios archivos que residen en el directorio /etc/amavis/conf.d. Echa un vistazo a cada uno de ellos para familiarizarte con la configuración. La mayoría de las configuraciones son correctas, sin embargo, debemos modificar dos archivos:
Primero debemos habilitar ClamAV y SpamAssassin en /etc/amavis/conf.d/15-content_filter_mode descomentando las líneas @bypass_virus_checks_maps y @bypass_spam_checks_maps:
vi /etc/amavis/conf.d/15-content_filter_modeEl archivo debería verse así:
| use strict; # Puedes modificar este archivo para reactivar la verificación de SPAM a través de spamassassin # y para reactivar la verificación antivirus. # # Modo de verificación antivirus por defecto # Descomenta las dos líneas a continuación para habilitarlo nuevamente # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Modo de verificación de SPAM por defecto # Descomenta las dos líneas a continuación para habilitarlo nuevamente # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # asegurar un retorno definido |
Y luego deberías echar un vistazo a la configuración de spam y las acciones para correos de spam/virus en /etc/amavis/conf.d/20-debian_defaults. No hay necesidad de cambiar nada si la configuración predeterminada está bien para ti. El archivo contiene muchas explicaciones, así que no hay necesidad de explicar la configuración aquí:
vi /etc/amavis/conf.d/20-debian_defaults| $QUARANTINEDIR = "$MYHOME/virusmails"; $log_recip_templ = undef; # desactivar entradas de registro de nivel-0 por destinatario $DO_SYSLOG = 1; # registrar a través de syslogd (preferido) $syslog_ident = 'amavis'; # etiqueta de identificación de syslog, precedida a todos los mensajes $syslog_facility = 'mail'; $syslog_priority = 'debug'; # cambiar a info para eliminar la salida de depuración, etc $enable_db = 1; # habilitar el uso de BerkeleyDB/libdb (SNMP y nanny) $enable_global_cache = 1; # habilitar el uso de caché basada en libdb si $enable_db=1 $inet_socket_port = 10024; # socket de escucha por defecto $sa_spam_subject_tag = '*SPAM* '; $sa_tag_level_deflt = 2.0; # agregar encabezados de información de spam si está, o por encima de ese nivel $sa_tag2_level_deflt = 6.31; # agregar encabezados de 'spam detectado' a ese nivel $sa_kill_level_deflt = 6.31; # activa acciones evasivas de spam $sa_dsn_cutoff_level = 10; # nivel de spam más allá del cual no se envía un DSN $sa_mail_body_size_limit = 200*1024; # no perder tiempo en SA si el correo es más grande $sa_local_tests_only = 0; # ¿solo pruebas que no requieren acceso a internet? [...] $final_virus_destiny = D_DISCARD; # (datos no perdidos, ver cuarentena de virus) $final_banned_destiny = D_BOUNCE; # D_REJECT cuando MTA de front-end $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # Propenso a falsos positivos (para spam) [...] |
Después, ejecuta estos comandos para agregar el usuario clamav al grupo amavis y reiniciar amavisd-new y ClamAV:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restartA continuación, debemos editar el archivo de configuración del daemon Freshclam (ese es el daemon que regularmente y automáticamente obtiene las últimas firmas de virus de un espejo de ClamAV) porque contiene un pequeño error. Abre /etc/clamav/freshclam.conf y modifica la línea NotifyClamd como se muestra a continuación:
vi /etc/clamav/freshclam.conf| [...] NotifyClamd /etc/clamav/clamd.conf [...] |
Luego reinicia Freshclam (asegúrate de que no haya otro proceso Freshclam (quizás de otra instalación de ClamAV) en ejecución porque entonces nuestro Freshclam fallará al iniciar):
/etc/init.d/clamav-freshclam restartAhora tenemos que configurar Postfix para canalizar el correo electrónico entrante a través de amavisd-new:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'Después, agrega las siguientes líneas a /etc/postfix/master.cf:
vi /etc/postfix/master.cf| [...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 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_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |
Luego reinicia Postfix:
/etc/init.d/postfix restartAhora ejecuta
netstat -tapy deberías ver Postfix ( master) escuchando en el puerto 25 ( smtp) y 10025, y amavisd-new en el puerto 10024:
server1:~# netstat -tap
Conexiones de Internet activas (servidores y establecidas)
Proto Recv-Q Send-Q Dirección Local Dirección Extranjera Estado PID/Nombre del programa
tcp 0 0 *:4069 *:* LISTEN 3457/rpc.statd
tcp 0 0 localhost.localdo:10024 *:* LISTEN 6886/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:* LISTEN 7268/master
tcp 0 0 *:sunrpc *:* LISTEN 3083/portmap
tcp 0 0 *:auth *:* LISTEN 3417/inetd
tcp 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 0 *:imaps *:* LISTEN 4952/couriertcpd
tcp6 0 0 *:pop3s *:* LISTEN 4872/couriertcpd
tcp6 0 0 *:pop3 *:* LISTEN 4815/couriertcpd
tcp6 0 0 *:imap2 *:* LISTEN 4905/couriertcpd
tcp6 0 0 *:ssh *:* LISTEN 3438/sshd
tcp6 0 0 *:smtp *:* LISTEN 7268/master
tcp6 0 148 server1.example.com:ssh localhost:3117 ESTABLISHED3519/0Si lo deseas, ahora puedes agregar Razor, Pyzor y DCC a SpamAssassin para mejorar su rendimiento de filtrado. Razor, Pyzor y DCC son filtros de spam que utilizan una red de filtrado colaborativo. Para instalarlos, ejecuta
apt-get install razor pyzor dcc-clientAhora tenemos que decirle a SpamAssassin que use estos tres programas. Edita /etc/spamassassin/local.cf y agrega las siguientes líneas:
vi /etc/spamassassin/local.cf| [...] # dcc use_dcc 1 dcc_path /usr/bin/dccproc dcc_add_header 1 dcc_dccifd_path /usr/sbin/dccifd #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
Reinicia amavisd-new después:
/etc/init.d/amavis restartEso es todo. Ahora observa tu registro de correo ( /var/log/mail.log) para ver si amavisd-new está funcionando correctamente. amavisd-new registrará siempre que encuentre un correo de spam o virus. Cuando (re)inicies amavisd-new, también debería registrar que carga su código de escaneo de spam y virus (si no, probablemente hiciste algo mal).
Para ver en vivo tu registro de correo, puedes usar este comando:
tail -f /var/log/mail.log(Presiona CTRL + c para salir del registro.)
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.