/[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 - (show annotations) (download) (as text)
Fri Aug 3 09:54:13 2007 UTC (11 years 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 <?xml version='1.0' encoding='utf-8'?>
2 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
3 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/mailfilter-guide.xml,v 1.1 2007/08/02 14:45:40 scen Exp $ -->
4
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 <author title="Redazione">
15 <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
16 </author>
17 <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 <version>0.14</version>
32 <date>2007-08-02</date>
33
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
821 <p>
822 Volendo utilizzare ulteriori regole fornite dai SARE Ninjas dello <uri
823 link="http://www.rulesemporium.com/">SpamAssassin Rules
824 Emporium</uri>, si può facilmente aggiungerle ed aggiornarle usando il
825 meccanismo <c>sa-update</c> incluso in Spamassassin.
826 </p>
827
828 <p>
829 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 </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