---
# System prepended metadata

title: 'Instalación y configuración de Amavis, ClamAV y SpamAssassin'

---

[toc]
# Instalación y configuración de Amavis, ClamAV y SpamAssassin
<p style="text-align: justify;">
Ahora vamos a instalar y configurar Amavis, ClamAV y SpamAssassin que son herramientas de protección antivirus y antispam.

* Amavis : Es el "pegamento" que une todo. Actúa como intermediario entre Postfix y las herramientas de escaneo (ClamAV y SpamAssassin).
* ClamAV : Un potente antivirus que escaneará todos los correos en busca de malware.
* SpamAssassin : Detectará correos spam basados en reglas avanzadas, redes colaborativas y aprendizaje automático (Bayes).

## Instalar los Paquetes Necesarios
    
    sudo apt update
    sudo apt install amavisd-new spamassassin clamav clamav-daemon -y
    
* Amavis : El núcleo del sistema de filtrado.
* SpamAssassin : Filtrado antispam avanzado.
* ClamAV : Antivirus robusto
    
## Configurar Amavis
    
    sudo vi /etc/amavis/conf.d/15-content_filter_mode

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

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

### Configurar Opciones Generales
    
    sudo vi /etc/amavis/conf.d/20-debian_defaults
    
Añade al final:
    
    @local_domains_maps = ['.'];
    
    
Archivo:  
    
     sudo vi /etc/amavis/conf.d/50-user

Añade: 
    
    use strict;

    @inet_acl = qw(127.0.0.1 [::1]);  # Permitir conexiones solo desde localhost
    $myhostname = 'cfranco.test';

Archivo:
    
    sudo vi /etc/systemd/system/spamassassin.service
    
Añade:
    
    [Unit]
    Description=Perl-based spam filter using text analysis
    After=network.target

    [Service]
    Type=simple
    ExecStart=/usr/sbin/spamd --create-prefs --max-children 5 -u debian-spamd -x -q --listen=127.0.0.1 --port=783
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target
    
Reiniciar
    
    sudo systemctl daemon-reload

Verifica permisos:
    
    sudo mkdir -p /var/lib/spamassassin
    sudo chown -R debian-spamd:debian-spamd /var/lib/spamassassin
    
    
###  Integrar ClamAV con Amavis
    
    sudo adduser clamav amavis
    
Reinicia los servicios:
    
    sudo systemctl restart amavis
    sudo systemctl restart clamav-daemon
    sudo systemctl status amavis
    sudo systemctl status clamav-daemon
    
### Verifica que ClamAV esté actualizando sus bases de datos automáticamente:
    
    sudo vi /etc/clamav/freshclam.conf

Añade al final:
    
    NotifyClamd /etc/clamav/clamd.conf
    
Reinicia el servicio:
    
    sudo systemctl start clamav-freshclam
    sudo systemctl restart clamav-freshclam
    sudo systemctl status clamav-freshclam
    
## Configurar SpamAssassin
    
    sudo vi /etc/spamassassin/local.cf

Añade al final:
    
    # Habilitar el filtrado de spam
    rewrite_header Subject *****SPAM*****
    report_safe 0
    required_score 5.0
    use_bayes 1
    bayes_auto_learn 1
    
Habilitamos actualizaciones automáticas:
    
    sudo vi /etc/default/spamassassin
    
Añade: 
    
    # Change to one to enable spamd
    ENABLED=1

    # Options
    OPTIONS="--create-prefs --max-children 5 --username debian-spamd --helper-home-dir /var/lib/spamassassin"

    # Set nice scheduling priority
    NICE="--nicelevel 15"

    # Cronjob
    CRON=1

Archivo:
    
    sudo vi /lib/systemd/system/spamassassin.service
    
Añade:
    
    [Unit]
    Description=Perl-based spam filter using text analysis
    After=network.target

    [Service]
    Type=forking
    ExecStart=/usr/sbin/spamd --create-prefs --max-children 5 --helper-home-dir
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=mixed
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target
    
    
Añade: 
    
    # Change to one to enable spamd
    ENABLED=1

    # Options
    OPTIONS="--create-prefs --max-children 5 --username debian-spamd"

    # Specify the IP address and port for spamd to listen on
    OPTIONS="${OPTIONS} --listen=127.0.0.1 --port=783"

    # Options
    OPTIONS="--create-prefs --max-children 5 --username debian-spamd"

    # Set nice scheduling priority
    #NICE="--nicelevel 15"

    CRON=1
    
## Integrar Amavis con Postfix:    
    
    sudo vi /etc/postfix/main.cf
    
Añade al finanl:
    
    content_filter = amavis:[127.0.0.1]:10024
    receive_override_options = no_address_mappings
    
Ahora vamos a la de master.cf:

    sudo vi /etc/postfix/master.cf

Añade al final:
    
    amavis unix - - n - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

    127.0.0.1:10025 inet n - 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

    spamassassin unix -     n       n       -       -       pipe
        user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
    smtp      inet  n       -       n       -       -       smtpd
        -o content_filter=spamassassin

Reiniciar los servicios:
    
    sudo postfix check
    sudo systemctl restart postfix
    sudo systemctl restart amavis
    sudo systemctl restart clamav-daemon
    sudo systemctl restart spamassassin
    sudo systemctl status amavis
    sudo systemctl status clamav-daemon
    sudo systemctl status spamassassin
    
## Verificación de la configuración:
    
    wget https://secure.eicar.org/eicar.com.txt
    
    echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.com
    
    sudo clamscan eicar.com.txt
    
Si da problemas con los permisos:
    
    sudo chown -R amavis:amavis /var/lib/spamassassin
    sudo chmod -R 755 /var/lib/spamassassin
    
    sudo rm -rf /var/lib/spamassassin/compiled/*
    sudo sa-compile
    
Reiniciar servicios:
    
    sudo systemctl restart amavis
    sudo systemctl restart clamav-daemon
    sudo systemctl restart spamassassin
    sudo systemctl status amavis
    sudo systemctl status clamav-daemon
    sudo systemctl status spamassassin

Comprobación:
    
    sudo apt install mutt
    
    echo "This is a test email with a virus attachment." | mutt -s "Virus Test" -a eicar.com -- user1@ccuellar.test
    
Resultado mirar /var/log/mail.log:
    
    2025-04-02T14:50:54.087910+02:00 ccuellar amavis[27783] (27783-04) Blocked INFECTED (Eicar-Sig
    nature) {DiscardedInbound,Quarantined}, [127.0.0.1] <isard@ccuellar.test> -> <usuario1@ccuella
    r.test>, quarantine: u/virus-uJ_SVNcZZ_zf, Message-ID: <Z-0yrS_TkzrRVzFS@ccuellar.test>, mail_
    id: uJ_SVNcZZ_zf, Hits: -, size: 1167, dkim_sd=202401:ccuellar.test, 83 ms 

Enviar otro correo pero solo un mensaje:
    
    2025-04-02T14:51:58.912222+02:00 ccuellar amavis[27782] (27782-05) Passed CLEAN {RelayedInboun
    d}, [127.0.0.1] <isard@ccuellar> -> <user1@ccuellar.test>, Message-ID: <20250402125158.ABBEF1A
    3C7A@email.ccuellar.test>, mail_id: ghTI5wCkJ8ov, Hits: -0.001, size: 419, queued_as: D65471A3
    C75, 197 ms 

🤗
    
---
    
## [Índice de secciones aquí](https://hackmd.io/@ccuellar/rJ73y6FpJe)

## [👈Anterior sección](https://hackmd.io/@ccuellar/rkm3hAKpJl) 😄 [Siguiente sección 👉](https://hackmd.io/@ccuellar/Bkx1l19Tye)