Realizzare un sistema antispam open source con Centos 6 – Parte 2

In questo post ho trattato principalmente la configurazione di Postfix, accennando solo marginalmente agli altri software che concorrono alla realizzazione del nostro antispam.

Tra i suddetti software il ruolo principale è sicuramente svolto da Amavisd-new, il quale non fa altro che “coordinare” l’operato del demone antispam vero e proprio (Spamassassin) e dell’antivirus (ClamAV).

antispam

A grandi linee, l’operato del suddetto applicativo si può riassumere in quanto segue:

1) Postfix prende in pancia l’email appena ricevuta, la analizza e controlla che sia lecita utilizzando i filtri che abbiamo precedentemente creato;

2) Successivamente, se l’email ha superato tutti i suddetti controlli, viene girata ad Amavisd-new, il quale procede dapprima con la scansione antivirus (sfruttando ClamAV) e successivamente, grazie a Spamassassin, assegna alla stessa un determinato ranking (Hits). Tutte le email recanti un valore di Hits superiore ad una certa soglia verranno marcate come spam (tramite l’aggiunta del campo X-Spam-Flag impostato a yes) all’interno dell’header dell’email (aggiungendo in modo automatico la flag ***SPAM*** all’oggetto dei messaggi di posta incriminati). In questo modo, Exchange 2010 (dopo aver configurato il Receive Connector in modo opportuno), sarà in grado di segnalarle come spam e di spostarle automaticamente nella directory Posta Indesiderata.

Installazione e configurazione di Amavisd-new

Per installare il pacchetto precompilato appositamente per la nostra distribuzione è necessario su yum i repository rpmforge ed rpmforge-extras:

[root@antispam ~]# yum --enablerepo=rpmforge,rpmforge-extras

A questo punto andiamo di yum install:

[root@antispam ~]# yum install amavisd-new

Ad installazione avvenuta facciamo in modo che tale demone sia attivo anche dopo un eventuale riavvio della macchina:

[root@antispam ~]# chkconfig --levels 2345 amavisd on

Passiamo, adesso, alla configurazione del demone in questione. Il file che dovremo editare è /etc/amavisd/amavisd.conf, in cui bisogna apportare le seguenti modifiche:

1) Non effettuare alcun tipo di controllo sulle email provenienti dalla LAN:

$policy_bank{'MYNETS'} = {   # mail originating from @mynetworks  originating => 1,  # is true in MYNETS by default, but let's make it explicit  os_fingerprint_method => undef,  # don't query p0f for internal clients
 bypass_spam_checks_maps   => [1],  # don't spam-check internal mail  bypass_banned_checks_maps => [1],  # don't banned-check internal mail  bypass_header_checks_maps => [1],  # don't header-check internal mail};

2) Definire i domini interni e le subnet della mia LAN:

@local_domains_maps = ( [".$mydomain", ".vostrodominio.com"] ); $@mynetworks = qw( 127.0.0.1 192.168.1.0/24);

3) Configurare il pathame corretto relativo al pid di ClamAV:

\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],

4) Impostare i parametri di funzionamento relativi a Spamassassin (identificati dal preambolo sa_):

$sa_tag_level_deflt  = -999;  # add spam info headers if at, or above that level
 $sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level
 $sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g. blocks mail)
 $sa_dsn_cutoff_level = 10;

In particolare, con $sa_tag_level_deflt  = -999;  sto facendo in modo che Spamassassin aggiunga sempre a comunque (quindi anche alle email lecite) il campo X-Spam-Flag nell’header delle email, impostandolo a yes in caso di spam ed a no in caso di ham.

5) Infine, imposto il comportamento di default in caso di email contenenti virus o spam:

$final_virus_destiny      = D_DISCARD;
 $final_banned_destiny     = D_BOUNCE;
 $final_spam_destiny       = D_PASS;
 $final_bad_header_destiny = D_BOUNCE;

Ovviamente consento comunque il passaggio dello spam, in quanto sarà Exchange a gettarlo direttamente tra la posta indesiderata.

Installazione di Spamassassin

Installiamo ora Spamassassin mediante il comando:

[root@antispam ~]# yum install spamassassin

Rendiamo automatico il suo avvio in fase di bootstrap del SO:

[root@antispam ~]# chkconfig --levels 2345 spamassassin on

Ed avviamolo:

[root@antispam ~]# service spamassassin start

Installazione di ClamAV

Anche l’installazione di ClamAV può essere eseguita mediante yum:

[root@antispam ~]# yum install clamav

Come al solito, rendiamo automatico l’avvio del demone in questione:

[root@antispam ~]# chkconfig --levels 2345 clamd on

modifichiamo il gruppo amavis aggiungendo l’utente clam:

[root@antispam ~]# usermod -a -G amavis clam

ed eseguiamolo:

[root@antispam ~]# service clamd start

Ovviamente un software antivirus non aggiornato è totalmente inutile. A tal proposito ecco uno qualche riga di codice bash che ci permetterà di automatizzare il download delle firme aggiornate (effettuando anche una scansione dell’intero sistema):

#!/bin/bash
 SCAN_DIR="/"
 LOG_FILE="/var/log/clamav/manual_scan.log"
 /usr/bin/freshclam
 /usr/bin/clamscan -i -r $SCAN_DIR >> $LOG_FILE
exit 0

Salviamolo col nome di manual_scan e rendiamolo eseguibile:

[root@antispam ~]# chmod +x manual_scan

Successivamente scheduliamo la sua esecuzione mediante /etc/crontab:

15    03    * * *     root          /root/script/manual_scan

A questo punto, sarà possibile avviare anche Amavisd-new:

[root@antispam ~]# service amavisd start

verificando che sia effettivamente in ascolto sulla porta di default, ovvero la 10024:

[root@antispam ~]# telnet localhost 10024

Ultime configurazioni per Postfix

Il nostro sistema antispam è quasi pronto, occorre semplicemente apportare alcune modifiche sul file di configurazione principale di Postfix (main.cf) e sul file che regola il funzionamento del processo principale di tale demone, ovvero master.cf.

All’interno di main.cf è sufficiente decommentare la seguente direttiva:

content_filter = smtp-amavis:[127.0.0.1]:10024

Mentre, all’interno di master.cf è necessario inserire le seguenti direttive:

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_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

Infine ricarichiamo la configurazione di Postfix:

[root@antispam ~]# service clamd start

ed abbiamo finito.

Nella terza parte parlerò della configurazione di Exchange 2010 per l’invio automatico dello spam nella cartella Posta Indesiderata.

Alla prossima.

Realizzare un sistema antispam open source con Centos 6 – Parte 2ultima modifica: 2014-04-04T08:32:41+02:00da nazarenolatella
Reposta per primo quest’articolo