Guida al filtraggio della posta elettronica con Gentoo
1.
Introduzione
Questa guida descrive passo passo come installare un gateway per il filtraggio
della posta dai virus e dallo spam. Questa soluzione è abbastanza semplice da
applicare ad singolo server.
Una visione dall'alto
Questo documento descrive come impostare un gateway per il filtraggio dello spam
che supporti multipli domini di posta. Questo server è progettato per essere
posto a monte dei server di posta che dovrebbero effettivamente memorizzare i
messaggi di posta (ad esempio, Microsoft Exchange o Lotus Notes).
Per questa configurazione sono state scelte delle applicazioni note per il buon
livello di sicurezza che offrono e per la facilità con la quale possono essere
modificati i propri file di configurazione. L'MTA (dall'inglese mail
transport agent, in altre parole un programma che si occupi dello
smistamento da un computer a un altro della posta elettronica) scelto è
postfix, che appunto è abbastanza sicuro ed relativamente facile da
configurare. Come impostazione predefinita, postfix si mette in ascolto
sulla porta 25 per la posta in ingresso. Quando arriva un nuovo messaggio di
posta, il server lo inoltra ad amavisd-new sulla porta 10024.
Amavisd-new, successivamente, controlla il messaggio attraverso vari
filtri e lo restituisce a postfix sulla porta 10025; infine, il messaggio
viene consegnato al server di posta successivo.
Amavisd-new è un framework per il filtraggio di contenuti che utilizza
applicazioni di supporto per il riconoscimento di virus e spam. In questa
configurazione si utilizzeranno due applicazioni: ClamAV per il filtraggio dei
virus e Spamassassin per quello dello spam. Spamassassin, a sua volta, può
poggiarsi su applicazioni di livello inferiore, come ad esempio Vipul's Razor
e DCC.
Rispetto ad altre tecnologie di controllo dello spam (come gli RBL, dall'inglese
Real-time Blackhole List, termine con il quale si indicano impropriamente
le tecnologie DNSBL, o di DNS blacklist, che consistono nella
pubblicazione, da parte di un sito Internet, di una lista di indirizzi IP
che, per varie ragioni, ma principalmente spam, dovrebbero essere bloccati),
Spamassassin non valida un dato messaggio email in base ad un singolo test.
Questo programma, invece, esegue una lista di controlli, sia interni, sia usando
delle applicazioni esterne, per calcolare un punteggio da assegnare ad ogni
messaggio di posta. Questo punteggio è determinato in base a:
- Filtro Bayesiano
- Regole statiche basate su espressioni regolari
- Reti distribuite e collaborative:
La prima parte della guida (capitoli dall'1 al 4) descriverà l'impostazione base
del gateway che farà da filtro. I capitoli seguenti possono essere implementati
in maniera indipendente, senza alcuna dipendenza reciproca. Questi capitoli
descriveranno come:
-
impostare delle cartelle IMAP specifiche per l'apprendimento del filtro
Bayesiano e per la consegna dei falsi positivi
- impostare il greylisting con Postfix
-
impostare Amavisd-new per usare MySQL come backend per le preferenze
dell'utente
-
impostare Spamassassin per usare MySQL come backend per i dati di AWL e del
filtro Bayesiano
Nota:
Le cartelle IMAP useranno il formato maildir. Avere ogni messaggio email
in un file separato rende la loro gestione molto più semplice. Se è già in uso
mbox, si consiglia di provare il formato maildir. Se non si è installato
maildir, installare i pacchetti necessari usando emerge courier-imap.
|
Una quinta parte della guida, in via di scrittura, conterrà diversi suggerimenti
sulle prestazioni ed altre informazioni utili (come far girare il server in
chroot, le restrizioni di postfix, ecc...).
Nota:
Delegare responsabilità a terze parti non è esente da rischi. È necessario
conoscere ed assegnare fiducia a queste terze parti. In questa configurazione,
la sola decisione di mettere in quarantena i messaggi con virus è presa da una
singola terza parte. Usare il sistema di punteggi di Spamassassin permette di
distribuire su diverse tecnologie la decisione di fermare le email di spam,
tranne che per le regole statiche interne a Spamassassin.
|
Avvertenza:
Quando si identificano e rifiutano le email di spam a livello MTA, bisogna
prestare molta attenzione a quale RBL si usa. Ad esempio, SpamCop è un cattivo
RBL da usare a livello MTA, in quanto genera un apprezzabile numero di falsi
positivi, a causa dell'eccessiva aggressività del suo elenco. Ulteriori
informazioni possono essere trovate qui:
Perchè gli RBL sono inaffidabili e Il
problema dello spam: oltre gli RBL
|
Preparativi
Prima di iniziare, accertarsi di avere una installazione funzionante di Postfix,
verificando la possibilità di inviare e ricevere messaggi di posta dal server di
backend. Se non si ha esperienza con l'impostazione di Postfix, potrebbe essere
troppo complicato impostare tutto assieme. Se si ha bisogno di aiuto, si può
trovare assistenza nell'eccellente Guida al Sistema di
Mailhosting Virtuale con Postfix nella documentazione Gentoo.
2.
Installare i programmi necessari
Iniziare installando i programmi più importanti: Amavisd-new, Spamassassin e
ClamAV.
Codice 2.1: Installare Amavis, Spamassassin e Clamav |
# emerge amavisd-new spamassassin clamav
|
Nota:
Come menzionato in precedenza, si dovrebbe già avere una istanza di
postfix attiva sulla macchina. Normalmente questo non si spinge oltre il
lanciare emerge postfix e comprendere le basi del funzionamento di
Postfix.
|
Impostare il DNS
Nota:
Se non si sta impostando un server gateway, ma le caselle di posta sono sullo
stesso server, basta anche solo impostare il record MX del DNS.
|
Mentre i programmi sono in via di installazione, avviare una nuova shell e
creare i record DNS necessari.
Iniziare creando un record MX per il gateway di posta ed un record
A per la destinazione successiva.
Codice 2.2: Impostare il DNS |
MX 10 mailgateway.mydomain.tld.
mailgateway A aggiungi.qui.ip.mailgateway
mail A aggiungi.qui.ip.mailserver
|
Nota:
Alcuni fornitori di ADSL potrebbero bloccare la porta 25 e forzare il relay
della posta attraverso uno dei loro server. In questo caso, basta creare un
record MX secondario del tipo MX 20 backup-mx.some-isp.tld
|
Aprire il firewall
In aggiunta al normale traffico di posta, si dovrebbero permettere ad alcuni
servizi aggiuntivi di passare attraverso il firewall, in modo da consentire
alcuni controlli di rete per la comunicazione con i server.
| Applicazione |
Protocollo |
Porta |
| DCC |
UDP |
6277 |
| Razor(ping in uscita) |
TCP |
7 |
| Razor |
TCP |
2703 |
Razor usa il ping per determinare quali server siano più vicini.
Configurare Postfix
Prima di tutto si deve impostare postfix in modo da ascoltare sulla porta
10025, rimuovendo la maggior parte delle restrizioni in quanto esse sono già
state applicate all'istanza di postfix che ascolta sulla porta 25.
Inoltre ci si deve assicurare che l'istanza sulla porta 10025 accetti solo
connessioni locali. Per permettere questo comportamento, si devono aggiungere
le seguenti linee alla fine di /etc/postfix/master.cf
Codice 2.3: Modifiche al file master.cf |
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
|
Nota:
La riga relativa ad smtp-amavis specifica che un massimo di due processi
di tale programma possono essere in esecuzione contemporaneamente. Se si ha
bisogno di un maggior grado di concorrenza, modificare quel valore secondo
necessità. Ricordarsi inoltre di impostare lo stesso valore per
$max_servers in amavisd.conf. È bene tenere a mente che
amavisd-new è abbastanza avido di memoria ed aumentare troppo il numero
di processi concorrenti potrebbe portare ad una diminuzione consistente della
memoria disponibile, così come ad un intenso uso dello swap.
|
Nota:
Se si vuole eliminare lo spam ad un livello precedente, si può utilizzare il
metodo Before-Queue (proxy) in luogo del metodo che usa il filtro.
Rimuovendo i segni di commento dalle tre righe appropriate, è necessario poi
aggiungere la variabile content_filter= in main.cf. Questa
soluzione non è raccomandata per server ad alto traffico, in quanto il numero di
connessioni concorrenti è limitato dal numero massimo di istanze di
amavisd.
|
Avvertenza:
Il metodo Before-Queue (proxy) non è stato ancora testato
approfonditamente.
|
Nota:
Se, per qualsiasi motivo, si volesse inviare una email dalla stessa macchina,
senza sottoporla a scansione, aggiungere una nuova istanza di postfix togliendo
il simbolo di commento dalle ultime due linee e sostituendo il corretto
indirizzo IP.
|
Il file master.cf indica a postfix in che modo lanciare ogni
singolo processo. Per ulteriori informazioni, vedere man 8 master.
Successivamente, si deve avere l'istanza principale di postfix in ascolto
sulla porta 25, che filtri i messaggi di posta attraverso amavisd-new, in
ascolto sulla porta 10024.
Si deve anche impostare il nodo successivo di destinazione per la posta.
Impostare Postfix in modo da filtrare tutta la posta attraverso un filtro di
contenuti esterno ed abilitare il routing esplicito in modo che Postfix conosca
esattamente dove inoltrare la posta.
Codice 2.4: Modificare /etc/postfix/main.cf |
biff = no
empty_address_recipient = MAILER-DAEMON
queue_minfree = 120000000
content_filter = smtp-amavis:[127.0.0.1]:10024
transport_maps = hash:/etc/postfix/transport
relay_domains = $transport_maps
|
Postfix ha numerose opzioni configurabili in main.cf. Per ulteriori
spiegazioni sul contenuto del file vedere man 5 postconf, oppure, online,
i Parametri di configurazione
di Postfix.
Il formato del file transport è quello di un file Postfix di hash.
La posta indirizzata ad un dominio elencato sul lato sinistro è inoltrata alla
destinazione indicata sul lato destro del file.
Codice 2.5: /etc/postfix/transport |
mydomain.tld smtp:mail.mydomain.tld
|
Dopo aver modificato il file, bisogna lanciare il comando postmap.
Postfix, in realtà, non legge il file /etc/postfix/transport,
perciò è necessario convertirlo con il comando postmap
/etc/postfix/transport. Questo crea il file
/etc/postfix/transport.db. Non è necessario ricaricare Postfix, in
quanto esso rileverà automaticamente le modifiche.
Nota:
Se il mail server successivo non dovesse essere in ascolto sulla porta standard
per l'SMTP, cioè la 25, configurare postfix con una voce simile a
smtp:mail.mydomain.tld:25000.
|
Se il primo tentativo di invio di una e-mail si conclude con i messaggi che
rimbalzano indietro sul server, molto probabilmente è stato commesso un errore
di configurazione. Provare ad abilitare temporaneamente soft_bounce
mentre si corregge la configurazione. Questo espediente impedisce a postfix di
fare il bouncing delle e-mail in caso di errori di spedizione, trattandole come
errori temporanei. Il programma manterrà i messaggi nella coda di spedizione
finchè soft_bounce non viene disabilitato o rimosso.
Codice 2.6: Abilitare soft_bounce |
# postconf -e "soft_bounce = yes"
# /etc/init.d/postfix reload
|
Una volta trovata la configurazione funzionante, disabilitare o rimuovere
soft_bounce e ricaricare postfix.
Configurare Amavisd-new
Amavisd-new è usato per gestire l'intero processo di filtraggio e permette di
unire insieme diverse tecnologie in maniera semplice. Quando riceve un nuovo
messaggio, Amavisd-new lo filtra attraverso diversi filtri personalizzati,
gestisce il blacklisting e whitelisting, invoca diversi antivirus ed infine
lo filtra usando SpamAssassin.
Amavisd-new possiede le seguenti caratteristiche:
-
identifica allegati di posta potenzialmente pericolosi e li gestisce
autonomamente
- ha delle politiche a livello utente, dominio o di intero sistema per:
- le whitelist
- le blacklist
- le soglie di guardia per i punteggi di spam
- virus e spam
A parte postfix e freshclam, tutte le applicazioni gireranno con
i privilegi dell'utente amavis.
Modificare le seguenti linee in /etc/amavisd.conf
Codice 2.7: Come modificare /etc/amavisd.conf |
$mydomain = 'example.com';
$inet_socket_bind = '127.0.0.1';
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
$virus_admin = "virusalert\@$mydomain";
$sa_tag_level_deflt = -100;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$sa_dsn_cutoff_level = 10;
$final_virus_destiny = D_DISCARD; # (default: D_DISCARD)
$final_banned_destiny = D_DISCARD; # (default: D_BOUNCE)
$final_spam_destiny = D_DISCARD; # (default: D_BOUNCE)
|
Nota:
Con la linea $sa_tag2_level_deflt = 5; si imposta a 5 il punteggio di
spam per Spamassassin. Questa impostazione potrebbe essere bassa; il valore p
redefinito per Amavisd-new, infatti, è 6.3. Usando 5 si rischia di
generare dei falsi positivi, ma con 6.3 qualche messaggio di spam
potrebbe passare attraverso i filtri.
|
Creare una directory di quarantena per i messaggi con virus, in modo che gli
stessi non vengano inviati agli utenti.
Codice 2.8: Creare una directory di quarantena per i messaggi con virus |
# mkdir /var/amavis/virusmails
# chown amavis:amavis /var/amavis/virusmails
# chmod 750 /var/amavis/virusmails
|
Nota:
Amavisd-new offre un controllo più raffinato attraverso l'utilizzo dei policy
banks.
|
Configurare ClamAV
Per difendersi dai virus si userà ClamAV, in quanto esso ha un buon tasso di
riconoscimento comparato con le soluzioni commerciali, è molto veloce ed è
software Open Source. I file di log sono estremamente utili, perciò si imposterà
il logging di clamd attraverso syslog al suo livello prolisso.
Inoltre, assicurarsi di non far girare clamd come root. Modificare
/etc/clamd.conf
Codice 2.9: Modificare /etc/clamd.conf |
LogSyslog
LogVerbose
LogFacility LOG_MAIL
PidFile /var/run/amavis/clamd.pid
LocalSocket /var/amavis/clamd
StreamMaxLength 10M
User amavis
ScanMail
ScanArchive
|
Nota:
Infine fare attenzione a rimuovere la direttiva Example per far funzionare
ClamAV.
|
ClamAV viene distribuito assieme al demone freshclam, dedicato ai
controlli periodici per l'aggiornamento delle firme dei virus. Invece di
aggiornare le firme dei virus due volte al giorno, si imposterà freshclam
im modo che le aggiorni autonomamente ogni due ore.
Codice 2.10: Modificare /etc/freshclam.conf |
LogSyslog
LogVerbose
DatabaseOwner clamav
Checks 12
DatabaseMirror db.XY.clamav.net
|
Lanciare clamd con freshclam usando gli script di init modificando
/etc/conf.d/clamd.
Codice 2.11: Modificare /etc/conf.d/clamd |
START_CLAMD=yes
FRESHCLAM_OPTS="-d"
|
Infine modificare amavisd.conf con il nuovo percorso del socket.
Codice 2.12: Modificare /etc/amavisd.conf |
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/amavis/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
|
Avvertenza:
Non modificare $unix_socketname tranne se si sa con certezza cosa
si sta facendo.
|
Configurare Vipul's Razor
Razor2 è una rete collaborativa e distribuita per l'intercettazione dello spam.
Per installarlo, digitare emerge razor e creare i necessari file di
configurazione. Eseguire la creazione con l'utente amavis, eseguendo
su - amavis seguito da razor-admin -create.
Codice 2.13: Creazione dei file di configurazione necessari |
# emerge razor
# usermod -s /bin/bash amavis
# su - amavis
$ razor-admin -create
$ exit
# usermod -s /bin/false amavis
|
Configurare Distributed Checksum Clearinghouse (dcc)
Come Razor2, dcc è una rete collaborativa e distribuita per l'intercettazione
dello spam. La sua filosofia è quella di contare il numero di destinatari di una
data email, identificando ogni mail con un checksum fuzzy.
Codice 2.14: Installare DCC |
# emerge dcc
|
Configurare Spamassassin
Amavis usa direttamente le librerie in Perl di Spamassassin, quindi non è
necessario avviare direttamente il servizio. Questa situazione crea un po' di
confusione in quanto alcune impostazioni di Spamassassin vanno configurate in
/etc/mail/spamassassin/local.cf, e sono superate da quelle presenti
in /etc/amavisd.conf.
Codice 2.15: Creare /etc/mail/spamassassin/local.cf |
use_bayes 1
skip_rbl_checks 0
ok_languages da en no sv
ok_locales en
bayes_path /var/amavis/.spamassassin/bayes
|
Nota:
Con Spamassassin versione 3.1 bisogna abilitare DCC e Razor2 togliendo il
simbolo di commento dalle apposite linee in v310.pre.
|
Nota:
È possibile provare alcuni esempi per il file local.cf con il Generatore di Configurazione per
SpamAssassin.
|
Nota:
È consigliabile modificare le variabili ok_languages e ok_locales.
|
3.
Ogni regola ha le sue eccezioni
Una volta configurato il sistema potrebbe essere necessario modificare
ulteriormente la configurazione. Alcuni clienti potrebbero voler ricevere alcuni
tipi di email che altri clienti invece non gradiscono. Per questo è possibile
separare la configurazioni tra diversi siti con la seguente linea in
amavisd.conf.
Codice 3.1: Modificare amavisd.conf per abilitare il punteggio sito per sito |
read_hash("/var/amavis/sender_scores_sitewide"),
|
Nel file sender_scores_sitewide si possono impostare indirizzi
email completi (oppure anche solo la parte di dominio) e dare loro un
modificatore positivo o negativo al punteggio di spam.
Codice 3.2: Esempio per whitelist_sender |
postmaster@example.net -3.0
.example.net 1.0
|
Nota:
Vedere /etc/amavisd.conf per ulteriori esempi.
|
Nota:
Inserire questi indirizzi all'esterno di amavisd.conf è una
soluzione più pulita e sicura.
|
Nota:
In alternativa, la configurazione può essere attivata nel file di Spamassassin
/etc/mail/spamassassin/local.cf, ma probabilmente inserirla in
/etc/amavisd.conf è più corretto.
|
Nota:
In un capitolo successivo verrà illustrato come implementare politiche utente
per utente utilizzando MySQL.
|
In attesa della possibilità di usare metodi migliori, è possibile aggiungere le
seguenti linee in amavisd.conf in modo da superare i controlli per
lo spam per postmaster e abuse.
Codice 3.3: Superare i filtri per lo spam per le mail per postmaster e abuse |
map { $bypass_spam_checks{lc($_)}=1 } (qw(
postmaster@
abuse@
));
|
Importante:
Non si dovrebbero mai scartare automaticamente le mail per gli account
postmaster e abuse. Vedere RFC 2142 MAILBOX NAMES FOR COMMON
SERVICES, ROLES AND FUNCTIONS. Altrimenti il dominio potrebbe
finire nelle liste di rfc-ignorant.org.
|
4.
Aggiungere ulteriori regole
Volendo utilizzare ulteriori regole fornite dai SARE Ninjas dello SpamAssassin Rules
Emporium, si può facilmente aggiungerle ed aggiornarle usando il
meccanismo sa-update incluso in Spamassassin.
Una breve guida su come usare il set di regole SARE con sa-update è
disponibile a questo
indirizzo.
5.
Test e conclusione
Test della configurazione
Prima di lanciare freshclam è possibile verificare manualmente che
funzioni correttamente.
Codice 5.1: Testare freshclam |
# freshclam
ClamAV update process started at Sun May 2 09:13:41 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 22, sigs: 20229, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 298, sigs: 1141, f-level: 2, builder: diego)
Database updated (21370 signatures) from database.clamav.net (193.1.219.100).
|
Adesso le definizioni dei virus sono aggiornate e contemporaneamente è stata
verificata la correttezza della sintassi del file freshclam.conf.
Per testare freshclam e amavisd da linea di comando, lanciare clamd e
amavis con i seguenti comandi:
Codice 5.2: Lanciare amavisd e clamd e ricaricare la configurazione di postfix |
# /etc/init.d/clamd start
# /etc/init.d/amavisd start
# /etc/init.d/postfix reload
|
Se tutto è andato bene, postfix dovrebbe adesso essere in ascolto per
le email in ingresso sulla porta 25 e per quelle reiniettate sulla porta 10024.
Per verificare questo, controllare il proprio file di log.
Codice 5.3: Controllare i file di log |
# tail -f /var/log/mail.log
|
Nota:
A seconda delle impostazioni, il percorso corretto per il file di log potrebbe
essere /var/log/messages.
|
Se nessuno strano messaggio compare nei file di log, è tempo di eseguire degli
ulteriori test.
Usare netcat per connettersi manualmente ad amavisd sulla porta
10024 ed a postfix sulla porta 10025.
Nota:
Netcat può essere utilizzato come un avanzato rimpiazzo di telnet.
Installarlo con emerge netcat.
|
Nota:
Per qualche motivo ignoto non è possibile eseguire una iniezione manuale in
amavisd usando netcat. Utilizzare telnet invece.
|
Codice 5.4: Controllare manualmente che amavisd e postfix ascoltino sulle nuove porte |
# nc localhost 10024
220 [127.0.0.1] ESMTP amavisd-new service ready
nc localhost 10025
220 example.com ESMTP Postfix
|
Nota:
Se si vuole vedere l'output completo di amavisd-new, lanciare amavisd
debug-sa dall'utente amavis ed inviare una email. Per eseguire questo
test potrebbe essere necessario modificare la shell predefinita in
/etc/passwd.
|
Aggiungere amavisd e clamd al runlevel default.
Codice 5.5: Agguingere amavisd e clamd al runlevel di default |
# rc-update add clamd default
# rc-update add amavisd default
|
Nota:
Non è necessario aggiungere spamd al runlevel di default in quanto
amavisd usa le librerie Perl di Spamassassin direttamente.
|
Nota:
Nei log potrebbero comparire delle linee simili a Net::Server: Couldn't
POSIX::setuid to ... []. Secondo il file di README per amavis chroot, se
l'UID del processo rimane a 0 (root), il programma viene terminato,
altrimenti è possibile considerare il messaggio come informativo. Questo accade
in quanto POSIX::setuid() restituisce una stringa pari a 0 per
indicare true.
|
Importante:
Se è stato abilitato il login per amavis, ricordarsi di reimpostarlo a
/bin/false in /etc/passwd.
|
6.
Apprendimento automatico e sidelining delle email
Creare l'utente spamtrap
Creare l'utente spamtrap e relative directory.
Codice 6.1: Creare l'account spamtrap |
# useradd -m spamtrap
# maildirmake /home/spamtrap/.maildir
# chown -R spamtrap:spamtrap /home/spamtrap/.maildir
# passwd spamtrap
|
Se si vogliono controllare alcune delle email per assicurarsi che non si siano
falsi positivi, è possibile configurare procmail in modo da fare il
sideline dello spam tra diverse cartelle di posta.
Creare .procmailrc
Codice 6.2: Creare /home/spamtrap/.procmailrc |
MAILDIR=$HOME/.maildir
SPAM_FOLDER=$MAILDIR/.spam-found/
LIKELY_SPAM_FOLDER=$MAILDIR/.likely-spam-found/
:0:
* ^X-Spam-Status: Yes
* ^X-Spam-Level: \*\*\*\*\*\*\*
$SPAM_FOLDER
:0:
* ^X-Spam-Status: Yes
$LIKELY_SPAM_FOLDER
:0
*
./
|
Avvertenza:
Se è previsto che il mailserver riceva una grande quantità di posta, non si
dovrebbe usare la configurazione appena vista. Invece, sarebbe meglio impostare
$sa_tag2_level_deflt abbastanza alto da evitare i falsi positivi e
filtrarli direttamente in $SPAM_FOLDER.
|
Nota:
Se procmail non è ancora installato, digitare emerge procmail.
|
Assicurarsi che Postfix usi procmail per spedire la posta.
Codice 6.3: Modificare /etc/postfix/main.cf |
mailbox_command = /usr/bin/procmail -a "DOMAIN"
|
Creare le cartelle per la posta
A breve verranno create le cartelle condivise per la posta, che sarà divisa
tra spam ed ham: quest'ultimo termine è usato per indicare la
posta legittima, in contrapposizione al significato originale del sostantivo
spam.
Codice 6.4: Creare le necessarie cartelle per la posta |
# maildirmake /var/amavis/.maildir
# maildirmake -S /var/amavis/.maildir/Bayes
# maildirmake -s write -f spam /var/amavis/.maildir/Bayes
# maildirmake -s write -f ham /var/amavis/.maildir/Bayes
# maildirmake -s write -f redeliver /var/amavis/.maildir/Bayes
|
Amavisd-new deve poter leggere questi file, così come tutti gli utenti di posta.
Per tale motivo aggiungere tutti gli utenti del caso al gruppo mailuser, assieme
all'utente amavis.
Codice 6.5: Impostare i permessi appropriati |
# groupadd mailusers
# usermod -G mailusers spamtrap
# chown -R amavis:mailusers /var/amavis/.maildir/
# chown amavis:mailusers /var/amavis/
# chmod -R 1733 /var/amavis/.maildir/Bayes/
# chmod g+rx /var/amavis/.maildir/
# chmod g+rx /var/amavis/.maildir/Bayes/
|
Avvertenza:
Questi comandi permettono ad i membri del gruppo mailusers di accedere
alla posta di amavis.
|
Questa impostazione rende le directory per spam e posta legittima scrivibili ma
non leggibili. In questo modo, gli utenti possono sottomettere la propria posta
legittima senza che nessun altro sia in grado di leggerla.
Eseguire questo comando come utente spamtrap:
Codice 6.6: Aggiungere le cartelle condivise a quelle degli utenti |
$ maildirmake --add Bayes=/var/amavis/.maildir/Bayes $HOME/.maildir
|
Nota:
Bisogna dare al gruppo i permessi di lettura sulla cartella Bayes
in modo che il client di posta veda le sottodirectory usate da IMAP.
|
Aggiungere operazioni con cron
Eseguire crontab -u amavis -e per modificare il crontab per amavis in
modo da abilitare l'apprendimento automatico del filtro di Bayes ogni ora.
Codice 6.7: crontab per amavis |
0 * * * * /usr/bin/sa-learn --spam /var/amavis/.maildir/Bayes/.spam/{cur,new} \
> /dev/null 2>&1
0 * * * * /usr/bin/sa-learn --ham /var/amavis/.maildir/Bayes/.ham/{cur,new} > \
/dev/null 2>&1
|
Nota:
amavis deve far parte del gruppo cron per poter eseguire i cron.
|
Nota:
Sembra che le cartelle di posta condivise facciano esaminare a sa-learn
tutti i messaggi di posta due volte: non dovrebbe essere un problema. L'output
mostrerà inoltre che il numero di messaggi dai quali è stato appreso qualcosa
è circa la metà del reale numero di messaggi esaminati.
|
Modificare amavisd.conf
Modificare amavis per redirigere tutte le email di spam verso l'account
spamtrap e per conservare gli header dei messaggi che segnalano lo spam.
Codice 6.8: Modificare /etc/amavisd.conf |
$spam_quarantine_to = "spamtrap\@$myhostname";
|
Fare pulizia
Poichè non è desiderabile mantenere i messaggi di posta per sempre, usare
tmpwatch per fare pulizia regolarmente. Installarlo con
emerge tmpwatch. Solo root ha i permessi per eseguire
tmpwatch, perciò è necessario modificare il crontab di root.
Codice 6.9: Modificare il crontab di root |
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/virusmails/
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/.maildir/Bayes/
|
7.
Greylisting
Introduzione
Il greylisting è una delle armi più moderne disponibili nell'arsenale per la
lotta contro lo spam. Come suggerisce il nome, è simile al blacklisting ed al
whitelisting. Ogni volta che un mailserver sconosciuto prova ad inviare un
messaggio di posta, questo è scartato con un messaggio che invita a provare
più tardi. Questo implica che l'invio del messaggio viene ritardato, ma
anche che i bot che non implementano il protocollo secondo l'RFC desisteranno
dall'invio e non proveranno nuovamente. Col tempo, probabilmente, i bot verranno
migliorati, ma questo darà più tempo ad altre tecnologie per identificare lo
spam.
Nota:
Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 ed invia
la posta attraverso il proprio mailserver, allora il greylisting non funzionerà.
|
Postfix 2.1 viene fornito con un server di politiche di greylisting, scritto in
Perl, che implementa questo comportamento. Esso, comunque, è soggetto a
risultati imprevedibili quando la partizione che contiene il database di
greylisting esaurisce lo spazio a disposizione. Per questo motivo esiste una
versione migliorata che non soffre di questo problema. Come prima cosa verrà
descritta la procedura di attivazione del greylisting inserito direttamente in
Postfix, mentre successivamente verrà descritto come configurare il rimpiazzo
più robusto.
Nota:
Esistono altri server di greylisting per Postfix (come Gld, presente in Portage, e SQLgrey). Alcuni di essi supportano
anche i database come backend, il whitelisting automatico ed altre funzioni
interessanti.
|
Semplice greylisting
Nota:
Se si vuole usare il greylisting migliorato, è possibile saltare questa sezione.
|
È necessario utilizzare il file greylist.pl, ma sfortunatamente
l'ebuild non lo installa in modo predefinito.
Codice 7.1: Ottenere greylist.pl |
# cp /usr/portage/distfiles/postfix-versione.tar.gz /root/
# tar xzf postfix-versione.tar.gz
# cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/
|
Adesso che il file è al suo posto, è necessario creare la directory che conterrà
il database di greylisting:
Codice 7.2: Creare la directory per il database di greylisting |
# mkdir /var/mta
# chown nobody /var/mta
|
Avvertenza:
Non creare la directory per il database di greylisting in una partizione che
potrebbe esaurire lo spazio a disposizione. Mentre postfix può evitare problemi
alla coda delle e-mail ed alle mail box quando lo spazio si esaurisce, il
database di greylisting non è capace di farlo. Se il file diviene corrotto, non
sarà più possibile ricevere alcuna e-mail fino a quando il file non viene
cancellato manualmente.
|
Configurare il greylisting
Adesso che tutto è pronto, bisogna aggiungere alcune informazioni alla
configurazione di postfix. Prima di tutto è necessario modificare
master.cf:
Codice 7.3: Modicare master.cf per usare il greylisting |
policy-greylist unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl
|
Il demone di spawn di postfix normalmente uccide i propri processi figli dopo
1000 secondi, ma questo limite è troppo breve per il processo di greylisting.
È pertanto necessario aumentare questo valore in main.cf:
Codice 7.4: Modificare main.cf per usare il greylisting |
policy-greylist_time_limit = 3600
check_sender_access hash:/etc/postfix/sender_access
restriction_classes = greylist
greylist = check_policy_service unix:private/policy-greylist
|
Avvertenza:
Specificare check_sender_access DOPO reject_unauth_destination
altrimenti il sistema potrebbe diventare un relay di posta aperto a chiunque.
|
Nota:
Il database di greylisting si riempie velocemente con indirizzi fasulli.
Proteggere le ricerche di greylist con altre restrizioni (che rifiutano mittenti
o destinatari sconosciuti) aiuta in questa situazione.
|
Non si vuole usare il greylisting per tutti i domini, ma solo per quelli più
comunemente usati dagli spammer. Dopo tutto, il greylisting ritarda la consegna
dei messaggi di posta, pertanto è desiderabile non rallentare l'arrivo di e-mail
da domini che non siano comunemente sfruttati. Una lista dei domini più
comunemente usati dagli spammer come indirizzo del mittente può essere trovata
online.
Aggiungere i domini dai quali si riceve spam a
/etc/postfix/sender_access:
Codice 7.5: Formato di sender_access |
aol.com greylist
hotmail.com greylist
bigfoot.com greylist
|
Per una lista più estesa:
Codice 7.6: Aggiungere tutti i domini a sender_access |
# wget http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in
# sort sender-domain-validate.in | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access
|
Adesso è necessario inizializzare il database di sender_access:
Codice 7.7: Inizializzare sender_access |
# postmap /etc/postfix/sender_access
|
La configurazione della versione semplice del greylisting è completa.
Avvertenza:
Questa procedura è stata testata su una macchina che gestiva migliaia di e-mail
al giorno ed il risultato è stato un disastro completo. Dopo quattro giorni la
macchina era sovraccaricata da centinaia di vecchi processi greylist.pl.
|
Configurare il greylisting migliorato con postgrey
Installare il server di greylisting con un semplice emerge:
Codice 7.8: Installare postgrey |
# emerge postgrey
|
Dopo aver installato postgrey bisogna modificare main.cf.
Le modifiche sono molto simili a quelle eseguite in occasione del precedente
metodo di greylisting.
Codice 7.9: Modificare main.cf per usare greylisting |
check_sender_access hash:/etc/postfix/sender_access
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:10030
|
Nota:
Il SMTPD_POLICY_README di Postfix utilizza solo restriction_classes, ma
questo non sembra funzionare.
|
Nota:
Se si vuole fare il greylisting di tutta la posta, aggiungere invece
check_policy_service inet:127.0.0.1:10030.
|
Infine, lanciare il server e aggiungerlo al runlevel adatto.
Codice 7.10: Lanciare postgrey |
# /etc/init.d/postgrey start
# rc-update add postgrey default
|
Nota:
Alcune persone vogliono che i messaggi di posta siano inviati velocemente ed in
questo caso il greylisting peggiora le prestazioni. In ogni caso, se si utilizza
un mail server di backup è possibile impostare il greylisting su di esso con
relativa sicurezza. La limitata esperienza dell'autore di questa guida
suggerisce che in questo modo è possibile fermare circa un terzo dello spam.
|
8.
SPF (Sender Policy Framework)
Introduzione
Un SPF (che in inglese significa approssimativamente Framework di Politiche
di Invio) permette ai proprietari di un dominio di dichiarare nei propri
record DNS quali indirizzi IP sono autorizzati a mandare messaggi di posta dal
dominio stesso. Questo impedisce agli spammer di falsificare il
Return-Path.
Nota:
Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 e
reindirizza tutti i messaggi attraverso il proprio mail server, l'SPF non
funzionerà.
|
Come prima cosa, i proprietari del dominio devono creare uno speciale record
DNS, chiamato TXT. Un MTA con SPF abilitato può allora leggerlo e se una
e-mail è stata originata da un server che non è descritto nel record, il
messaggio può essere scartato. Ecco un esempio:
Codice 8.1: Record SPF di esempio |
example.com. IN TXT "v=spf1 a mx ptr -all"
|
Il parametro -all suggerisce di rifiutare in modo predefinito tutta la
posta, ad eccetto di quella ricevuta dai record DNS A(a),
MX(mx) e PTR(ptr). Per ulteriori informazioni
consultare le risorse elencate in basso.
Nota:
Se è necessario inoltrare le mail in uscita attraverso il proprio ISP,
aggiungere: include:proprioisp.com.
|
Spamassassin 3.0 ha il supporto per SPF, ma non è abilitato in modo predefinito;
il nuovo demone delle politiche di Postfix, invece, supporta SPF, pertanto la
guida seguirà l'installazione di quest'ultimo.
Nota:
Se si vuole usare SPF con Spamassassin eseguire semplicemente
emerge dev-perl/Mail-SPF-Query e riavviare Amavisd-new.
|
Preparativi
Prima di tutto bisogna installare Postfix 2.1 come descritto in precedenza. Dopo
aver ottenuto i sorgenti, installare spf.pl con:
Codice 8.2: Installare spf.pl |
# cp postfix-<version>/examples/smtpd-policy/spf.pl /usr/local/bin/
|
Nota:
Il file spf.pl distribuito con Postfix soffre di qualche bug
sporadico, pertanto trovare al suo interno e decommentare la linea:
push @HANDLERS, "sender_permitted_from"; use Mail::SPF::Query;.
Inoltre, intorno alla linea 199 sostituire comemnt con comment. In
alternativa è possibile scaricare una versione di sviluppo.
|
Questo script in Perl necessita di alcune librerie che sono in Portage, quindi
semplici da ottenere:
Codice 8.3: Installare le librerie Perl richieste |
# emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long
|
Adesso che tutto è al suo posto, è necessario configurare Postfix per utilizzare
questa nuova politica.
Codice 8.4: Modificare master.cf per usare SPF |
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl
|
Aggiungere il controllo per SPF in main.cf. Se correttamente
configurato, l'SPF non dovrebbe fare danni, pertanto è preferibile abilitarlo
per tutti i domini:
Codice 8.5: Modificare main.cf per utilizzare SPF |
check_policy_service unix:private/policy-spf
|
Nota:
Se si verificano problemi con SPF, ad esempio durante l'uso di fetchmail,
potrebbe essere necessario abilitare l'SPF soltanto per alcuni domini.
|
9.
Configurare amavisd-new per l'uso di MySQL
Configurare MySQL
Nota:
Questa procedura non è stata testata per versioni di amavisd-new superiori alla
2.2. Ogni commento è ben accetto :)
|
Per domini di grandi dimensioni i valori predefinit configurabili in
amavisd.conf potrebbero non essere adatti a tutti gli utenti.
Configurando amavisd-new con supporto MySQL si possono configurare impostazioni
individuali per utenti o gruppi di utenti.
Codice 9.1: Creare database ed utente MySQL |
# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database maildb;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'password_segretissima';
mysql> use maildb;
|
Adesso che il database è stato creato è necessario creare le tabelle. Copiare e
incollare i seguenti comandi nel prompt di mysql:
Codice 9.2: Layout delle tabelle di MySQL |
CREATE TABLE users (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
policy_id int unsigned NOT NULL DEFAULT '1',
email varchar(255) NOT NULL,
fullname varchar(255) DEFAULT NULL, -- non usato da amavisd-new
local char(1), -- Y/N (campo opzionale, vedere note)
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX users_idx_email ON users(email);
CREATE TABLE mailaddr (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
email varchar(255) NOT NULL,
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);
(white or blacklisted sender)
CREATE TABLE wblist (
rid int unsigned NOT NULL, -- destinatario: users.id
sid int unsigned NOT NULL, -- mittente: mailaddr.id
wb char(1) NOT NULL, -- W or Y / B or N / space=neutral
PRIMARY KEY (rid,sid)
);
CREATE TABLE policy (
id int unsigned NOT NULL auto_increment,
policy_name varchar(32), -- 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)
spam_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)
);
|
Nota:
Se ci sono dei problemi di copia/incolla, copiare il testo altrove e cancellare
i caratteri non necessari.
|
Nota:
Le ricerche mirate a trovare un indirizzo e-mail sono eseguite sugli indirizzi
grezzi (rfc2821-unquoted e senza parentesi), ad esempio:
John "Funny" Smith@example.com
|
Nota:
Le ricerche sono eseguite seguendo quest'ordine: SQL, LDAP,
hash, ACL, regexp, constant. Il primo risultato
utile (non undef/NULL) interrompe la ricerca.
|
Se si vuole usare whitelisting o blacklisting bisogna inserire gli indirizzi di
mittente e destinatario in mailaddr; in seguito bisogna impostare una
relazione tra i due in wblist e specificare se si tratta di whitelisting
(W) o blacklisting (B).
Adesso che sono state create le tabelle, inserire un utente ed una politica di
prova:
Codice 9.3: Creare utente e politica di prova |
INSERT INTO users
SET
id =1,
priority =9,
policy_id =1,
email ="johndoe@example.com",
fullname ="John Doe",
local ="Y";
INSERT INTO policy
SET
id =1,
policy_name ="Test policy 1",
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 ="N",
spam_quarantine_to =NULL,
spam_tag_level =-50.0,
spam_tag2_level =7.0,
spam_kill_level =10.0;
|
Nota:
Modificare le impostazioni di esempio a seconda del proprio ambiente di
funzionamento.
|
Nota:
local dovrebbe essere impostato ad Y, altrimenti la mail non verrà
sottoposta a controllo per spam.
|
Queste istruzioni inseriscono un utente ed una politica di prova. Modificare
questi esempi per soddisfare le proprie necessità. Una spiegazione più
approfondita della configurazione può essere reperita in
amavisd.conf.
Configurare amavisd per usare MySQL
Adesso che MySQL è pronto, è necessario dire ad amavis di usarlo:
Codice 9.4: Modificare amavisd.conf |
@lookup_sql_dsn =
( ['DBI:mysql:maildb:host1', 'mail', 'password_segretissima'] );
$sql_select_policy = 'SELECT *,users.id FROM users,policy'.
' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
' ORDER BY users.priority DESC';
$sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
' AND (mailaddr.email IN (%k))'.
' ORDER BY mailaddr.priority DESC';
|
10.
Configurare Spamassassin per usare MySQL
A partire da Spamassassin 3.0 è possibile conservare le informazioni per Bayes
e l'AWL in un database MySQL. Verrà utilizzato proprio MySQL come backend in
quanto esso è in genere più performante degli altri database. Inoltre, usare
MySQL per tutti i dati rende la manutenzione del sistema molto più semplice.
Come prima cosa, creare il nuovo utente MySQL e le tabelle necessarie.
Codice 10.1: Creare utente e database MySQL |
# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database dbname;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'altra_password_segretissima';
mysql> use dbname;
|
Adesso che il database è stato creato, verranno aggiunte le tabelle necessarie.
Copiare e incollare questo testo nel prompt di mysql:
Codice 10.2: Layout delle tabelle MySQL |
CREATE TABLE bayes_expire (
id int(11) NOT NULL default '0',
runtime int(11) NOT NULL default '0',
KEY bayes_expire_idx1 (id)
) TYPE=MyISAM;
CREATE TABLE bayes_global_vars (
variable varchar(30) NOT NULL default '',
value varchar(200) NOT NULL default '',
PRIMARY KEY (variable)
) TYPE=MyISAM;
INSERT INTO bayes_global_vars VALUES ('VERSION','3');
CREATE TABLE bayes_seen (
id int(11) NOT NULL default '0',
msgid varchar(200) binary NOT NULL default '',
flag char(1) NOT NULL default '',
PRIMARY KEY (id,msgid)
) TYPE=MyISAM;
CREATE TABLE bayes_token (
id int(11) NOT NULL default '0',
token char(5) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
atime int(11) NOT NULL default '0',
PRIMARY KEY (id, token),
INDEX (id, atime)
) TYPE=MyISAM;
CREATE TABLE bayes_vars (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(200) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
token_count int(11) NOT NULL default '0',
last_expire int(11) NOT NULL default '0',
last_atime_delta int(11) NOT NULL default '0',
last_expire_reduce int(11) NOT NULL default '0',
oldest_token_age int(11) NOT NULL default '2147483647',
newest_token_age int(11) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE bayes_vars_idx1 (username)
) TYPE=MyISAM;
CREATE TABLE awl (
username varchar(100) NOT NULL default '',
email varchar(200) NOT NULL default '',
ip varchar(10) NOT NULL default '',
count int(11) default '0',
totscore float default '0',
PRIMARY KEY (username,email,ip)
) TYPE=MyISAM;
|
Importante:
La query con INSERT è necessaria per il corretto funzionamento di
Spamassassin.
|
Nota:
Questi script sono disponibili anche nell'archivio dei file sorgente, con i nomi
awl_mysql.sql e bayes_mysql.sql.
|
Configurare Spamassassin per l'uso del backend MySQL
Se si ha un vecchio database Bayesiano e si vuole conservarlo, seguire queste
istruzioni:
Codice 10.3: Convertire i dati Bayes da un database DBM |
su - amavis
sa-learn --sync
sa-learn --backup > backup.txt
sa-learn --restore backup.txt
|
Nota:
Attenzione che l'ultimo passo dovrebbe essere eseguito solo DOPO l'aggiornamento
del database MySQL e del file secrets.cf.
|
Dare a Spamassassin le informazioni richieste:
Codice 10.4: Modificare /etc/mail/spamassassin/secrets.cf |
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:sa_bayes:localhost:3306
bayes_sql_username dbname
bayes_sql_password altra_password_segretissima
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:sa_bayes:localhost:3306
user_awl_sql_username dbname
user_awl_sql_password altra_password_segretissima
|
Cambiare i permessi al file per garantire la sicurezza necessaria:
Codice 10.5: Cambiare i permessi |
# chmod 400 /etc/mail/spamassassin/secrets.cf
|
Nota:
Per creare una password molto resistente ad attacchi, usare emerge
app-admin/makepasswd e makepasswd -chars=8
|
Adesso basta semplicemente eseguire /etc/init.d/amavisd restart.
11.
Risoluzione dei problemi
Amavisd-new
Per risolvere i problemi relativi a Amavisd-new bisogna innanzitutto fermarlo
con /etc/init.d/amavisd stop e poi eseguirlo manualmente in primo piano
con amavisd debug; analizzare eventuali anomalie nell'output.
Spamassassin
Per risolvere i problemi con Spamassassin, è possibile filtrare una e-mail con
spamassassin -D < mail. Per assicurarsi che le intestazioni siano
intatte, è possibile spostarla su di un'altra macchina usando IMAP.
Nota:
Per eseguire queste operazioni è necessario abilitare il login per l'utente
amavis, cambiando la shell di login corrente in /etc/passwd
al valore /bin/bash.
|
È possibile ottenere le stesse informazioni, in aggiunta ad altri dati, usando
amavisd debug-sa.
Ripetere compiti dopo l'installazione
Alcune delle attività menzionate in questa guida devono essere
ripetute dopo gli aggiornamenti. Ad esempio,
chown -R amavis:mailusers nella sezione
Apprendimento automatico e sidelining delle email
deve essere ripetuto dopo ogni aggiornamento di amavisd-new.
Per fortuna, Gentoo fornisce i mezzi per effettuare queste operazioni automaticamente.
Nel manuale Gentoo, nella parte Inserirsi
nel proceso di Emerge, spiega come eseguire compiti dopo l'installazione di un particolare
pacchetto, tipo:
Codice 11.1: Esempio di bashrc per il chown menzionato |
if [ "${PN}" == "amavisd-new" ] &&
[ "${EBUILD_PHASE}" == "postinst" ];
then
chown -R amavis:mailusers /var/amavis/.maildir
fi
|
Come ottenere aiuto
Un buon punto di partenza per ottenere aiuto è la mailing list amavis-user.
Prima di lasciare un messaggio come una domanda, è raccomandabile cercare nell'archivio della
lista. Se non si trova la risposta alla propria domanda, è possibile
iscriversi alla mailing list da qui.
Se il problema è specifico per SpamAssassin, DCC, Razor, o Postfix, fare
riferimento alle rispettive pagine elencate in basso.
12.
Risorse (in lingua inglese)
Per ulteriori informazioni
Risorse generiche
Altre guide
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|
|
Aggiornato il 29 aprile 2012 |
Oggetto:
Questa guida descrive passo passo le istruzioni necessarie per installare le
tecnologie di lotta allo spam per Postfix. Tra queste, Amavis-new con supporto
per Spamassassin e ClamAV, greylisting e l'SPF (Sender Policy Framework).
|
Sune Kloppenborg Jeppesen
Autore
Jens Hilligsøe
Contributi
Joshua Saddler
Redazione
|
|
Donate to support our development efforts.
|
|
|