Filtrare le email

Uno dei più grandi problemi oggigiorno con le email è lo Unsolicited Bulk Email (UBE). Conosciuto anche come SPAM, questi messaggi possono essere virus e altre forme di malware. Secondi alcuni rapporti, questi messaggi compongono la maggior parte del traffico di email su Internet.

Questa sezione descrive come integrare Amavisd-new, Spamassassin e ClamAV con il Mail Transport Agent (MTA) Postfix. Postfix può anche verificare la validità delle email facendole analizzare da filtri esterni, che in certi casi possono determinare se un messaggio è indesiderato senza doverlo elaborare con applicazioni che richiedono più risorse. Due filtri comuni sono dkim-filter e python-policyd-spf.

  • Amavisd-new è un "wrapper" che può chiamare qualsiasi programma di filtraggio per rilevare la posta indesiderata, virus, ecc...

  • Spamassassin utilizza moti meccanismi diversi per filtrare le email in base al contenuto del messaggio.

  • ClamAV è un antivirus open source.

  • dkim-filter implementa uno Sendmail Mail Filter (Milter) per lo standard DomainKeys Identified Mail (DKIM).

  • python-policyd-spf abilita il controllo Sender Policy Framework (SPF) con Postfix.

Il processo di elaborazione è il seguente:

  • Un messaggio email viene accettato da Postfix.

  • Il messaggio è elaborato dai filtri esterni (in questo caso dkim-filter e python-policyd-spf).

  • Amavisd-new quindi elabora il messaggio.

  • ClamAV analizza il messaggio. Se contiene un virus, Postfix rifiuta il messaggio.

  • I messaggi puliti vengono poi analizzati da Spamassassin per verificare che non sia indesiderato. Spamassassin aggiunge quindi una riga X-Header per consentire ad Amavisd-new di analizzare ulteriormente il messaggio.

Per esempio, se un messaggio ha un punteggio spam di oltre 50, questo può essere scartato automaticamente senza nemmeno farlo arrivare al ricevente. Un altro metodo per gestire i messaggi con una segnalazione, è quello di lasciarli arrivare al Mail User Agent (MUA) consentendo all'utente di gestirli come meglio crede.

Installazione

Per maggiori informazioni sull'installazione e la configurazione di Postfix, consultare la sezione chiamata «Postfix».

Per installare le restanti applicazioni, in un terminale, digitare:

sudo apt-get install amavisd-new spamassassin clamav-daemon
sudo apt-get install dkim-filter python-policyd-spf

Esistono dei pacchetti opzionali che si integrano con Spamassassin per rilevare più efficientemente la posta indesiderata:

sudo apt-get install pyzor razor

Oltre alle applicazioni per il filtraggio, sono necessarie le utilità di compressioni per elaborare alcuni allegati delle email.

sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip unzoo zip zoo

Configurazione

Ora è necessario configurare il tutto affinché i programmi funzionino assieme e vengano filtrate le email.

ClamAV

In questo caso viene utilizzata la configurazione predefinita di ClamAV. Per maggiori informazioni di configurazione di Clamav, consultare i file di configurazione in /etc/clamav.

Aggiungere l'utente amavis al gruppo clamav affinché Amavisd-new abbia gli accessi appropriati per analizzare i file:

sudo adduser amavis clamav

Spamassassin

Spamasssassin rileva automaticamente i componenti opzionali e li userà di conseguenza. Non è quindi necessario configurare pyzor e razor.

Modificare /etc/default/spamassassin per attivare il demone Spamassassin daemon. Cambiare ENABLED=0 in:

ENABLED=1

Ora avviare il demone:

sudo /etc/init.d/spamassassin start

Amavisd-new

Per prima cosa, attivare il rilevamento spam e antivirus in Amavisd-new modificando /etc/amavis/conf.d/15-content_filter_mode:

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

rifiutare lo spam e rinviarlo al mittente può essere una cattiva idea, dato che l'indirizzo solitamente è fasullo. Modificare quindi /etc/amavis/conf.d/20-debian_defaults per impostare $final_spam_destiny a "D_DISCARD" piuttosto che "D_BOUNCE":

$final_spam_destiny       = D_DISCARD;

Una volta configurato, Amavisd-new deve essere riavviato:

sudo /etc/init.d/amavis restart

Postfix

Per l'integrazione con Postfix, in un terminale, digitare quanto segue:

sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'

Ora modificare il file /etc/postfix/master.cf e aggiungere quanto segue alla fine:

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

Aggiungere anche le seguenti righe dopo il servizio di trasporto "pickup":

         -o content_filter=
         -o receive_override_options=no_header_body_checks

In questo modo si eviteranno i messaggi generati per segnalare lo spam che viene classificato come spam.

Infine riavviare Postfix:

sudo /etc/init.d/postfix restart

Il filtraggio sul contenuto per lo spam e il rilevamento di virus sono ora abilitati.

Test

Per prima cosa, verificare che Amavisd-new SMTP sia in ascolto:

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

Nell'intestazione dei messaggi che passano attraverso il filtraggio del contenuto, dovrebbe essere visibile:

X-Spam-Level: 
X-Virus-Scanned: Debian amavisd-new at example.com
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level: 
[Nota]

L'output potrebbe variare, ma l'aspetto importante è la presenza delle voci X-Virus-Scanned e X-Spam-Status.

Risoluzione problemi

Il miglior metodo per comprendere cosa non funzioni correttamente è controllare i file di registro.

  • Per istruzioni sulle registrazioni di Postfix, consultare la sezione chiamata «Risoluzione problemi».

  • Amavisd-new fa uso di Syslog per inviare i messaggi verso /var/log/mail.log. Il livello di dettaglio può essere aumentato aggiungendo l'opzione $log_level in /etc/amavis/conf.d/50-user e impostando il valore da 1 a 5.

    $log_level = 2;
    
    [Nota]

    Aumentando il livello di messaggi di Amavisd-new anche quello di Spamassassin viene aumentato di conseguenza.

  • Il livello di messaggi di ClamAV può invece essere aumentato modificando il file /etc/clamav/clamd.conf e impostando la seguente opzione:

    LogVerbose true
    

    ClamAV, in modo predefinito, invia i messaggi verso /var/log/clamav/clamav.log.

[Nota]

Dopo aver cambiato le impostazioni di registrazione di un'applicazione, ricordarsi di riavviare il servizio. Una volta risolto il problema, è buona norma ripristinare il livello di registrazioni originale.

Riferimenti

Per maggiori informazioni sul filtraggio mail, consultare i seguenti indirizzi:

È possibile anche porre le proprie domande nel canale IRC #ubuntu-server su freenode.