/[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.3 - (hide annotations) (download) (as text)
Thu Dec 13 22:24:40 2007 UTC (10 years, 8 months ago) by scen
Branch: MAIN
Changes since 1.2: +3 -2 lines
File MIME type: application/xml
Lots of fixes p.2 (Repodoc Strikes Back!) 8)

1 scen 1.1 <?xml version='1.0' encoding='utf-8'?>
2     <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
3 scen 1.3 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/mailfilter-guide.xml,v 1.2 2007/08/03 09:54:13 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 scen 1.3 <uri link="http://homepages.hs-bremen.de/~renegat/amavislogsumm">amavislogsumm
1344     </uri>
1345 scen 1.1 </note>
1346     </body>
1347     </section>
1348     </chapter>
1349     -->
1350    
1351     <chapter>
1352     <title>Greylisting</title>
1353     <section>
1354     <title>Introduzione</title>
1355     <body>
1356    
1357     <p>
1358     Il greylisting è una delle armi più moderne disponibili nell'arsenale per la
1359     lotta contro lo spam. Come suggerisce il nome, è simile al blacklisting ed al
1360     whitelisting. Ogni volta che un mailserver sconosciuto prova ad inviare un
1361     messaggio di posta, questo è scartato con un messaggio che invita a <e>provare
1362     più tardi</e>. Questo implica che l'invio del messaggio viene ritardato, ma
1363     anche che i bot che non implementano il protocollo secondo l'RFC desisteranno
1364     dall'invio e non proveranno nuovamente. Col tempo, probabilmente, i bot verranno
1365     migliorati, ma questo darà più tempo ad altre tecnologie per identificare lo
1366     spam.
1367     </p>
1368    
1369     <note>
1370     Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 ed invia
1371     la posta attraverso il proprio mailserver, allora il greylisting non funzionerà.
1372     </note>
1373    
1374     <p>
1375     Postfix 2.1 viene fornito con un server di politiche di greylisting, scritto in
1376     Perl, che implementa questo comportamento. Esso, comunque, è soggetto a
1377     risultati imprevedibili quando la partizione che contiene il database di
1378     greylisting esaurisce lo spazio a disposizione. Per questo motivo esiste una
1379     versione migliorata che non soffre di questo problema. Come prima cosa verrà
1380     descritta la procedura di attivazione del greylisting inserito direttamente in
1381     Postfix, mentre successivamente verrà descritto come configurare il rimpiazzo
1382     più robusto.
1383     </p>
1384    
1385     <note>
1386     Esistono altri server di greylisting per Postfix (come <uri
1387     link="http://www.gasmi.net/gld.html">Gld</uri>, presente in Portage, e <uri
1388     link="http://sqlgrey.sourceforge.net/">SQLgrey</uri>). Alcuni di essi supportano
1389     anche i database come backend, il whitelisting automatico ed altre funzioni
1390     interessanti.
1391     </note>
1392    
1393     </body>
1394     </section>
1395     <section>
1396     <title>Semplice greylisting</title>
1397     <body>
1398    
1399     <note>
1400     Se si vuole usare il greylisting migliorato, è possibile saltare questa sezione.
1401     </note>
1402    
1403     <p>
1404     È necessario utilizzare il file <path>greylist.pl</path>, ma sfortunatamente
1405     l'ebuild non lo installa in modo predefinito.
1406     </p>
1407    
1408     <pre caption="Ottenere greylist.pl">
1409     # <i>cp /usr/portage/distfiles/postfix-versione.tar.gz /root/</i>
1410     # <i>tar xzf postfix-versione.tar.gz</i>
1411     # <i>cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/</i>
1412     </pre>
1413    
1414     <p>
1415     Adesso che il file è al suo posto, è necessario creare la directory che conterrà
1416     il database di greylisting:
1417     </p>
1418    
1419     <pre caption="Creare la directory per il database di greylisting">
1420     # <i>mkdir /var/mta</i>
1421     # <i>chown nobody /var/mta</i>
1422     </pre>
1423    
1424     <warn>
1425     Non creare la directory per il database di greylisting in una partizione che
1426     potrebbe esaurire lo spazio a disposizione. Mentre postfix può evitare problemi
1427     alla coda delle e-mail ed alle mail box quando lo spazio si esaurisce, il
1428     database di greylisting non è capace di farlo. Se il file diviene corrotto, non
1429     sarà più possibile ricevere alcuna e-mail fino a quando il file non viene
1430     cancellato manualmente.
1431     </warn>
1432    
1433     </body>
1434     </section>
1435     <section>
1436     <title>Configurare il greylisting</title>
1437     <body>
1438    
1439     <p>
1440     Adesso che tutto è pronto, bisogna aggiungere alcune informazioni alla
1441     configurazione di postfix. Prima di tutto è necessario modificare
1442     <path>master.cf</path>:
1443     </p>
1444    
1445     <pre caption="Modicare master.cf per usare il greylisting">
1446     policy-greylist unix - n n - - spawn
1447     user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl
1448     </pre>
1449    
1450     <p>
1451     Il demone di spawn di postfix normalmente uccide i propri processi figli dopo
1452     1000 secondi, ma questo limite è troppo breve per il processo di greylisting.
1453     È pertanto necessario aumentare questo valore in <path>main.cf</path>:
1454     </p>
1455    
1456     <pre caption="Modificare main.cf per usare il greylisting">
1457     policy-greylist_time_limit = 3600
1458     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1459     check_sender_access hash:/etc/postfix/sender_access
1460     <comment>(Successivamente aggiungere:)</comment>
1461     restriction_classes = greylist
1462     greylist = check_policy_service unix:private/policy-greylist
1463     </pre>
1464    
1465     <warn>
1466     Specificare <c>check_sender_access</c> DOPO <c>reject_unauth_destination</c>
1467     altrimenti il sistema potrebbe diventare un relay di posta aperto a chiunque.
1468     </warn>
1469    
1470     <note>
1471     Il database di greylisting si riempie velocemente con indirizzi fasulli.
1472     Proteggere le ricerche di greylist con altre restrizioni (che rifiutano mittenti
1473     o destinatari sconosciuti) aiuta in questa situazione.
1474     </note>
1475    
1476     <p>
1477     Non si vuole usare il greylisting per tutti i domini, ma solo per quelli più
1478     comunemente usati dagli spammer. Dopo tutto, il greylisting ritarda la consegna
1479     dei messaggi di posta, pertanto è desiderabile non rallentare l'arrivo di e-mail
1480     da domini che non siano comunemente sfruttati. Una lista dei domini più
1481     comunemente usati dagli spammer come indirizzo del mittente può essere trovata
1482     <uri
1483     link="http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in">online</uri>.
1484     Aggiungere i domini dai quali si riceve spam a
1485     <path>/etc/postfix/sender_access</path>:
1486     </p>
1487    
1488     <pre caption="Formato di sender_access">
1489     aol.com greylist
1490     hotmail.com greylist
1491     bigfoot.com greylist
1492     </pre>
1493    
1494     <p>
1495     Per una lista più estesa:
1496     </p>
1497    
1498     <pre caption="Aggiungere tutti i domini a sender_access">
1499     # <i>wget http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in</i>
1500     <!-- ndt: Useless Use Of Cat ;) -->
1501     # <i>sort sender-domain-validate.in | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access</i>
1502     </pre>
1503    
1504     <p>
1505     Adesso è necessario inizializzare il database di <path>sender_access</path>:
1506     </p>
1507    
1508     <pre caption="Inizializzare sender_access">
1509     # <i>postmap /etc/postfix/sender_access</i>
1510     </pre>
1511    
1512     <p>
1513     La configurazione della versione semplice del greylisting è completa.
1514     </p>
1515    
1516     <warn>
1517     Questa procedura è stata testata su una macchina che gestiva migliaia di e-mail
1518     al giorno ed il risultato è stato un disastro completo. Dopo quattro giorni la
1519     macchina era sovraccaricata da centinaia di vecchi processi <c>greylist.pl</c>.
1520     </warn>
1521    
1522     </body>
1523     </section>
1524     <section>
1525     <title>Configurare il greylisting migliorato con postgrey</title>
1526     <body>
1527    
1528     <p>
1529     Installare il server di greylisting con un semplice <c>emerge</c>:
1530     </p>
1531    
1532     <pre caption="Installare postgrey">
1533     # <i>emerge postgrey</i>
1534     </pre>
1535    
1536     <p>
1537     Dopo aver installato <c>postgrey</c> bisogna modificare <path>main.cf</path>.
1538     Le modifiche sono molto simili a quelle eseguite in occasione del precedente
1539     metodo di greylisting.
1540     </p>
1541    
1542     <pre caption="Modificare main.cf per usare greylisting">
1543     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1544     check_sender_access hash:/etc/postfix/sender_access
1545     <comment>(Successivamente aggiungere:)</comment>
1546     smtpd_restriction_classes = greylist
1547     greylist = check_policy_service inet:127.0.0.1:10030
1548     </pre>
1549    
1550     <note>
1551     Il SMTPD_POLICY_README di Postfix utilizza solo <c>restriction_classes</c>, ma
1552     questo non sembra funzionare.
1553     </note>
1554    
1555     <note>
1556     Se si vuole fare il greylisting di tutta la posta, aggiungere invece
1557     <c>check_policy_service inet:127.0.0.1:10030</c>.
1558     </note>
1559    
1560     <p>
1561     Infine, lanciare il server e aggiungerlo al runlevel adatto.
1562     </p>
1563    
1564     <pre caption="Lanciare postgrey">
1565     # <i>/etc/init.d/postgrey start</i>
1566     # <i>rc-update add postgrey default</i>
1567     </pre>
1568    
1569     <note>
1570     Alcune persone vogliono che i messaggi di posta siano inviati velocemente ed in
1571     questo caso il greylisting peggiora le prestazioni. In ogni caso, se si utilizza
1572     un mail server di backup è possibile impostare il greylisting su di esso con
1573     relativa sicurezza. La limitata esperienza dell'autore di questa guida
1574     suggerisce che in questo modo è possibile fermare circa un terzo dello spam.
1575     </note>
1576    
1577     </body>
1578     </section>
1579     </chapter>
1580    
1581     <chapter>
1582     <title>SPF (Sender Policy Framework)</title>
1583     <section>
1584     <title>Introduzione</title>
1585     <body>
1586    
1587     <p>
1588     Un SPF (che in inglese significa approssimativamente <e>Framework di Politiche
1589     di Invio</e>) permette ai proprietari di un dominio di dichiarare nei propri
1590     record DNS quali indirizzi IP sono autorizzati a mandare messaggi di posta dal
1591     dominio stesso. Questo impedisce agli spammer di falsificare il
1592     <c>Return-Path</c>.
1593     </p>
1594    
1595     <note>
1596     Se il proprio ISP blocca tutto il traffico in ingresso sulla porta 25 e
1597     reindirizza tutti i messaggi attraverso il proprio mail server, l'SPF non
1598     funzionerà.
1599     </note>
1600    
1601     <p>
1602     Come prima cosa, i proprietari del dominio devono creare uno speciale record
1603     DNS, chiamato <c>TXT</c>. Un MTA con SPF abilitato può allora leggerlo e se una
1604     e-mail è stata originata da un server che non è descritto nel record, il
1605     messaggio può essere scartato. Ecco un esempio:
1606     </p>
1607    
1608     <pre caption="Record SPF di esempio">
1609     example.com. IN TXT "v=spf1 a mx ptr -all"
1610     </pre>
1611    
1612     <p>
1613     Il parametro <c>-all</c> suggerisce di rifiutare in modo predefinito tutta la
1614     posta, ad eccetto di quella ricevuta dai record DNS <c>A</c>(<c>a</c>),
1615     <c>MX</c>(<c>mx</c>) e <c>PTR</c>(<c>ptr</c>). Per ulteriori informazioni
1616     consultare le risorse elencate in basso.
1617     </p>
1618    
1619     <note>
1620     Se è necessario inoltrare le mail in uscita attraverso il proprio ISP,
1621     aggiungere: <c>include:proprioisp.com</c>.
1622     </note>
1623    
1624     <p>
1625     Spamassassin 3.0 ha il supporto per SPF, ma non è abilitato in modo predefinito;
1626     il nuovo demone delle politiche di Postfix, invece, supporta SPF, pertanto la
1627     guida seguirà l'installazione di quest'ultimo.
1628     </p>
1629    
1630     <note>
1631     Se si vuole usare SPF con Spamassassin eseguire semplicemente
1632     <c>emerge&nbsp;dev-perl/Mail-SPF-Query</c> e riavviare Amavisd-new.
1633     </note>
1634    
1635     </body>
1636     </section>
1637     <section>
1638     <title>Preparativi</title>
1639     <body>
1640    
1641     <p>
1642     Prima di tutto bisogna installare Postfix 2.1 come descritto in precedenza. Dopo
1643     aver ottenuto i sorgenti, installare <path>spf.pl</path> con:
1644     </p>
1645    
1646     <pre caption="Installare spf.pl">
1647     # <i>cp postfix-&lt;version&gt;/examples/smtpd-policy/spf.pl /usr/local/bin/</i>
1648     </pre>
1649    
1650     <note>
1651     Il file <path>spf.pl</path> distribuito con Postfix soffre di qualche bug
1652     sporadico, pertanto trovare al suo interno e decommentare la linea:
1653     <c>push @HANDLERS, "sender_permitted_from"; use Mail::SPF::Query;</c>.
1654     Inoltre, intorno alla linea 199 sostituire <c>comemnt</c> con <c>comment</c>. In
1655     alternativa è possibile scaricare una <uri
1656     link="http://spf.pobox.com/postfix-policyd.txt">versione di sviluppo</uri>.
1657     </note>
1658    
1659     <p>
1660     Questo script in Perl necessita di alcune librerie che sono in Portage, quindi
1661     semplici da ottenere:
1662     </p>
1663    
1664     <pre caption="Installare le librerie Perl richieste">
1665     # <i>emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long</i>
1666     </pre>
1667    
1668     <p>
1669     Adesso che tutto è al suo posto, è necessario configurare Postfix per utilizzare
1670     questa nuova politica.
1671     </p>
1672    
1673     <pre caption="Modificare master.cf per usare SPF">
1674     policy-spf unix - n n - - spawn
1675     user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl
1676     </pre>
1677    
1678     <p>
1679     Aggiungere il controllo per SPF in <path>main.cf</path>. Se correttamente
1680     configurato, l'SPF non dovrebbe fare danni, pertanto è preferibile abilitarlo
1681     per tutti i domini:
1682     </p>
1683    
1684     <pre caption="Modificare main.cf per utilizzare SPF">
1685     <comment>(Sotto smtpd_recipient_restrictions aggiungere:)</comment>
1686     check_policy_service unix:private/policy-spf
1687     </pre>
1688    
1689     <note>
1690     Se si verificano problemi con SPF, ad esempio durante l'uso di <c>fetchmail</c>,
1691     potrebbe essere necessario abilitare l'SPF soltanto per alcuni domini.
1692     </note>
1693    
1694     </body>
1695     </section>
1696     </chapter>
1697    
1698     <chapter>
1699     <title>Configurare amavisd-new per l'uso di MySQL</title>
1700     <section>
1701     <title>Configurare MySQL</title>
1702     <body>
1703    
1704     <note>
1705     Questa procedura non è stata testata per versioni di amavisd-new superiori alla
1706     2.2. Ogni commento è ben accetto :)
1707     </note>
1708    
1709     <p>
1710     Per domini di grandi dimensioni i valori predefinit configurabili in
1711     <path>amavisd.conf</path> potrebbero non essere adatti a tutti gli utenti.
1712     Configurando amavisd-new con supporto MySQL si possono configurare impostazioni
1713     individuali per utenti o gruppi di utenti.
1714     </p>
1715    
1716     <pre caption="Creare database ed utente MySQL">
1717     # <i>mysql -u root -p mysql</i>
1718     Enter password:
1719     Welcome to the MySQL monitor. Commands end with ; or \g.
1720     Your MySQL connection id is 78 to server version: 4.0.18-log
1721    
1722     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
1723     mysql> <i>create database maildb;</i>
1724     mysql> <i>GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'password_segretissima';</i>
1725     mysql> <i>use maildb;</i>
1726     </pre>
1727    
1728     <p>
1729     Adesso che il database è stato creato è necessario creare le tabelle. Copiare e
1730     incollare i seguenti comandi nel prompt di mysql:
1731     </p>
1732    
1733     <pre caption="Layout delle tabelle di MySQL">
1734     CREATE TABLE users (
1735     id int unsigned NOT NULL auto_increment,
1736     priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
1737     policy_id int unsigned NOT NULL DEFAULT '1',
1738     email varchar(255) NOT NULL,
1739     fullname varchar(255) DEFAULT NULL, -- non usato da amavisd-new
1740     local char(1), -- Y/N (campo opzionale, vedere note)
1741     PRIMARY KEY (id),
1742     KEY email (email)
1743     );
1744     CREATE UNIQUE INDEX users_idx_email ON users(email);
1745    
1746     <comment>(-- ogni indirizzo e-mail, esterno o locale, usato come mittente in 'wblist')</comment>
1747     CREATE TABLE mailaddr (
1748     id int unsigned NOT NULL auto_increment,
1749     priority int NOT NULL DEFAULT '7', -- 0 è bassa priorità
1750     email varchar(255) NOT NULL,
1751     PRIMARY KEY (id),
1752     KEY email (email)
1753     );
1754     CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);
1755    
1756     <comment>(-- whitelist per destinatario e/o blacklist,</comment>
1757     <comment>-- mette in relazione mittente e destinatario, 'wb')</comment>
1758     (white or blacklisted sender)
1759     CREATE TABLE wblist (
1760     rid int unsigned NOT NULL, -- destinatario: users.id
1761     sid int unsigned NOT NULL, -- mittente: mailaddr.id
1762     wb char(1) NOT NULL, -- W or Y / B or N / space=neutral
1763     PRIMARY KEY (rid,sid)
1764     );
1765    
1766     CREATE TABLE policy (
1767     id int unsigned NOT NULL auto_increment,
1768     policy_name varchar(32), -- non usato da amavisd-new
1769     virus_lover char(1), -- Y/N
1770     spam_lover char(1), -- Y/N (campo opzionale)
1771     banned_files_lover char(1), -- Y/N (campo opzionale)
1772     bad_header_lover char(1), -- Y/N (campo opzionale)
1773     bypass_virus_checks char(1), -- Y/N
1774     bypass_spam_checks char(1), -- Y/N
1775     bypass_banned_checks char(1), -- Y/N (campo opzionale)
1776     bypass_header_checks char(1), -- Y/N (campo opzionale)
1777     spam_modifies_subj char(1), -- Y/N (campo opzionale)
1778     spam_quarantine_to varchar(64) DEFAULT NULL, -- (campo opzionale)
1779     spam_tag_level float, -- un punteggio alto inserisce le intestazioni spam
1780     spam_tag2_level float DEFAULT NULL, -- un punteggio alto inserisce le
1781     -- intestazioni di 'spam dichiarato'
1782     spam_kill_level float, -- un punteggio alto attiva le azioni evasive:
1783     -- rifiuto/scarto, quarantena, ...
1784     -- (soggetto all'impostazione di final_spam_destiny)
1785     PRIMARY KEY (id)
1786     );
1787     </pre>
1788    
1789     <note>
1790     Se ci sono dei problemi di copia/incolla, copiare il testo altrove e cancellare
1791     i caratteri non necessari.
1792     </note>
1793    
1794     <note>
1795     Le ricerche mirate a trovare un indirizzo e-mail sono eseguite sugli indirizzi
1796     grezzi (rfc2821-unquoted e senza parentesi), ad esempio:
1797     <c>John "Funny" Smith@example.com</c>
1798     </note>
1799    
1800     <note>
1801     Le ricerche sono eseguite seguendo quest'ordine: <c>SQL</c>, <c>LDAP</c>,
1802     <c>hash</c>, <c>ACL</c>, <c>regexp</c>, <c>constant</c>. Il primo risultato
1803     utile (non <c>undef/NULL</c>) interrompe la ricerca.
1804     </note>
1805    
1806     <p>
1807     Se si vuole usare whitelisting o blacklisting bisogna inserire gli indirizzi di
1808     mittente e destinatario in <c>mailaddr</c>; in seguito bisogna impostare una
1809     relazione tra i due in <c>wblist</c> e specificare se si tratta di whitelisting
1810     (<c>W</c>) o blacklisting (<c>B</c>).
1811     </p>
1812    
1813     <p>
1814     Adesso che sono state create le tabelle, inserire un utente ed una politica di
1815     prova:
1816     </p>
1817    
1818     <pre caption="Creare utente e politica di prova">
1819     INSERT INTO users
1820     SET
1821     id =1,
1822     priority =9,
1823     policy_id =1,
1824     email ="johndoe@example.com",
1825     fullname ="John Doe",
1826     local ="Y";
1827    
1828     INSERT INTO policy
1829     SET
1830     id =1,
1831     policy_name ="Test policy 1",
1832     virus_lover ="N",
1833     spam_lover ="N",
1834     banned_files_lover ="N",
1835     bad_header_lover ="N",
1836     bypass_virus_checks ="N",
1837     bypass_spam_checks ="N",
1838     bypass_banned_checks ="N",
1839     bypass_header_checks ="N",
1840     spam_modifies_subj ="N",
1841     spam_quarantine_to =NULL,
1842     spam_tag_level =-50.0,
1843     spam_tag2_level =7.0,
1844     spam_kill_level =10.0;
1845     </pre>
1846    
1847     <note>
1848     Modificare le impostazioni di esempio a seconda del proprio ambiente di
1849     funzionamento.
1850     </note>
1851    
1852     <note>
1853     <c>local</c> dovrebbe essere impostato ad <c>Y</c>, altrimenti la mail non verrà
1854     sottoposta a controllo per spam.
1855     </note>
1856    
1857     <p>
1858     Queste istruzioni inseriscono un utente ed una politica di prova. Modificare
1859     questi esempi per soddisfare le proprie necessità. Una spiegazione più
1860     approfondita della configurazione può essere reperita in
1861     <path>amavisd.conf</path>.
1862     </p>
1863    
1864     </body>
1865     </section>
1866     <section>
1867     <title>Configurare amavisd per usare MySQL</title>
1868     <body>
1869    
1870     <p>
1871     Adesso che MySQL è pronto, è necessario dire ad amavis di usarlo:
1872     </p>
1873    
1874     <pre caption="Modificare amavisd.conf">
1875     @lookup_sql_dsn =
1876     ( ['DBI:mysql:maildb:host1', 'mail', 'password_segretissima'] );
1877    
1878     <comment>(Per chiarezza deommentare l'impostazione predefinita)</comment>
1879     $sql_select_policy = 'SELECT *,users.id FROM users,policy'.
1880     ' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
1881     ' ORDER BY users.priority DESC';
1882    
1883     <comment>(Per ottenere white/blacklisting in base al mittente)</comment>
1884     $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
1885     ' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
1886     ' AND (mailaddr.email IN (%k))'.
1887     ' ORDER BY mailaddr.priority DESC';
1888     </pre>
1889     </body>
1890    
1891     </section>
1892     </chapter>
1893    
1894     <chapter>
1895     <title>Configurare Spamassassin per usare MySQL</title>
1896     <section>
1897     <body>
1898    
1899     <p>
1900     A partire da Spamassassin 3.0 è possibile conservare le informazioni per Bayes
1901     e l'AWL in un database MySQL. Verrà utilizzato proprio MySQL come backend in
1902     quanto esso è in genere più performante degli altri database. Inoltre, usare
1903     MySQL per tutti i dati rende la manutenzione del sistema molto più semplice.
1904     </p>
1905    
1906     <p>
1907     Come prima cosa, creare il nuovo utente MySQL e le tabelle necessarie.
1908     </p>
1909    
1910     <pre caption="Creare utente e database MySQL">
1911     # <i>mysql -u root -p mysql</i>
1912     Enter password:
1913     Welcome to the MySQL monitor. Commands end with ; or \g.
1914     Your MySQL connection id is 78 to server version: 4.0.18-log
1915    
1916     Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
1917     mysql> <i>create database dbname;</i>
1918     mysql> <i>GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'altra_password_segretissima';</i>
1919     mysql> <i>use dbname;</i>
1920     </pre>
1921    
1922     <p>
1923     Adesso che il database è stato creato, verranno aggiunte le tabelle necessarie.
1924     Copiare e incollare questo testo nel prompt di mysql:
1925     </p>
1926    
1927     <pre caption="Layout delle tabelle MySQL">
1928     CREATE TABLE bayes_expire (
1929     id int(11) NOT NULL default '0',
1930     runtime int(11) NOT NULL default '0',
1931     KEY bayes_expire_idx1 (id)
1932     ) TYPE=MyISAM;
1933    
1934     CREATE TABLE bayes_global_vars (
1935     variable varchar(30) NOT NULL default '',
1936     value varchar(200) NOT NULL default '',
1937     PRIMARY KEY (variable)
1938     ) TYPE=MyISAM;
1939    
1940     INSERT INTO bayes_global_vars VALUES ('VERSION','3');
1941    
1942     CREATE TABLE bayes_seen (
1943     id int(11) NOT NULL default '0',
1944     msgid varchar(200) binary NOT NULL default '',
1945     flag char(1) NOT NULL default '',
1946     PRIMARY KEY (id,msgid)
1947     ) TYPE=MyISAM;
1948    
1949     CREATE TABLE bayes_token (
1950     id int(11) NOT NULL default '0',
1951     token char(5) NOT NULL default '',
1952     spam_count int(11) NOT NULL default '0',
1953     ham_count int(11) NOT NULL default '0',
1954     atime int(11) NOT NULL default '0',
1955     PRIMARY KEY (id, token),
1956     INDEX (id, atime)
1957     ) TYPE=MyISAM;
1958    
1959     CREATE TABLE bayes_vars (
1960     id int(11) NOT NULL AUTO_INCREMENT,
1961     username varchar(200) NOT NULL default '',
1962     spam_count int(11) NOT NULL default '0',
1963     ham_count int(11) NOT NULL default '0',
1964     token_count int(11) NOT NULL default '0',
1965     last_expire int(11) NOT NULL default '0',
1966     last_atime_delta int(11) NOT NULL default '0',
1967     last_expire_reduce int(11) NOT NULL default '0',
1968     oldest_token_age int(11) NOT NULL default '2147483647',
1969     newest_token_age int(11) NOT NULL default '0',
1970     PRIMARY KEY (id),
1971     UNIQUE bayes_vars_idx1 (username)
1972     ) TYPE=MyISAM;
1973    
1974     CREATE TABLE awl (
1975     username varchar(100) NOT NULL default '',
1976     email varchar(200) NOT NULL default '',
1977     ip varchar(10) NOT NULL default '',
1978     count int(11) default '0',
1979     totscore float default '0',
1980     PRIMARY KEY (username,email,ip)
1981     ) TYPE=MyISAM;
1982     </pre>
1983    
1984     <impo>
1985     La query con <c>INSERT</c> è necessaria per il corretto funzionamento di
1986     Spamassassin.
1987     </impo>
1988    
1989     <note>
1990     Questi script sono disponibili anche nell'archivio dei file sorgente, con i nomi
1991     <path>awl_mysql.sql</path> e <path>bayes_mysql.sql</path>.
1992     </note>
1993    
1994     </body>
1995     </section>
1996     <section>
1997     <title>Configurare Spamassassin per l'uso del backend MySQL</title>
1998     <body>
1999    
2000     <p>
2001     Se si ha un vecchio database Bayesiano e si vuole conservarlo, seguire queste
2002     istruzioni:
2003     </p>
2004    
2005     <pre caption="Convertire i dati Bayes da un database DBM">
2006     <i>su - amavis</i>
2007     <i>sa-learn --sync</i>
2008     <i>sa-learn --backup > backup.txt</i>
2009     <i>sa-learn --restore backup.txt</i>
2010     </pre>
2011    
2012     <note>
2013     Attenzione che l'ultimo passo dovrebbe essere eseguito solo DOPO l'aggiornamento
2014     del database MySQL e del file <path>secrets.cf</path>.
2015     </note>
2016    
2017     <p>
2018     Dare a Spamassassin le informazioni richieste:
2019     </p>
2020    
2021     <pre caption="Modificare /etc/mail/spamassassin/secrets.cf">
2022     <comment>(Dice a Spamassassin di usare MySQL per il filtro bayesiano)</comment>
2023     bayes_store_module Mail::SpamAssassin::BayesStore::SQL
2024     bayes_sql_dsn DBI:mysql:sa_bayes:localhost:3306
2025     bayes_sql_username dbname
2026     bayes_sql_password altra_password_segretissima
2027    
2028     <comment>(Dice a Spamassassin di usare MySQL per i dati AWL)</comment>
2029     auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
2030     user_awl_dsn DBI:mysql:sa_bayes:localhost:3306
2031     user_awl_sql_username dbname
2032     user_awl_sql_password altra_password_segretissima
2033     </pre>
2034    
2035     <p>
2036     Cambiare i permessi al file per garantire la sicurezza necessaria:
2037     </p>
2038    
2039     <pre caption="Cambiare i permessi">
2040     # <i>chmod 400 /etc/mail/spamassassin/secrets.cf</i>
2041     </pre>
2042    
2043     <note>
2044     Per creare una password molto resistente ad attacchi, usare <c>emerge
2045     app-admin/makepasswd</c> e <c>makepasswd -chars=8</c>
2046     </note>
2047    
2048     <p>
2049     Adesso basta semplicemente eseguire <c>/etc/init.d/amavisd restart</c>.
2050     </p>
2051    
2052     </body>
2053     </section>
2054     </chapter>
2055    
2056     <chapter>
2057     <title>Risoluzione dei problemi</title>
2058     <section>
2059     <title>Amavisd-new</title>
2060     <body>
2061    
2062     <p>
2063     Per risolvere i problemi relativi a Amavisd-new bisogna innanzitutto fermarlo
2064     con <c>/etc/init.d/amavisd stop</c> e poi eseguirlo manualmente in primo piano
2065     con <c>amavisd debug</c>; analizzare eventuali anomalie nell'output.
2066     </p>
2067    
2068     </body>
2069     </section>
2070     <section>
2071     <title>Spamassassin</title>
2072     <body>
2073    
2074     <p>
2075     Per risolvere i problemi con Spamassassin, è possibile filtrare una e-mail con
2076     <c>spamassassin -D &lt; mail</c>. Per assicurarsi che le intestazioni siano
2077     intatte, è possibile spostarla su di un'altra macchina usando IMAP.
2078     </p>
2079    
2080     <note>
2081     Per eseguire queste operazioni è necessario abilitare il login per l'utente
2082     <c>amavis</c>, cambiando la shell di login corrente in <path>/etc/passwd</path>
2083     al valore <path>/bin/bash</path>.
2084     </note>
2085    
2086     <p>
2087     È possibile ottenere le stesse informazioni, in aggiunta ad altri dati, usando
2088     <c>amavisd debug-sa</c>.
2089     </p>
2090    
2091     </body>
2092     </section>
2093     <section>
2094     <title>Come ottenere aiuto</title>
2095     <body>
2096    
2097     <p>
2098     Un buon punto di partenza per ottenere aiuto è la mailing list amavis-user.
2099     Prima di lasciare un messaggio come una domanda, è raccomandabile cercare <uri
2100     link="http://marc.theaimsgroup.com/?l=amavis-user">nell'archivio della
2101     lista</uri>. Se non si trova la risposta alla propria domanda, è possibile
2102     iscriversi alla mailing list da <uri
2103     link="https://lists.sourceforge.net/lists/listinfo/amavis-user">qui</uri>.
2104     </p>
2105    
2106     <p>
2107     Se il problema è specifico per SpamAssassin, DCC, Razor, o Postfix, fare
2108     riferimento alle rispettive pagine elencate in basso.
2109     </p>
2110    
2111     </body>
2112     </section>
2113     </chapter>
2114    
2115     <chapter>
2116     <title>Risorse (in lingua inglese)</title>
2117     <section>
2118     <title>Per ulteriori informazioni</title>
2119     <body>
2120    
2121     <ul>
2122     <li>
2123     <uri link="http://www.ijs.si/software/amavisd/INSTALL">File INSTALL di
2124     Amavisd-new</uri>
2125     </li>
2126     <li>
2127     <uri link="http://www.ijs.si/software/amavisd/README.postfix">File LEGGIMI
2128     di Amavisd-new e Postfix</uri>
2129     </li>
2130     <li>
2131     <uri link="http://www.ijs.si/software/amavisd/amavisd-new-docs.html#pbanks">
2132     Documentazione sulle politiche di Amavisd-new</uri>
2133     </li>
2134     <li>
2135     <uri link="http://spamassassin.apache.org/full/3.0.x/dist/sql/README">File
2136     LEGGIMI per l'uso di SQL con Spamassassin</uri>
2137     </li>
2138     <li><uri link="http://www.greylisting.org">Greylisting</uri></li>
2139     <li>
2140     <uri link="http://www.postfix.org/FILTER_README.html">Postfix
2141     SMTPD_POLICY_README</uri >
2142     </li>
2143     <li>
2144     <uri link="http://www.unixwiz.net/techtips/postfix-HELO.html">Bloccare gli
2145     spammer con Postfix ed i controlli sui comandi HELO</uri>
2146     </li>
2147     <li>
2148     <uri link="http://www.linuxjournal.com/article.php?sid=7327">Introduzione a
2149     SPF</uri>
2150     </li>
2151     <li>
2152     <uri link="http://jimsun.linxnet.com/misc/postfix-anti-UCE.txt">Cheat Sheet
2153     contro l'UCE, per Postfix, a cura di Jim Seymour</uri>
2154     </li>
2155     </ul>
2156    
2157     </body>
2158     </section>
2159     <section>
2160     <title>Risorse generiche</title>
2161     <body>
2162    
2163     <ul>
2164     <li><uri link="http://www.spamassassin.org">Spamassassin</uri></li>
2165     <li><uri link="http://www.ijs.si/software/amavisd/">Amavisd-new</uri></li>
2166     <li>
2167     <uri link="http://www.ijs.si/software/amavisd/amavisd-new-docs.html">
2168     Documentazione per Amavisd-new</uri>
2169     </li>
2170     <li><uri link="http://razor.sourceforge.net/">Vipuls's Razor</uri></li>
2171     <li><uri link="http://pyzor.sourceforge.net/">Pyzor</uri></li>
2172     <li>
2173     <uri link="http://www.rhyolite.com/anti-spam/dcc/">DCC (Distributed Checksum
2174     Clearinghouse)</uri>
2175     </li>
2176     <li>
2177     <uri link="http://www.renaissoft.com/projects/maia/">Maia Mailguard</uri>
2178     </li>
2179     </ul>
2180    
2181     </body>
2182     </section>
2183    
2184     <section>
2185     <title>Altre guide</title>
2186     <body>
2187    
2188     <ul>
2189     <li>
2190     <uri link="http://www.flakshack.com/anti-spam/">Un sicuro gateway di posta
2191     con anti-SPAM, usando OpenBSD, Postfix, Amavisd-new, SpamAssassin, Razor e
2192     DCC</uri>
2193     </li>
2194     </ul>
2195    
2196     </body>
2197     </section>
2198     </chapter>
2199    
2200     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20