back to top

Amavis, Spamassassin e Clamav: antivirus e antispam per il nostro mailserver

Anche se non rientra strettamente nel funzionamento di un mailserver, non possiamo pensare di metterne in piedi uno senza prevedere qualche strumento di antispam/antivirus. Si stima che la percentuale di spam superi il 50% dei messaggi email ricevuti, pertanto se non vogliamo che i nostri utenti si trovino più spam che mail legittime dobbiamo prendere le opportune contromisure. Esistono diverse soluzioni, gratuite o a pagamento, che permettono di combattere in modo efficace lo spam. In questa guida andremo a vedere una classica combinazione usata per Postfix data dall’utilizzo di tre software cooperanti tra loro: Amavis, Spamassassin e Clamav.

Prima di procedere con le installazioni e configurazioni vediamo concettualmente come sarà il funzionamento. Postfix riceve email dal web e passa il messaggio ad Amavis sempre tramite SMTP sulla porta 25. A questo punto Amavis gira la mail per i controlli a Spamassassin (software antispam) e a Clamav (software antivirus). Una volta che la mail è stata controllata Amavis decreta se questa è legittima o spam e la inoltra nuovamente a Postfix utilizzando la porta 10025. Di fatto amavis agisce come un proxy SMTP.

spam schema

Installazioni

Per prima cosa installiamo i tre software appena descritti:

sudo apt-get install amavisd-new spamassassin clamav-daemon

Proseguiamo poi con l’installazione di pacchetti opzionali ma utili al fine di identificare lo spam:

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

Installiamo infine anche questi pacchetti che consentono una scansione approfondita anche dentro gli allegati:

sudo apt-get install arj bzip2 cabextract cpio file gzip lhasa nomarch pax rar unrar unzip zip zoo

Il software necessario è stato tutto installato, vediamo pertanto come configurare ciascun programma.

Clamav

Le configurazioni di Clamav si trovano all’interno della directory /etc/clamav ma la configurazione di default va già bene per le nostre necessità, pertanto per una volta non andremo a toccare nulla! Quello che dobbiamo fare invece è creare l’utente clamav e l’utente amavis. Dovremo poi aggiungerli entrambi al gruppo dell’altro per dare a Clamav l’accesso ai files in modo da poterli scansionare:

sudo adduser clamav amavis
sudo adduser amavis clamav

Diamo anche una password all’utente amavis dal momento che lo utilizzeremo in seguito per l’accesso:

sudo passwd amavis

Spamassassin

Abilitiamo razor e pyzor, due sistemi per individuare lo spam usati da spamassassin, accedendo con l’utente amavis:

su - amavis -s /bin/bash
razor-admin -create
razor-admin -register
pyzor discover
exit

Amavis

Per prima cosa dobbiamo attivare il rilevamento di spam e antivirus su amavis. Per farlo editiamo il seguente file:

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

Decommentiamo il suo contenuto in modo da avere queste istruzioni:

use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it
#
@bypass_virus_checks_maps = (
   %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it
#
@bypass_spam_checks_maps = (
   %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re);
1;  # insure a defined return

Il comportamento di default di amavis è di segnalare al mittente che il suo messaggio è stato considerato spam spedendogli indietro il messaggio stesso. Questo comportamento in alcuni casi può essere inutile (nel caso l’indirizzo fosse fasullo) o addirittura dannoso (nel caso lo spammer volesse solo accertarsi dell’esistenza degli indirizzi per attacchi futuri). Può essere consigliabile pertanto andare a modificare il file:

sudo nano /etc/amavis/conf.d/20-debian_defaults

e impostare il parametro final_spam_destiny a D_DISCARD al posto di D_BOUNCE:

$final_spam_destiny = D_DISCARD;

Terminate queste modifiche possiamo procedere col riavvio di amavis:

sudo /etc/init.d/amavis restart

Integrazione con Postfix

Ora è il momento di configurare Postfix in modo da poter usufruire dei servizi di antivirus e antispam appena configurati. Per prima cosa abilitiamo il content filter su Postfix in modo che passi ogni messaggio mail ad amavis. Per farlo editiamo il file main.cf:

sudo nano /etc/postfix/main.cf

e aggiungiamo il fondo al file la seguente istruzione:

content_filter = smtp-amavis:[127.0.0.1]:10024

Salviamo e chiudiamo main.cf per andare ad editare il file master.cf:

sudo nano /etc/postfix/master.cf

Individuiamo la direttiva del servizio "pickup" e incolliamo sotto le 2 seguenti istruzioni:

         -o content_filter=
         -o receive_override_options=no_header_body_checks

In fondo al file invece aggiungiamo quanto segue:

smtp-amavis     unix    -       -       -       -       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       -       -       -       -       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

A questo punto salviamo e chiudiamo anche master.cf e le configurazioni per antispam/antivirus sono terminate.

Chi volesse approfondire l’integrazione di Amavis con Postfix può farlo da qui.

Durante le operazioni è sempre bene tenere d’occhio il file di log /var/log/mail.log utilizzato dai programmi visti finora. Anche amavis scrive su quel file i propri messaggi, volendo possiamo cambiare il dettaglio dei log modificando il valore log_level da 1 a 5 nel file /etc/amavis/conf.d/50-user. Per avere la conferma che amavis risponda e sia attivo possiamo testarlo dal server stesso lanciando una sessione telnet e interrogando il localhost sulla porta 10024 specificata in fase di configurazione:

telnet localhost 10024

Se tutto va bene riusciremo a stabilire una connessione e otterremo le seguenti risposte:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
Pubblicitร