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.
This section will cover integrating Amavisd-new, Spamassassin, and ClamAV with the Postfix Mail Transport Agent (MTA). Postfix can also check email validity by passing it through external content filters. These filters can sometimes determine if a message is spam without needing to process it with more resource intensive applications. Two common filters are opendkim and 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.
-
opendkim implements a Sendmail Mail Filter (Milter) for the DomainKeys Identified Mail (DKIM) standard.
-
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.
-
The message is passed through any external filters opendkim and python-policyd-spf in this case.
-
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 Postfix.
Per installare le restanti applicazioni, in un terminale, digitare:
sudo apt-get install amavisd-new spamassassin clamav-daemon sudo apt-get install opendkim postfix-policyd-spf-python
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 zip
If some packages are not found, check that the multiverse repository is enabled in /etc/apt/sources.list
If you make changes to the file, be sure to run sudo apt-get update before trying to install again.
Configurazione
Ora è necessario configurare il tutto affinché i programmi funzionino assieme e vengano filtrate le email.
ClamAV
Il comportamento predefinito di ClamAV soddisferà le proprie necessità. Per le altre opzioni di ClamAV, controllare i file di configurazioni presenti in /etc/clamav.
Aggiungere l'utente clamav al gruppo amavis affinché Amavisd-new possa avere accesso per analizzare i file:
sudo adduser clamav amavis sudo adduser amavis clamav
Spamassassin
Spamassassin rileva automaticamente i componenti opzionali e ne fa uso se sono presenti. Ciò significa che non c'è alcuna necessità di 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;
Per indicare più messaggi come indesiderati, è possibile utilizzare anche questa opzione:
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 6.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = 21.0; # triggers spam evasive actions $sa_dsn_cutoff_level = 4; # spam level beyond which a DSN is not sent
Se il nome host del server è diverso dal record MX del dominio è necessario impostare manualmente l'opzione $myhostname. Inoltre, se il server riceve email da diversi domini, è necessario personalizzare l'opzione @local_domains_acl. Modificare il file /etc/amavis/conf.d/50-user:
$myhostname = 'mail.example.com'; @local_domains_acl = ( "example.com", "example.org" );
If you want to cover multiple domains you can use the following in the/etc/amavis/conf.d/50-user
@local_domains_acl = qw(.);
Una volta configurato, Amavisd-new deve essere riavviato:
sudo /etc/init.d/amavis restart
Whitelist DKIM
Amavisd-new può essere configurato per inserire automaticamente in una whitelist gli indirizzi da domini dotati di "Domain Keys" valide. Nel file /etc/amavis/conf.d/40-policy_banks sono disponibili alcuni domini preconfigurati.
L'aggiunta di un dominio nella whitelist è possibile in diversi modi:
-
'example.com' => 'WHITELIST',: inserisce nella whitelist qualsiasi indirizzo dal dominio "example.com".
-
'.example.com' => 'WHITELIST',: inserisce nella whitelist qualsiasi indirizzo da qualsiasi sotto dominio di "example.com" con una firma valida.
-
'.example.com/@example.com' => 'WHITELIST',: inserisce nella whitelist i sotto domini di "example.com" che utilizzano una firma del dominio superiore example.com.
-
'./@example.com' => 'WHITELIST',: adds addresses that have a valid signature from "example.com". This is usually used for discussion groups that sign their messages.
A domain can also have multiple Whitelist configurations. After editing the file, restart amavisd-new:
sudo /etc/init.d/amavis restart
In questo contesto, una volta aggiunto un dominio alla whitelist, il messaggio non verrà più filtrato dall'anti-virus o dal filtro anti-spam. Questo potrebbe essere o meno un comportamento indesiderato per un dominio.
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.
Amavisd-new and Spamassassin
When integrating Amavisd-new with Spamassassin, if you choose to disable the bayes filtering by editing /etc/spamassassin/local.cf and use cron to update the nightly rules, the result can cause a situation where a large amount of error messages are sent to the amavis user via the amavisd-new cron job.
There are several ways to handle this situation:
-
Configure your MDA to filter messages you do not wish to see.
-
Change /usr/sbin/amavisd-new-cronjob to check for use_bayes 0. For example, edit /usr/sbin/amavisd-new-cronjob and add the following to the top before the test statements:
egrep -q "^[ \t]*use_bayes[ \t]*0" /etc/spamassassin/local.cf && exit 0
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:
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 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;
Quando il livello dei messaggi di registro di Amavisd-new viene aumentato, viene aumentato automaticamente anche quello di Spamassassin.
-
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.
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.