/[gentoo]/xml/htdocs/doc/it/mailfilter-guide.xml
Gentoo

Contents of /xml/htdocs/doc/it/mailfilter-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download) (as text)
Fri Aug 3 09:54:13 2007 UTC (11 years, 1 month ago) by scen
Branch: MAIN
Changes since 1.1: +13 -14 lines
File MIME type: application/xml
Version 0.14, revision 1.20 of EN CVS

1 scen 1.1 <?xml version='1.0' encoding='utf-8'?>
2     <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
3 scen 1.2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/mailfilter-guide.xml,v 1.1 2007/08/02 14:45:40 scen Exp $ -->
4 scen 1.1
5     <guide link="/doc/it/mailfilter-guide.xml" lang="it">
6     <title>Guida al filtraggio della posta elettronica con Gentoo</title>
7    
8     <author title="Autore">
9     <mail link="jaervosz@gentoo.org">Sune Kloppenborg Jeppesen</mail>
10     </author>
11     <author title="Contributi">
12     <mail link="gentoo@hilli.dk">Jens Hilligsøe</mail>
13     </author>
14 scen 1.2 <author title="Redazione">
15     <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
16     </author>
17 scen 1.1 <author title="Traduzione">
18     <mail link="dark.knight.ita@gmail.com">Marco Leogrande</mail>
19     </author>
20    
21     <abstract>
22     Questa guida descrive passo passo le istruzioni necessarie per installare le
23     tecnologie di lotta allo spam per Postfix. Tra queste, Amavis-new con supporto
24     per Spamassassin e ClamAV, greylisting e l'SPF (Sender Policy Framework).
25     </abstract>
26    
27     <!-- The content of this document is licensed under the CC-BY-SA license -->
28     <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
29     <license/>
30    
31 scen 1.2 <version>0.14</version>
32     <date>2007-08-02</date>
33 scen 1.1
34     <chapter>
35     <title>Introduzione</title>
36     <section>
37     <body>
38    
39     <p>
40     Questa guida descrive passo passo come installare un gateway per il filtraggio
41     della posta dai virus e dallo spam. Questa soluzione è abbastanza semplice da
42     applicare ad singolo server.
43     </p>
44    
45     </body>
46     </section>
47     <section>
48     <title>Una visione dall'alto</title>
49     <body>
50    
51     <p>
52     Questo documento descrive come impostare un gateway per il filtraggio dello spam
53     che supporti multipli domini di posta. Questo server è progettato per essere
54     posto a monte dei server di posta che dovrebbero effettivamente memorizzare i
55     messaggi di posta (ad esempio, Microsoft Exchange o Lotus Notes).
56     </p>
57    
58     <p>
59     Per questa configurazione sono state scelte delle applicazioni note per il buon
60     livello di sicurezza che offrono e per la facilità con la quale possono essere
61     modificati i propri file di configurazione. L'MTA (dall'inglese <e>mail
62     transport agent</e>, in altre parole un programma che si occupi dello
63     smistamento da un computer a un altro della posta elettronica) scelto è
64     <c>postfix</c>, che appunto è abbastanza sicuro ed relativamente facile da
65     configurare. Come impostazione predefinita, <c>postfix</c> si mette in ascolto
66     sulla porta 25 per la posta in ingresso. Quando arriva un nuovo messaggio di
67     posta, il server lo inoltra ad <c>amavisd-new</c> sulla porta 10024.
68     <c>Amavisd-new</c>, successivamente, controlla il messaggio attraverso vari
69     filtri e lo restituisce a <c>postfix</c> sulla porta 10025; infine, il messaggio
70     viene consegnato al server di posta successivo.
71     </p>
72    
73     <p>
74     Amavisd-new è un framework per il filtraggio di contenuti che utilizza
75     applicazioni di supporto per il riconoscimento di virus e spam. In questa
76     configurazione si utilizzeranno due applicazioni: ClamAV per il filtraggio dei
77     virus e Spamassassin per quello dello spam. Spamassassin, a sua volta, può
78     poggiarsi su applicazioni di livello inferiore, come ad esempio Vipul's Razor
79     e DCC.
80     </p>
81    
82     <p>
83     Rispetto ad altre tecnologie di controllo dello spam (come gli RBL, dall'inglese
84     <e>Real-time Blackhole List</e>, termine con il quale si indicano impropriamente
85     le tecnologie DNSBL, o di <e>DNS blacklist</e>, che consistono nella
86     pubblicazione, da parte di un sito Internet, di una lista di indirizzi IP
87     che, per varie ragioni, ma principalmente spam, dovrebbero essere bloccati),
88     Spamassassin non valida un dato messaggio email in base ad un singolo test.
89     Questo programma, invece, esegue una lista di controlli, sia interni, sia usando
90     delle applicazioni esterne, per calcolare un punteggio da assegnare ad ogni
91     messaggio di posta. Questo punteggio è determinato in base a:
92     </p>
93    
94     <ul>
95     <li>Filtro Bayesiano</li>
96     <li>Regole statiche basate su espressioni regolari</li>
97     <li>Reti distribuite e collaborative:
98     <ul>
99     <li>RBL</li>
100     <li>Razor2</li>
101     <li>Pyzor</li>
102     <li>DCC</li>
103     </ul>
104     </li>
105     </ul>
106    
107     <p>
108     La prima parte della guida (capitoli dall'1 al 4) descriverà l'impostazione base
109     del gateway che farà da filtro. I capitoli seguenti possono essere implementati
110     in maniera indipendente, senza alcuna dipendenza reciproca. Questi capitoli
111     descriveranno come:
112     </p>
113    
114     <ul>
115     <li>
116     impostare delle cartelle IMAP specifiche per l'apprendimento del filtro
117     Bayesiano e per la consegna dei falsi positivi
118     </li>
119     <!--
120     <li>impostare strumenti di analisi dei log per creare report giornalieri</li>
121     -->
122     <li>impostare il greylisting con Postfix</li>
123     <li>
124     impostare Amavisd-new per usare MySQL come backend per le preferenze
125     dell'utente
126     </li>
127     <li>
128     impostare Spamassassin per usare MySQL come backend per i dati di AWL e del
129     filtro Bayesiano
130     </li>
131     </ul>
132    
133     <note>
134     Le cartelle IMAP useranno il formato <e>maildir</e>. Avere ogni messaggio email
135     in un file separato rende la loro gestione molto più semplice. Se è già in uso
136     mbox, si consiglia di provare il formato maildir. Se non si è installato
137     maildir, installare i pacchetti necessari usando <c>emerge courier-imap</c>.
138     </note>
139    
140     <p>
141     Una quinta parte della guida, in via di scrittura, conterrà diversi suggerimenti
142     sulle prestazioni ed altre informazioni utili (come far girare il server in
143     chroot, le restrizioni di postfix, ecc...).
144     </p>
145    
146     <note>
147     Delegare responsabilità a terze parti non è esente da rischi. È necessario
148     conoscere ed assegnare fiducia a queste terze parti. In questa configurazione,
149     la sola decisione di mettere in quarantena i messaggi con virus è presa da una
150     singola terza parte. Usare il sistema di punteggi di Spamassassin permette di
151     distribuire su diverse tecnologie la decisione di fermare le email di spam,
152     tranne che per le regole statiche interne a Spamassassin.
153     </note>
154    
155     <warn>
156     Quando si identificano e rifiutano le email di spam a livello MTA, bisogna
157     prestare molta attenzione a quale RBL si usa. Ad esempio, SpamCop è un cattivo
158     RBL da usare a livello MTA, in quanto genera un apprezzabile numero di falsi
159     positivi, a causa dell'eccessiva aggressività del suo elenco. Ulteriori
160     informazioni possono essere trovate qui: <uri
161     link="http://www.geekcomix.com/cgi-bin/classnotes/wiki.pl?UNIX03/Realtime_Blackhole_Lists_Are_Bad">
162     Perchè gli RBL sono inaffidabili</uri> e <uri
163     link="http://theory.whirlycott.com/~phil/antispam/rbl-bad/rbl-bad.html">Il
164     problema dello spam: oltre gli RBL</uri>
165     </warn>
166    
167     </body>
168     </section>
169     <section>
170     <title>Preparativi</title>
171     <body>
172    
173     <p>
174     Prima di iniziare, accertarsi di avere una installazione funzionante di Postfix,
175     verificando la possibilità di inviare e ricevere messaggi di posta dal server di
176     backend. Se non si ha esperienza con l'impostazione di Postfix, potrebbe essere
177     troppo complicato impostare tutto assieme. Se si ha bisogno di aiuto, si può
178     trovare assistenza nell'eccellente <uri
179     link="http://www.gentoo.org/doc/it/virt-mail-howto.xml">Guida al Sistema di
180     Mailhosting Virtuale con Postfix</uri> nella documentazione Gentoo.
181     </p>
182    
183     </body>
184     </section>
185     </chapter>
186    
187     <chapter>
188     <title>Installare i programmi necessari</title>
189     <section>
190     <body>
191    
192     <p>
193     Iniziare installando i programmi più importanti: Amavisd-new, Spamassassin e
194     ClamAV.
195     </p>
196    
197     <pre caption="Installare Amavis, Spamassassin e Clamav">
198     # <i>emerge amavisd-new spamassassin clamav </i>
199     </pre>
200    
201     <note>
202     Come menzionato in precedenza, si dovrebbe già avere una istanza di
203     <c>postfix</c> attiva sulla macchina. Normalmente questo non si spinge oltre il
204     lanciare <c>emerge postfix</c> <e>e</e> comprendere le basi del funzionamento di
205     Postfix.
206     </note>
207    
208     </body>
209     </section>
210     <section>
211     <title>Impostare il DNS</title>
212     <body>
213    
214     <note>
215     Se non si sta impostando un server gateway, ma le caselle di posta sono sullo
216     stesso server, basta anche solo impostare il record MX del DNS.
217     </note>
218    
219     <p>
220     Mentre i programmi sono in via di installazione, avviare una nuova shell e
221     creare i record DNS necessari.
222     </p>
223    
224     <p>
225     Iniziare creando un record <c>MX</c> per il gateway di posta ed un record
226     <c>A</c> per la destinazione successiva.
227     </p>
228    
229     <pre caption="Impostare il DNS">
230     <comment>(Creare un record MX per il server gateway)</comment>
231     MX 10 mailgateway.mydomain.tld.
232     <comment>(Creare un record A per il server gateway)</comment>
233     mailgateway A aggiungi.qui.ip.mailgateway
234     <comment>(Creare un record A per il prossimo server di posta)</comment>
235     mail A aggiungi.qui.ip.mailserver
236     </pre>
237    
238     <note>
239     Alcuni fornitori di ADSL potrebbero bloccare la porta 25 e forzare il relay
240     della posta attraverso uno dei loro server. In questo caso, basta creare un
241     record MX secondario del tipo <c>MX 20 backup-mx.some-isp.tld</c>
242     </note>
243    
244     </body>
245     </section>
246     <section>
247     <title>Aprire il firewall</title>
248     <body>
249    
250     <p>
251     In aggiunta al normale traffico di posta, si dovrebbero permettere ad alcuni
252     servizi aggiuntivi di passare attraverso il firewall, in modo da consentire
253     alcuni controlli di rete per la comunicazione con i server.
254     </p>
255    
256     <table>
257     <tr>
258     <th>Applicazione</th>
259     <th>Protocollo</th>
260     <th>Porta</th>
261     </tr>
262     <tr>
263     <ti>DCC</ti>
264     <ti>UDP</ti>
265     <ti>6277</ti>
266     </tr>
267     <tr>
268     <ti>Razor(ping in uscita)</ti>
269     <ti>TCP</ti>
270     <ti>7</ti>
271     </tr>
272     <tr>
273     <ti>Razor</ti>
274     <ti>TCP</ti>
275     <ti>2703</ti>
276     </tr>
277     </table>
278    
279     <p>
280     Razor usa il ping per determinare quali server siano più vicini.
281     </p>
282    
283     </body>
284     </section>
285     <section>
286     <title>Configurare Postfix</title>
287     <body>
288    
289     <p>
290     Prima di tutto si deve impostare <c>postfix</c> in modo da ascoltare sulla porta
291     10025, rimuovendo la maggior parte delle restrizioni in quanto esse sono già
292     state applicate all'istanza di <c>postfix</c> che ascolta sulla porta 25.
293     Inoltre ci si deve assicurare che l'istanza sulla porta 10025 accetti solo
294     connessioni locali. Per permettere questo comportamento, si devono aggiungere
295     le seguenti linee alla fine di <path>/etc/postfix/master.cf</path>
296     </p>
297    
298     <pre caption="Modifiche al file master.cf">
299     smtp-amavis unix - - n - 2 smtp
300     -o smtp_data_done_timeout=1200
301     -o smtp_send_xforward_command=yes
302     <comment>#In maniera equivalente, usando lmtp:
303     #lmtp-amavis unix - - n - 2 lmtp
304     # -o lmtp_data_done_timeout=1200
305     # -o lmtp_send_xforward_command=yes</comment>
306    
307     127.0.0.1:10025 inet n - n - - smtpd
308     -o content_filter=
309     -o local_recipient_maps=
310     -o relay_recipient_maps=
311     -o smtpd_restriction_classes=
312     -o smtpd_client_restrictions=
313     -o smtpd_helo_restrictions=
314     -o smtpd_sender_restrictions=
315     -o smtpd_recipient_restrictions=permit_mynetworks,reject
316     -o mynetworks=127.0.0.0/8
317     -o strict_rfc821_envelopes=yes
318     -o smtpd_error_sleep_time=0
319     -o smtpd_soft_error_limit=1001
320     -o smtpd_hard_error_limit=1000
321    
322     <comment>#Se si vuole usare il filtraggio via proxy
323     #smtp inet n - n - 8 smtpd
324     # -o smtpd_proxy_filter=127.0.0.1:10024
325     # -o smtpd_client_connection_count_limit=4
326     #Usare le seguenti righe per non controllare la posta in uscita
327     #10.0.0.2:smtp inet n - n - - smtpd
328     #-o content_filter=</comment>
329     </pre>
330    
331     <note>
332     La riga relativa ad <c>smtp-amavis</c> specifica che un massimo di due processi
333     di tale programma possono essere in esecuzione contemporaneamente. Se si ha
334     bisogno di un maggior grado di concorrenza, modificare quel valore secondo
335     necessità. Ricordarsi inoltre di impostare lo stesso valore per
336     <c>$max_servers</c> in <path>amavisd.conf</path>. È bene tenere a mente che
337     <c>amavisd-new</c> è abbastanza avido di memoria ed aumentare troppo il numero
338     di processi concorrenti potrebbe portare ad una diminuzione consistente della
339     memoria disponibile, così come ad un intenso uso dello swap.
340     </note>
341    
342     <note>
343     Se si vuole eliminare lo spam ad un livello precedente, si può utilizzare il
344     metodo <e>Before-Queue (proxy)</e> in luogo del metodo che usa il filtro.
345     Rimuovendo i segni di commento dalle tre righe appropriate, è necessario poi
346     aggiungere la variabile <c>content_filter=</c> in <path>main.cf</path>. Questa
347     soluzione non è raccomandata per server ad alto traffico, in quanto il numero di
348     connessioni concorrenti è limitato dal numero massimo di istanze di
349     <c>amavisd</c>.
350     </note>
351    
352     <warn>
353     Il metodo <e>Before-Queue (proxy)</e> non è stato ancora testato
354     approfonditamente.
355     </warn>
356    
357     <note>
358     Se, per qualsiasi motivo, si volesse inviare una email dalla stessa macchina,
359     senza sottoporla a scansione, aggiungere una nuova istanza di postfix togliendo
360     il simbolo di commento dalle ultime due linee e sostituendo il corretto
361     indirizzo IP.
362     </note>
363    
364     <p>
365     Il file <path>master.cf</path> indica a postfix in che modo lanciare ogni
366     singolo processo. Per ulteriori informazioni, vedere <c>man 8 master</c>.
367     </p>
368    
369     <p>
370     Successivamente, si deve avere l'istanza principale di <c>postfix</c> in ascolto
371     sulla porta 25, che filtri i messaggi di posta attraverso <c>amavisd-new</c>, in
372     ascolto sulla porta 10024.
373     </p>
374    
375     <p>
376     Si deve anche impostare il nodo successivo di destinazione per la posta.
377     Impostare Postfix in modo da filtrare tutta la posta attraverso un filtro di
378     contenuti esterno ed abilitare il routing esplicito in modo che Postfix conosca
379     esattamente dove inoltrare la posta.
380     </p>
381    
382     <pre caption="Modificare /etc/postfix/main.cf">
383     biff = no
384     empty_address_recipient = MAILER-DAEMON
385     queue_minfree = 120000000
386    
387     content_filter = smtp-amavis:[127.0.0.1]:10024
388     <comment># In modo equivalente, con lmtp:
389     #content_filter = lmtp-amavis:[127.0.0.1]:10024
390    
391     # TRANSPORT MAP
392     #
393     # Inserire il testo da sample-transport.cf per il routing esplicito</comment>
394     transport_maps = hash:/etc/postfix/transport
395    
396     relay_domains = $transport_maps
397     </pre>
398    
399     <p>
400     Postfix ha numerose opzioni configurabili in <path>main.cf</path>. Per ulteriori
401     spiegazioni sul contenuto del file vedere <c>man 5 postconf</c>, oppure, online,
402     i <uri link="http://www.postfix.org/postconf.5.html">Parametri di configurazione
403     di Postfix</uri>.
404     </p>
405    
406     <p>
407     Il formato del file <path>transport</path> è quello di un file Postfix di hash.
408     La posta indirizzata ad un dominio elencato sul lato sinistro è inoltrata alla
409     destinazione indicata sul lato destro del file.
410     </p>
411    
412     <pre caption="/etc/postfix/transport">
413     mydomain.tld smtp:mail.mydomain.tld
414     </pre>
415    
416     <p>
417     Dopo aver modificato il file, bisogna lanciare il comando <c>postmap</c>.
418     Postfix, in realtà, non legge il file <path>/etc/postfix/transport</path>,
419     perciò è necessario convertirlo con il comando <c>postmap
420     /etc/postfix/transport</c>. Questo crea il file
421     <path>/etc/postfix/transport.db</path>. Non è necessario ricaricare Postfix, in
422     quanto esso rileverà automaticamente le modifiche.
423     </p>
424    
425     <note>
426     Se il mail server successivo non dovesse essere in ascolto sulla porta standard
427     per l'SMTP, cioè la 25, configurare postfix con una voce simile a
428     <c>smtp:mail.mydomain.tld:25000</c>.
429     </note>
430    
431     <p>
432     Se il primo tentativo di invio di una e-mail si conclude con i messaggi che
433     rimbalzano indietro sul server, molto probabilmente è stato commesso un errore
434     di configurazione. Provare ad abilitare temporaneamente <c>soft_bounce</c>
435     mentre si corregge la configurazione. Questo espediente impedisce a postfix di
436     fare il bouncing delle e-mail in caso di errori di spedizione, trattandole come
437     errori temporanei. Il programma manterrà i messaggi nella coda di spedizione
438     finchè <c>soft_bounce</c> non viene disabilitato o rimosso.
439     </p>
440    
441     <pre caption="Abilitare soft_bounce">
442     # <i>postconf -e "soft_bounce = yes"</i>
443     # <i>/etc/init.d/postfix reload</i>
444     </pre>
445    
446     <p>
447     Una volta trovata la configurazione funzionante, disabilitare o rimuovere
448     <c>soft_bounce</c> e ricaricare postfix.
449     </p>
450    
451     </body>
452     </section>
453     <section>
454     <title>Configurare Amavisd-new</title>
455     <body>
456    
457     <p>
458     Amavisd-new è usato per gestire l'intero processo di filtraggio e permette di
459     unire insieme diverse tecnologie in maniera semplice. Quando riceve un nuovo
460     messaggio, Amavisd-new lo filtra attraverso diversi filtri personalizzati,
461     gestisce il blacklisting e whitelisting, invoca diversi antivirus ed infine
462     lo filtra usando SpamAssassin.
463     </p>
464    
465     <p>
466     Amavisd-new possiede le seguenti caratteristiche:
467     </p>
468    
469     <ul>
470     <li>
471     identifica allegati di posta potenzialmente pericolosi e li gestisce
472     autonomamente
473     </li>
474     <li>ha delle politiche a livello utente, dominio o di intero sistema per:
475     <ul>
476     <li>le whitelist</li>
477     <li>le blacklist</li>
478     <li>le soglie di guardia per i punteggi di spam</li>
479     <li>virus e spam</li>
480     </ul>
481     </li>
482     </ul>
483    
484     <p>
485     A parte <c>postfix</c> e <c>freshclam</c>, tutte le applicazioni gireranno con
486     i privilegi dell'utente <c>amavis</c>.
487     </p>
488    
489     <!--
490     <pre caption="/etc/passwd">
491     amavis:x:1010:413:added by portage for amavisd-new:/var/amavis:/bin/bash
492     </pre>
493     -->
494    
495     <!--
496     <p>
497     Si crei la nuova home directory e si impostino i giusti permessi.
498     </p>
499    
500     <pre caption="Creazione della home directory ed impostazione dei permessi">
501     # <i>mkdir /var/amavis</i>
502     # <i>chown amavis:amavis /var/amavis</i>
503     # <i>chmod 750 /var/amavis</i>
504     </pre>
505     -->
506    
507     <p>
508     Modificare le seguenti linee in <path>/etc/amavisd.conf</path>
509     </p>
510    
511     <pre caption="Come modificare /etc/amavisd.conf">
512     <comment>(Inserire i domini da controllare)</comment>
513     $mydomain = 'example.com';
514     <comment>(Per fare il binding sulla sola interfaccia di loopback)</comment>
515     $inet_socket_bind = '127.0.0.1';
516     <comment>(Per inoltrare a Postfix sulla porta 10025)</comment>
517     $forward_method = 'smtp:127.0.0.1:10025';
518     $notify_method = $forward_method;
519     <comment>(Definire l'account al quale inviare gli avvertimenti sui virus)</comment>
520     $virus_admin = "virusalert\@$mydomain";
521     <comment>(Per aggiungere sempre gli header per lo spam)</comment>
522     $sa_tag_level_deflt = -100;
523     <comment>(Per aggiungere sempre gli header come X-Spam-Status: Yes)</comment>
524     $sa_tag2_level_deflt = 5;
525     <comment>(Per attivare le azioni evasive ad un dato livello di spam)</comment>
526     $sa_kill_level_deflt = $sa_tag2_level_deflt;
527     <comment>(Per non inviare al mittente le notifiche di stato di consegna. Questo)
528     (non modifica la consegna dello spam al destinatario, vedere kill_level)</comment>
529     $sa_dsn_cutoff_level = 10;
530     <comment>(Per mettere in quarantena tutti i messaggi problematici)</comment>
531     $final_virus_destiny = D_DISCARD; # (default: D_DISCARD)
532     $final_banned_destiny = D_DISCARD; # (default: D_BOUNCE)
533     $final_spam_destiny = D_DISCARD; # (default: D_BOUNCE)
534     </pre>
535    
536     <note>
537     Con la linea <c>$sa_tag2_level_deflt = 5;</c> si imposta a 5 il punteggio di
538     spam per Spamassassin. Questa impostazione potrebbe essere bassa; il valore p
539     redefinito per Amavisd-new, infatti, è <c>6.3</c>. Usando <c>5</c> si rischia di
540     generare dei falsi positivi, ma con <c>6.3</c> qualche messaggio di spam
541     potrebbe passare attraverso i filtri.
542     </note>
543    
544     <p>
545     Creare una directory di quarantena per i messaggi con virus, in modo che gli
546     stessi non vengano inviati agli utenti.
547     </p>
548    
549     <pre caption="Creare una directory di quarantena per i messaggi con virus">
550     # <i>mkdir /var/amavis/virusmails</i>
551     # <i>chown amavis:amavis /var/amavis/virusmails</i>
552     # <i>chmod 750 /var/amavis/virusmails</i>
553     </pre>
554    
555     <note>
556     Amavisd-new offre un controllo più raffinato attraverso l'utilizzo dei <e>policy
557     banks</e>.
558     </note>
559    
560     </body>
561     </section>
562     <section>
563     <title>Configurare ClamAV</title>
564     <body>
565    
566     <p>
567     Per difendersi dai virus si userà ClamAV, in quanto esso ha un buon tasso di
568     riconoscimento comparato con le soluzioni commerciali, è molto veloce ed è
569     software Open Source. I file di log sono estremamente utili, perciò si imposterà
570     il logging di <c>clamd</c> attraverso <c>syslog</c> al suo livello prolisso.
571     Inoltre, assicurarsi di non far girare <c>clamd</c> come <c>root</c>. Modificare
572     <path>/etc/clamd.conf</path>
573     </p>
574    
575     <pre caption="Modificare /etc/clamd.conf">
576     <comment>(Log prolisso con syslog)</comment>
577     LogSyslog
578     LogVerbose
579     LogFacility LOG_MAIL
580     <comment>(Per modificare il percorso del file pid)</comment>
581     PidFile /var/run/amavis/clamd.pid
582     <comment>(Impostazione del socket di clamav)</comment>
583     LocalSocket /var/amavis/clamd
584     <comment>(Per chiudere la connessione quando viene raggiunto questo limite)</comment>
585     StreamMaxLength 10M
586     <comment>(Per eseguire clamd con privilegi limitati)</comment>
587     User amavis
588     <comment>(Le nuove versioni richiedono che le seguenti linee non siano commentate)</comment>
589     ScanMail
590     ScanArchive
591     </pre>
592    
593     <note>
594     Infine fare attenzione a rimuovere la direttiva Example per far funzionare
595     ClamAV.
596     </note>
597    
598     <p>
599     ClamAV viene distribuito assieme al demone <c>freshclam</c>, dedicato ai
600     controlli periodici per l'aggiornamento delle firme dei virus. Invece di
601     aggiornare le firme dei virus due volte al giorno, si imposterà <c>freshclam</c>
602     im modo che le aggiorni autonomamente ogni due ore.
603     </p>
604    
605     <pre caption="Modificare /etc/freshclam.conf">
606     <comment>(Log su syslog)</comment>
607     LogSyslog
608     <comment>(Logging prolisso)</comment>
609     LogVerbose
610     <comment>(Per rilasciare esplicitamente i privilegi di root)</comment>
611     DatabaseOwner clamav
612     <comment>(Per controllare gli aggiornamenti ogni due ore. Questa è la raccomandazione ufficiale)</comment>
613     Checks 12
614     <comment>(Per usare il mirror più vicino. Sostituire XY con il codice del proprio paese)</comment>
615     DatabaseMirror db.XY.clamav.net
616     </pre>
617    
618     <p>
619     Lanciare <c>clamd</c> con <c>freshclam</c> usando gli script di init modificando
620     <path>/etc/conf.d/clamd</path>.
621     </p>
622    
623     <pre caption="Modificare /etc/conf.d/clamd">
624     START_CLAMD=yes
625     FRESHCLAM_OPTS="-d"
626     </pre>
627    
628     <p>
629     Infine modificare <path>amavisd.conf</path> con il nuovo percorso del socket.
630     </p>
631    
632     <pre caption="Modificare /etc/amavisd.conf">
633     <comment>(Decommentare lo scanner clamav e modificare il percorso del socket)</comment>
634     ['ClamAV-clamd',
635     \&amp;ask_daemon, ["CONTSCAN {}\n", "/var/amavis/clamd"],
636     qr/\bOK$/, qr/\bFOUND$/,
637     qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
638     </pre>
639    
640     <warn>
641     <b>Non</b> modificare <c>$unix_socketname</c> tranne se si sa con certezza cosa
642     si sta facendo.
643     </warn>
644    
645     </body>
646     </section>
647     <section>
648     <title>Configurare Vipul's Razor</title>
649     <body>
650    
651     <p>
652     Razor2 è una rete collaborativa e distribuita per l'intercettazione dello spam.
653     Per installarlo, digitare <c>emerge razor</c> e creare i necessari file di
654     configurazione. Eseguire la creazione con l'utente <c>amavis</c>, eseguendo
655     <c>su - amavis</c> seguito da <c>razor-admin -create</c>.
656     </p>
657    
658     <pre caption="Creazione dei file di configurazione necessari">
659     # <i>emerge razor</i>
660    
661     <comment>(Impostare temporaneamente la shell dell'utente amavis a bash)</comment>
662     # <i>usermod -s /bin/bash amavis</i>
663     # <i>su - amavis</i>
664     $ <i>razor-admin -create</i>
665     $ <i>exit</i>
666    
667     <comment>(Reimpostare la shell a /bin/false)</comment>
668     # <i>usermod -s /bin/false amavis</i>
669     </pre>
670    
671     </body>
672     </section>
673     <section>
674     <title>Configurare Distributed Checksum Clearinghouse (dcc)</title>
675     <body>
676    
677     <p>
678     Come Razor2, dcc è una rete collaborativa e distribuita per l'intercettazione
679     dello spam. La sua filosofia è quella di contare il numero di destinatari di una
680     data email, identificando ogni mail con un checksum <e>fuzzy</e>.
681     </p>
682    
683     <pre caption="Installare DCC">
684     # <i>emerge dcc</i>
685     </pre>
686    
687     </body>
688     </section>
689     <section>
690     <title>Configurare Spamassassin</title>
691     <body>
692    
693     <p>
694     Amavis usa direttamente le librerie in Perl di Spamassassin, quindi non è
695     necessario avviare direttamente il servizio. Questa situazione crea un po' di
696     confusione in quanto alcune impostazioni di Spamassassin vanno configurate in
697     <path>/etc/mail/spamassassin/local.cf</path>, e sono superate da quelle presenti
698     in <path>/etc/amavisd.conf</path>.
699     </p>
700    
701     <pre caption="Creare /etc/mail/spamassassin/local.cf">
702     <comment># Abilitare il sistema di Bayes</comment>
703     use_bayes 1
704    
705     <comment># Abilitare tutti i controlli di rete</comment>
706     skip_rbl_checks 0
707    
708     <comment># I messaggi di posta che usano le lingue di questi paesi non saranno
709     # considerati spam a causa della lingua straniera.
710     # - danese inglese norvegese svedese</comment>
711     ok_languages da en no sv
712    
713     <comment># I messaggi di posta con dei locale usati in questi paesi non saranno
714     # considerati spam a causa della lingua straniera.</comment>
715     ok_locales en
716    
717     <comment># Configurazione del percorso del filtro di Bayes</comment>
718     bayes_path /var/amavis/.spamassassin/bayes
719     </pre>
720    
721     <note>
722     Con Spamassassin versione 3.1 bisogna abilitare DCC e Razor2 togliendo il
723     simbolo di commento dalle apposite linee in <path>v310.pre</path>.
724     </note>
725    
726     <note>
727     È possibile provare alcuni esempi per il file <path>local.cf</path> con il <uri
728     link="http://www.yrex.com/spam/spamconfig.php">Generatore di Configurazione per
729     SpamAssassin</uri>.
730     </note>
731    
732     <note>
733     È consigliabile modificare le variabili <c>ok_languages</c> e <c>ok_locales</c>.
734     </note>
735    
736     </body>
737     </section>
738     </chapter>
739    
740     <chapter>
741     <title>Ogni regola ha le sue eccezioni</title>
742     <section>
743     <body>
744    
745     <p>
746     Una volta configurato il sistema potrebbe essere necessario modificare
747     ulteriormente la configurazione. Alcuni clienti potrebbero voler ricevere alcuni
748     tipi di email che altri clienti invece non gradiscono. Per questo è possibile
749     separare la configurazioni tra diversi siti con la seguente linea in
750     <path>amavisd.conf</path>.
751     </p>
752    
753     <pre caption="Modificare amavisd.conf per abilitare il punteggio sito per sito">
754     read_hash("/var/amavis/sender_scores_sitewide"),
755     </pre>
756    
757     <p>
758     Nel file <path>sender_scores_sitewide</path> si possono impostare indirizzi
759     email completi (oppure anche solo la parte di dominio) e dare loro un
760     modificatore positivo o negativo al punteggio di spam.
761     </p>
762    
763     <pre caption="Esempio per whitelist_sender">
764     <comment>(Mette nella whitelist tutte le email per questo indirizzo email)</comment>
765     postmaster@example.net -3.0
766     <comment>(Mette nella whitelist tutte le email da example.net escludendo i sottodomini)</comment>
767     .example.net 1.0
768     </pre>
769    
770     <note>
771     Vedere <path>/etc/amavisd.conf</path> per ulteriori esempi.
772     </note>
773    
774     <note>
775     Inserire questi indirizzi all'esterno di <path>amavisd.conf</path> è una
776     soluzione più pulita e sicura.
777     </note>
778    
779     <note>
780     In alternativa, la configurazione può essere attivata nel file di Spamassassin
781     <path>/etc/mail/spamassassin/local.cf</path>, ma probabilmente inserirla in
782     <path>/etc/amavisd.conf</path> è più corretto.
783     </note>
784    
785     <note>
786     In un capitolo successivo verrà illustrato come implementare politiche utente
787     per utente utilizzando MySQL.
788     </note>
789    
790     <p>
791     In attesa della possibilità di usare metodi migliori, è possibile aggiungere le
792     seguenti linee in <path>amavisd.conf</path> in modo da superare i controlli per
793     lo spam per <c>postmaster</c> e <c>abuse</c>.
794     </p>
795    
796     <pre caption="Superare i filtri per lo spam per le mail per postmaster e abuse">
797     map { $bypass_spam_checks{lc($_)}=1 } (qw(
798     postmaster@
799     abuse@
800     ));
801     </pre>
802    
803     <impo>
804     Non si dovrebbero <e>mai</e> scartare automaticamente le mail per gli account
805     <c>postmaster</c> e <c>abuse</c>. Vedere <uri
806     link="http://www.ietf.org/rfc/rfc2142.txt">RFC 2142 MAILBOX NAMES FOR COMMON
807     SERVICES, ROLES AND FUNCTIONS</uri>. Altrimenti il dominio potrebbe
808     finire nelle liste di <uri
809     link="http://www.rfc-ignorant.org/">rfc-ignorant.org</uri>.
810     </impo>
811    
812     </body>
813     </section>
814     </chapter>
815    
816     <chapter>
817     <title>Aggiungere ulteriori regole</title>
818     <section>
819     <body>
820 scen 1.2
821 scen 1.1 <p>
822     Volendo utilizzare ulteriori regole fornite dai SARE Ninjas dello <uri
823     link="http://www.rulesemporium.com/">SpamAssassin Rules
824 scen 1.2 Emporium</uri>, si può facilmente aggiungerle ed aggiornarle usando il
825     meccanismo <c>sa-update</c> incluso in Spamassassin.
826 scen 1.1 </p>
827    
828     <p>
829 scen 1.2 Una breve guida su come usare il set di regole SARE con <c>sa-update</c> è
830     disponibile a <uri
831     link="http://daryl.dostech.ca/sa-update/sare/sare-sa-update-howto.txt">questo
832     </uri> indirizzo.
833 scen 1.1 </p>
834    
835     </body>
836     </section>
837     </chapter>
838    
839     <chapter>
840     <title>Test e conclusione</title>
841     <section>
842     <title>Test della configurazione</title>
843     <body>
844    
845     <p>
846     Prima di lanciare <c>freshclam</c> è possibile verificare manualmente che
847     funzioni correttamente.
848     </p>
849    
850     <pre caption="Testare freshclam">
851     # <i>freshclam</i>
852     ClamAV update process started at Sun May 2 09:13:41 2004
853     Reading CVD header (main.cvd): OK
854     Downloading main.cvd [*]
855     main.cvd updated (version: 22, sigs: 20229, f-level: 1, builder: tkojm)
856     Reading CVD header (daily.cvd): OK
857     Downloading daily.cvd [*]
858     daily.cvd updated (version: 298, sigs: 1141, f-level: 2, builder: diego)
859     Database updated (21370 signatures) from database.clamav.net (193.1.219.100).
860     </pre>
861    
862     <p>
863     Adesso le definizioni dei virus sono aggiornate e contemporaneamente è stata
864     verificata la correttezza della sintassi del file <path>freshclam.conf</path>.
865     </p>
866    
867     <p>
868     Per testare freshclam e amavisd da linea di comando, lanciare <c>clamd</c> e
869     <c>amavis</c> con i seguenti comandi:
870     </p>
871    
872     <pre caption="Lanciare amavisd e clamd e ricaricare la configurazione di postfix">
873     # <i>/etc/init.d/clamd start</i>
874     # <i>/etc/init.d/amavisd start</i>
875     # <i>/etc/init.d/postfix reload</i>
876     </pre>
877    
878     <p>
879     Se tutto è andato bene, <c>postfix</c> dovrebbe adesso essere in ascolto per
880     le email in ingresso sulla porta 25 e per quelle reiniettate sulla porta 10024.
881     Per verificare questo, controllare il proprio file di log.
882     </p>
883    
884     <pre caption="Controllare i file di log">
885     # <i>tail -f /var/log/mail.log</i>
886     </pre>
887    
888     <note>
889     A seconda delle impostazioni, il percorso corretto per il file di log potrebbe
890     essere <path>/var/log/messages</path>.
891     </note>
892    
893     <p>
894     Se nessuno strano messaggio compare nei file di log, è tempo di eseguire degli
895     ulteriori test.
896     </p>
897    
898     <p>
899     Usare <c>netcat</c> per connettersi manualmente ad <c>amavisd</c> sulla porta
900     10024 ed a <c>postfix</c> sulla porta 10025.
901     </p>
902    
903     <note>
904     Netcat può essere utilizzato come un avanzato rimpiazzo di <c>telnet</c>.
905     Installarlo con <c>emerge netcat</c>.
906     </note>
907    
908     <note>
909     Per qualche motivo ignoto non è possibile eseguire una iniezione manuale in
910     <c>amavisd</c> usando netcat. Utilizzare <c>telnet</c> invece.
911     </note>
912    
913     <pre caption="Controllare manualmente che amavisd e postfix ascoltino sulle
914     nuove porte">
915     # <i>nc localhost 10024</i>
916     <comment>(Amavis funziona)</comment>
917     220 [127.0.0.1] ESMTP amavisd-new service ready
918     <i>nc localhost 10025</i>
919     <comment>(La reiniezione in Postfix funziona)</comment>
920     220 example.com ESMTP Postfix
921     </pre>
922    
923     <note>
924     Se si vuole vedere l'output completo di amavisd-new, lanciare <c>amavisd
925     debug-sa</c> dall'utente <c>amavis</c> ed inviare una email. Per eseguire questo
926     test potrebbe essere necessario modificare la shell predefinita in
927     <path>/etc/passwd</path>.
928     </note>
929    
930     <p>
931     Aggiungere <c>amavisd</c> e <c>clamd</c> al runlevel <c>default</c>.
932     </p>
933    
934     <pre caption="Agguingere amavisd e clamd al runlevel di default">
935     # <i>rc-update add clamd default</i>
936     # <i>rc-update add amavisd default</i>
937     </pre>
938    
939     <note>
940     Non è necessario aggiungere <c>spamd</c> al runlevel di default in quanto
941     <c>amavisd</c> usa le librerie Perl di Spamassassin direttamente.
942     </note>
943    
944     <note>
945     Nei log potrebbero comparire delle linee simili a <c>Net::Server: Couldn't
946     POSIX::setuid to ... []</c>. Secondo il file di README per <uri
947     link="http://www.ijs.si/software/amavisd/README.chroot">amavis chroot</uri>, se
948     l'UID del processo rimane a 0 (<c>root</c>), il programma viene terminato,
949     altrimenti è possibile considerare il messaggio come informativo. Questo accade
950     in quanto <c>POSIX::setuid()</c> restituisce una stringa pari a <c>0</c> per
951     indicare <c>true</c>.
952     </note>
953    
954     <impo>
955     Se è stato abilitato il login per amavis, ricordarsi di reimpostarlo a
956     <c>/bin/false</c> in <path>/etc/passwd</path>.
957     </impo>
958    
959     </body>
960     </section>
961     </chapter>
962    
963     <chapter>
964     <title>Apprendimento automatico e sidelining delle email</title>
965     <section>
966     <title>Creare l'utente spamtrap</title>
967     <body>
968    
969     <p>
970     Creare l'utente spamtrap e relative directory.
971     </p>
972    
973     <pre caption="Creare l'account spamtrap">
974     # <i>useradd -m spamtrap</i>
975     # <i>maildirmake /home/spamtrap/.maildir</i>
976     # <i>chown -R spamtrap:mailusers /home/spamtrap/.maildir</i>
977     <comment>(Impostare una password non banale)</comment>
978     # <i>passwd spamtrap</i>
979     </pre>
980    
981     <p>
982     Se si vogliono controllare alcune delle email per assicurarsi che non si siano
983     falsi positivi, è possibile configurare <c>procmail</c> in modo da fare il
984     sideline dello spam tra diverse cartelle di posta.
985     </p>
986    
987     </body>
988     </section>
989     <section>
990     <title>Creare .procmailrc</title>
991     <body>
992    
993     <pre caption="Creare /home/spamtrap/.procmailrc">
994     <comment>#Impostare alcune variabili predefinite</comment>
995     MAILDIR=$HOME/.maildir
996    
997     SPAM_FOLDER=$MAILDIR/.spam-found/
998    
999     LIKELY_SPAM_FOLDER=$MAILDIR/.likely-spam-found/
1000    
1001     <comment>#Spostare le mail con un punteggio di spam di 7 punti o più</comment>
1002     <comment>#nella spamfolder</comment>
1003     :0:
1004     * ^X-Spam-Status: Yes
1005     * ^X-Spam-Level: \*\*\*\*\*\*\*
1006     $SPAM_FOLDER
1007    
1008     <comment>#Spostare le mail con un punteggio di spam tra 5 e 7 nella cartella</comment>
1009     <comment>#dei messaggi sospetti</comment>
1010     :0:
1011     * ^X-Spam-Status: Yes
1012     $LIKELY_SPAM_FOLDER
1013    
1014     <comment>#Spostare tutte le altre mail nella inbox</comment>
1015     :0
1016     *
1017     ./
1018     </pre>
1019    
1020     <warn>
1021     Se è previsto che il mailserver riceva una grande quantità di posta, non si
1022     dovrebbe usare la configurazione appena vista. Invece, sarebbe meglio impostare
1023     <c>$sa_tag2_level_deflt</c> abbastanza alto da evitare i falsi positivi e
1024     filtrarli direttamente in <c>$SPAM_FOLDER</c>.
1025     </warn>
1026    
1027     <note>
1028     Se <c>procmail</c> non è ancora installato, digitare <c>emerge procmail</c>.
1029     </note>
1030    
1031     <p>
1032     Assicurarsi che Postfix usi <c>procmail</c> per spedire la posta.
1033     </p>
1034    
1035     <pre caption="Modificare /etc/postfix/main.cf">
1036     mailbox_command = /usr/bin/procmail -a "DOMAIN"
1037     </pre>
1038    
1039     </body>
1040     </section>
1041     <section>
1042     <title>Creare le cartelle per la posta</title>
1043     <body>
1044    
1045     <p>
1046     A breve verranno create le cartelle condivise per la posta, che sarà divisa
1047     tra <e>spam</e> ed <e>ham</e>: quest'ultimo termine è usato per indicare la
1048     posta legittima, in contrapposizione al significato originale del sostantivo
1049     <e>spam</e>.
1050     </p>
1051    
1052     <pre caption="Creare le necessarie cartelle per la posta">
1053     # <i>maildirmake /var/amavis/.maildir</i>
1054     # <i>maildirmake -S /var/amavis/.maildir/Bayes</i>
1055     # <i>maildirmake -s write -f spam /var/amavis/.maildir/Bayes</i>
1056     # <i>maildirmake -s write -f ham /var/amavis/.maildir/Bayes</i>
1057     # <i>maildirmake -s write -f redeliver /var/amavis/.maildir/Bayes</i>
1058     </pre>
1059    
1060     <p>
1061     Amavisd-new deve poter leggere questi file, così come tutti gli utenti di posta.
1062     Per tale motivo aggiungere tutti gli utenti del caso al gruppo mailuser, assieme
1063     all'utente amavis.
1064     </p>
1065    
1066     <pre caption="Impostare i permessi appropriati">
1067     # <i>groupadd mailusers</i>
1068     # <i>usermod -G mailusers spamtrap</i>
1069     # <i>chown -R amavis:mailusers /var/amavis/.maildir/</i>
1070     # <i>chown amavis:mailusers /var/amavis/</i>
1071     # <i>chmod -R 1733 /var/amavis/.maildir/Bayes/</i>
1072     # <i>chmod g+rx /var/amavis/.maildir/</i>
1073     # <i>chmod g+rx /var/amavis/.maildir/Bayes/</i>
1074     </pre>
1075    
1076     <warn>
1077     Questi comandi permettono ad i membri del gruppo <c>mailusers</c> di accedere
1078     alla posta di <c>amavis</c>.
1079     </warn>
1080    
1081     <p>
1082     Questa impostazione rende le directory per spam e posta legittima scrivibili ma
1083     non leggibili. In questo modo, gli utenti possono sottomettere la propria posta
1084     legittima senza che nessun altro sia in grado di leggerla.
1085     </p>
1086    
1087     <p>
1088     Eseguire questo comando come utente <c>spamtrap</c>:
1089     </p>
1090    
1091     <pre caption="Aggiungere le cartelle condivise a quelle degli utenti">
1092     $ <i>maildirmake --add Bayes=/var/amavis/.maildir/Bayes $HOME/.maildir</i>
1093     </pre>
1094    
1095     <note>
1096     Bisogna dare al gruppo i permessi di lettura sulla cartella <path>Bayes</path>
1097     in modo che il client di posta veda le sottodirectory usate da IMAP.
1098     </note>
1099    
1100     </body>
1101     </section>
1102     <section>
1103     <title>Aggiungere operazioni con cron</title>
1104     <body>
1105    
1106     <p>
1107     Eseguire <c>crontab -u amavis -e</c> per modificare il crontab per amavis in
1108     modo da abilitare l'apprendimento automatico del filtro di Bayes ogni ora.
1109     </p>
1110    
1111     <pre caption="crontab per amavis">
1112     <comment>#Apprendimento automatico</comment>
1113     0 * * * * /usr/bin/sa-learn --spam /var/amavis/.maildir/Bayes/.spam/{cur,new} \
1114     > /dev/null 2>&amp;1
1115     0 * * * * /usr/bin/sa-learn --ham /var/amavis/.maildir/Bayes/.ham/{cur,new} > \
1116     /dev/null 2>&amp;1
1117     </pre>
1118    
1119     <note>
1120     <c>amavis</c> deve far parte del gruppo <c>cron</c> per poter eseguire i cron.
1121     </note>
1122    
1123     <note>
1124     Sembra che le cartelle di posta condivise facciano esaminare a <c>sa-learn</c>
1125     tutti i messaggi di posta due volte: non dovrebbe essere un problema. L'output
1126     mostrerà inoltre che il numero di messaggi dai quali è stato appreso qualcosa
1127     è circa la metà del reale numero di messaggi esaminati.
1128     </note>
1129    
1130     </body>
1131     </section>
1132     <section>
1133     <title>Modificare amavisd.conf</title>
1134     <body>
1135    
1136     <p>
1137     Modificare amavis per redirigere tutte le email di spam verso l'account
1138     <c>spamtrap</c> e per conservare gli header dei messaggi che segnalano lo spam.
1139     </p>
1140    
1141     <pre caption="Modificare /etc/amavisd.conf">
1142     <comment>(Definire l'account al quale inviare le email di spam e con virus)</comment>
1143     $spam_quarantine_to = "spamtrap\@$myhostname";
1144     </pre>
1145    
1146     </body>
1147     </section>
1148     <section>
1149     <title>Inviare nuovamente i falsi positivi</title>
1150     <body>
1151    
1152     <p>
1153     Se è stata impostata una soglia molto bassa per lo spam (come suggerito),
1154     probabilmente verranno generati alcuni falsi positivi. Questi messaggi sono
1155     filtrati nella cartella <path>likely-spam</path>: essi sono verificati
1156     manualmente ed i falsi positivi sono spostati nella cartella
1157     <path>redeliver</path>. Da lì, essi sono prima forniti a <c>sa-learn --ham</c>
1158     e poi inviati nuovamente con tutti gli header intatti usando una versione
1159     modificata di <uri
1160     link="http://www.engelschall.com/sw/smtpclient/">smtpclient</uri> di Ralf S.
1161     Engelschall.
1162     </p>
1163    
1164     <p>
1165     La versione 1.0.0 originale di <c>smtpclient</c> è in Portage; per mantenere gli
1166     header intatti, però, è necessario usare la versione modificata. Ecco come
1167     installare la versione modificata:
1168     </p>
1169    
1170     <pre caption="Installare la versione modificata di smtpclient">
1171     <comment>(Spostarsi all'interno dell'overlay di Portage)</comment>
1172     # <i>wget http://home.coming.dk/files/smtpclient.tar.gz</i>
1173     # <i>tar xzf smtpclient.tar.gz</i>
1174     # <i>echo "mail-client/smtpclient ~x86" &gt;&gt; /etc/portage/package.keywords</i>
1175     # <i>echo "mail-client/smtpclient fullheaders" &gt;&gt; /etc/portage/package.use</i>
1176     # <i>emerge smtpclient</i>
1177     </pre>
1178    
1179     <p>
1180     Controllare la posta nella cartella <path>redeliver</path> ogni minuto circa
1181     usando cron.
1182     </p>
1183    
1184     <pre caption="amavis crontab">
1185     <comment>#Inviare nuovamente i falsi positivi</comment>
1186     * * * * * find /var/amavis/.maildir/Bayes/.redeliver/cur/ -type f -name \
1187     "[0-9]*" -exec cp {} /var/amavis/.maildir/Bayes/.ham/cur/ \; \
1188     &amp;&amp; find /var/amavis/.maildir/Bayes/.redeliver/cur/ -type f \
1189     -name "[0-9]*" -exec /usr/local/bin/redeliver.pl {} \;
1190     </pre>
1191    
1192     <p>
1193     Ora basta copiare il file <c>redeliver.pl</c> in <path>/usr/local/bin/</path>.
1194     <uri link="http://home.coming.dk/files/redeliver.pl">Scaricarlo qui</uri> o
1195     usare la versione sottostante.
1196     </p>
1197    
1198     <pre caption="redeliver.pl">
1199     <comment>#!/usr/bin/perl -w
1200    
1201     # Invia nuovamente la posta usando una versione modificata di smtpclient
1202     # By: Jens Hilligsoe &lt;gentoo@hilli.dk&gt;</comment>
1203    
1204     use strict;
1205    
1206     if(!($#ARGV == 0)) {
1207     die "Usage:\n$0 maildir_mail\n";
1208     }
1209    
1210     my $mail = $ARGV[0];
1211     my $to = "";
1212     my $from = "";
1213    
1214     sub prunefile ( $ );
1215    
1216     <comment># Recuperare gli indirizzi del mittente e del destinatario</comment>
1217     open (MAIL, $mail) or die "Could not open $mail: $?\n";
1218     while(&lt;MAIL&gt;) {
1219     if(($to eq "") || ($from eq "")) {
1220     chop;
1221     (my $key, my $value) = split (/:/);
1222     if($key eq "X-Envelope-To") {
1223     $to = $value;
1224     $to =~ s/[\&lt;\&gt;,]//g; # Remove "&lt;", "&gt;" and ","
1225     $to =~ s/^\s+|\s+$//g; #Remove whitespace before and after
1226     }
1227     if($key eq "X-Envelope-From") {
1228     $from = $value;
1229     $from =~ s/[\&lt;\&gt;,]//g;
1230     $from =~ s/^\s+|\s+$//g;
1231     if($from eq "") {
1232     $from = "postmaster";
1233     }
1234     }
1235     }
1236     }
1237    
1238     if($to eq "") {
1239     prunefile($ARGV[0]); # Just nuke it if to is empty
1240     } else {
1241     my $redelivercmd = "cat $ARGV[0] | smtpclient -F -S 127.0.0.1 -P 10025 -f $from $to";
1242     unless (system($redelivercmd) == 0 ) {
1243     die "Unable to redeliver: $?";
1244     }
1245     prunefile($ARGV[0]); # Clean up
1246     }
1247    
1248     sub prunefile ( $ ) {
1249     my ($file) = @_;
1250     unless (unlink $file) {
1251     die "Unable to remove mail: $?";
1252     }
1253     }
1254     </pre>
1255    
1256     </body>
1257     </section>
1258     <section>
1259     <title>Fare pulizia</title>
1260     <body>
1261    
1262     <p>
1263     Poichè non è desiderabile mantenere i messaggi di posta per sempre, usare
1264     <c>tmpwatch</c> per fare pulizia regolarmente. Installarlo con
1265     <c>emerge tmpwatch</c>. Solo <c>root</c> ha i permessi per eseguire
1266     <c>tmpwatch</c>, perciò è necessario modificare il crontab di <c>root</c>.
1267     </p>
1268    
1269     <pre caption="Modificare il crontab di root">
1270     <comment># Fare pulizia</comment>
1271     <comment># Mantenere i messaggi con virus per una settimana (24*7 ore)</comment>
1272     15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/virusmails/
1273     <comment># Cancellare spam e posta legittima appresi dopo una settimana</comment>
1274     15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/.maildir/Bayes/
1275     </pre>
1276    
1277     </body>
1278     </section>
1279     </chapter>
1280    
1281     <!--
1282     <chapter>
1283     <title>Analizzatori dei log</title>
1284     <section>
1285     <title>Statistiche generali su Postfix</title>
1286     <body>
1287    
1288     <p>
1289     Adesso che il gateway di posta è stato configurato, sarebbe buono poterlo
1290     monitorare. Per fare questo verranno installati due piccoli script in Perl che
1291     spediranno via e-mail le statistiche giornaliere sullo spam. Come prima cosa
1292     scaricare ed installare <c>pflogsumm</c>:
1293     </p>
1294    
1295     <pre caption="Scaricare ed installare pflogsumm">
1296     # <i>wget http://jimsun.linxnet.com/downloads/pflogsumm-1.1.0.tar.gz</i>
1297     # <i>tar xzf pflogsumm-1.1.0.tar.gz</i>
1298     # <i>cp pflogsumm-1.1.0/pflogsumm.pl /usr/local/bin/</i>
1299     </pre>
1300     </body>
1301     </section>
1302     <section>
1303     <title>Statistiche dello spam di Postfix</title>
1304     <body>
1305    
1306     <p>
1307     Adesso verrà scaricato ed installato lo script che genera le statistiche
1308     giornaliere sullo spam catturato:
1309     </p>
1310    
1311     <pre caption="Scaricare ed installare spamreport">
1312     # <i>wget http://www.flakshack.com/anti-spam/nosack-spamreport.pl</i>
1313     # <i>mv nosack-spamreport.pl /usr/local/bin/</i>
1314     # <i>chmod +x /usr/local/bin/nosack-spamreport.pl</i>
1315     </pre>
1316     <p>
1317     Poichè si vuole una mail al giorno per ognuno degli script, aggiungere nuovi
1318     elementi al crontab di <c>root</c>:
1319     </p>
1320     <pre caption="Adding report scripts to root crontab">
1321     15 0 * * * /usr/local/bin/pflogsumm.pl -d yesterday \
1322     /var/log/mail.log 2&gt;&amp;1 | /bin/mailx \
1323     -s "`uname -n` daily mail stats" postmaster
1324     10 0 * * * /usr/local/bin/nosack-spamreport.pl \
1325     /var/log/mail.log 2&gt;&amp;1 | /bin/mailx \
1326     -s "`uname -n` daily spam stats" postmaster
1327     </pre>
1328    
1329     <note>
1330     Potrebbe essere necessario eseguire un <c>emerge Date-Calc</c> ed un <c>emerge
1331     mailx</c>. In alternativa si può usare <c>mail</c>, installato con
1332     <c>emerge mailutils</c>
1333     </note>
1334    
1335     <note>
1336     Se i log vengono ruotati una volta a settimana (come fa l'autore di questa
1337     guida), prestare attenzione ad inviare le mail con le statistiche appena prima
1338     della rotazione dei log.
1339     </note>
1340    
1341     <note>
1342     Attualmente l'autore sta studiando quest'altro analizzatore di log per amavis:
1343     <uri link="http://homepages.hs-bremen.de/~renegat/amavislogsumm">amavislogsumm</uri>
1344     </note>
1345     </body>
1346     </section>
1347     </chapter>
1348     -->
1349    
1350     <chapter>
1351     <title>Greylisting</title>
1352     <section>
1353     <title>Introduzione</title>
1354     <body>
1355    
1356     <p>
1357     Il greylisting è una delle armi più moderne disponibili nell'arsenale per la
1358     lotta contro lo spam. Come suggerisce il nome, è simile al blacklisting ed al
1359     whitelisting. Ogni volta che un mailserver sconosciuto prova ad inviare un
1360     messaggio di posta, questo è scartato con un messaggio che invita a <e>provare
1361     più tardi</e>. Questo implica che l'invio del messaggio viene ritardato, ma
1362     anche che i bot che non implementano il protocollo secondo l'RFC desisteranno
1363     dall'invio e non proveranno nuovamente. Col tempo, probabilmente, i bot verranno
1364     migliorati, ma questo darà più tempo ad altre tecnologie per identificare lo
1365     spam.
1366     </p>
1367    
1368     <note>
1369     Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 ed invia
1370     la posta attraverso il proprio mailserver, allora il greylisting non funzionerà.
1371     </note>
1372    
1373     <p>
1374     Postfix 2.1 viene fornito con un server di politiche di greylisting, scritto in
1375     Perl, che implementa questo comportamento. Esso, comunque, è soggetto a
1376     risultati imprevedibili quando la partizione che contiene il database di
1377     greylisting esaurisce lo spazio a disposizione. Per questo motivo esiste una
1378     versione migliorata che non soffre di questo problema. Come prima cosa verrà
1379     descritta la procedura di attivazione del greylisting inserito direttamente in
1380     Postfix, mentre successivamente verrà descritto come configurare il rimpiazzo
1381     più robusto.
1382     </p>
1383    
1384     <note>
1385     Esistono altri server di greylisting per Postfix (come <uri
1386     link="http://www.gasmi.net/gld.html">Gld</uri>, presente in Portage, e <uri
1387     link="http://sqlgrey.sourceforge.net/">SQLgrey</uri>). Alcuni di essi supportano
1388     anche i database come backend, il whitelisting automatico ed altre funzioni
1389     interessanti.
1390     </note>
1391    
1392     </body>
1393     </section>
1394     <section>
1395     <title>Semplice greylisting</title>
1396     <body>
1397    
1398     <note>
1399     Se si vuole usare il greylisting migliorato, è possibile saltare questa sezione.
1400     </note>
1401    
1402     <p>
1403     È necessario utilizzare il file <path>greylist.pl</path>, ma sfortunatamente
1404     l'ebuild non lo installa in modo predefinito.
1405     </p>
1406    
1407     <pre caption="Ottenere greylist.pl">
1408     # <i>cp /usr/portage/distfiles/postfix-versione.tar.gz /root/</i>
1409     # <i>tar xzf postfix-versione.tar.gz</i>
1410     # <i>cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/</i>
1411     </pre>
1412    
1413     <p>
1414     Adesso che il file è al suo posto, è necessario creare la directory che conterrà
1415     il database di greylisting:
1416     </p>
1417    
1418     <pre caption="Creare la directory per il database di greylisting">
1419     # <i>mkdir /var/mta</i>
1420     # <i>chown nobody /var/mta</i>
1421     </pre>
1422    
1423     <warn>
1424     Non creare la directory per il database di greylisting in una partizione che
1425     potrebbe esaurire lo spazio a disposizione. Mentre postfix può evitare problemi
1426     alla coda delle e-mail ed alle mail box quando lo spazio si esaurisce, il
1427     database di greylisting non è capace di farlo. Se il file diviene corrotto, non
1428     sarà più possibile ricevere alcuna e-mail fino a quando il file non viene
1429     cancellato manualmente.
1430     </warn>
1431    
1432     </body>
1433     </section>
1434     <section>
1435     <title>Configurare il greylisting</title>
1436     <body>
1437    
1438     <p>
1439     Adesso che tutto è pronto, bisogna aggiungere alcune informazioni alla
1440     configurazione di postfix. Prima di tutto è necessario modificare
1441     <path>master.cf</path>:
1442     </p>
1443    
1444     <pre caption="Modicare master.cf per usare il greylisting">
1445     policy-greylist unix - n n - - spawn
1446     user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl
1447     </pre>
1448    
1449     <p>
1450     Il demone di spawn di postfix normalmente uccide i propri processi figli dopo
1451     1000 secondi, ma questo limite è troppo breve per il processo di greylisting.
1452     È pertanto necessario aumentare questo valore in <path>main.cf</path>:
1453     </p>
1454    
1455     <pre caption="Modificare main.cf per usare il greylisting">
1456     policy-greylist_time_limit = 3600
1457     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1458     check_sender_access hash:/etc/postfix/sender_access
1459     <comment>(Successivamente aggiungere:)</comment>
1460     restriction_classes = greylist
1461     greylist = check_policy_service unix:private/policy-greylist
1462     </pre>
1463    
1464     <warn>
1465     Specificare <c>check_sender_access</c> DOPO <c>reject_unauth_destination</c>
1466     altrimenti il sistema potrebbe diventare un relay di posta aperto a chiunque.
1467     </warn>
1468    
1469     <note>
1470     Il database di greylisting si riempie velocemente con indirizzi fasulli.
1471     Proteggere le ricerche di greylist con altre restrizioni (che rifiutano mittenti
1472     o destinatari sconosciuti) aiuta in questa situazione.
1473     </note>
1474    
1475     <p>
1476     Non si vuole usare il greylisting per tutti i domini, ma solo per quelli più
1477     comunemente usati dagli spammer. Dopo tutto, il greylisting ritarda la consegna
1478     dei messaggi di posta, pertanto è desiderabile non rallentare l'arrivo di e-mail
1479     da domini che non siano comunemente sfruttati. Una lista dei domini più
1480     comunemente usati dagli spammer come indirizzo del mittente può essere trovata
1481     <uri
1482     link="http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in">online</uri>.
1483     Aggiungere i domini dai quali si riceve spam a
1484     <path>/etc/postfix/sender_access</path>:
1485     </p>
1486    
1487     <pre caption="Formato di sender_access">
1488     aol.com greylist
1489     hotmail.com greylist
1490     bigfoot.com greylist
1491     </pre>
1492    
1493     <p>
1494     Per una lista più estesa:
1495     </p>
1496    
1497     <pre caption="Aggiungere tutti i domini a sender_access">
1498     # <i>wget http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in</i>
1499     <!-- ndt: Useless Use Of Cat ;) -->
1500     # <i>sort sender-domain-validate.in | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access</i>
1501     </pre>
1502    
1503     <p>
1504     Adesso è necessario inizializzare il database di <path>sender_access</path>:
1505     </p>
1506    
1507     <pre caption="Inizializzare sender_access">
1508     # <i>postmap /etc/postfix/sender_access</i>
1509     </pre>
1510    
1511     <p>
1512     La configurazione della versione semplice del greylisting è completa.
1513     </p>
1514    
1515     <warn>
1516     Questa procedura è stata testata su una macchina che gestiva migliaia di e-mail
1517     al giorno ed il risultato è stato un disastro completo. Dopo quattro giorni la
1518     macchina era sovraccaricata da centinaia di vecchi processi <c>greylist.pl</c>.
1519     </warn>
1520    
1521     </body>
1522     </section>
1523     <section>
1524     <title>Configurare il greylisting migliorato con postgrey</title>
1525     <body>
1526    
1527     <p>
1528     Installare il server di greylisting con un semplice <c>emerge</c>:
1529     </p>
1530    
1531     <pre caption="Installare postgrey">
1532     # <i>emerge postgrey</i>
1533     </pre>
1534    
1535     <p>
1536     Dopo aver installato <c>postgrey</c> bisogna modificare <path>main.cf</path>.
1537     Le modifiche sono molto simili a quelle eseguite in occasione del precedente
1538     metodo di greylisting.
1539     </p>
1540    
1541     <pre caption="Modificare main.cf per usare greylisting">
1542     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1543     check_sender_access hash:/etc/postfix/sender_access
1544     <comment>(Successivamente aggiungere:)</comment>
1545     smtpd_restriction_classes = greylist
1546     greylist = check_policy_service inet:127.0.0.1:10030
1547     </pre>
1548    
1549     <note>
1550     Il SMTPD_POLICY_README di Postfix utilizza solo <c>restriction_classes</c>, ma
1551     questo non sembra funzionare.
1552     </note>
1553    
1554     <note>
1555     Se si vuole fare il greylisting di tutta la posta, aggiungere invece
1556     <c>check_policy_service inet:127.0.0.1:10030</c>.
1557     </note>
1558    
1559     <p>
1560     Infine, lanciare il server e aggiungerlo al runlevel adatto.
1561     </p>
1562    
1563     <pre caption="Lanciare postgrey">
1564     # <i>/etc/init.d/postgrey start</i>
1565     # <i>rc-update add postgrey default</i>
1566     </pre>
1567    
1568     <note>
1569     Alcune persone vogliono che i messaggi di posta siano inviati velocemente ed in
1570     questo caso il greylisting peggiora le prestazioni. In ogni caso, se si utilizza
1571     un mail server di backup è possibile impostare il greylisting su di esso con
1572     relativa sicurezza. La limitata esperienza dell'autore di questa guida
1573     suggerisce che in questo modo è possibile fermare circa un terzo dello spam.
1574     </note>
1575    
1576     </body>
1577     </section>
1578     </chapter>
1579    
1580     <chapter>
1581     <title>SPF (Sender Policy Framework)</title>
1582     <section>
1583     <title>Introduzione</title>
1584     <body>
1585    
1586     <p>
1587     Un SPF (che in inglese significa approssimativamente <e>Framework di Politiche
1588     di Invio</e>) permette ai proprietari di un dominio di dichiarare nei propri
1589     record DNS quali indirizzi IP sono autorizzati a mandare messaggi di posta dal
1590     dominio stesso. Questo impedisce agli spammer di falsificare il
1591     <c>Return-Path</c>.
1592     </p>
1593    
1594     <note>
1595     Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 e
1596     reindirizza tutti i messaggi attraverso il proprio mail server, l'SPF non
1597     funzionerà.
1598     </note>
1599    
1600     <p>
1601     Come prima cosa, i proprietari del dominio devono creare uno speciale record
1602     DNS, chiamato <c>TXT</c>. Un MTA con SPF abilitato può allora leggerlo e se una
1603     e-mail è stata originata da un server che non è descritto nel record, il
1604     messaggio può essere scartato. Ecco un esempio:
1605     </p>
1606    
1607     <pre caption="Record SPF di esempio">
1608     example.com. IN TXT "v=spf1 a mx ptr -all"
1609     </pre>
1610    
1611     <p>
1612     Il parametro <c>-all</c> suggerisce di rifiutare in modo predefinito tutta la
1613     posta, ad eccetto di quella ricevuta dai record DNS <c>A</c>(<c>a</c>),
1614     <c>MX</c>(<c>mx</c>) e <c>PTR</c>(<c>ptr</c>). Per ulteriori informazioni
1615     consultare le risorse elencate in basso.
1616     </p>
1617    
1618     <note>
1619     Se è necessario inoltrare le mail in uscita attraverso il proprio ISP,
1620     aggiungere: <c>include:proprioisp.com</c>.
1621     </note>
1622    
1623     <p>
1624     Spamassassin 3.0 ha il supporto per SPF, ma non è abilitato in modo predefinito;
1625     il nuovo demone delle politiche di Postfix, invece, supporta SPF, pertanto la
1626     guida seguirà l'installazione di quest'ultimo.
1627     </p>
1628    
1629     <note>
1630     Se si vuole usare SPF con Spamassassin eseguire semplicemente
1631     <c>emerge&nbsp;dev-perl/Mail-SPF-Query</c> e riavviare Amavisd-new.
1632     </note>
1633    
1634     </body>
1635     </section>
1636     <section>
1637     <title>Preparativi</title>
1638     <body>
1639    
1640     <p>
1641     Prima di tutto bisogna installare Postfix 2.1 come descritto in precedenza. Dopo
1642     aver ottenuto i sorgenti, installare <path>spf.pl</path> con:
1643     </p>
1644    
1645     <pre caption="Installare spf.pl">
1646     # <i>cp postfix-&lt;version&gt;/examples/smtpd-policy/spf.pl /usr/local/bin/</i>
1647     </pre>
1648    
1649     <note>
1650     Il file <path>spf.pl</path> distribuito con Postfix soffre di qualche bug
1651     sporadico, pertanto trovare al suo interno e decommentare la linea:
1652     <c>push @HANDLERS, "sender_permitted_from"; use Mail::SPF::Query;</c>.
1653     Inoltre, intorno alla linea 199 sostituire <c>comemnt</c> con <c>comment</c>. In
1654     alternativa è possibile scaricare una <uri
1655     link="http://spf.pobox.com/postfix-policyd.txt">versione di sviluppo</uri>.
1656     </note>
1657    
1658     <p>
1659     Questo script in Perl necessita di alcune librerie che sono in Portage, quindi
1660     semplici da ottenere:
1661     </p>
1662    
1663     <pre caption="Installare le librerie Perl richieste">
1664     # <i>emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long</i>
1665     </pre>
1666    
1667     <p>
1668     Adesso che tutto è al suo posto, è necessario configurare Postfix per utilizzare
1669     questa nuova politica.
1670     </p>
1671    
1672     <pre caption="Modificare master.cf per usare SPF">
1673     policy-spf unix - n n - - spawn
1674     user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl
1675     </pre>
1676    
1677     <p>
1678     Aggiungere il controllo per SPF in <path>main.cf</path>. Se correttamente
1679     configurato, l'SPF non dovrebbe fare danni, pertanto è preferibile abilitarlo
1680     per tutti i domini:
1681     </p>
1682    
1683     <pre caption="Modificare main.cf per utilizzare SPF">
1684     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1685     check_policy_service unix:private/policy-spf
1686     </pre>
1687    
1688     <note>
1689     Se si verificano problemi con SPF, ad esempio durante l'uso di <c>fetchmail</c>,
1690     potrebbe essere necessario abilitare l'SPF soltanto per alcuni domini.
1691     </note>
1692    
1693     </body>
1694     </section>
1695     </chapter>
1696    
1697     <chapter>
1698     <title>Configurare amavisd-new per l'uso di MySQL</title>
1699     <section>
1700     <title>Configurare MySQL</title>
1701     <body>
1702    
1703     <note>
1704     Questa procedura non è stata testata per versioni di amavisd-new superiori alla
1705     2.2. Ogni commento è ben accetto :)
1706     </note>
1707    
1708     <p>
1709     Per domini di grandi dimensioni i valori predefinit configurabili in
1710     <path>amavisd.conf</path> potrebbero non essere adatti a tutti gli utenti.
1711     Configurando amavisd-new con supporto MySQL si possono configurare impostazioni
1712     individuali per utenti o gruppi di utenti.
1713     </p>
1714    
1715     <pre caption="Creare database ed utente MySQL">
1716     # <i>mysql -u root -p mysql</i>
1717     Enter password:
1718     Welcome to the MySQL monitor. Commands end with ; or \g.
1719     Your MySQL connection id is 78 to server version: 4.0.18-log
1720    
1721     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
1722     mysql> <i>create database maildb;</i>
1723     mysql> <i>GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'password_segretissima';</i>
1724     mysql> <i>use maildb;</i>
1725     </pre>
1726    
1727     <p>
1728     Adesso che il database è stato creato è necessario creare le tabelle. Copiare e
1729     incollare i seguenti comandi nel prompt di mysql:
1730     </p>
1731    
1732     <pre caption="Layout delle tabelle di MySQL">
1733     CREATE TABLE users (
1734     id int unsigned NOT NULL auto_increment,
1735     priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
1736     policy_id int unsigned NOT NULL DEFAULT '1',
1737     email varchar(255) NOT NULL,
1738     fullname varchar(255) DEFAULT NULL, -- non usato da amavisd-new
1739     local char(1), -- Y/N (campo opzionale, vedere note)
1740     PRIMARY KEY (id),
1741     KEY email (email)
1742     );
1743     CREATE UNIQUE INDEX users_idx_email ON users(email);
1744    
1745     <comment>(-- ogni indirizzo e-mail, esterno o locale, usato come mittente in 'wblist')</comment>
1746     CREATE TABLE mailaddr (
1747     id int unsigned NOT NULL auto_increment,
1748     priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
1749     email varchar(255) NOT NULL,
1750     PRIMARY KEY (id),
1751     KEY email (email)
1752     );
1753     CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);
1754    
1755     <comment>(-- whitelist per destinatario e/o blacklist,</comment>
1756     <comment>-- mette in relazione mittente e destinatario, 'wb')</comment>
1757     (white or blacklisted sender)
1758     CREATE TABLE wblist (
1759     rid int unsigned NOT NULL, -- destinatario: users.id
1760     sid int unsigned NOT NULL, -- mittente: mailaddr.id
1761     wb char(1) NOT NULL, -- W or Y / B or N / space=neutral
1762     PRIMARY KEY (rid,sid)
1763     );
1764    
1765     CREATE TABLE policy (
1766     id int unsigned NOT NULL auto_increment,
1767     policy_name varchar(32), -- non usato da amavisd-new
1768     virus_lover char(1), -- Y/N
1769     spam_lover char(1), -- Y/N (campo opzionale)
1770     banned_files_lover char(1), -- Y/N (campo opzionale)
1771     bad_header_lover char(1), -- Y/N (campo opzionale)
1772     bypass_virus_checks char(1), -- Y/N
1773     bypass_spam_checks char(1), -- Y/N
1774     bypass_banned_checks char(1), -- Y/N (campo opzionale)
1775     bypass_header_checks char(1), -- Y/N (campo opzionale)
1776     spam_modifies_subj char(1), -- Y/N (campo opzionale)
1777     spam_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
1778     spam_tag_level float, -- un punteggio alto inserisce le intestazioni spam
1779     spam_tag2_level float DEFAULT NULL, -- un punteggio alto inserisce le
1780     -- intestazioni di 'spam dichiarato'
1781     spam_kill_level float, -- un punteggio alto attiva le azioni evasive:
1782     -- rifiuto/scarto, quarantena, ...
1783     -- (soggetto all'impostazione di final_spam_destiny)
1784     PRIMARY KEY (id)
1785     );
1786     </pre>
1787    
1788     <note>
1789     Se ci sono dei problemi di copia/incolla, copiare il testo altrove e cancellare
1790     i caratteri non necessari.
1791     </note>
1792    
1793     <note>
1794     Le ricerche mirate a trovare un indirizzo e-mail sono eseguite sugli indirizzi
1795     grezzi (rfc2821-unquoted e senza parentesi), ad esempio:
1796     <c>John "Funny" Smith@example.com</c>
1797     </note>
1798    
1799     <note>
1800     Le ricerche sono eseguite seguendo quest'ordine: <c>SQL</c>, <c>LDAP</c>,
1801     <c>hash</c>, <c>ACL</c>, <c>regexp</c>, <c>constant</c>. Il primo risultato
1802     utile (non <c>undef/NULL</c>) interrompe la ricerca.
1803     </note>
1804    
1805     <p>
1806     Se si vuole usare whitelisting o blacklisting bisogna inserire gli indirizzi di
1807     mittente e destinatario in <c>mailaddr</c>; in seguito bisogna impostare una
1808     relazione tra i due in <c>wblist</c> e specificare se si tratta di whitelisting
1809     (<c>W</c>) o blacklisting (<c>B</c>).
1810     </p>
1811    
1812     <p>
1813     Adesso che sono state create le tabelle, inserire un utente ed una politica di
1814     prova:
1815     </p>
1816    
1817     <pre caption="Creare utente e politica di prova">
1818     INSERT INTO users
1819     SET
1820     id =1,
1821     priority =9,
1822     policy_id =1,
1823     email ="johndoe@example.com",
1824     fullname ="John Doe",
1825     local ="Y";
1826    
1827     INSERT INTO policy
1828     SET
1829     id =1,
1830     policy_name ="Test policy 1",
1831     virus_lover ="N",
1832     spam_lover ="N",
1833     banned_files_lover ="N",
1834     bad_header_lover ="N",
1835     bypass_virus_checks ="N",
1836     bypass_spam_checks ="N",
1837     bypass_banned_checks ="N",
1838     bypass_header_checks ="N",
1839     spam_modifies_subj ="N",
1840     spam_quarantine_to =NULL,
1841     spam_tag_level =-50.0,
1842     spam_tag2_level =7.0,
1843     spam_kill_level =10.0;
1844     </pre>
1845    
1846     <note>
1847     Modificare le impostazioni di esempio a seconda del proprio ambiente di
1848     funzionamento.
1849     </note>
1850    
1851     <note>
1852     <c>local</c> dovrebbe essere impostato ad <c>Y</c>, altrimenti la mail non verrà
1853     sottoposta a controllo per spam.
1854     </note>
1855    
1856     <p>
1857     Queste istruzioni inseriscono un utente ed una politica di prova. Modificare
1858     questi esempi per soddisfare le proprie necessità. Una spiegazione più
1859     approfondita della configurazione può essere reperita in
1860     <path>amavisd.conf</path>.
1861     </p>
1862    
1863     </body>
1864     </section>
1865     <section>
1866     <title>Configurare amavisd per usare MySQL</title>
1867     <body>
1868    
1869     <p>
1870     Adesso che MySQL è pronto, è necessario dire ad amavis di usarlo:
1871     </p>
1872    
1873     <pre caption="Modificare amavisd.conf">
1874     @lookup_sql_dsn =
1875     ( ['DBI:mysql:maildb:host1', 'mail', 'password_segretissima'] );
1876    
1877     <comment>(Per chiarezza deommentare l'impostazione predefinita)</comment>
1878     $sql_select_policy = 'SELECT *,users.id FROM users,policy'.
1879     ' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
1880     ' ORDER BY users.priority DESC';
1881    
1882     <comment>(Per ottenere white/blacklisting in base al mittente)</comment>
1883     $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
1884     ' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
1885     ' AND (mailaddr.email IN (%k))'.
1886     ' ORDER BY mailaddr.priority DESC';
1887     </pre>
1888     </body>
1889    
1890     </section>
1891     </chapter>
1892    
1893     <chapter>
1894     <title>Configurare Spamassassin per usare MySQL</title>
1895     <section>
1896     <body>
1897    
1898     <p>
1899     A partire da Spamassassin 3.0 è possibile conservare le informazioni per Bayes
1900     e l'AWL in un database MySQL. Verrà utilizzato proprio MySQL come backend in
1901     quanto esso è in genere più performante degli altri database. Inoltre, usare
1902     MySQL per tutti i dati rende la manutenzione del sistema molto più semplice.
1903     </p>
1904    
1905     <p>
1906     Come prima cosa, creare il nuovo utente MySQL e le tabelle necessarie.
1907     </p>
1908    
1909     <pre caption="Creare utente e database MySQL">
1910     # <i>mysql -u root -p mysql</i>
1911     Enter password:
1912     Welcome to the MySQL monitor. Commands end with ; or \g.
1913     Your MySQL connection id is 78 to server version: 4.0.18-log
1914    
1915     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
1916     mysql> <i>create database dbname;</i>
1917     mysql> <i>GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'altra_password_segretissima';</i>
1918     mysql> <i>use dbname;</i>
1919     </pre>
1920    
1921     <p>
1922     Adesso che il database è stato creato, verranno aggiunte le tabelle necessarie.
1923     Copiare e incollare questo testo nel prompt di mysql:
1924     </p>
1925    
1926     <pre caption="Layout delle tabelle MySQL">
1927     CREATE TABLE bayes_expire (
1928     id int(11) NOT NULL default '0',
1929     runtime int(11) NOT NULL default '0',
1930     KEY bayes_expire_idx1 (id)
1931     ) TYPE=MyISAM;
1932    
1933     CREATE TABLE bayes_global_vars (
1934     variable varchar(30) NOT NULL default '',
1935     value varchar(200) NOT NULL default '',
1936     PRIMARY KEY (variable)
1937     ) TYPE=MyISAM;
1938    
1939     INSERT INTO bayes_global_vars VALUES ('VERSION','3');
1940    
1941     CREATE TABLE bayes_seen (
1942     id int(11) NOT NULL default '0',
1943     msgid varchar(200) binary NOT NULL default '',
1944     flag char(1) NOT NULL default '',
1945     PRIMARY KEY (id,msgid)
1946     ) TYPE=MyISAM;
1947    
1948     CREATE TABLE bayes_token (
1949     id int(11) NOT NULL default '0',
1950     token char(5) NOT NULL default '',
1951     spam_count int(11) NOT NULL default '0',
1952     ham_count int(11) NOT NULL default '0',
1953     atime int(11) NOT NULL default '0',
1954     PRIMARY KEY (id, token),
1955     INDEX (id, atime)
1956     ) TYPE=MyISAM;
1957    
1958     CREATE TABLE bayes_vars (
1959     id int(11) NOT NULL AUTO_INCREMENT,
1960     username varchar(200) NOT NULL default '',
1961     spam_count int(11) NOT NULL default '0',
1962     ham_count int(11) NOT NULL default '0',
1963     token_count int(11) NOT NULL default '0',
1964     last_expire int(11) NOT NULL default '0',
1965     last_atime_delta int(11) NOT NULL default '0',
1966     last_expire_reduce int(11) NOT NULL default '0',
1967     oldest_token_age int(11) NOT NULL default '2147483647',
1968     newest_token_age int(11) NOT NULL default '0',
1969     PRIMARY KEY (id),
1970     UNIQUE bayes_vars_idx1 (username)
1971     ) TYPE=MyISAM;
1972    
1973     CREATE TABLE awl (
1974     username varchar(100) NOT NULL default '',
1975     email varchar(200) NOT NULL default '',
1976     ip varchar(10) NOT NULL default '',
1977     count int(11) default '0',
1978     totscore float default '0',
1979     PRIMARY KEY (username,email,ip)
1980     ) TYPE=MyISAM;
1981     </pre>
1982    
1983     <impo>
1984     La query con <c>INSERT</c> è necessaria per il corretto funzionamento di
1985     Spamassassin.
1986     </impo>
1987    
1988     <note>
1989     Questi script sono disponibili anche nell'archivio dei file sorgente, con i nomi
1990     <path>awl_mysql.sql</path> e <path>bayes_mysql.sql</path>.
1991     </note>
1992    
1993     </body>
1994     </section>
1995     <section>
1996     <title>Configurare Spamassassin per l'uso del backend MySQL</title>
1997     <body>
1998    
1999     <p>
2000     Se si ha un vecchio database Bayesiano e si vuole conservarlo, seguire queste
2001     istruzioni:
2002     </p>
2003    
2004     <pre caption="Convertire i dati Bayes da un database DBM">
2005     <i>su - amavis</i>
2006     <i>sa-learn --sync</i>
2007     <i>sa-learn --backup > backup.txt</i>
2008     <i>sa-learn --restore backup.txt</i>
2009     </pre>
2010    
2011     <note>
2012     Attenzione che l'ultimo passo dovrebbe essere eseguito solo DOPO l'aggiornamento
2013     del database MySQL e del file <path>secrets.cf</path>.
2014     </note>
2015    
2016     <p>
2017     Dare a Spamassassin le informazioni richieste:
2018     </p>
2019    
2020     <pre caption="Modificare /etc/mail/spamassassin/secrets.cf">
2021     <comment>(Dice a Spamassassin di usare MySQL per il filtro bayesiano)</comment>
2022     bayes_store_module Mail::SpamAssassin::BayesStore::SQL
2023     bayes_sql_dsn DBI:mysql:sa_bayes:localhost:3306
2024     bayes_sql_username dbname
2025     bayes_sql_password altra_password_segretissima
2026    
2027     <comment>(Dice a Spamassassin di usare MySQL per i dati AWL)</comment>
2028     auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
2029     user_awl_dsn DBI:mysql:sa_bayes:localhost:3306
2030     user_awl_sql_username dbname
2031     user_awl_sql_password altra_password_segretissima
2032     </pre>
2033    
2034     <p>
2035     Cambiare i permessi al file per garantire la sicurezza necessaria:
2036     </p>
2037    
2038     <pre caption="Cambiare i permessi">
2039     # <i>chmod 400 /etc/mail/spamassassin/secrets.cf</i>
2040     </pre>
2041    
2042     <note>
2043     Per creare una password molto resistente ad attacchi, usare <c>emerge
2044     app-admin/makepasswd</c> e <c>makepasswd -chars=8</c>
2045     </note>
2046    
2047     <p>
2048     Adesso basta semplicemente eseguire <c>/etc/init.d/amavisd restart</c>.
2049     </p>
2050    
2051     </body>
2052     </section>
2053     </chapter>
2054    
2055     <chapter>
2056     <title>Risoluzione dei problemi</title>
2057     <section>
2058     <title>Amavisd-new</title>
2059     <body>
2060    
2061     <p>
2062     Per risolvere i problemi relativi a Amavisd-new bisogna innanzitutto fermarlo
2063     con <c>/etc/init.d/amavisd stop</c> e poi eseguirlo manualmente in primo piano
2064     con <c>amavisd debug</c>; analizzare eventuali anomalie nell'output.
2065     </p>
2066    
2067     </body>
2068     </section>
2069     <section>
2070     <title>Spamassassin</title>
2071     <body>
2072    
2073     <p>
2074     Per risolvere i problemi con Spamassassin, è possibile filtrare una e-mail con
2075     <c>spamassassin -D &lt; mail</c>. Per assicurarsi che le intestazioni siano
2076     intatte, è possibile spostarla su di un'altra macchina usando IMAP.
2077     </p>
2078    
2079     <note>
2080     Per eseguire queste operazioni è necessario abilitare il login per l'utente
2081     <c>amavis</c>, cambiando la shell di login corrente in <path>/etc/passwd</path>
2082     al valore <path>/bin/bash</path>.
2083     </note>
2084    
2085     <p>
2086     È possibile ottenere le stesse informazioni, in aggiunta ad altri dati, usando
2087     <c>amavisd debug-sa</c>.
2088     </p>
2089    
2090     </body>
2091     </section>
2092     <section>
2093     <title>Come ottenere aiuto</title>
2094     <body>
2095    
2096     <p>
2097     Un buon punto di partenza per ottenere aiuto è la mailing list amavis-user.
2098     Prima di lasciare un messaggio come una domanda, è raccomandabile cercare <uri
2099     link="http://marc.theaimsgroup.com/?l=amavis-user">nell'archivio della
2100     lista</uri>. Se non si trova la risposta alla propria domanda, è possibile
2101     iscriversi alla mailing list da <uri
2102     link="https://lists.sourceforge.net/lists/listinfo/amavis-user">qui</uri>.
2103     </p>
2104    
2105     <p>
2106     Se il problema è specifico per SpamAssassin, DCC, Razor, o Postfix, fare
2107     riferimento alle rispettive pagine elencate in basso.
2108     </p>
2109    
2110     </body>
2111     </section>
2112     </chapter>
2113    
2114     <chapter>
2115     <title>Risorse (in lingua inglese)</title>
2116     <section>
2117     <title>Per ulteriori informazioni</title>
2118     <body>
2119    
2120     <ul>
2121     <li>
2122     <uri link="http://www.ijs.si/software/amavisd/INSTALL">File INSTALL di
2123     Amavisd-new</uri>
2124     </li>
2125     <li>
2126     <uri link="http://www.ijs.si/software/amavisd/README.postfix">File LEGGIMI
2127     di Amavisd-new e Postfix</uri>
2128     </li>
2129     <li>
2130     <uri link="http://www.ijs.si/software/amavisd/amavisd-new-docs.html#pbanks">
2131     Documentazione sulle politiche di Amavisd-new</uri>
2132     </li>
2133     <li>
2134     <uri link="http://spamassassin.apache.org/full/3.0.x/dist/sql/README">File
2135     LEGGIMI per l'uso di SQL con Spamassassin</uri>
2136     </li>
2137     <li><uri link="http://www.greylisting.org">Greylisting</uri></li>
2138     <li>
2139     <uri link="http://www.postfix.org/FILTER_README.html">Postfix
2140     SMTPD_POLICY_README</uri >
2141     </li>
2142     <li>
2143     <uri link="http://www.unixwiz.net/techtips/postfix-HELO.html">Bloccare gli
2144     spammer con Postfix ed i controlli sui comandi HELO</uri>
2145     </li>
2146     <li>
2147     <uri link="http://www.linuxjournal.com/article.php?sid=7327">Introduzione a
2148     SPF</uri>
2149     </li>
2150     <li>
2151     <uri link="http://jimsun.linxnet.com/misc/postfix-anti-UCE.txt">Cheat Sheet
2152     contro l'UCE, per Postfix, a cura di Jim Seymour</uri>
2153     </li>
2154     </ul>
2155    
2156     </body>
2157     </section>
2158     <section>
2159     <title>Risorse generiche</title>
2160     <body>
2161    
2162     <ul>
2163     <li><uri link="http://www.spamassassin.org">Spamassassin</uri></li>
2164     <li><uri link="http://www.ijs.si/software/amavisd/">Amavisd-new</uri></li>
2165     <li>
2166     <uri link="http://www.ijs.si/software/amavisd/amavisd-new-docs.html">
2167     Documentazione per Amavisd-new</uri>
2168     </li>
2169     <li><uri link="http://razor.sourceforge.net/">Vipuls's Razor</uri></li>
2170     <li><uri link="http://pyzor.sourceforge.net/">Pyzor</uri></li>
2171     <li>
2172     <uri link="http://www.rhyolite.com/anti-spam/dcc/">DCC (Distributed Checksum
2173     Clearinghouse)</uri>
2174     </li>
2175     <li>
2176     <uri link="http://www.renaissoft.com/projects/maia/">Maia Mailguard</uri>
2177     </li>
2178     </ul>
2179    
2180     </body>
2181     </section>
2182    
2183     <section>
2184     <title>Altre guide</title>
2185     <body>
2186    
2187     <ul>
2188     <li>
2189     <uri link="http://www.flakshack.com/anti-spam/">Un sicuro gateway di posta
2190     con anti-SPAM, usando OpenBSD, Postfix, Amavisd-new, SpamAssassin, Razor e
2191     DCC</uri>
2192     </li>
2193     </ul>
2194    
2195     </body>
2196     </section>
2197     </chapter>
2198    
2199     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20