[howto] Debian 7.0 “Wheezy”: mail server con Postfix, Dovecot e mySql (parte 2)
Amavisd-new, spamassassin e clamav (antispam e antivirus)
Installazione dei pacchetti:
apt-get install amavisd-new spamassassin clamav-daemon clamav arj zip p7zip unzip zoo unrar-free cabextract nomarch lzop rpm pax tnef ripole lhasa
Configurazione di amavisd-new
Impostare l’hostname del server, modificando il file di configurazione 05-node_id di amavis:
nano -w /etc/amavis/conf.d/05-node_id
La riga da editare è $myhostname
#Qualified Domain Name (FQDN) and remove the # at the beginning of the line.
$myhostname = "mail.esempio.it";
Modifiche alla configurazione di Postfix per l’integrazione con amavis
Modificare il file di configurazione di Postfix (main.cf)
nano -w /etc/postfix/main.cf
aggiungendo in fondo la seguente riga:
content_filter=smtp-amavis:[127.0.0.1]:10024
Inoltre, va modificato il file master.cf per aggiungere il servizio di amavis
nano -w /etc/postfix/master.cf
aggiungendo in fondo queste righe:
smtp-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 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 smtpd_restriction_classes=
-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,no_milters
-o local_header_rewrite_clients=
Il numero 2 nella riga smtp-amavis unix rappresenta il numero dei processi figli amavis; alzare il valore per gestire un alto traffico di email.
Modificare il file 20-debian_defaults di amavis
# vi /etc/amavis/conf.d/20-debian_defaults
in questo modo:
#Non viene specificata una directory per la quarantena
#in quanto verrà dirottata la mail ad un utente apposito
#$QUARANTINEDIR = "$MYHOME/virusmails";
$TEMPBASE = "/var/tmp";
#Inoltro delle mail virus e spam ad appositi utenti
$virus_quarantine_to = 'virus@esempio.it';
$spam_quarantine_to = 'spam@esempio.it';
$banned_quarantine_to = $spam_quarantine_to;
$bad_header_quarantine_to = $spam_quarantine_to;
$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine)
$final_banned_destiny = D_DISCARD; # D_REJECT when front-end MTA
$final_spam_destiny = D_DISCARD;
$final_bad_header_destiny = D_DISCARD; # False-positive prone (for spam)
#$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default
$virus_admin = undef; #non notificare l'admin le notifiche di ricezione virus
Infine, riavviare il servizio amavisd
service amavis restart
Configurazione di mySql per white list, black list e policy di amavis
Connettersi al database mail su mysql e creare le tabelle necessarie:
mysql -u root
#mysql> use mail;
#mysql> CREATE TABLE wblist (
email varchar(255) NOT NULL,
wb char(1) NOT NULL DEFAULT 'w', -- W/B (White=HAM, Black=SPAM)
KEY email (email)
);
#mysql> CREATE TABLE policy (
id int unsigned NOT NULL auto_increment,
policy_name varchar(32), -- nome.Non usato da amavisd-new
virus_lover char(1), -- Y/N
spam_lover char(1), -- Y/N (campo opzionale)
banned_files_lover char(1), -- Y/N (campo opzionale)
bad_header_lover char(1), -- Y/N (campo opzionale)
bypass_virus_checks char(1), -- Y/N
bypass_spam_checks char(1), -- Y/N
bypass_banned_checks char(1), -- Y/N (campo opzionale)
bypass_header_checks char(1), -- Y/N (campo opzionale)
spam_modifies_subj char(1), -- Y/N (campo opzionale)
virus_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
spam_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
banned_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
bad_header_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
spam_tag_level float, -- un punteggio alto inserisce le intestazioni spam
spam_tag2_level float DEFAULT NULL, -- un punteggio alto inserisce le
-- intestazioni di 'spam dichiarato'
spam_kill_level float, -- un punteggio alto attiva le azioni evasive:
-- rifiuto/scarto, quarantena, ...
-- (soggetto all'impostazione di final_spam_destiny)
PRIMARY KEY (id)
);
Infine, carichiamo la policy predefinita
#mysql> INSERT INTO policy
SET
id =1,
policy_name ="Filtro predefinito",
virus_lover ="N",
spam_lover ="N",
banned_files_lover ="N",
bad_header_lover ="N",
bypass_virus_checks ="N",
bypass_spam_checks ="N",
bypass_banned_checks ="N",
bypass_header_checks ="N",
spam_modifies_subj ="Y",
spam_quarantine_to ="spam@esempio.it",
virus_quarantine_to ="virus@esempio.it",
banned_quarantine_to ="spam@esempio.it",
bad_header_quarantine_to ="spam@esempio.it",
spam_tag_level =2,
spam_tag2_level =6.31,
spam_kill_level =7;
Impostare amavis per accedere al database, modificando il file 20-debian_defaults in questo modo:
#connessione al database
@lookup_sql_dsn =
( ['DBI:mysql:mail:localhost', 'mailuser', 'mailpassword'] );
#carica le impostazioni definite di policy
$sql_select_policy = 'SELECT * FROM policy';
#Per ottenere white/blacklisting in base al mittente
$sql_select_white_black_list = 'SELECT wb FROM wblist'.
' WHERE (email IN (%k))';
Configurazione di Clamav
Modificare l’intervallo di aggiornamento delle definizioni attraverso il parametro Checks del file freshclam.conf
nano -w /etc/clamav/freshclam.conf
Checks 4
Aggiungere l’utente clamav al gruppo amavis, per consentire l’accesso all’antivirus alle cartelle tempornaee di amavis:
gpasswd -a clamav amavis
Verificare che nel file /etc/amavis/conf.d/15-av_scanners sia presente l’istruzione per eseguire clamav (di default dovrebbe esserlo). Quindi, abilitare il controllo dei virus attraverso amavis modificando il file
nano -w /etc/amavis/conf.d/15-content_filter_mode
e rimuovendo (se presenti) i commenti dalla riga @bypass_virus_check
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re)
Configurazione di Spamassassin
Modificare o aggiungere i seguenti parametri nel file /etc/spamassassin/local.cf:
#permette di avere un unico database bayes anziché uno in ogni home degli user
bayes_path /etc/spamassassin/bayes/bayes
bayes_file_mode 0666
Quindi creare la cartella specificata /etc/spamassassin/bayes con gli opportuni permessi
mkdir /etc/spamassassin/bayes
chmod 777 /etc/spamassassin/bayes
Disabilitare il demone spamd, in quanto è preferibile interfacciarsi tramite le API di Amavis, impostando il valore del parametro a zero nel file /etc/default/spamassassin:
#Change to one to enable spamd
ENABLED=0
Infine, abilitare il controllo dello spam attraverso le API di Amavis verificando la riga @bypass_spam_check non sia commentata nel file 15-content_filter_mode di amavis:
nano -w /etc/amavis/conf.d/15-content_filter_mode
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Verificare la configurazione di spamassassin attraverso il comando:
spamassassin --lint
Quindi, testandone il funzionamento con un file di test:
spamassassin -D < /usr/share/doc/spamassassin/examples/sample-spam.txt
Infine, riavviare i servizi:
service amavis restart
service postfix restart
L’articolo originale lo trovate nel post Server mail: Postfix Amavisd-new Dovecot e MySql pubblicato sul sito Guide@Debianizzati.org