GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configuración de Amavis y ClamAV en Ubuntu Mail Server

Esta es la parte 11 de la serie de tutoriales Ubuntu mail server from scratch. En este artículo, te mostraré cómo usar Amavis y ClamAV para escanear virus en mensajes de correo electrónico.

Amavis (A Mail Virus Scanner) es una interfaz de alto rendimiento entre un agente de transferencia de mensajes (MTA) como Postfix y filtros de contenido. Un filtro de contenido es un programa que analiza los encabezados y el cuerpo de un mensaje de correo electrónico y, por lo general, realiza alguna acción en función de lo que encuentra. Los ejemplos más comunes son escáner de virus ClamAV y asesino de spam .

Amavis habla el protocolo SMTP estándar y también puede usar la interfaz Milter de Sendmail. Se usa comúnmente para

  • escaneo de virus mediante la integración con ClamAV (Clam AntiVirus)
  • comprobación de spam mediante la integración con SpamAssassin
  • Firma y verificación de DKIM. (En realidad, prefiero usar OpenDKIM para la firma y verificación de DKIM).

Requisitos

Debería haber completado al menos la parte 1 (servidor Postfix SMTP) y la parte 2 (servidor Dovecot IMAP) de la serie de tutoriales Ubuntu mail server from scratch. Tenga en cuenta que si usó iRedMail o Modoboa para configurar su servidor de correo, entonces Amavis y ClamAV ya están instalados y configurados, por lo que no necesita seguir este tutorial.

Advertencia :Amavis y ClamAV requieren una buena cantidad de RAM. Asegúrese de tener al menos 1,3 GB de RAM libre en su servidor antes de instalar Amavis y ClamAV. Toda la pila del servidor de correo (Postfix, Dovecot, Amavis, ClamAV, SpamAssassin, OpenDKIM, MySQL/MariaDB, PostfixAdmin y Roundcube Webmail) necesita al menos 3 GB RAM para funcionar sin problemas. Si su RAM se agota, tendrá problemas como que el servidor de correo se desconecte o no responda.

Paso 1:Instale Amavis en Ubuntu

Amvis está disponible desde el repositorio predeterminado de Ubuntu, así que ejecute el siguiente comando para instalarlo.

sudo apt install amavisd-new -y

Una vez instalado, se inicia automáticamente. Puede comprobar su estado con:

systemctl estado amavis

Salida:

● amavis.service - LSB:Inicia amavisd-new mailfilter Cargado:cargado (/etc/init.d/amavis; generado) Activo:activo (en ejecución) desde Vie 2020-08-07 15:43:40 HKT; 1min 1s ago Docs:man:systemd-sysv-generator(8) Tareas:3 (límite:9451) Memoria:75.4M CGroup:/system.slice/amavis.service ├─1794260 /usr/sbin/amavisd-new (master ) ├─1794263 /usr/sbin/amavisd-new (niña virgen) └─1794264 /usr/sbin/amavisd-new (niña virgen)

Si no se está ejecutando, puede iniciarlo con:

sudo systemctl iniciar amavis

Habilite el inicio automático en el momento del arranque.

sudo systemctl habilitar amavis

Por defecto, escucha en 127.0.0.1:10024 , como se puede ver con:

sudo netstat-lnpt | grep amavis

Y se ejecuta como amavis usuario. Para comprobar el número de versión, ejecute

amavisd-nuevo -V

Salida de muestra:

amavisd-nuevo-2.11.0 (20160426)

Para comprobar los registros de Amavis, puede ejecutar

sudo journalctl -eu amavis

Los virus se propagan comúnmente como archivos adjuntos a los mensajes de correo electrónico. Instale los siguientes paquetes para que Amavis extraiga y escanee archivos comprimidos en mensajes de correo electrónico como .7z , .cab , .doc , .exe , .iso , .jar y .rar archivos.

sudo apt install arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free

Si usa Ubuntu 18.04, también instale el ripole paquete.

sudo apt install ripole

Tenga en cuenta que si su servidor no utiliza un nombre de dominio completo (FQDN) como nombre de host, es posible que Amavis no se inicie. Y el nombre de host del sistema operativo puede cambiar, por lo que se recomienda establecer un nombre de host válido directamente en el archivo de configuración de Amavis.

sudo nano /etc/amavis/conf.d/05-node_id

Busque la siguiente línea.

#$minombredehost ="correo.ejemplo.com";

Elimina el carácter de comentario (#) y cambia mail.example.com a su nombre de host real.

$minombredehost ="mail.linuxbabe.com";

Guarde y cierre el archivo. Reinicie Amavis para que los cambios surtan efecto.

sudo systemctl reiniciar amavis

Paso 2:Integrar el servidor SMTP de Postfix con Amavis

Amavisd-new funciona como un proxy SMTP. El correo electrónico se envía a través de SMTP, se procesa y se devuelve al MTA a través de una nueva conexión SMTP.

Edite el archivo de configuración principal de Postfix.

sudo nano /etc/postfix/main.cf

Agregue la siguiente línea al final del archivo. Esto le dice a Postfix que active el filtrado de contenido enviando cada mensaje de correo electrónico entrante a Amavis, que escucha en 127.0.0.1:10024 .

content_filter =smtp-amavis:[127.0.0.1]:10024

Además, agregue la siguiente línea.

smtpd_proxy_options =ajuste_velocidad

Esto retrasará la conexión de Postfix al filtro de contenido hasta que se haya recibido el mensaje de correo electrónico completo, lo que puede evitar que los filtros de contenido desperdicien tiempo y recursos para clientes SMTP lentos.

Guarde y cierre el archivo. Luego edite el master.cf archivo.

sudo nano /etc/postfix/master.cf

Agregue las siguientes líneas al final del archivo. Esto le indica a Postfix que use un componente de cliente SMTP especial llamado smtp-amavis para enviar mensajes de correo electrónico a Amavis. Permita al menos un carácter de espacio en blanco (tabulador o barra espaciadora) antes de cada -o . En las configuraciones de sufijo, un carácter de espacio en blanco anterior significa que esta línea es la continuación de la línea anterior.

smtp-amavis unix - - n - 2 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disabled_dns_lookups=sí -o max_use=20 -o smtp_tls_security_level=none

Luego agregue las siguientes líneas al final del archivo. Esto le dice a Postfix que ejecute un demonio smtpd adicional escuchando en 127.0.0.1:10025 para recibir mensajes de correo electrónico de Amavis.

127.0.0.1:10025 inet n - n - - smtpd -o syslog_name=postfix/10025 -o content_filter=-o mynetworks_style=host -o mynetworks=127.0.0.0/8 -o local_recipient_maps=-o relay_recipient_maps=-o strict_rfc821_envelopes =sí -o smtp_tls_security_level =ninguno -o smtpd_tls_security_level =ninguno -o smtpd_restriction_classes =-o smtpd_delay_reject =no -o smtpd_client_restrictions =permit_mynetworks, rechazar -o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =permit_mynetworks, rechazar -o smtpd_end_of_data_restrictions =-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_recipientaddress_check_s, no_unknown_recipientaddress_maping_s, no_unknown_recipient_check_s 

Guarde y cierre el archivo. Reinicie Postfix para que los cambios surtan efecto.

sudo systemctl reinicio posfijo

Paso 3:Integrar Amavis con ClamAV

Ahora que Postfix puede pasar correos electrónicos entrantes a Amavis, necesitamos instalar el escáner de virus ClamAV e integrarlo con Amavis, para que ClamAV pueda escanear los correos electrónicos entrantes.

Instale ClamAV en Ubuntu.

sudo apt install clamav clamav-daemon

Habrá dos servicios systemd instalados por ClamAV:

  • clamav-daemon.service :el demonio del espacio de usuario de Clam AntiVirus
  • clamav-freshclam.service :el actualizador de la base de datos de virus ClamAV

Primero, verifique el estado de clamav-freshclam.service .

systemctl estado clamav-freshclam

Como puede ver, está activo (en ejecución) y utiliza 217,6 M de RAM en mi servidor de correo. Luego revisa el diario/registro.

sudo journalctl -eu clamav-freshclam

Salida:

Sugerencia:si el comando anterior no se cierra de inmediato, presione la tecla Q para que se cierre.

Podemos ver que freshclam descargado 3 bases de datos de virus. CVD significa base de datos de virus ClamAV.

  • diario.cvd
  • principal.cvd
  • código de bytes.cvd

Sin embargo, clamd no se notificó porque freshclam no puede conectarse a clamd a través de /var/run/clamav/clamd.ctl . Comprobar el estado de clamav-daemon.service .

systemctl status clamav-daemon

Salida:

Como puede ver, no se pudo iniciar porque no se cumplió una condición. En el /lib/systemd/system/clamav-daemon.service archivo, hay dos condiciones:

ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}

El clamav-daemon.service no se pudo iniciar porque main.cvd y daily.cvd aún no se descargaron cuando se inicia. Así que solo tenemos que reiniciar este servicio.

sudo systemctl reiniciar clamav-daemon

Ahora debería estar funcionando. Por cierto, utiliza 731,4 M de RAM en mi servidor de correo. Si a su servidor de correo no le queda suficiente RAM, el servicio fallará.

systemctl estado clamav-daemon.servicio

El clamav-freshclam.service comprobará las actualizaciones de la base de datos de virus de ClamAV una vez por hora.

Ahora debemos activar la detección de virus en Amavis.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Quite los comentarios de las siguientes líneas para habilitar la detección de virus.

#@bypass_virus_checks_maps =(#      \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

Guarde y cierre el archivo. Hay muchos escáneres antivirus en /etc/amavis/conf.d/15-av_scanners expediente. ClamAV es el predeterminado. Amavis llamará a ClamAV a través de /var/run/clamav/clamd.ctl Zócalo de Unix. Necesitamos agregar el usuario clamav al amavis grupo.

sudo adduser clamav amavis

A continuación, reinicie el demonio Amavis y ClamAV para que los cambios surtan efecto.

sudo systemctl reiniciar amavis clamav-daemon

Revisa los registros.

sudo journalctl -eu amavis

Puede ver que Amavis ahora está usando ClamAV para escanear virus.

8 de agosto 17:26:19 mail.linuxbabe.com amavis[1233432]:uso del código de escáner av interno principal para ClamAV-clamd8 de agosto 17:26:19 mail.linuxbabe.com amavis[1233432]:se encontró un escáner av secundario ClamAV-clamscan en /usr/bin/clamscan

Ahora, si envía un correo electrónico desde otros servidores de correo como Gmail a su propio servidor de correo y revisa los encabezados del correo electrónico, puede encontrar una línea como la siguiente, que indica que este correo electrónico ha sido escaneado por Amavis.

X-Virus-Scanned:Debian amavisd-new en linuxbabe.com

También debe verificar el registro de correo (/var/log/mail.log ) para encontrar si hay algún error.

Paso 4:Use un puerto dedicado para envíos de correo electrónico

ClamAV puede escanear correos electrónicos entrantes y salientes ahora. Amavis escucha en el puerto 10024 los mensajes de correo electrónico entrantes y salientes. Sin embargo, es una buena práctica usar un puerto diferente, como 10026, para envíos de correo electrónico de usuarios autenticados. Edite el archivo de configuración de Amavis.

sudo nano /etc/amavis/conf.d/50-user

Se deben agregar configuraciones personalizadas entre use strict; y 1; línea. De forma predeterminada, Amavis solo escucha en el puerto 10024. Agregue la siguiente línea para que también escuche en el puerto 10026.

$inet_socket_port =[10024,10026];

Luego agregue la siguiente línea, que establece la política de "ORIGINACIÓN" para el puerto 10026.

$interface_policy{'10026'} ='ORIGINANTE';

A continuación, agregue las siguientes líneas, que definen la política "ORIGINANTE".

$policy_bank{'ORIGINATING'} ={ # correo supuestamente originado por nuestros usuarios originando => 1, # declara que el correo fue enviado por nuestro cliente smtp allow_disclaimers => 1, # habilita la inserción de descargo de responsabilidad si está disponible # notifica al administrador localmente malware de origen virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warnbadhsender => 1, # forzar la conversión de MTA a 7 bits (por ejemplo, antes de la firma DKIM) smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # permitir el envío de cualquier nombre de archivo y tipo finish_dsn_on_notify_success => 0, # no eliminar la opción NOTIFY=SUCCESS};

Guarde y cierre el archivo. Reinicie Amavis.

sudo systemctl reiniciar amavis

Verifique su estado para ver si el reinicio es exitoso.

systemctl estado amavis

A continuación, edite el archivo de configuración principal de Postfix.

sudo nano /etc/postfix/master.cf

Agregue la siguiente línea al submission servicio, por lo que los correos electrónicos de clientes SMTP autenticados se pasarán a Amavis escuchando en el puerto 10026. Esta línea anulará (-o ) el content_filter parámetro en /etc/postfix/main.cf archivo que agregamos en el paso 2.

 -o content_filter=smtp-amavis:[127.0.0.1]:10026

Así:

Si ha habilitado smtps servicio para usuarios de Microsoft Outlook, también debe agregar esta línea a smtps servicio.

Guarde y cierre el archivo. Reinicie Postfix para que los cambios surtan efecto.

sudo systemctl reinicio posfijo

Verifique su estado para ver si el reinicio es exitoso.

postfijo de estado systemctl

Filtrado de spam en Amavis

Nota :Si ha seguido mi tutorial de SpamAssassin, no necesita habilitar la verificación de spam en Amavis. Si lo habilita, cada correo electrónico será revisado dos veces por SpamAssassin.

Para habilitar la verificación de spam en Amavis, instale SpamAssassin y los paquetes relacionados.

sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor

Edite un archivo de configuración de Amavis.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Quite los comentarios de las siguientes líneas para habilitar la verificación de spam.

#@bypass_spam_checks_maps =(# \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Guarde y cierre el archivo. Luego reinicie Amavis.

sudo systemctl reiniciar amavis

DKIM en Amavis

Dos piezas comunes de software que pueden realizar la firma y verificación de DKIM en Linux son OpenDKIM y Amavis. Prefiero usar OpenDKIM porque funciona mejor con OpenDMARC. Por lo tanto, no explicaré cómo firmar su correo electrónico con DKIM en Amavis.

De forma predeterminada, Amavis puede verificar la firma DKIM de los mensajes de correo electrónico entrantes. Si tiene OpenDKIM ejecutándose en su servidor de correo, puede deshabilitar la verificación DKIM en Amavis.

sudo nano /etc/amavis/conf.d/21-ubuntu_defaults

Busque la siguiente línea y cambie 1 a 0 , por lo que Amavis no verificará las firmas DKIM.

$enable_dkim_verification =1;

Guarde y cierre el archivo. Luego reinicie Amavis.

sudo systemctl reiniciar amavis

Al recibir correos electrónicos entrantes, Postfix llamará a OpenDKIM a través de la interfaz de milter de sendmail para verificar las firmas DKIM y luego pasará el correo electrónico a Amavis para la verificación de virus. Al enviar correos electrónicos salientes, Postfix llamará a OpenDKIM para firmar los correos electrónicos y luego los pasará a Amavis para la verificación de virus.

Mejora del rendimiento de Amavis

Por defecto, Amavis ejecuta 2 procesos. Si ve las siguientes líneas en el registro de correo (/var/log/mail.log ), significa que Amavis no puede procesar correos electrónicos lo suficientemente rápido.

postfix/qmgr[1619188]:advertencia:el correo para [127.0.0.1]:10024 está utilizando 4001 de 4008 entradas de cola activaspostfix/qmgr[1619188]:advertencia:es posible que deba reducir el tiempo de espera de conexión smtp-amavis y helopostfix /qmgr[1619188]:advertencia:para que Postfix omita rápidamente hostspostfix no disponibles/qmgr[1619188]:advertencia:es posible que deba aumentar main.cf minimal_backoff_time y maximal_backoff_timepostfix/qmgr[1619188]:advertencia:para que Postfix pierda menos tiempo en no se puede entregar postfix/qmgr[1619188]:advertencia:es posible que deba aumentar el proceso master.cf smtp-amavis limitmail postfix/qmgr[1619188]:advertencia:evite vaciar toda la cola cuando tenga correo postfix/qmgr[1619188]:advertencia:mucho correo diferido, eso es malo para el rendimiento

Para mejorar el rendimiento, edite el archivo de configuración de Amavis.

sudo nano /etc/amavis/conf.d/50-user

Agregue la siguiente línea en el archivo entre use strict; y 1; línea. Esto hará que Amavis ejecute 4 procesos. Si tiene 10 núcleos de CPU, puede cambiar de 4 a 10. Tenga en cuenta que ejecutar más de 10 procesos de Amavis tiene poco efecto en el rendimiento.

$max_servers =4;

Guarde y cierre el archivo. Luego edite el archivo de configuración maestro de Postifx.

sudo nano /etc/postfix/master.cf

Encuentra el smtp-amavis definición del servicio y cambie el límite del proceso de 2 a 4.

smtp-amavis unix - - n - 4 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disabled_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none

Guarde y cierre el archivo. Luego reinicie Amavis y Postfix para que los cambios surtan efecto.

sudo systemctl reiniciar amavis postfix

Ahora ejecuta el siguiente comando. Debería ver que hay 4 procesos de Amavis ahora.

sudo amavisd-nanny

Presiona Ctrl+C para detener amavisd-nanny.

Omita la comprobación de virus para sus boletines

Si usa su servidor de correo para enviar boletines y habilita Amavis y ClamAV, entonces se usarán muchos recursos de CPU y RAM para la verificación de virus cuando envíe boletines a sus suscriptores. Podría hacer que su servidor de correo no responda. Puede omitir la verificación de virus para sus boletines utilizando el método a continuación.

Edite el archivo de configuración maestro de Postfix.

sudo nano /etc/postfix/master.cf

Agregue las siguientes líneas al principio de este archivo. Esto habilitará smtpd en el puerto 2525 del host local y puede aceptar conexiones de clientes iniciadas desde el mismo servidor. Si hay otro proceso escuchando en el puerto 2525, puede cambiar 127.0.0.1:2525 a otra cosa, como 127.0.0.1:2552. Tenga en cuenta que el content_filter el parámetro está establecido en none , lo que significa que ClamAV no analizará los correos electrónicos.

127.0.0.1:2525 inet n - - - 1 smtpd -o syslog_name=postfix/2525 -o postscreen_greet_action=ignorar -o content_filter=

Luego agregue las siguientes líneas al final de este archivo. Reemplace 12.34.56.78 con la dirección IP pública del servidor de correo. Esto creará otro demonio de envío de Postfix escuchando en el puerto 10587. Esto es para conexiones de clientes desde otro servidor.

 12.34.56.78:10587 inet n - y - - smtpd -o syslog_name =postfix / 10587 -o smtpd_tls_security_level =cifrar -o smtpd_tls_wrappermode =no -o smtpd_sasl_auth_enable =yes -o smtpd_relay_restrictions =permit_sasl_authenticated, rechazar -o smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=

Guarde y cierre el archivo. Luego reinicia el postfijo.

sudo systemctl reinicio posfijo

Si su aplicación de boletín se ejecuta en el servidor de correo, especifique 127.0.0.1:2525 como host SMTP, sin autenticación SMTP. Si su aplicación de boletín se ejecuta en un servidor diferente, especifique 12.34.56.78:10587 como servidor SMTP, con autenticación SMTP.

Resolución de problemas

Si su servidor Postfix SMTP no puede enviar correos electrónicos salientes y encuentra el siguiente mensaje de error en el registro de correo (/var/log/mail.log ),

relay=none, delay=239, delays=239/0.04/0/0, dsn=4.3.0, status=deferred (servidor no disponible o incapaz de recibir correo)

podría ser que amavis no se esté ejecutando, por lo que debe verificar su estado:

sudo systemctl status amavis

Puede reiniciarlo con:

sudo systemctl reiniciar amavis

Otra causa de este error es que está aplicando la conexión TLS para Postfix cuando envía correos electrónicos salientes con la siguiente configuración en /etc/postfix/main.cf archivo.

smtp_tls_security_level =hacer cumplir

Dado que Postfix no puede establecer una conexión TLS con Amavis, el correo electrónico se aplaza. Debe usar la siguiente configuración.

smtp_tls_security_level =mayo

Luego reinicie Postfix.


Ubuntu
  1. Cómo instalar DKIM en el servidor Ubuntu

  2. Configuración de NTP en Centos y Ubuntu

  3. Instalación y configuración de Php y Nginx en Ubuntu 20.04

  4. ¿Servidor Ubuntu 14 y Xrdp?

  5. Instale el servidor de correo Postfix y Dovecot en Ubuntu o Debian

Instalar y configurar VNC en Ubuntu 20.04

Instalación y configuración de Plex Media Server en Ubuntu

Cómo instalar el servidor de correo Postfix en Ubuntu 20.04

Configuración de un servidor OpenVPN con Ubuntu y Viscosity

Configuración del servidor de correo Postfix en Ubuntu 14.04

Configuración del servidor de correo Postfix en Ubuntu 20.04