Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > ee32c36958648b268d57f91a9121d023 > files > 80

howto-text-it-9.0-1mdk.noarch.rpm

  Quick&Easy Configuration HOWTO
  Antonio Fragola -<mrshark@linuxfan.com>
  1 Ottobre 2000

  Configurazione rapida e facile di una LinuxBox domestica. - Versione
  1.5

  1.  Introduzione

  1.1.  Copyright

  Copyright (c) 2000 Antonio Fragola. Permission is granted to copy,
  distribute and/or modify this document under the terms of the GNU Free
  Documentation License, Version 1.1 or any later version published by
  the Free Software Foundation; with no Invariant Sections, with no
  Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is
  included in the section entitled "GNU Free Documentation License".



  Copyright (c) 2000 Antonio Fragola. È garantito il permesso di
  copiare, distribuire e/o modificare questo documento seguendo i
  termini della GNU Free Documentation License, Versione 1.1 o ogni
  versione successiva pubblicata dalla Free Software Foundation; senza
  Sezioni non Modificabili, con nessun Testo Copertina, e con nessun
  Testo Retro di Copertina. Una copia della licenza è acclusa nella
  sezione intitolata "GNU Free Documentation License".

  1.2.  Liberatoria

  Questo Howto è una documentazione gratuita, fornita così com'è, senza
  alcuna garanzia, né implicita, né esplicita di adeguatezza ad un uso
  particolare o di commerciabilità. Non mi assumo alcuna responsabilità
  per eventuali danni provocati da quanto segue: leggete, confrontate,
  scopiazzate, ma "nun me citate" in tribunale, che vi do una lisciata
  alla coda con lo schioppo caricato a sale grosso! ;-)

  1.3.  Informazioni

  Salve a tutti i pinguini! Chi l'avrebbe detto che anch'io avrei fatto
  un Howto? Io per primo no, e invece... ;-) Questo Howto nasce per
  aiutare i giovani pinguini con ancora le piumine pre-muta, e vuole
  essere una raccolta di consigli su come configurare in un battibaleno
  una workstation Linux per uso personale.  Verrà spiegato come
  configurare posta elettronica, Dns, firewall, newsgroup, True-type
  fonts, fax, proxy+spamkiller, connessione internet, una rete base e
  quant'altro mi verrà in mente di aggiungere man mano. Il tutto sarà
  improntato alla massima praticità, quindi niente configurazioni
  meticolose e approfondite, verrà fornito quanto basta per essere
  attivi e produttivi SUBITO, mentre per le cose più avanzate si
  rimanderà a pagine man, siti e documenti vari. Il tutto è corredato da
  una serie di script funzionanti (salvo piccole modifiche), ampiamente
  commentati, che potranno anche essere "taglincollati" direttamente nel
  vostro sistema per avere una base immediata di applicazione. Un
  avvertimento: in genere i file che iniziano con un punto "." e
  finiscono con "rc" sono file di configurazione degli utenti e vanno
  quindi nelle loro home-directory. Ogni utente deve avere i propri file
  personali (es.: un file ".fetchmailrc" per ognuno, cambiando i
  rispettivi parametri) e saranno i demoni di sistema ad occuparsi di
  fare tutto il lavoro leggendo i vari file e assecondando le preferenze
  di ognuno. Per i programmi, in genere presuppongo che in una maniera o
  l'altra li abbiate installati (compilandoli dai sorgenti o installando
  un package precompilato), e quindi NON do informazioni su come
  compilarli o installarli. Al massimo mi limito a dire cosa serve in
  determinati casi. Tutte le prove sono state fatte con la distribuzione
  Mandrake 7.0, quindi si adattano anche a Redhat. Un ultimo
  avvertimento: NON fate taglia e incolla dai documenti, perché la
  conversione da sgml potrebbe introdurre caratteri non desiderati o
  errati. TUTTI i file indicati si possono trovare belli e pronti in
  area Download del mio sito, in un pacchetto apposito.

  1.4.  Reperibilità

  Il "Quick&Easy Configuration HOWTO", in formato SGML, TXT, HTML, PS e
  PDF, e gli script in esso riportati, possono essere scaricati da:
  http://mrshark.sourceforge.net, o dal mirror su http://mrshark.cjb.net
  .

  1.5.  Rilasci e revisioni


  ·  17 Marzo 2000 - inizio stesura (bel modo di passare il giorno del
     proprio compleanno... ;-) )

  ·  21 Aprile 2000 - aggiunte le sezioni Mutt e Slrn

  ·  30 Aprile 2000 - aggiunta la sezione Kernel

  ·  5 Maggio 2000 - inserimento della sezione Partizioni, estratta da
     un lavoro precedente

  ·  23 Maggio 2000 - completato lo script di Firewall

  ·  7 Giugno 2000 - completata la sezione di Procmail

  ·  23 Giugno 2000 - aggiunta la breve sezione Varie

  ·  1 Luglio 2000 - primo rilascio ufficiale su Sourceforge

  ·  7 Luglio 2000 - aggiunte le sottosezioni filesystem (Partizioni) e
     l'introduzione del firewall

  ·  14 Luglio 2000 - corretti alcuni errori e aggiunta l'introduzione a
     Slrn

  ·  1 Ottobre 2000 - ampliata la sezione Postfix. Ora per sicurezza
     fetchmail fa smistare la posta tramite procmail richiamandolo da
     postfix e non più da fetchmail. Corretti vari bug e aggiunte alcune
     cose alla sezione Leafnode.

  1.6.  Da fare

  Nelle prossime versioni e revisioni di questo Howto saranno incluse le
  seguenti nuove configurazioni:


  ·  Masterizzazione e MP3

  ·  Configurazione di una piccola rete Lan

  ·  Gestione Fax

  ·  Configurazione X-Window

  ·  Sicurezza di base

  ·  Configurazione dei font TrueType anche con Xfstt e per l'uso con
     Staroffice

  ·  Altro (boh...)


  più alcune revisioni e aggiunte a sezioni già presenti.

  1.7.  Commenti

  Fatemi sapere se qualcosa non va o se avete altri suggerimenti.
  Mandate un'email a: <mrshark@linuxfan.com>

  1.8.  Ringraziementi

  Molto di quello che so, e che c'è qui, lo devo a quello splendido
  gruppo di pinguini che frequenta i newsgroup della gerarchia
  it.comp.os.linux.*, della quale mi onoro di far parte. In puro spirito
  GNU, quello che ho imparato ora lo metto a vostra disposizione,
  sperando che serva a qualcuno. Ciauz ;-)

  (Documento esportato in SGML da LyX 1.1.5fix1, trasformato in HTML,
  TXT e PS con Sgml-Tools 1.0.9. Versione PDF creata con HTMLDOC 1.8.8).

  2.  Partizioni

  2.1.  Introduzione

  Oggi gli hard-disk sono sempre più grandi. Partizionare un hard-disk,
  ossia suddividerlo in più parti, consente in genere di renderne più
  pratica ed efficiente la gestione, e permette di avere più sistemi
  operativi installati sullo stesso pc. In questa parte viene spiegato
  perché e come partizionare, con le istruzioni d'uso del principale
  programma Dos, e i trucchi per evitare di fare danno ;-).  In
  particolare vedremo come creare spazio per installare Linux. Si
  raccomanda di leggere l'intero documento, senza saltare direttamente
  all'uso dei programmi.  (NdA: originariamente questa parte era stata
  scritta per essere pubblicata su un sito italiano di cui non faccio
  nome per evitare problemi, il quale fornisce informazioni su Linux, ma
  che alla fine ha carattere commerciale, e doveva spiegare l'uso di
  vari programmi Dos e Linux per la completa gestione delle partizioni.
  Per svariate ragioni, legate ad alcuni disservizi del sito e per una
  mia decisione di rendere tutto libero e non sottostare ad alcuni
  vincoli imposti, questo progetto è stato abbandonato, e ora una
  versione ridotta al solo uso di Fips e Fsresize fa parte di questo
  Howto).

  2.2.  Nozioni Generali

  2.2.1.  Cosa sono le partizioni

  Le partizioni, come dice la parola stessa, sono una suddivisione dello
  spazio disponibile su un hard-disk (in effetti si hanno dei metodi per
  avere una partizione suddivisa su più hard-disk, tramite i sistemi
  RAID, ma questo esula dallo scopo di questo documento). Esistono 2
  tipi principali di partizioni, quelle primarie e quelle estese. Le
  partizioni primarie sono quelle da cui i sistemi operativi possono
  effettuare il boot e contengono un file-system.  Le informazioni sul
  numero e tipo di partizioni sono contenute nella parte finale dell'MBR
  (Master Boot Record, cilindro 0, lato 0, settore 1 dell'hard-disk), e
  dato lo spazio ridotto, non è possibile avere più di 4 partizioni
  primarie.  Questo limite impone di usare le partizioni estese per
  suddividere ulteriormente l'hard-disk. Può esistere una sola
  partizione estesa su un hard-disk, e se presente il numero di
  partizioni primarie possibili si riduce a 3 (la somma tra primarie ed
  estesa non può superare 4). Le partizioni estese non possono contenere
  file-system, ma servono solo per contenere ulteriori suddivisioni in
  drive (volumi) logici. Tutte queste suddivisioni devono poi essere
  identificate: il Dos utilizza l'identificazione tramite lettere
  dell'alfabeto seguite da ":" (a:, c:, x:, ecc.). Le limitazioni di
  questo approccio sono evidenti, le lettere sono solo 26... (di cui le
  prime 2, a: e b: sono riservate ai dispositivi floppy). Oltretutto,
  l'assegnazione delle lettere è dettata da un astruso algoritmo, per
  cui basta non caricare, ad esempio, il driver del cd per avere le
  lettere seguenti scalate di una, o partizionare un secondo hard-disk
  per vedere completamente scombussolate le lettere delle partizioni del
  primo. Linux e tutti gli Unix in generale usano invece un metodo più
  avanzato per indicare le partizioni, tramite 4 caratteri: i primi due
  indicano il tipo di unità (hd: ide/eide, sd: scsi, fd: floppy), il 3°
  indica il canale cui è collegato il dispositivo fisico (a per il
  primary ide, b il secondary, ecc., e in modo equivalente per gli scsi,
  mentre per i floppy si usano 0 e 1, senza il quarto carattere), e
  l'ultimo carattere è un numero, che indica il numero della partizione
  (da 1 a 4 le primarie e le estese, da 5 in poi i volumi logici).
  Quindi anche se staccate il cd o un hard-disk, perdete solo l'accesso
  a dette unità, ma non vi cambia l'assegnazione per i drive rimasti.
  L'MBR contiene un puntatore ad una delle partizioni primarie, detta
  avviabile. Il firmware del BIOS del pc, dopo il POST (il controllo di
  sistema fatto all'accensione del pc), passa il controllo all'MBR che
  lo passa al settore di boot della partizione avviabile o al kernel del
  sistema operativo.  A causa di un difetto nei BIOS, questi non
  riescono ad accedere a partizioni poste oltre il 1024° cilindro, e ciò
  può creare problemi a Linux, in particolare a LILO, il boot-loader
  usato di solito (quindi se partite da un floppy di avvio o usate
  LOADLIN per partire da DOS, non avete questo problema). Altri problemi
  con Lilo sono che DEVE essere sul primo canale IDE (quindi su hda o
  hdb) o se SCSI su ID 0 o 1. Al problema del 1024° cilindro si può
  ovviare modificando i parametri dell'hard-disk nel BIOS, ad esempio
  dimezzando i cilindri e raddoppiando le testine o i settori, o creando
  una partizione più piccola (di solito compresa tra i 16 e i 32 Mbyte),
  più prossima all'inizio dell'hard-disk, da usare per effettuare il
  mount della directory "/boot", che contiene il kernel e i moduli. Dopo
  che il kernel ha preso il controllo del pc, il 1024° cilindro non
  rappresenta più un problema. In genere, se si crea un'unica partizione
  di grosse dimensioni, più grande di 1024 cilindri, NON è detto che
  /boot sia all'inizio, quindi conviene comunque creargli una partizione
  apposta. In Linux non esistono lettere di unità, come abbiamo detto,
  ed esiste un unico filesystem, in cui sono presenti anche le altre
  periferiche hardware del sistema, in genere sotto "/dev". Se vogliamo
  accedere a un'altra unità (cd, hard-disk, file-system condiviso via
  NFS), dobbiamo effettuarne l'"innesto" (mount), in un punto del file-
  system principale (mount point). Questo permette anche di suddividere
  il file-system principale in più parti (e partizioni), che verranno
  montate durante la procedura di avvio o secondo necessità. ***NOTA
  DELL'ULTIM'ORA***: sembra che dalla versione 0.21.4.2 Lilo non avrà
  più il problema del 1024° cilindro, grazie ad un'apposita patch.

  2.2.2.  Perché (ri)partizionare: partizioni e buonsenso

  Tre sono i motivi principali per cui è bene partizionare un hard-disk:


  1. Organizzazione: permette di suddividere il sistema dalle
     applicazioni e dai dati; si possono installare diversi sistemi
     operativi in differenti partizioni; avere i dati in una partizione
     a sè stante facilità le operazioni di backup e rende più facile la
     (re)installazione di un sistema operativo; è possibile condividere
     in rete una partizione contenente dati, senza dare accesso anche al
     sistema.

  2. Ottimizzazione: si recupera fino al 30/40% di spazio grazie a
     cluster di dimensioni minori; si può mettere il file di swap di
     Windows in una partizione dedicata, riducendo la frammentazione
     (Linux usa addirittura una partizione di swap, più efficiente del
     semplice file, che comunque è possibile usare); se i dati sono
     separati, la deframmentazione delle applicazioni è più rapida; si
     può mantenere una partizione FAT16 per i dati, compatibile con
     molti sistemi operativi (OS/2, Linux, Windows NT).
  3. Sicurezza: si separano i dati da applicazioni e sistema operativo;
     una singola partizione può contenere dati riservati, nascondendola
     con utility apposite o non montandola nel file-system principale;
     diversi sistemi operativi operano in diverse partizioni, riducendo
     i danni derivanti da aree comuni; si può testare software instabile
     con tranquillità; si può mantenere il vecchio sistema operativo
     fino a quando non ci si sente a proprio agio in quello nuovo
     (questo è l'uso preferito dai pinguini ;-) ); è possibile mantenere
     copia dei file di sistema importanti o di un immagine dell'hard-
     disk per un rapido ripristino.

  Quando si vuole installare Linux, nasce la necessità di creargli
  spazio: i "credenti" piallano senza ritegno le eventuali partizioni
  esistenti di altri SO, mentre i nuovi "adepti" di solito fannno
  convivere Linux con Windows finchè non se ne ha più bisogno. Se la
  quantità di dati presenti nella partizione Windows non è elevata
  (diciamo che con un gigabyte libero si può avere tutto, anche
  l'ambiente grafico e di sviluppo, mentre se ci si limita alla sola
  console a caratteri anche mezzo giga basta, avendo comunque molto più
  di quello che si ha col semplice DOS, ad esempio server web, DB,
  email, news e altro), si può cercare di ridurre lo spazio occupato,
  liberandolo alla fine dell'hard-disk, per poi usare lo spazio vuoto
  per le partizioni EXT2 (Linux native, type 0x83), e in genere 64 Mbyte
  per la partizione di swap (Linux swap, type 0x82, si va da un minimo
  utile di 16 a un massimo consentito di 128 per i kernel 2.0.xx, mentre
  i kernel 2.2.xx consentono un massimo di 2 Gbyte). Un esempio tipico
  di partizioni per Linux è il seguente:


  ·  16 Mb per la partizione di boot ("/boot"), tenendosi mooolto larghi
     (anche 5 vanno bene, ma le potenze di 2 fanno più fico ;-) ). Deve
     essere possibilmente la prima ad essere creata, in modo che sia al
     di sotto del 1024° cilindro, per evitare problemi con Lilo (per
     altre informazioni, guardate la sezione di Loadlin).

  ·  Tra i 50 e i 100 Mb per la partizione root ("/", da NON confondere
     con /root, che è la directory home dell'utente amministratore del
     sistema).

  ·  Per la partizione usr ("/usr"), tra i 300 e i 700 Mb se create
     partizioni autonome per /usr/src e /usr/local, altrimenti tra 500
     Mb e 1 Gb , a seconda di ciò che si vuole installare, visto che la
     maggior parte dei programmi finisce qui; in un sistema ormai
     stabilizzato, potrebbe essere anche montata a sola lettura.

  ·  50 Mb minimo per ogni utente che si vuole avere, da montare sotto
     home ("/home").

  Altre partizioni che potrebbero essere utili sono:


  ·  "/usr/local", in cui installare il software "locale" alla macchina
     e che in genere non fa parte direttamente della distribuzione,
     assegnandogli spazio secondo necessità (diciamo tra i 100 e i 200
     Mb, a tenersi larghi); conviene crearla se /usr è a sola lettura.

  ·  "/usr/src", in cui installare i sorgenti, utile in caso si
     ricompili spesso, ad esempio il kernel (anche qui tra i 100 e i 200
     Mb).

  ·  "/tmp", per i file temporanei, in un sistema multiutente con
     traffico intenso sarebbe meglio averla in un'altra partizione, se
     non addirittura hard-disk, mentre in una macchina con pochi utenti
     non serve spostarla (potete anche creare un symlink da /tmp -->
     /var/tmp).

  ·  "/opt", usata da alcuni programmi, potrebbe anche essere un
     semplice link simbolico a /usr o /usr/local.

  ·  "/var", che contiene gli spool di stampa e di email, e i log di
     sistema. Conviene crearla solo su sistemi multiutente o comunque
     server, assegnandole 500 Mb circa. Il crearla comunque velocizza
     molto l'uso intensivo di mail e news.

  2.2.3.  Filesystem

  Il disco durante la formattazione viene suddiviso in settori e tracce:
  possiamo immaginare le tracce come delle corone circolari concentriche
  di disco, mentre i settori sono degli spicchi di disco. Usando settore
  e traccia come coordinate è possibile individuare un blocco, l'unità
  più piccola indirizzabile su un disco. A questo tipo di suddivizione
  fanno eccezione i cdrom e i nastri: entrambi usano un tipo di
  organizzazione sequenziale, i nastri per ovvie ragioni, mentre i cdrom
  perché sono organizzati in una lunghissima spirale (veramente lo sono
  solo i cd-r e cd-rw, per facilitare il percorso del laser, per i cdrom
  normali è leggermente diverso). Nel caso dei cdrom però, la presenza
  di un filesystem (di solito iso9660, magari arricchito con estensioni
  joliet nei sistemi microsoft o rock-ridge nei sistemi linux, per
  gestire nomi e path lunghi, o i permessi) permette di accedervi in
  lettura in maniera diretta e casuale, come sui normali dischi
  magnetici. Un filesystem è un sistema per organizzare i file nei
  dispositivi in modo da avere un accesso diretto, senza il vincolo
  della sequenzialità. Un filesystem quindi contiene file, mantenendo un
  elenco di essi e della loro posizione sul disco, eventualmente (quasi
  sempre...) suddivisi in più settori del dispositivo. L'organizzazione
  è gerarchica, specie in Unix, l'insieme di sistemi operativi di cui
  Linux fa parte: esiste un punto d'innesto principale ("/", root), a
  cui sono collegati altri punti di innesto secondari e così via. Questi
  punti di innesto si chiamano directory, e non necessariamente devono
  risiedere sullo stesso disco o addirittura sullo stesso computer.
  Infatti Unix permette di "montare" (agganciare o innestare) al
  filesystem principale altri filesystem, locali o remoti, che al
  termine devono essere smontati per poter essere eventualmente rimossi,
  ad esempio per floppy e cdrom. L'operazione di "unmount" (smontaggio)
  di un dispositivo effettua inoltre il "sync" (sincronizzazione) del
  suo contenuto, garantendo l'integrità dei dati. Infatti Unix non
  scrive immediatamente le modifiche effettuate, ma aspetta che altri
  processi più importanti rilascino risorse (tempo e % di occupazione
  della cpu) per effettuare il sync.  Le directory possono contenere
  altre directory o file. Esiste quindi un'organizzazione ad albero, e
  per indicare un file se ne specifica il suo "path" (percorso)
  all'interno del filesystem principale, partendo da "/" e separando
  ogni nodo (directory) con il simbolo "/", ad esempio:
  /home/utente/testi/tesi.txt . Il filesystem Unix permette inoltre di
  avere informazioni aggiuntive sulla natura del file, tipo permessi di
  lettura, scrittura ed esecuzione, utente e gruppo proprietario, e
  genere del file in questione. Per sapere il tipo di file, basta dare
  "ls -la" e guardare il primo carattere della riga del file in
  questione, ad esempio:


  ______________________________________________________________________
  ..........
  drwxr-xr-x   2 utente   gruppo   1024 Mar 23   1999   docs
  -rw-------   2 utente   gruppo   1024 Apr 12   2000   testo
  ..........
  ______________________________________________________________________



  elenco dei tipi di file (in base al primo carattere):

  ·  - file regolare

  ·  d directory

  ·  l link (collegamento) simbolico

  ·  b periferica a blocchi con buffer

  ·  c periferica a caratteri con buffer

  ·  u periferica a caratteri senza buffer

  ·  p pipe FIFO

  ·  s socket

  Le periferiche o dispositivi a caratteri permettono di accedervi solo
  un carattere alla volta (es: console, porta seriale, ecc.), mentre
  quelle a blocchi permettono di accedervi solo a blocchi di dimensioni
  stabilite (es: dischi).  Solo quest'ultimo tipo di periferiche o
  dispositivi possono contenere un filesystem.  Da notare che non
  necessariamente, per il solo fatto di essere un dispositivo a blocchi,
  un disco deve contenere un filesystem. Un disco può comunque essere
  usato alla "vecchia maniera" sequenziale: infatti un disco senza
  filesystem è solo una serie di settori a partire dalla prima testina
  del primo cilindro. In questo senso, a volte si utilizzano i dischi
  come se fossero nastri, registrando e rileggendo i dati nella stessa
  sequenza naturale di settori, testine e cilindri. Tipici esempi sono i
  dischetti di avvio con l'immagine del kernel o i dischi di archivio
  multivolume creati da tar. Ricordate che i dischi senza filesystem non
  possono essere montati normalmente, ma necessitano del cosiddetto
  "loopback device", compilato insieme al kernel. Le partizioni di swap
  sono gestite a blocchi, senza filesystem.

  La maggior parte delle distribuzioni Unix e Linux seguono il
  Filesystem Structure Standard ("FSSTND", ora evolutosi in "FHS",
  Filesystem Hierarchy Standard), in modo da garantire una certa
  uniformità o comparibilità.  Il FSSTND parte dall'idea di separare i
  file locali alla macchina da quelli condivisi (in rete locale o
  altro), e quelli a sola lettura da quelli accessibili anche in
  scrittura. Vediamo alcuni punti del FSSTND:


  ·  / - è la directory principale che contiene tutte le altre

  ·  /boot - contiene i file statici usati durante l'avvio, compreso il
     kernel e i file di lilo

  ·  /home - è la directory che contiene quelle personali degli utenti

  ·  /mnt - di solito contiene i punti di innesto dei dispositivi
     rimovibili ("/mnt/floppy", "/mnt/cdrom", "/mnt/zip", ecc.).

  ·  /dev - contiene i file speciali dei dispositivi di sistema, a
     blocchi o a caratteri (ebbene sì, anche i dispositivi fisici sono
     visti come file: mai sentito il detto "In Unix tutto è un file"?).

  ·  /etc - contiene i file di configurazione generali del sistema.
     Eventuali sottodirectory raggruppano file di configurazione
     specifici di qualche programma o servizio, ad esempio "/etc/X11"
     per il sistema grafico, "/etc/ppp" per il demone ppp, "/etc/httpd"
     per apache, ecc. (anzi, /etc /etc ;-) ).

  ·  /lib - contiene le librerie condivise, usate in link dinamico dai
     programmi contenuti in "/bin" e "/usr/bin". "/lib/modules" contiene
     i moduli caricati dinamicamente dal kernel.
  ·  /proc - è il punto d'innesto del filesystem virtuale proc, che
     contiene informazioni varie sul sistema in attività (viene infatti
     generato a runtime dal kernel), oltre a possibili impostazioni da
     applicare ogni volta che si avvia il sistema.

  ·  /sbin - contiene i file principali per l'avvio del sistema e per
     l'amministrazione da parte dell'utente root. I programmi sono
     linkati staticamente, quindi non hanno bisogno di accedere a
     "/lib".

  ·  /bin - contiene i file eseguibili che in genere possono essere
     usati localmente anche dai comuni utenti.

  ·  /usr - contiene i file condivisibili in rete tra più macchine, e
     dovrebbe essere possibile montarla in sola lettura, a sistema ormai
     stabilizzato, sempre nel caso che disponga di una partizione
     separata. Contiene un sotto-filesystem: "/usr/bin" per i file
     eseguibili anche dagli utenti comuni, "/usr/sbin" per quelli
     dell'utente root, "/usr/doc" e "/usr/info" per la documentazione,
     "/usr/man" per le pagine di manuale, "/usr/X11R6" per il sistema
     grafico X11, "/usr/include" per gli header necessari per la
     compilazione di programmi C, "/usr/lib" per le librerie, "/usr/src"
     per i sorgenti (in particolare "/usr/src/linux" per i sorgenti del
     kernel), e "/usr/local" per programmi locali alla macchina, ma
     aggiunti in seguito alla stabilizzazione del sistema.

  ·  /var - contiene i file variabili del sistema (a differenza di
     "/usr", che dovrebbe poter essere montata a sola lettura). Contiene
     le directory di spool del sistema (come "/var/spool/lpd" per la
     stampa, "/var/spool/fax" per i fax, "/var/spool/mail" per la posta,
     "/var/spool/news" per i newsgroup, ecc.), la directory dei log
     (registrazioni delle attività) del sistema ("/var/log/..."), la
     directory contenente i PID dei processi in esecuzione
     ("/var/run/..."), e altro.

  ·  /tmp - contiene i file temporanei generati dagli utenti e dai
     programmi in esecuzione, ed è accessibile in genere in
     lettura/scrittura/esecuzione a tutti gli utenti (può anche essere
     un link simbolico a "/var/tmp").

  2.3.  Prerequisiti generali

  Prima di tutto createvi un dischetto di boot con un minimo di utility
  d'emergenza.  Inserite un floppy da 1.44" vuoto e dal prompt date il
  comando:


  ______________________________________________________________________
  format a:/u/s
  ______________________________________________________________________



  Alla fine copiateci dentro dalla directory c:\windows\command oppure
  c:\dos i file:


  ______________________________________________________________________
  fdisk.exe, format.com e sys.com
  ______________________________________________________________________



  Prima di iniziare (escludiamo naturalmente il ripartizionamento
  distruttivo e il caso di hard-disk nuovo o comunque vuoto, nel cui
  caso si può procedere come esposto nella prima parte), l'hard-disk va
  preparato. Prima di tutto è bene controllare che non ci siano errori
  sul disco, con (in ordine dal programma peggiore al migliore) Chkdsk,
  Scandisk, Ndd (Norton Disk Doctor). I primi due fanno parte del Dos
  (scandisk dalla versione 6, mi sembra), il terzo fa parte delle Norton
  Utilities. DOVETE fare il test della superficie, è per essere sicuri
  che non ci siano settori danneggiati, o almeno che essi vengano
  individuati e annotati nella FAT.

  Poi un bel backup, che male non fa mai, quindi cogliete l'attimo e
  salvatevi le cose importanti (anche nel caso di più partizioni di cui
  una dedicata apposta ai dati, conviene sempre fare un backup su
  floppy, zip o meglio CD-R o CD-RW).

  Ancora, opzionalmente, una bella passata di antivirus non farebbe
  male, l'importante è che lo lanciate da floppy DOPO AVER SPENTO il pc
  (non semplicemente ctrl-alt-canc). Naturalmente l'antivirus DEVE
  essere aggiornato frequentemente e serve a poco installarlo su un pc
  già infetto, per questo lo si deve installare su un pc SICURAMENTE
  sano e crearsi i dischetti di emergenza al più presto (chiaramente se
  aggiornate l'antivirus sul pc dovete ricreare i dischetti).

  Se non vengono segnalati errori, si procede alla deframmentazione.
  ALT!  Credevate di cavarvela così facilmente? Allora non conoscete il
  Dos (e il suo figlio illeggittimo Windows ;-) )! Se avete solo il Dos
  potrebbe (POTREBBE) andarvi anche bene, ma con Windows e' tutto un
  altro paio di maniche. Vediamo i possibili problemi:


  ·  DOVETE disattivare la memoria virtuale, per poi riattivarla dopo
     che la procedura è conclusa. In Windows 9x ciò si fa così: click
     destro su "Risorse del Computer" / "Proprietà" / click sulla
     linguetta "Prestazioni" / click su "Memoria Virtuale" / click su
     "Impostazione manuale della memoria virtuale" / selezione di
     "Disattiva memoria virtuale" / poi premere Invio fino al riavvio.
     In Win 3.x la voce dovrebbe essere nella sezione 386 Enhanched del
     Pannello di Controllo (non uso Win 3.1 da 4 anni, potrei toppare
     ;-) ).

  ·  Naturalmente uscite da qualsiasi ambiente multitasking, DOVETE
     essere in puro e semplice Dos, possibilmente senza Smartdrive o
     altre cache software del disco (date dal prompt un bel "smartdrv
     /c" o equivalente per eseguire il flush della cache).

  ·  Potrebbero essere stati creati dei file nascosti e di sistema
     nell'ultimo settore dell'hard disk, in particolare Mirror (Dos) e
     Image (Norton) lo usano per metterci un puntatore ai file che fanno
     da immagine del vostro hard-disk.  DOVETE cancellarli, tanto
     verranno ricreati la prossima volta che lancerete i rispettivi
     comandi. Per poterli cancellare date dal prompt:


  ______________________________________________________________________
  attrib -r -s -h image.idx" oppure "attrib -r -s -h mirorsav.fil
  ______________________________________________________________________



  e poi cancellateli normalmente.


  ·  Potrebbero esserci altri file nascosti/di sistema: bisogna
     permettere che essi possano essere spostati (ATTENZIONE a quello
     che fate in questa sezione).  Chiudete le finestre (ehm, uscite da
     Windows ;-) ) e dal prompt date i seguenti comandi:


  ______________________________________________________________________
  cd \
  dir /s /b /a:h >>t.bat
  dir /s /b /a:s >>t.bat
  edit t.bat
  ______________________________________________________________________



  IMPORTANTE: prima di procedere, eliminate dal file "t.bat" TUTTE le
  righe che riportano "c:\io.sys" e "c:\msdos.sys" oppure
  "c:\ibmbio.com" e "c:\ibmdos.com" (dovrebbero esserci 2 righe per
  ognuno dei file elencati). Se saltate questo punto e deframmentate, è
  probabile che al riavvio il sistema non parta più (se comunque dovesse
  succedere, se avete creato il disco di avvio come vi ho detto prima
  basta che partiate con quello e diate "a:sys c:" dal prompt).
  Sostituite nel file "t.bat" tutte le occorrenze di "c:\" con "attrib
  -r -s -h c:\", uscite da Edit salvando e lanciate dal prompt il file
  "t.bat". Questo elimina gli attributi che potrebbere creare problemi a
  Defrag.


  ·  Disattivate TUTTE le opzioni di ottimizzazione del programma di
     deframmentazione (in particolare disattivate da Windows 98
     l'opzione "Riorganizza i file dei programmi per un avvio più
     rapido"), perché con la scusa di ottimizzare l'avvio (usando i dati
     contenuti nella directory nascosta "c:\windows\applog") spesso
     vengono lasciati dati nell'ultima parte del disco (esperienza
     personale).  Per Norton Speedisk regolatevi di conseguenza,
     ricordando che le versioni anteriori alla 4 non supportano la
     suddetta directory Applog, quindi con Windows 98 rischiate di
     vedervelo rallentare invece di velocizzare. Dopo aver
     ripartizionato, potrete rieffettuare la deframmentazione
     riattivando le opzioni disattivate.

  ·  Un'ultima nota: conviene deframmentare dalla modalità provvisoria,
     così sarete certi che non ci siano processi in background che
     potrebbero far ripartire Defrag nel caso essi si mettessero in
     attività, o peggio che andassero a scrivere nella zona appena
     deframmentata, o alla fine del disco, vanificando il tutto.

  A questo punto partite in modalità provvisoria e deframmentate,
  finalmente!  Un ultimo consiglio: quando Defrag ha finito il suo
  lavoro, anche se la procedura può sembrare poco ortodossa, conviene
  aspettare una decina di secondi e se la luce dell'hard-disk non da
  segni di vita (non dovrebbe, non essendoci niente in background né
  attiva la memoria virtuale) conviene RESETTARE, invece di chiudere
  Defrag e Sessione per riavviare. Questo perché Windows in fase di
  chiusura potrebbe andare a riscrivere nella zona appena deframmentata
  (esperienza personale). ATTENZIONE: io ho eseguito questa procedura
  più volte senza riscontrare problemi, nemmeno la partenza di Scandisk,
  ma il Reset potrebbe causare danni al file-system esistente se non
  anche all'hard-disk in rari casi. Il sottoscritto non si assume alcuna
  responsabilità per eventuali danni provocati da questa procedura: se
  temete di fare danno chiudete normalmente Windows e incrociate le dita
  (d'altronde, tutta la procedura di mettere mano al file-system è
  pericolosa, quindi...).

  Ancora una cosa: il Dos standard stabilisce che non ci sia più di una
  partizione primaria, anche se nella pratica ciò è tollerato e permette
  di realizzare un sistema multiboot come ho esposto all'inizio.

  2.4.  FIPS



  2.4.1.  Introduzione

  Fips e' un programma molto potente, che permette di ridurre le
  dimensioni delle partizioni primarie FAT (Fips 1.5 e 2.0) e FAT32
  (solo Fips 2.0). Fips riduce lo spazio di una partizione PRIMARIA
  modificando alcuni valori nella Tavola delle Partizioni e nel settore
  di boot, creando nello spazio che rimane vuoto una nuova partizione
  PRIMARIA (NON formattata, quindi se vi serve di nuovo per Dos/Windows,
  dovete formattarla, mentre se vi serve per Linux potete o cambiarle
  l'identificativo con fdisk DI LINUX o eliminarla per poi creare le
  partizioni che servono da Linux, come esposto nella prima parte). Per
  questo Fips NON funziona su partizioni estese, ma solo su quelle
  primarie, e funziona solo se NON avete già raggiunto il limite di 4
  partizioni primarie per hard-disk.  Fips non cambia la dimensione dei
  cluster né il tipo di FAT della partizione originaria, mentre per
  quella nuova i cluster saranno generati in base alla dimensione della
  partizione, come fa usualmente Format, tranne se si ha una FAT32, nel
  cui caso i cluster saranno di 4 kbyte.

  2.4.2.  Prerequisiti all'uso di FIPS

  Preparate il dischetto come spiegato prima e dalla directory dove
  avete scompattato Fips copiateci dentro i file:


  ______________________________________________________________________
  restorrb.exe, fips.exe e errors.txt.
  ______________________________________________________________________



  Leggere tutte le istruzioni generali date in precedenza. ATTENZIONE:
  se usate Stacker/Superstor/DoubleSpace per comprimere una parte del
  vostro hard-disk, o se usate On Track Disk Manager o EZdrive per
  estendere le capacità di riconoscimento degli hard-disk eide da parte
  dei vecchi bios, o ancora nel caso di hard-disk SCSI, leggete il file
  SPECIAL.txt che accompagna Fips e gli altri documenti.

  2.4.3.  Uso di FIPS

  Infilate il floppy preparato prima e riavviate il pc. Al prompt
  lanciate Fips, il quale dopo aver controllato di non essere in
  ambiente multitasking incomincerà a controllare quanti hard-disk ci
  sono nel pc, permettendo di scegliere, poi mostra la tabella delle
  partizioni dell'hard-disk scelto, effettua il controllo del settore
  principale e nel caso di più partizioni primarie, permette di
  scegliere quella su cui operare. Mostra quindi il settore di avvio
  della partizione scelta, fa degli altri controlli e verifica che le
  due copie della FAT siano congruenti, poi verifica lo spazio vuoto
  alla fine della partizione. In ognuno di questi casi, se viene
  riscontrato un errore, Fips esce al prompt fermandosi e segnalando
  l'errore riscontrato. Viene chiesto quindi di salvare lo stato attuale
  della tabella delle partizioni sul floppy, per poter tornare indietro
  in caso di errori. FATELO! Se tutto va bene, viene permesso di
  ridimensionare la partizione in modo visuale, tramite i tasti cursore.
  Quando avete raggiunto una situazione accettabile, premete Invio. Fips
  rifà di nuovo tutti i controlli, vi mostra la nuova tabella delle
  partizioni e vi chiede se volete continuare, premendo "C". Fips rifà
  ancora tutti i controlli (pignolo, eh? ;-) ) e vi chiede se volete
  scrivere la nuova tabella delle partizioni su disco. Se premete "Y"
  essa viene scritta sul disco e ritornate al prompt. Tutto fatto!  Ora
  RIAVVIATE il pc per rendere attivi i cambiamenti e verificate il
  tutto.  NON fate niente sul disco prima di aver riavviato. Se qualcosa
  non vi soddisfa, ripristinate la situazione precedente ripartendo dal
  dischetto su cui avete salvato la tabella delle partizioni (perché
  l'avete fatto, vero? ;-) ) usando "restorrb". Controllate di nuovo la
  vecchia partizione con Scandisk o altro, riavviate il pc per vedere
  che parta come prima. Per usare la partizione sotto Dos o Windows,
  oppure per suddividerla ancora, DOVETE prima formattarla (ATTENZIONE
  alle lettere, sicuramente sono cambiate!). Per usarla sotto Linux,
  usate il suo fdisk per cambiarle l'ID di tipo da FAT a Linux Native o
  Linux Swap, e usate MKFS per creare un file-system EXT2. Dovreste a
  questo punto essere a posto (più o meno, fino a quando la metà oscura
  del vostro hard-disk (Dos/Win) non sarà stata eliminata ;-) ).

  2.5.  FSRESIZE

  Fsresize è un tool per Linux abbastanza recente (attualmente in
  versione 0.08) che permette di modificare le dimensioni delle
  partizioni FAT16 e 32 in modo veloce e senza bisogno di deframmentare
  prima il file-system. Ha quindi grosse potenzialità, ma alcuni pesanti
  difetti: infatti, poichè non può cambiare il tipo di FAT in uso, il
  numero di cluster deve rimanere costante, e in caso di allargamento
  della partizione il numero non può eccedere quello stabilito dalla FAT
  (es.: se anche aveste 4 GB liberi, ma usate FAT16, non potete avere
  una partizione di più di 2 GB). Prima di usarlo, valgono sempre le
  considerazioni fatte in precedenza, fate un dosfsck o una scandisk e
  un bel backup. Esempi d'uso (tratti dalla man page):


  ______________________________________________________________________
  fsresize /dev/hda9 -i
  ______________________________________________________________________



  mostra delle informazioni sulla partizione specificata


  ______________________________________________________________________
  fsresize /dev/hda2 324M --backup=dosc.backup
  ______________________________________________________________________



  esegue il resize della partizione specificata impostandola a 324 MB e
  facendo il backup nel file indicato


  ______________________________________________________________________
  fsresize /dev/hda1 5654k
  ______________________________________________________________________



  esegue il resize della partizione specificata impostandola a 5654 KB
  senza fare il backup


  ______________________________________________________________________
  fsresize /dev/hda3 2545
  ______________________________________________________________________



  esegue il resize della partizione specificata impostandola a 2545 KB
  senza fare il backup (se non si specifica M o m, oppure K o k, il
  default è k, per kilobytes)




  ______________________________________________________________________
  fsresize /dev/hda5 --restore dosd.backup
  ______________________________________________________________________



  ripristina la partizione specificata a partire dal file indicato

  Usate SEMPRE l'opzione --backup, che in caso di errori permette
  tramite --restore di ripristinare il tutto. È possibile che LILO non
  funzioni al riavvio, quindi prima di riavviare date /sbin/lilo da root
  per risistemarlo.

  3.  Loadlin

  In questa sezione spiego come avviare Linux con Loadlin, un programma
  Dos che permette di evitare di installare Lilo da qualsiasi parte,
  utile spesso quando si ha a che fare con multiple (e frequenti)
  installazioni di Windows, che solitamente sovrascrivono l'MBR
  eliminando Lilo. Verrà anche mostrato l'uso di un menu che faciliterà
  la scelta dell'OS, oltre alla gestione di due diversi kernel (per
  esempio uno stabile e uno in prova - duplicate le relative sezioni per
  averne altri). Create una directory (io la chiamo "loadlin", perché in
  "linux" ho installato mulinux, per emergenze) nella vostra partizione
  Windows e copiateci dentro il kernel stabile che usate (da Linux, è
  nella directory /boot), rinominandolo "vmlinuz.old", e l'eventuale
  nuovo kernel in prova, rinominandolo "vmlinuz.new" . Copiateci dentro
  anche loadlin.exe, dalla directory Dosutils presente nel cd della
  vostra distribuzione. Ora create il file c:\loadlin\linuxold.bat come
  segue:


  ______________________________________________________________________
  loadlin.exe @loadlin.old
  ______________________________________________________________________



  e create il file delle impostazioni c:\loadlin\loadlin.old:


  ______________________________________________________________________
  vmlinuz.old
  root=/dev/hdb2
  ro
  vga=extended
  mem=128M
  append="reserve=0x300,64 ether=9,0x300,eth0"
  ______________________________________________________________________



  Il primo rigo è il nome del file del kernel; il secondo (MODIFICATELO
  per il vostro sistema! Altre info nella pagina delle Partizioni) è la
  partizionie di root di linux; il terzo è OBBLIGATORIO per montare il
  filesystem a sola lettura (ci penserà il processo principale init a
  rimontartlo in lettura/scrittura durante l'avvio); il quarto rigo è
  opzionale (a me piace la console 80x50); il quinto permette di
  specificare se avete più di 64 mbyte di RAM, nel caso non vengano
  riconosciuti tutti; l'ultimo rigo serve per comunicare parametri per
  qualche periferica che devono essere passati al kernel (in questo caso
  una scheda di rete NE2000 compatibile ISA). Se avete il secondo kernel
  in prova, create anche il file c:\loadlin\linuxnew.bat come segue:



  ______________________________________________________________________
  loadlin.exe @loadlin.new
  ______________________________________________________________________



  e create il secondo file delle impostazioni c:\loadlin\loadlin.new:


  ______________________________________________________________________
  vmlinuz.new
  root=/dev/hdb2
  ro
  vga=extended
  mem=128M
  append="reserve=0x300,64 ether=9,0x300,eth0"
  ______________________________________________________________________



  Ora modificate il file c:\msdos.sys (PRIMA date: attrib -s -h -r
  c:\msdos.sys) nelle seguenti righe:


  ______________________________________________________________________
  ... altre cose presenti da non toccare
  [Options]
  BootGUI=0
  Logo=0
  ... altre cose presenti da non toccare
  ______________________________________________________________________



  NON cancellate tutte quelle x alla fine, il file deve essere più lungo
  di 1024 byte. Rimettete a posto i permessi con attrib +s +h +r
  c:\msdos.sys.  Ora il file c:\config.sys:


  ______________________________________________________________________
  [Menu]
  menuitem=Win98, Avvia Windows 98...
  menuitem=MSdos, Avvia MS-DOS...
  menuitem=Linux_New, Avvia Linux-New...
  menuitem=Linux_Old, Avvia Linux-Old...
  menudefault=Win98,5
  [Win98]
  DEVICE=C:\WINDOWS\HIMEM.SYS
  DEVICE=C:\WINDOWS\EMM386.EXE NOEMS
  DOS=HIGH,UMB
  [MSdos]
  DEVICE=C:\WINDOWS\HIMEM.SYS
  DEVICE=C:\WINDOWS\EMM386.EXE NOEMS
  DOS=HIGH,UMB
  [Linux_New]
  [Linux_Old]
  ______________________________________________________________________



  Naturalmente prendete tutto quello che già avete nel vostro config.sys
  e copiatelo in entrambe le sezioni Win98 e MSdos (dovrebbero essere
  uguali), al posto di quello che ho messo io. Ultimo file,
  c:\autoexec.bat:


  ______________________________________________________________________
  goto %config%
  :Win98
  rem ... inserite le altre cose presenti nel vostro autoexec.bat
  rem le 4 righe seguenti non servono per linux, ma tornano utili con win ;-)
  deltree /y c:\windows\temp
  md c:\windows\temp
  set tmp=c:\windows\temp
  set temp=c:\windows\temp
  win
  goto end
  :MSdos
  rem ... inserite le altre cose presenti nel vostro autoexec.bat
  rem le 4 righe seguenti non servono per linux, ma tornano utili con win ;-)
  deltree /y c:\windows\temp
  md c:\windows\temp
  set tmp=c:\windows\temp
  set temp=c:\windows\temp
  goto end
  :Linux_New
  call c:\loadlin\linuxnew.bat
  goto end
  :Linux_Old
  call c:\loadlin\linuxold.bat
  goto end
  :end
  ______________________________________________________________________



  Un consiglio: dati i noti disservizi di Windows, se avete 2 o più
  partizioni VFAT, spostate la directory loadlin in un'altra partizione
  e modificate i path (magari copiateci dentro per backup anche i file
  autoexec.bat, config.sys e msdos.sys). Nel caso aggiorniate il kernel,
  ricordate di ricopiare il nuovo file nella directory "loadlin"!!!

  4.  Kernel

  Qui si spiega come compilare e installare un kernel della serie
  stabile 2.2.x. Di solito questo si fa per includere nel kernel delle
  funzionalità non presenti, ad esempio il supporto per alcune schede
  che per motivi di genericità non vengono sempre incluse nei kernel di
  serie delle distribuzioni, oppure per modelli recenti che per forza
  non esistevano all'epoca. Non è un procedimento complicato, ma vanno
  seguiti dei passi stabiliti, per non creare instabilità nel sistema a
  causa del mancato supporto a proprietà basilari, come il supporto al
  filesystem ext2, o ai binari elf, oppure ancora al tipo di disco da
  cui fate il boot. Per sapere quale kernel avete in funzione nel vostro
  PC, usate il comando 'uname -r'. Per sapere qual è l'ultima versione
  di kernel disponibile online, usate il comando 'finger
  @finger.kernel.org'.

  4.1.  Prerequisiti

  4.1.1.  Reperimento

  Il sito principale è ftp.kernel.org, ma esistono i mirror nazionali,
  reperibili come ftp.XX.kernel.org, dove XX è il codice del paese (ad
  esempio "it" per Italia, "de" per Germania, "fr" per Francia, "uk" per
  Inghilterra, e così via). Cercate nella directory
  /pub/linux/kernel/2.2. In genere esistono 2 tipi di file in 2 formati
  di compressione diversi. I file sono del tipo: linux-
  VERSIONE_KERNEL.tar.COMPRESSORE, oppure patch-
  VERSIONE_KERNEL.tar.COMPRESSORE. COMPRESSORE può essere "gz" per file
  compressi con GZIP, o "bz2" per file compressi con BZIP2 (in genere
  più piccoli) I file che iniziano per "linux" contenengono i sorgenti
  del kernel COMPLETO, mentre i file che iniziano per "patch" contengono
  solo le differenze con le versioni precedenti. Quindi, per esempio, ci
  possono essere i file: linux-2.2.14.tar.gz, linux-2.2.14.tar.bz2,
  patch-2.2.14.tar.gz e patch-2.2.14.tar.bz2, insieme in genere a tutte
  le versioni precedenti. Conviene scaricare la versione completa se
  proprio non avete i sorgenti, mentre se avete una versione precedente
  potete scaricare solo i file di differenza, da applicare sui sorgenti
  in vostro possesso per avere alla fine la STESSA IDENTICA versione di
  sorgenti che avreste ottenuto dalla versione completa. Ricordate però
  che dovete scaricare TUTTE le versioni di patch dalla versione in
  vostro possesso fino a quella che volete ottenere (quindi se avete i
  sorgenti completi linux-2.2.11.tar.gz, e volete arrivare alla versione
  2.2.14, dovete scaricare i file patch-2.2.12.tar.gz,
  patch-2.2.13.tar.gz e patch-2.2.14.tar.gz, da applicare al 2.2.11 in
  successione, come indicato in seguito (ATTENZIONE!: le patch delle
  versioni "pre..." non sono incrementali).  Un consiglio: NON usate i
  sorgenti standard forniti dalle distribuzioni se dovete applicarvi
  delle patch, perché in genere sono versioni modificate e le patch
  notando questo fatto non vengono applicate (tipico il caso della
  RedHat), oltre al fatto che non mettono a posto alcuni collegamenti.
  Inoltre cercate di evitare le versioni sperimentali dei kernel
  (2.X.YYY, con X dispari), a meno che non aggiungano il supporto per
  qualche nuovo hardware di cui non potete fare a meno, perché a volte
  non sono completamente stabili (sono sperimentali per questo).

  4.1.2.  Software necessario

  Naturalmente i sorgenti del kernel. Poi i programmi gzip e bzip2, in
  base al tipo di compressione usata per i sorgenti. I pacchetti
  software: "make", "bin86", "glibc-devel", "gcc" (in genere, se viene
  segnalata la mancanza qualche file, fa parte di questi pacchetti,
  quindi installateli tutti). Se volete usare l'interfaccia grafica di
  configurazione in X-Window, naturalmente dovete aver installato e
  configurato bene l'X-server, e poi vi servono anche il pacchetto
  contenente il linguaggio "tcl" e il suo tool grafico "tk".

  4.1.3.  Scompattazione, patch e avvio della configurazione

  Ecco i passi da seguire (tutto ciò che è tra doppi apici è un comando,
  e va dato senza di essi; come esempio si suppone di avere una versione
  2.2.11 e di aggiornare alla versione 2.2.14):


  1. Se non lo siete già, diventate utente root e spostatevi in /usr/src
  ("su root", più la password, poi "cd /usr/src")


  2. Date: "ls -l". Controllate se esiste una riga che contiene 'linux':
  se non esiste, saltate al punto 5; se esiste e il primo carattere
  della riga è d, si tratta di una directory, saltate al punto 4;
  altrimenti se esiste e il primo carattere della riga è l, si tratta di
  un collegamento, continuate col punto 3


  3. Rimuovete il link: "rm -f linux" (in questo modo i vecchi sorgenti
  eventualmente presenti rimarranno nella directory cui puntava il link,
  in genere 'linux-VERSIONE_KERNEL'), e saltate al punto 5


  4. Rinominate la directory: "mv linux linux.old" (in questo modo i
  vecchi sorgenti eventualmente presenti verranno spostati nella
  directory 'linux.old'), e continuate col punto 5


  5. Scompattate i nuovi sorgenti: se il file in vostro possesso finisce
  in '.gz', date "tar xvzf /persorso/del/file/linux-2.2.11.tar.gz",
  mentre se finisce con '.bz2', date "tar xvf
  /persorso/del/file/linux-2.2.11.tar.bz2 --use-compress-program bzip2"


  6. Se avete già l'ultima versione dei sorgenti, saltate al punto 7,
  altrimenti se dovete applicare delle patch per aggiornare i sorgenti
  ad una versione più recente, date i seguenti comandi (TUTTE le patch
  vanno applicate in sequenza):



  ______________________________________________________________________
  cd linux
  gzip -dc /persorso/del/file/patch-2.2.12.gz | patch -p1
  gzip -dc /persorso/del/file/patch-2.2.13.gz | patch -p1
  gzip -dc /persorso/del/file/patch-2.2.14.gz | patch -p1
  cd ..
  ______________________________________________________________________



  nel caso abbiate dei file del tipo 'patch-VERSIONE_KERNEL.bz2',
  sostituite nei comandi precedenti 'gzip' con 'bzip2'


  7. Rinominate la directory ottenuta in base alla versione dei sorgenti
  che avete ottenuto (nell'esempio 2.2.14) e ricreate alcuni
  collegamenti simbolici:


  ______________________________________________________________________
  mv linux linux-2.2.14
  ln -s linux-2.2.14 linux
  rm -rf /usr/src/linux/include/asm /usr/include/asm
  rm -rf /usr/include/linux /usr/include/scsi
  ln -s /usr/src/linux/include/asm-i386/ /usr/src/linux/include/asm
  ln -s /usr/src/linux/include/asm-i386/ /usr/include/asm
  ln -s /usr/src/linux/include/linux/ /usr/include/linux
  ln -s /usr/src/linux/include/scsi/ /usr/include/scsi
  ______________________________________________________________________



  così da portare il tutto in una situazione standard (i sorgenti devono
  essere in '/usr/src/linux/')


  8. Si passa ora alla fase più delicata dell'operazione: scegliere cosa
  includere e cosa no nel kernel. Date "cd linux" e poi "make mrproper"
  per eliminare residui di eventuali vecchie compilazioni (attenzione
  che questo comando cancella il file '.config', che contiene le
  impostazioni date in una precedente compilazione, quindi nel caso
  fatevene una copia). Ora date a vostra scelta uno dei tre comandi
  seguenti, in base al tipo di interfaccia che volete usare (solo quello
  che c'è prima del # !!!):


  ______________________________________________________________________
  make config # (interfaccia a caratteri base)
  make menuconfig # (interfaccia a caratteri con menu)
  make xconfig # (interfaccia grafica - dovete essere in X-Window)
  ______________________________________________________________________




  e passiamo alla configurazione dei parametri.

  4.2.  Parametri

  4.2.1.  Code maturity level options


  ·  Prompt for development and/or incomplete code/drivers: 'y'

  4.2.2.  Processor type and features


  ·  Processor family: selezionate il vostro processore. Nel caso di
     Intel Pentium Pro, Pentium II, Celeron o superiori, oppure Cyrix
     6x86 o Cyrix_mii, scegliete PPro/6x86MX

  ·  Maximum Physical Memory: scegliete 1GB se avete meno di 1 GB, 2GB
     altrimenti

  ·  Math emulation: 'n' ('y' solo se avete un 386 o 486 sx senza
     coprocessore)

  ·  MTRR (Memory Type Range Register) support: 'y', anche se il vostro
     processore non lo supporta

  ·  Symmetric multi-processing support: 'y' solo se avete più
     processori (nello STESSO computer!)

  4.2.3.  Loadable module support


  ·  Enable loadable module support: 'y'

  ·  Set version information on all symbols for modules: 'n'

  ·  Kernel module loader: 'y'

  4.2.4.  General setup


  ·  Networking support: 'y' SEMPRE, serve almeno per il dispositivo di
     loopback.  least need it for loopback interface

  ·  PCI support: 'y', tranne se avete vecchi PC senza bus PCI

  ·  PCI access mode: Any

  ·  PCI quirks: 'y'

  ·  PCI bridge optimization (experimental): 'n'

  ·  Backward-compatible /proc/pci: 'y'

  ·  MCA support: 'n', tranne che per vecchi PC IBM con bus Microchannel

  ·  SGI Visual Workstation support: 'n'

  ·  System V IPC: 'y'

  ·  BSD Process Accounting: 'y'

  ·  Sysctl support: 'y'

  ·  Kernel support for a.out binaries: 'm'


  ·  Kernel support for ELF binaries: 'y'

  ·  Kernel support for MISC binaries: 'm'

  ·  Kernel support for JAVA binaries (obsolete): 'n'

  ·  Parallel port support: 'y' or 'm', a scelta.

  ·  PC-style hardware: 'm'

  ·  Support foreign hardware: 'n'

  ·  Advanced Power Management BIOS support: 'y' solo nei portatili (nei
     PC Desktop potrebbe causare kernel panic e OOPS). Tutte le opzioni
     che seguono sono disponibili solo se questa opzione è 'y'

  ·  Ignore USER SUSPEND: 'n'

  ·  Enable PM at boot time: 'n'

  ·  Make CPU Idle calls when idle: 'n'

  ·  Enable console blanking using APM: 'y'

  ·  Power off on shutdown: 'y'

  ·  Ignore multiple suspend: 'y'

  ·  Ignore multiple suspend/resume cycle: 'y'

  ·  RTC stores time in GMT: 'y' solo se il PC è impostato sull'ora di
     Greenwich invece di quella locale

  ·  Allow interrupts during APM BIOS calls: 'n'

  4.2.5.  Plug and Play support


  ·  Plug and Play support: 'y'

  ·  Auto-probe for parallel devices: 'm' se avete periferiche su porta
     parallela, altrimenti 'n'

  4.2.6.  Block devices


  ·  Normal PC floppy disk support: 'm'

  ·  Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support: 'y' se si
     hanno periferiche IDE

  ·  Use old disk-only driver on primary interface: 'n'

  ·  Include IDE/ATA-2 DISK support: 'y' se avete pariferiche IDE da cui
     volete fare il boot (se avete dischi IDE ma partite da SCSI,
     mettete 'm')

  ·  Include IDE/ATAPI CDROM support: 'm' se avete un CDROM IDE

  ·  Include IDE/ATAPI TAPE support: 'y' o 'm' solo se avete periferiche
     di backup a nastro IDE

  ·  Include IDE/ATAPI FLOPPY support: 'y' o 'm' solo se avete
     periferiche floppy IDE, tipo ZIP


  ·  SCSI emulation support: 'm' se avete un masterizzatore IDE

  ·  CMD640 chipset bugfix/support: 'y' se avete questo chip ('n' se
     avete solo periferiche SCSI)

  ·  CMD640 enhanced support: 'n'

  ·  RZ1000 chipset bugfix/support: 'y' se avete questo chip ('n' se
     avete solo periferiche SCSI)

  ·  Generic PCI IDE chipset support: 'y'

  ·  Generic PCI bus-master DMA support: 'y'

  ·  Boot off-board chipsets first support: 'n'

  ·  Use DMA by default when available: 'y'

  ·  [...VARIE]: attivate le varie opzioni in base al vostro PC (in
     genere, 'n' a tutte)

  ·  Loopback device support: 'm'

  ·  Network block device support: 'n'

  ·  Multiple devices driver support: 'n' a meno che non vogliate
     provare il RAID software (leggete il RAID-HOWTO)

  ·  RAM disk support: 'n'

  ·  XT hard disk support: 'n' -- what, you still have disks like this?
     :)

  ·  Parallel port IDE device support: 'm' se avete qualche periferica
     IDE su porta parallela, tipo CDROM (e selezionate il driver
     opportuno), 'n' altrimenti

  ·  Compaq SMART2 support: 'n'

  4.2.7.  Networking options


  ·  Packet socket: 'm'

  ·  Kernel/User netlink socket: 'y'

  ·  Routing messages: 'n'

  ·  Netlink device emulation: 'm'

  ·  Network firewalls: 'y' se volete abilitare il supporto per il
     firewalling e masquerading

  ·  Socket filtering: 'n'

  ·  UNIX domain sockets: 'y' altrimenti X-window non si avvierà

  ·  TCP/IP networking: 'y'

  ·  IP: multicasting: 'n'

  ·  IP: advanced router: 'y' se volete usare il PC come router o per
     fare il masquerading di una rete locale verso Internet

  ·  [...VARIE]: in genere, 'n' a tutte

  ·  IP: firewalling: 'y' se volete configurare firewall e masquerading.
     Se volete attivare quest'ultimo, DOVETE rispondere 'y' anche a "IP:
     always defragment", "IP: masquerading" e "IP: ICMP masquerading"

  ·  IP: firewall packet netlink device: 'y'

  ·  IP: transparent proxy support: 'y'

  ·  IP: masquerading: 'y' per attivare il masquerading

  ·  IP: ICMP masquerading: 'y' per attivare il masquerading

  ·  IP: masquerading special modules support: 'n'

  ·  IP: optimize as router not host: 'y' per attivare il masquerading e
     il router

  ·  [...VARIE]: in genere, 'n' a tutte

  ·  IP: TCP syncookie support: 'y' per prevenire il D.O.S. da SYN-FLOOD

  ·  IP: Reverse ARP: 'n'

  ·  IP: Allow large windows (not recommended if <16MB of memory): 'y'

  ·  CPU is too slow to handle full bandwidth: 'n', tranne se siete
     connessi a interfacce a larga banda (gigabit Ethernet, FDDI, etc.)

  ·  [...VARIE]: in genere, 'n' a tutte, tranne se dovete collegarvi a
     reti Novell, nel qual caso attivate "The IPX protocol"

  4.2.8.  QoS and/or fair queueing


  ·  QoS and/or fair queueing: 'n' (il resto è disabilitato di
     conseguenza)

  4.2.9.  Telephony Support


  ·  Linux Telephony Support: 'n' (il resto è disabilitato di
     conseguenza)

  4.2.10.  SCSI support


  ·  SCSI support: 'y' se avete uno o più adattatori e periferiche SCSI
     oppure un drive ZIP parallelo o un masterizzatore, 'n' altrimenti.

  ·  SCSI disk support: 'y' (e non 'm') per se fate il boot da un disco
     SCSI, altrimenti non riuscirete ad avviare il sistema!

  ·  SCSI tape support: 'm' se avete periferiche a nastro SCSI

  ·  SCSI CDROM support: 'm' se avete CDROM SCSI

  ·  Enable vendor-specific extensions (for SCSI CDROM): 'y' se avete
     CDROM SCSI Nec, Toshiba o masterizzatori HP

  ·  SCSI generic support: 'm' se avete un masterizzatore, IDE o SCSI

  ·  Probe all LUNs on each SCSI device: 'n'

  ·  Verbose SCSI error reporting (kernel size +=12K): 'n'


  ·  SCSI logging facility: 'n'

  4.2.11.  SCSI low-level drivers


  ·  [...VARIE]: in genere, 'n' a tutte, tranne che per il vostro
     eventuale adattatore SCSI

  ·  IOMEGA parallel port (ppa - older drives): 'm' se avete uno dei
     primi modelli di ZIP parallelo

  ·  IOMEGA parallel port (imm - newer drives): 'm' se avete uno degli
     ultimi modelli di ZIP parallelo

  ·  [...VARIE]: in genere, 'n' a tutte, tranne che per il vostro
     eventuale adattatore SCSI

  4.2.12.  Network device support


  ·  Network device support: 'y' se avete una scheda di rete o per
     collegarvi a Internet

  ·  Dummy net driver support: 'm'

  ·  [...VARIE]: in genere, 'n' a tutte

  ·  PLIP (parallel port) support: 'm' se volete creare una rete con
     cavi paralleli PLIP, altrimenti 'n'

  ·  PPP (point-to-point) support: 'y' o 'm' se volete collegarvi a
     Internet via modem

  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.13.  ARCnet devices


  ·  ARCnet devices: 'n'

  4.2.14.  Ethernet (10 or 100Mbit)


  ·  ETHERNET (10 or 100Mbit): 'y' se avete uno o più adattatori di rete
     Ethernet


  ·  [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello
     di scheda

  4.2.15.  Ethernet (1000 Mbit)


  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.16.  Appletalk devices


  ·  Dovrebbe essere disattivato, altrimenti 'n' a tutte

  4.2.17.  Token ring devices


  ·  [...VARIE]: in genere, 'n' a tutte


  4.2.18.  Wan interfaces


  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.19.  Amateur Radio support


  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.20.  IrDA subsystem support


  ·  IrDA subsystem support: 'y' o 'm' se avete una porta a infrarossi
     (tipicamente i portatili)

  ·  IrLAN protocol: 'y' o 'm' se avete abilitato IrDA e avete un
     sistema di emulazione di rete Ethernet

  ·  IrCOMM protocol: 'y' o 'm' se avete abilitato IrDA e avete un
     sistema di emulazione di porta seriale

  ·  IrLPT protocol: 'y' o 'm' se avete abilitato IrDA e avete un
     sistema di emulazione di porta parallela, e abilitate il supporto
     client o server

  ·  IrDA protocol options: 'y'

  ·  Cache last LSAP: 'y'

  ·  Fast RRs: 'n' (guardate l'help)

  ·  Debug information; 'n'

  ·  IrLAP compression: 'n'

  4.2.21.  Infrared-port device drivers


  ·  IrTTY (uses Linux serial driver): 'y' o 'm'

  ·  IrPORT (IrDA serial driver): 'y' o 'm'

  ·  [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello
     di chip

  4.2.22.  ISDN subsystem


  ·  ISDN support: 'y' se avete un adattatore ISDN interno

  ·  Support synchronous PPP: 'y' se vi connettete a Internet

  ·  Use VJ-compression with synchronous PPP: chiedete al provider se è
     supportata

  ·  Support generic MP (RFC 1717): 'n' (guardate l'help)

  ·  Support audio via ISDN: 'n' (guardate l'help)

  ·  Support ISDN diversion services: 'n' (guardate l'help) e nel caso
     abilitate "Support AT-FAX Class 2 commands"

  ·  [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello
     di scheda

  4.2.23.  Old CD-ROM drivers (not SCSI, not IDE)


  ·  Old CD-ROM drivers (not SCSI, not IDE): 'n', tranne che per vecchi
     modelli di CDROM con interfaccia proprietaria

  4.2.24.  Character devices


  ·  Virtual terminal: 'y'

  ·  Support for console on virtual terminal: 'y'

  ·  Standard/generic (dumb) serial support: 'y'

  ·  Support for console on serial port: 'n'

  ·  Extended dumb serial driver options: 'n'

  ·  Non-standard serial port support: 'n'

  ·  Unix98 PTY support: 'y' e lasciate il valore "Maximum number of
     Unix98 PTYs in use (0-2048)" al default, 256

  ·  Parallel printer support: 'm' se avete una stampante parallelaif
     you have a parallel port printer

  ·  Support IEEE1284 status readback: 'y'

  ·  Mouse Support (not serial mice): 'y' in genere, ma guardate l'help
     e attenti ai laptop. Se avete un mouse seriale, scegliete 'n'

  ·  QIC-02 tape support: 'y' se avete un sistema di backup a nastro non
     SCSI (esclusi quelli su controller floppy, altre informazioni nel
     seguito)

  ·  Watchdog Timer Support: 'n'

  ·  /dev/nvram support: 'n'

  ·  Enhanced Real Time Clock Support: 'y'

  ·  Double Talk PC internal speech card support: 'n'

  4.2.25.  Mice


  ·  [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello
     di mouse (esclusi i seriali, guardate sopra)

  4.2.26.  Joysticks


  ·  [...VARIE]: in genere, 'n' a tutte tranne che se volete il supporto
     per i joystick, e sceglietene il modello

  4.2.27.  Watchdog Cards


  ·  Dovrebbe essere disattivato, altrimenti 'n' a tutte

  4.2.28.  Video For Linux


  ·  [...VARIE]: in genere, 'n' a tutte tranne che se volete il supporto
     per una scheda di acquisizione video, radio o Quickcam, e
     sceglietene il modello

  4.2.29.  Ftape, the floppy tape device driver


  ·  Ftape (QIC-80/Travan) support: 'y' se avete un drive a nastro
     connesso al controller dei floppy disk

  4.2.30.  Filesystems


  ·  Quota support: 'n' tranne che se volete stabilire delle quote di
     disco per gli utenti (in genere sui server)

  ·  Kernel automounter support: 'n' tranne se volete che i device
     vengano montati in automatico

  ·  ADFS filesystem support (read only) (EXPERIMENTAL): 'n' tranne se
     volete accedere a filesystem Acorn

  ·  Amiga FFS filesystem support: 'n' tranne se volete accedere a
     filesystem Amiga

  ·  Apple Macintosh filesystem support (experimental): 'n' tranne se
     volete accedere a filesystem Macintosh

  ·  DOS FAT fs support: 'y' or 'm' per poter accedere a dischi o
     partizioni MS-DOS/Windows da Linux

  ·  MSDOS fs support: 'm'

  ·  UMSDOS: Unix-like filesystem on top of standard MSDOS filesystem:
     'n'

  ·  VFAT (Windows-95) fs support: 'm' (comprende il supporto a FAT32)

  ·  ISO 9660 CDROM filesystem support: 'm'

  ·  Microsoft Joliet CDROM extensions: 'y'

  ·  Minix fs support: 'n'

  ·  NTFS filesystem support (read only): 'n' tranne se volete accedere
     a filesystem Windows NT (il supporto in scrittura è PERICOLOSO)

  ·  OS/2 HPFS filesystem support (read only): 'n' tranne se volete
     accedere a filesystem OS/2

  ·  /proc filesystem support: 'y'

  ·  /dev/pts filesystem for Unix98 PTYs: 'y'

  ·  QNX filesystem support (EXPERIMENTAL): 'n' tranne se volete
     accedere a filesystem QNX

  ·  Second extended fs support: 'y'

  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.31.  Network File Systems


  ·  Coda filesystem support (advanced network fs): 'n'

  ·  NFS filesystem support: 'y' se il vostro PC è un client NFS

  ·  NFS server support: 'y' se il vostro PC è un server NFS, e nel caso
     lasciate a 'n' "Emulate SUN NFS server"

  ·  SMB filesystem support (to mount WfW shares etc.): 'y' se volete
     montare partizioni di rete da server Windows (9x o NT). NON serve
     per creare un server Samba (per questo serve appunto Samba), ma
     solo per accedere ad altre partizioni

  ·  NCP filesystem support (to mount NetWare volumes): 'y' se volete
     montare partizioni di rete da server Novel NetWare, altrimenti 'n'

  4.2.32.  Partition Types


  ·  [...VARIE]: in genere, 'n' a tutte

  4.2.33.  Native Language Support


  ·  [...VARIE]: in genere, 'n' a tutte tranne a quelle seguenti:

  ·  Codepage 437 (United States, Canada): 'm'

  ·  Codepage 850 (Europe): 'm'

  ·  NLS ISO 8859-1: 'm'

  ·  NLS ISO 8859-15: 'm'

  4.2.34.  Console drivers


  ·  [...VARIE]: in genere, 'n' a tutte tranne a quelle seguenti:

  ·  VGA text console: 'y'

  ·  Video mode selection support: 'y' se volete usare il framebuffer
     (per accedere alle schede video VESA non supportate altrimenti e
     per avere un pinguino al boot ;-) ). Serve comunque un X-Server

  ·  Support for frame buffer devices (EXPERIMENTAL): 'y' se volete
     attivare il framebuffer

  ·  VESA VGA graphics console: 'y' se volete attivare il framebuffer

  4.2.35.  Sound


  ·  [...VARIE]: in genere, 'n' a tuttetranne a quelle seguenti:

  ·  Sound card support: 'm' se avete una scheda audio, e selezionate il
     driver opportuno

  4.2.36.  Additional low level sound drivers


  ·  [...VARIE]: in genere, 'n' a tutte, o selezionate il driver
     opportuno

  4.2.37.  Kernel hacking


  ·  Magic SysRq key: 'n'



  4.3.  Compilazione e installazione

  Fatto tutto questo, salvate con l'opzione apposita, incrociate le dita
  e date:


  ______________________________________________________________________
  make dep && make clean && make bzImage && make modules
  ______________________________________________________________________



  uscite e andate a farvi un caffè o una lunga passeggiata (con un
  processore a 200 MHz servono in genere una quindicina di minuti,
  regolatevi!) Non è come aspettare un figlio, ma la prima volta ci si
  ritrova con le unghie completamente rosicchiate ;-). Se tutto è andato
  bene, il vostro nuovo bambino... ehm, kernel, è contenuto nel file
  '/usr/src/linux/arch/i386/boot/bzImage'. Complimenti!  Ora bisogna
  installare il tutto. Per prima cosa i moduli. Se avete ricompilato la
  stessa versione di kernel che state già usando, dovete spostare la
  directory con la versione precedente dei moduli, prima di installarli
  (se avete compilato una versione diversa da quella in uso, potete
  saltare il primo dei due comandi seguenti):


  ______________________________________________________________________
  mv /lib/modules/VERSIONE_KERNEL /lib/modules/VERSIONE_KERNEL.old
  make modules_install
  ______________________________________________________________________



  Fatto questo, controllate se nella directory "/boot" esistono i
  seguenti file:


  ______________________________________________________________________
  ls -l /boot/System.map /boot/vmlinuz
  ______________________________________________________________________



  come prima, se il primo carattere è una 'l' si tratta di collegamenti
  (rimuoveteli con rm -f /boot/...), mentre se è '-' si tratta di file
  (rinominateli con mv -f /boot/NOMEFILE /boot/NOMEFILE-
  VERSIONE_KERNEL_PRECEDENTE). Ora copiate in "/boot" il kernel e la
  System-map aggiornate e ricreate i collegamenti (l'esempio si
  riferisce sempre al kernel 2.2.14):


  ______________________________________________________________________
  cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.14
  ln -s /boot/vmlinuz-2.2.14 /boot/vmlinuz
  cp /usr/src/linux/System.map /boot/System.map-2.2.14
  ln -s /boot/System.map-2.2.14 /boot/System.map
  ______________________________________________________________________



  Se usate 'loadlin', copiate il nuovo kernel nella sua directory
  (guardate la pagina apposita di questo howto). Mentre se usate 'lilo',
  modificate il file '/etc/lilo.conf' in modo da avere sia il vecchio
  kernel che il nuovo (fino a quando non sarete sicuri che quest'ultimo
  funzioni perfettamente - la parte aggiunta per il nuovo kernel è
  quella tra le due righe di ###..., e qualcosa potrebbe essere
  diverso):
  ______________________________________________________________________
  boot = /dev/hda
  delay = 5
  vga = normal
  root = /dev/hdb2   # correggere con la vostra partizione di root!
  read-only
  image = /boot/vmlinuz.old    # controllate o rinominate il vecchio kernel di conseguenza
      label = oldlinux
  #################################
  image = /boot/vmlinuz   # questo è il nuovo kernel
      label = linux
  #################################
  other = /dev/hda1
      label = dos
      table = /dev/hda
  ______________________________________________________________________



  e ridate '/sbin/lilo -v' per rimetterlo a posto (man lilo, man
  lilo.conf o lilo-howto per altre informazioni). Se volete rimuovere
  lilo, usate il comando "fdisk /mbr" dal DOS, oppure 'lilo -U' da
  Linux. Per la stampante, controllate che il file /etc/conf.modules
  contenga le righe:


  ______________________________________________________________________
  alias parport_lowlevel parport_pc
  options parport_pc io=0x378, 0x278 irq=7 auto
  ______________________________________________________________________



  Se volete provare il kernel prima di usarlo definitivamene,
  tralasciate per ora tutta la parte dopo ' make modules_install' e
  copiatelo su un dischetto che userete come boot (il floppy NON va
  montato per eseguire queste operazioni!!!):


  ______________________________________________________________________
  cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.14
  cp /usr/src/linux/vmlinuz-2.2.14 /dev/fd0
  rdev /dev/fd0 /dev/hda2
  rdev -R /dev/fd0 1
  ______________________________________________________________________



  Sostituite a /dev/hda2 la vostra partizione di root ('/')!!! Questo è
  tutto!

  Nota per Debian: dopo aver ricompilato, potete ottenere un pacchetto
  .deb contenente kernel e moduli e che aggiorna anche in automatico
  lilo, col seguente comando dato da dentro la dir /usr/src/linux/ :


  ______________________________________________________________________
  make-kpkg --revision pingu.0 kernel_image
  ______________________________________________________________________



  dove potete sostituire pingu.0 con quello che volete.



  5.  Internet

  In questa sezione viene spiegato come connettersi a Internet da shell,
  senza l'uso di tool grafici, usando l'autenticazione PAP, ormai
  fornita da tutti i provider. Con i computer moderni, veloci e stabili
  anche sotto X-window, può sembrare un controsenso, ma se vi abituerete
  a fare alcune cose da shell vedrete che sarete molto più produttivi e
  veloci che sotto X. E poi, per leggere e inviare mail e news, che sono
  puro testo, è inutile caricare pesanti tool grafici, che spesso
  crashano sul più bello. Oppure potreste avere problemi col server X,
  rimanendo tagliati fuori (se postate un messaggio sul perché X non
  parte, e lo fate da shell, avrete la risposta e potrete configurarvelo
  a puntino!). Insomma, le ragioni per avere internet ANCHE da shell
  sono molteplici, quindi procediamo nella configurazione. (NdA: io sono
  un'anomalia: Linux è bello perché si possono fare le stesse cose in
  svariati modi. Parto sempre da shell, ma uno dei primi comandi che do
  è startx, perché il mio Celeron 450 con 128Mb regge bene e mi piace il
  desktop di KDE. Per avviare la connessione uso kppp perché mi ci trovo
  bene, ma ero partito da Kmail e Knode per approdare spero
  DEFINITIVAMENTE a Mutt ed Slrn, veloci ed efficienti come nessun altro
  programma, e di cui trovate le configurazioni nelle ultime pagine di
  questo howto). Naturalmente dovete avere il supporto per il protocollo
  PPP nel kernel (scrivete pppd e se vi escono caratteri strani siete a
  posto). Vi servono anche i programmi pppd e chat. I parametri per la
  connessione dovete chiederli al vostro provider, e protestate se vi
  dicono che Linux non è supportato, con i parametri si può configurare
  anche una caffettiera! In particolare dovete chiedere gli indirizzi IP
  dei DNS, che in Windows vengono settati in automatico.  Per prima cosa
  configurate il modem, crendo se non già presente un link tra il
  dispositivo seriale e il modem. Ricordate che in Linux le seriali
  corrispondono a /dev/ttySX, dove X vale 0 per com1, 1 per com2 e così
  via (NON usate più le vecchie /dev/cuaX, ormai cadute in disuso e
  deprecate). Nel mio sistema il modem è connesso a com2, quindi il
  collegamento sarà:


  ______________________________________________________________________
  ln -sf /dev/ttyS1 /dev/modem
  ______________________________________________________________________



  Prima di continuare una nota: esistono in giro dei FALSI modem, non
  perché contengano mattoni, alla napoletana, ma perché hanno una parte
  della logica di controllo implementata via software. E qual è il
  software più diffuso, purtroppo?  Quello di zio Bill! Per questo sono
  anche chiamati softmodem o winmodem. La quasi totalità di quelli
  interni PCI sono winmodem (scrivo quasi perché non sono a conoscenza
  di modem interni PCI non soft, quindi non posso escluderlo a priori).
  Anche alcuni esterni sono winmodem. Se il vostro modem è un Cosexant,
  o un Motorola SM56, o un Soft56k e compagnia, solo per citare quelli
  che più si trovano in giro, mettetevi l'anima in pace e non cominciate
  nemmeno a configurare internet con Linux. Qualche speranza la potreste
  avere con i Lucent, integrati anche in vari PC portatili, in quanto
  esiste un driver binario sperimentale che sembra funzionare. Niente da
  fare invece per gli USB: per ora non c'è alcun supporto, speriamo che
  qualcosa si muova dopo l'uscita dei kernel 2.4.x, che incominceranno a
  supportare anche l'USB. Continuiamo. Lanciate minicom da root, se
  tutto procede bene dovreste ottenere un output come il seguente:


  ______________________________________________________________________
  AT S7=45 S0=0 L1 V1 X4 &C1 E1 Q0
  OK
  ______________________________________________________________________

  Uscite da minicom con CTRL-A X Invio. Create o modificate tutti i file
  seguenti, cambiando i parametri di DNS, dominio, numero di telefono,
  nome utente e password.

  === file: /etc/resolv.conf ===


  ______________________________________________________________________
  # cambiate dominio e DNS (se avete impostato un DNS locale, sostituite
  # a libero.it il vostro dominio, e a nameserver il valore 127.0.0.1)
  domain libero.it
  nameserver 195.210.91.1
  nameserver 195.210.91.2

  ______________________________________________________________________



  === file: /etc/ppp/pon ===


  ______________________________________________________________________
  #!/bin/sh
  # NON lasciate spazi dopo la \ alla fine delle righe seguenti
  # e sostituite il vostro nome utente alla fine dell'ultima riga
  /usr/sbin/pppd connect "/usr/sbin/chat -v -f /etc/ppp/ppp-chat" noauth \
  /dev/modem 57600 deflate 12,12 crtscts debug lock modem nodetach \
  defaultroute noipdefault login noproxyarp asyncmap 0  hide-password \
  ipcp-accept-remote lcp-echo-interval 30 lcp-echo-failure 8 user mionomeutente &
  # aggiungete le 2 opzioni seguenti alla riga precedente per avviare in automatico
  # la connessione non appena pppd riscontra traffico sulla seriale
  # demand idle 30
  # i messaggi d'errore sono inviati dal pppd verso il syslog, da dove potrete
  # leggerli da root con il comando: tail -n 25 -f /var/log/messages

  ______________________________________________________________________



  === file: /etc/ppp/poff ===


  ______________________________________________________________________
  #!/bin/sh
  kill -INT `cat /var/run/ppp0.pid`

  ______________________________________________________________________



  === file: /etc/ppp/pap-secrets ===


  ______________________________________________________________________
  #inserite qui il vostro nome utente e la vostra password
  mionomeutente   *       miapassword

  ______________________________________________________________________



  === file: /etc/ppp/ppp-chat ===




  ______________________________________________________________________
  # Cambiate la stringa di init e il numero del vostro ISP alla fine
  TIMEOUT 30
  ABORT BUSY
  ABORT ERROR
  ABORT 'NO CARRIER'
  ABORT 'NO DIALTONE'
  ABORT 'Invalid Login'
  ABORT 'Login incorrect'
  OK 'ATDT096851010'
  CONNECT ''
  ______________________________________________________________________



  Ora date tutti i seguenti comandi, per consentire anche ad un utente
  comune di avviare e chiudere la connessione.


  ______________________________________________________________________
  chmod 750 /etc/ppp/pon
  chmod 750 /etc/ppp/poff
  chmod 600 /etc/ppp/pap-secrets
  ln -sf /etc/ppp/pon /usr/bin
  ln -sf /etc/ppp/poff /usr/bin
  ______________________________________________________________________



  Ora verificate che esista un gruppo degli utenti che possono usare il
  ppp.  Controllate che in /etc/group ci sia una riga come la seguente,
  altrimenti inseritela, magari usando il comando addgroup:


  ______________________________________________________________________
  pppusers:x:230:
  ______________________________________________________________________



  e modificatela come la seguente, inserendo alla fine separati da
  virgole i nome degli utenti che possono collegarsi:


  ______________________________________________________________________
  pppusers:x:230:VostroNomeDiLogin,AltroUtentePpp
  ______________________________________________________________________



  Continuate a dare i comandi seguenti:


  ______________________________________________________________________
  chown root.pppusers /dev/ttyS1
  chmod 664 /dev/ttyS1
  chown root.pppusers /etc/ppp/pon
  chown root.pppusers /etc/ppp/poff
  chown root.pppusers /usr/bin/pon
  chown root.pppusers /usr/bin/poff
  chmod a+s /usr/sbin/pppd
  chmod a+s /usr/sbin/chat
  ln -sf /usr/sbin/pppd /usr/bin
  ln -sf /usr/sbin/chat /usr/bin
  ______________________________________________________________________

  Per un minimo di sicurezza, modificate i file /etc/hosts.allow e
  /etc/hosts.deny come segue (ed eliminate da /etc/inetd.conf i servizi
  che non vi servono, cioè tutti tranne auth, commentandoli con #; se
  avete configurato un news server locale lasciate attivo anche nntp):

  === file: /etc/hosts.allow ===


  ______________________________________________________________________
  ALL:127.0.0.1
  ______________________________________________________________________



  === file: /etc/hosts.deny ===


  ______________________________________________________________________
  ALL:ALL
  ______________________________________________________________________



  Potete avviare ed arrestare automaticamente dei programmi insieme alla
  connessione, tramite i file script /etc/ppp/ip-up e /etc/ppp/ip-down,
  che vengono richiamati dal pppd in automatico appena la connessione è
  attiva e quando non è più presente. ecco alcuni esempi:

  === file: /etc/ppp/ip-up ===


  ______________________________________________________________________
  #!/bin/sh
  # inserite le righe alla fine di quanto eventualmente
  # già presente e prima di un eventuale exit 0
  # avvia il proxy server in modalità online
  wwwoffle -online
  # attiva il firewall
  /usr/sbin/firewall start
  # invia la posta in giacenza
  sendmail -q
  # scarica le news usenet
  fetchnews
  # scarica la posta dell'utente mrshark ricontrollando ogni 300 secondi
  su mrshark -c "fetchmail -d 300"
  ______________________________________________________________________



  === file: /etc/ppp/ip-down ===


  ______________________________________________________________________
  #!/bin/sh
  #interrompe lo scaricamento della posta
  su mrshark -c "fetchmail -q"
  # abbatte il firewall
  /usr/sbin/firewall stop
  # pone il proxy server in modalità offline
  wwwoffle -offline
  ______________________________________________________________________



  Dovreste essere a posto, ora potrete avviare la connessione con pon e
  abbatterla con poff. E invece NO! Il pon funziona anche da utente,
  mentre il poff no, perché non è permesso ad un utente che non sia root
  di abbattere la connessione ppp. Il PPP-Howto suggerisce, se non
  volete loggarvi come root, di spegnere il modem o staccare il cavo
  della linea telefonica, oppure usare il programma sudo per concedere
  questo diritto anche agli utenti.

  6.  Postfix

  Questa parte è un'estensione del "mini-postfix-howto" di AGX, autore
  della distribuzione italiana BadPenguin (www.badpenguin.org ), e a cui
  va il merito di buona parte di questa sezione.  Postfix vi permette di
  avere nel vostro computer un vero e proprio server SMTP, che vi
  permette di inviare la posta da locale e che nulla ha da invidiare a
  quello del vostro provider! E' preferibile al più diffuso Sendmail per
  ragioni di sicurezza, facilità di configurazione e di manutenzione.
  Prima di installarlo, rimuovete sendmail (le istruzioni sono in fondo
  alla pagina), altrimenti avrete conflitti tra i due.

  6.1.  Configurazione di Postfix

  Innanzitutto assicuratevi che parta ad ogni avvio, controllate che in
  /etc/rc.d/init.d (o l'equivalente della vostra distribuzione) ci sia
  lo script "postfix" e date "chkconfig --add postfix", oppure
  aggiungete "postfix start" a /etc/rc.d/rc.local (o equivalente).

  Modificate /etc/postfix/aliases in modo che la posta indirizzata a
  root venga ricevuta da un utente realmente esistente (è pericoloso
  gestire la posta da root, potreste perderla tutta, ricordatelo!),
  inserendo o modificando la riga:


  ______________________________________________________________________
  root:          nome_utente_esistente
  ______________________________________________________________________



  Consiglio di lasciare che postfix contatti l'SMTP del vostro provider,
  perché sempre più spesso i server per evitare lo spam fanno dei
  controlli sull'origine dei messaggi tramite delle interrogazioni ai
  DNS, e a meno che non abbiate registrato un dominio vostro, NON vi
  troveranno altrimenti, e la posta resterà nel vostro spool! Consiglio
  inoltre di impostare l'opzione "defer_transports=smtp" in
  /etc/postfix/main.cf per evitare che postfix continui ad interrogare
  internet per cercare di inviare la posta: a collegamento avvenuto
  potete usare "sendmail -q" o "postfix flush" per inviare tutto (potete
  inserire il comando in /etc/ppp/ip-up, in modo da fare tutto in
  automatico a connessione stabilita). Il comando "mailq" (o "sendmail
  -bp") vi fornisce informazioni sullo stato del vostro spool SMTP,
  quali e quanti messaggi sono ancora accodati e altro ancora. Per
  sapere quando la coda è vuota, potete usare il seguente script:


  ______________________________________________________________________
  #!/bin/sh
  /usr/sbin/sendmail -q
  sleep 10
  while mailq | grep '^[^ ]*\*' >/dev/null
  do
      sleep 10
  done
  ______________________________________________________________________




  Altri comandi utili sono "postfix start" (avvia postfix), "postfix
  reload" (per far sì che postfix rilegga il file di configurazione dopo
  eventuali cambiamenti), "postfix stop" (ferma postfix), "postfix
  check" (controlla la configurazione di postfix). Ecco un esempio di
  file /etc/postfix/main.cf (le poche righe da modificare sono indicate
  all'inizio del file, e eventuali altri parametri presenti nel vostro
  file main.cf possono essere lasciati al loro valore di default):



























































  ______________________________________________________________________
  #- file di configurazione principale di Postfix

  #- I parametri che DOVETE cambiare sono i seguenti, seguendo le istruzioni
  #- date nel file. In particolare, per il relayhost, fate il comando seguente:
  #- nslookup smtp.vostro.provider
  #- per conoscere l'IP dell'SMTP del vostro provider, e sostituitelo tra le
  #- parentesi quadre, LASCIANDOLE!
  #- "myhostname", "mydomain" e "relayhost"

  #- la directory della coda di postfix
  queue_directory = /var/spool/postfix

  #- la directory dove risiedono i programmi di postfix (gli RPM di solito li
  #- installano in /usr/sbin, cambiate di conseguenza per altre installazioni)
  program_directory = /usr/sbin

  #- la directory dove risiedono tutti i programmi del tipo postXXX
  command_directory = $program_directory

  #- la directory che contiene i demoni di postfix
  daemon_directory = $program_directory

  #- il possessore dei processi di postfix. Usate un utente dedicato, con
  #- privilegi minimi, e che non sia daemon o nobody, e CREATELO!!!
  mail_owner = postfix

  #- i privilegi di default dell'agente di smistamento locale
  default_privs = nobody

  #- la directory di spool di default, dove finiscono le email in arrivo
  mail_spool_directory = /var/spool/mail

  #- il programma usato per lo smistamento locale delle email. Correggete
  #- eventualmente il path. In genere per sicurezza è meglio richiamare
  #- procmail quì, piuttosto che da fetchmail
  mailbox_command = /usr/bin/procmail

  #- il nome COMPLETO del vostro host, compreso il dominio
  myhostname = pingu.mrshark.home

  #- il nome del vostro dominio
  mydomain = mrshark.home

  #- il dominio che risulterà l'origine per le email smistate localmente
  myorigin = $mydomain

  #- l'elenco di domini che postfix condidererà locali, per i queli cioè
  #- verranno smistate le email direttamente, senza interpellare l'esterno
  mydestination = $myhostname, localhost.$mydomain, $mydomain

  #- le interfacce di rete da cui accettare email, in genere tutte
  inet_interfaces = all

  #- il banner riportato da postfix quando lo si contatta
  smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

  #- il metodo di trasporto delle email usato di default
  default_transport = smtp

  #- l'elenco degli IP delle reti attaccate al computer, ritenute come locali.
  #- Per un computer singolo basta solo 127.0.0.0/8, mentre per reti più ampie
  #- aggiungete le relative sottoreti, usando le maschere opportune
  mynetworks = 127.0.0.0/8, 192.168.0.0/24

  #- l'SMTP del vostro provider, cui verranno inviate le email in uscita.
  #- Se volete che postfix contatti direttamente l'SMTP di destinazione,
  #- commentate la riga seguente. Le [] evitano la risoluzione del nome
  #- da parte del DNS, accelerando le operazioni (se inserite l'ip è meglio)
  relayhost = [mail.libero.it]

  #- disabilita la risoluzione dei nomi di dominio. Se usate quest'opzione,
  #- DOVETE usare l'indirizzo IP dell'SMTP del vostro provider per il parametro
  #- relayhost visto in precedenza (usate "nslookup smtp.vostro.provider" ...)
  disable_dns_lookups = yes

  #- informa il postmaster di possibili problemi con il mail-server
  notify_classes = resource, software, bounce, policy, protocol

  #- questo evita connessioni indesiderate spontanee via PPP
  defer_transports = smtp

  #- questi lasciateli come sono, indicano i limiti per le operazioni simultanee
  local_destination_concurrency_limit = 2
  default_destination_concurrency_limit = 10

  #- riscrive gli header mascherandoli, in modo che appaiano come tutti
  #- provenienti come da un unico host, utile sia in dial-up che in rete.
  #- Usatelo in unione ai file XXX_canonical, spiegati di seguito
  masquerade_domains = $mydomain

  #- l'elenco degli alias di sistema
  alias_maps = hash:$config_directory/aliases
  alias_database = hash:$config_directory/aliases

  #- usate questi file per specificare come riscrivere gli indirizzi in uscita
  #- (in seguito è presente un esempio). Potete usare il solo canonical sia per
  #- gli indirizzi in ingresso che per quelli in uscita, oppure usare i file
  #- sender_canonical e recipient_canonical per essere più precisi. Se presenti
  #- tutti, comunque il file canonical è l'ultimo ad essere processato, perché
  #- il più generico. In genere basta usare solo il file sender_canonical,
  #- commentate gli altri. Se ad esempio inviate una email come utente locale pippo,
  #- verrà riscritta in uscita come se fosse inviata da pippo@libero.it, per esempio
  #canonical_maps = hash:$config_directory/canonical
  #recipient_canonical_maps = hash:$config_directory/recipient_canonical
  sender_canonical_maps = hash:$config_directory/sender_canonical

  #- usate questo file per riscrivere gli indirizzi delle email in ingresso, in modo
  #- che se contengono uno dei vostri indirizzi email pubblici, vengano riscritti
  #- come se fossero diretti al vostro utente locale indicato (un esempio in seguito)
  virtual_maps = hash:$config_directory/virtual

  #- anti-spam! Confronta gli header delle email con quelli riconosciuti come spammers,
  #- e in tal caso scarta l'email. Rallenta leggermente il processo! La prima riga
  #- definisce i server usati per il controllo, la seconda e la terza impongono delle
  #- restrizioni, la quarta definisce un file aggiuntivo in cui inserire delle espressioni
  #- regolari tramite le quali scartare a priori email potenzialmente pericolose, come il
  #- famoso virus I-Love-You (un file di esempio è mostrato in seguito). NON va fatto il
  #- postmap! La quinta richiede che l'MTA invii un comando HELO per stabilire la connessione,
  #- cosa che i software di spam di solito non fanno, mentre gli MTA veri fanno quasi sempre!
  maps_rbl_domains = blackholes.mail-abuse.org, dialups.mail-abuse.org, rbl.maps.vix.com, dul.maps.vix.com
  smtpd_client_restrictions = permit_mynetworks, reject_maps_rbl, reject_unknown_hostname
  smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
  header_checks = regexp:$config_directory/header_checks
  smtpd_helo_required = yes

  #- Se volete un backup TOTALE di tutto quello che passa attraverso Postfix,
  #- togliete il commento dalla riga seguente e modificate l'indirizzo email.
  #- L'indirizzo indicato riceverà in copia nascosta (BCC) tutte le email!!!
  #always_bcc = indirizzo.email@backup.com
  ______________________________________________________________________

  Ora create i file per far corrispondere i vostri indirizzi email ai
  vostri utenti locali. Si tratta dei file /etc/postfix/sender_canonical
  (che contiene gli indirizzi che verranno inseriti nel campo from per
  ogni utente al posto di utente@vostra.macchina) e /etc/postfix/virtual
  (che stabilisce a quali utenti locali vadano inviate le email in base
  all'indirizzo remoto contenuto). Come esempi ecco i miei file. Questo
  è il mio /etc/postfix/sender_canonical:


  ______________________________________________________________________
  root    mrshark@libero.it
  mrshark mrshark@libero.it
  antonio mrshark@libero.it
  ______________________________________________________________________



  e questo il mio /etc/postfix/virtual (tutte le email dai miei
  indirizzi finiscono all'utente locale mrshark):


  ______________________________________________________________________
  mrshark@linuxfan.com    mrshark
  mrshark@libero.it       mrshark
  mrshark@tiscalinet.it   mrshark
  antonio.fragola@tin.it  mrshark
  ______________________________________________________________________



  Ogni volta che modificate /etc/postfix/aliases dovete rigenerare il
  database dando il comando:


  ______________________________________________________________________
  postalias /etc/postfix/aliases
  ______________________________________________________________________



  mentre se modificate il file /etc/postfix/sender_canonical date:


  ______________________________________________________________________
  postmap /etc/postfix/sender_canonical
  ______________________________________________________________________



  oppure per /etc/postfix/virtual date:


  ______________________________________________________________________
  postmap /etc/postfix/virtual
  ______________________________________________________________________



  Dopo ogni modifica a qualcuno di questi tre file, dovete riavviare
  postfix con:


  ______________________________________________________________________
  postfix reload
  ______________________________________________________________________

  Ricordate di installare e configurare anche un MDA, come procmail, per
  far smistare la posta in arrivo in mailbox diverse piuttosto che in
  una sola di default.

  Se volete un'analisi dei log di postfix, potete usare il programma in
  perl pflogsumm, scaricabile da
  http://home.msen.com/~jimsun/postfix_contrib.html, inserendo con
  "crontab -e" una riga tipo la seguente:


  ______________________________________________________________________
  0 2 * * * /path/to/pflogsumm.pl -d today /var/log/maillog | mail -s "Postfix Mail Report" root
  ______________________________________________________________________



  L'utente indicato alla fine della riga riceverà delle email contenenti
  un'analisi dei log di postfix.

  6.2.  Disattivazione e disinstallazione di Sendmail

  Per disattivare sendmail date i seguenti comandi:


  ______________________________________________________________________
  mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
  mv /usr/bin/newaliases /usr/bin/newaliases.OFF
  mv /usr/bin/mailq /usr/bin/mailq.OFF
  chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
  /usr/sbin/sendmail.OFF -q
  ______________________________________________________________________



  L'ultimo comando serve a svuotare dalle eventuali email la coda delle
  email, inviandole.

  Note per RedHat e Mandrake: se installando postfix vi dice che c'è un
  conflitto con sendmail, devete prima rimuovere quest'ultimo, magari
  prima facendovi un backup dei suoi file di configurazione, nel caso
  (ma quando mai! ;-) ) voleste ritornare indietro. Postfix fornisce dei
  "wrapper" per i comandi di sendmail, quindi forzate la rimozione con
  l'opzione "--nodeps", per ignorare le dipendenze. Se volete
  semplicemente disattivarlo, fate come mostrato poco fa, altrimenti per
  disinstallarlo, date i seguenti comandi:


  ______________________________________________________________________
  mkdir /root/sendmail-old
  cp /etc/aliases /root/sendmail-old/
  cp /etc/sendmail.cf /root/sendmail-old/
  cp /etc/sendmail.cw /root/sendmail-old/
  cp /etc/mail/* /root/sendmail-old/
  rpm -e sendmail sendmail-doc sendmail-cf --nodeps
  killall sendmail
  rpm -Uvh postfix-19990906_pl07.i586.rpm
  ______________________________________________________________________



  (l'ultimo comando potrebbe essere diverso, nel caso abbiate una
  versione più recente di postfix).

  Se avevate un'installazione funzionante precedente di sendmail, potete
  importare i vecchi alias in postfix senza riscriverli tutti, copiando
  dal backup precedente "/root/sendmail-old/aliases" in
  "/etc/postfix/aliases" e dando il comando "newaliases" per creare il
  file "aliases.db" necessario a postfix.

  7.  Fetchmail

  Fetchmail è il programma che si occupa di ricevere la posta dalle
  vostre caselle email remote e passarle a procmail che si occupa dello
  smistamento locale. E' forse il programma più semplice da configurare,
  basta creare nella propria home un file.fetchmailrc simile al
  seguente:

  === file: $HOME/.fetchmailrc ===


  ______________________________________________________________________
  poll popmail.libero.it timeout 60 with proto POP3
  user "tuo-nome-utente-remoto" there
  with password "tua-password-remota"
  is tuo-login-locale here options fetchall

  poll pop.tiscalinet.it timeout 60 with proto POP3
  user "tuo-nome-utente-remoto" there
  with password "tua-password-remota"
  is tuo-login-locale here options keep
  ______________________________________________________________________



  Le sezioni possono essere ripetute, aggiungendone altre per eventuali
  altri pop-server. La sintassi è simile all'inglese, quindi: interroga
  (POLL) il server remoto indicato, se non ottieni risposta (TIMEOUT)
  per 60 secondi abortisci, usa il protocollo (PROTO) POP3, con il nome
  utente (USER) e la password (PASSWORD) remoti indicati, che
  corrisponde all'utente (IS HERE) dato e passa tutto quello che ricevi
  al server smtp locale per lo smistamento tramite procmail (si potrebbe
  usare l'opzione "mda" di fetchmail, ma per sicurezza e' meglio fare
  richiamare procmail dall'smtp). OPTIONS KEEP mantiene la posta sul
  server remoto, senza cancellarla dopo averla scaricata, mentre OPTIONS
  FETCHALL scarica tutti i messaggi, sia vecchi che nuovi.

  Ricordate che il file.fetchmailrc deve avere al piu' attributi 0710
  (io uso 0600), altrimenti fetchmail non parte: quindi date nella
  vostra home-directory un bel:


  ______________________________________________________________________
  chmod 0710.fetchmailrc
  ______________________________________________________________________



  Per ricevere la vostra posta, date dal prompt di shell il comando:
  fetchmail.  Possibili opzioni utili sono:


  ·  -v : (anche ripetuto, come -vvvv) che stampa a video un resoconto
     di quello che sta succedendo, più dettagliato in base a quante v
     mettete

  ·  -c : controlla se c'è nuova posta senza scaricarla

  ·  -d n : (dove n indica il numero di secondi), avvia in modalità
     demone, che controlla e scarica la posta ogni n secondi

  ·  -q : interrompe lo scaricamento a intervalli regolari della posta

  ·  -a : scarica sia i vecchi che i nuovi messaggi

  ·  -k : scarica la posta lasciandola anche sul server remoto

  ·  -F : cancella i vecchi messaggi dal server remoto

  ·  -l n : non scarica i messaggi di dimensione superiore a quella
     indicata

  Ricordate di impostare anche procmail per lo smistamento della posta
  prelevata nelle vostre caselle locali, altrimenti la posta rimane in
  /var/spool/mail/nomeutente.  NON USATE LA POSTA DA ROOT! E'
  PERICOLOSO, POTRESTE PERDERLA TUTTA!

  8.  Procmail

  8.1.  Introduzione

  Procmail è il programma che si occupa di smistare in diverse caselle
  le email che arrivano dai vostri account pop o direttamente dal
  sistema. E' forse il più complicato tra i programmi che dovrete
  configurare per la gestione della vostra posta elettronica, perciò qui
  ne sarà data una visione generale, rimandando ad una futura revisione
  dell'Howto altre finezze, man mano che mi vengono in mente e le
  sperimento. Prima di tutto alcune precisazioni su alcune convenzioni
  che uso: le caselle che contengono email in entrata io le chiamo per
  comodità "IN-qualchecosa", mentre quelle in uscita sono ovviamente
  "OUT-qualcosaltro", e le mailing-lists con "ML-ancoraqualcosa". I nomi
  di file sono interamente in minuscolo, mentre le directory iniziano
  con una lettera Maiuscola. I file accessori di .procmailrc finiscono
  con ".rc". Per mia comodità tengo di solito i file di configurazione
  ausiliari nelle directory di pertinenza del servizio, quindi i file
  richiamati da .procmailrc sono in $HOME/Mail/.Pm (mentre i file di
  Mutt sono in $HOME/Mail/.Mutt, i file di Slrn sono in
  $HOME/News/.Slrn, ecc). Il punto iniziale delle directory serve per
  nasconderle mentre sfoglio i miei spool con mutt o slrn, per mail e
  news. Per sicurezza TUTTA la posta in arrivo viene accodata in un file
  di backup (mostrerò anche come mantenere questo file in formato
  compresso gzip, per ridurre gli sprechi di spazi), verranno estratte
  dal flusso in ingresso le email provenienti da persone conosciute (per
  riinviarle in un file apposito), e quelle provenienti da mailing list
  (inviate in file univoci per ciascuna), lasciando le email rimanenti
  nello spool principale. In un prossimo aggiornamento dell'howto
  tratterò anche il filtraggio di UCE/UBE (Unsolicited Commercial/Bulk
  Email, cioè spam o posta indesiderata).

  Il file di configurazione di Procmail (.procmailrc, nella vostra HOME)
  è suddiviso in due parti distinte: la prima è la configurazione vera e
  propria del programma, con variabili e path vari; la seconda invece è
  fatta dall'insieme delle regole che permettono di smistare la posta
  nei diversi file mailbox.  In particolare, per la seconda parte, è più
  comodo suddividere le regole in file distinti (da includere nel file
  principale con la direttiva INCLUDERC), in base al loro uso: ad
  esempio un file con le regole per le mailing-list, un file per le
  email da amici, un file per lo spam, e così via. Questa comunque è la
  strada seguito in questo howto. Procmail processa messaggi nell'ordine
  in cui sono scritte le regole, all'interno del file .procmailrc o nei
  file in esso inclusi, e se non trova alcuna regola adatta accoda il
  messaggio allo spool principale (ecco perché, senza alcun file
  .procmailrc, i messaggi finiscono in /var/spool/mail/nomeutente, in
  genere mailbox di default di un sistema Linux).  Le regole di procmail
  sono composte da espressioni regolari (la sintassi è nella sezione
  apposita), e possono essere divise in tre parti:



  1. una linea di inizio (con possibili flag), :0, seguito da una serie
     di flags che ne indicano il comportamento (alcune vengono spiegate
     nel seguito, le altre possono essere trovate in "man procmailrc").
     Il secondo : indica che si vuole usare un lockfile sulla mailbox
     durante il processo, in modo da prevenire una possibile corruzione
     della stessa in caso di accesso contemporaneo da altri programmi
     (pensate alla possibile cancellazione di un messaggio con il vostro
     client mail mentre la mailbox è in fase di elaborazione da
     procmail). Dopo il : si può indicare un nome per il file di lock,
     altrimenti verrà generato in automatico da procmail.

  2. una o più condizioni, identificate da * come primo carattere

  3. una linea di smistamento, che può essere un file, una directory o
     una linea che inizia con | (pipe), che permette di inviare il
     messaggio in input ad un programma esterno per una qualche
     elaborazione, o ancora una linea che inizia per !, che permette di
     inviare una copia del messaggio a ciascun indirizzo email indicato
     dopo il !. Altre possibilità sono elencate in "man procmailrc".

  8.2.  File di configurazione

  Questo è un file di configurazione abbastanza generico, può essere
  usato così com'è, perché le parti variabili (le regole di smistamento)
  sono contenute in altri file (elencati alla fine di questo) che
  vengono richiamati da questo principale:

  === file: .procmailrc ===






































  ______________________________________________________________________
  #directory
  MAILDIR = $HOME/Mail   # ASSICURATI CHE ESISTA! Le email finiranno qui!
  PMDIR = $MAILDIR/.Pm   # crea anche questa dir
  PMSRC = $PMDIR

  #varie
  SHELL=/bin/sh
  LINEBUF=8192
  PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin
  DEFAULT=$MAILDIR/IN.default   # mailbox di default per le email in entrata. Qui finiscono
      # le email che non sono elaborate o smistate prima da qualche regola adatta.
      # Se non definito, in generale le email finiscono in /var/spool/mail/nomeutente.
  ADMINFOLDER=$MAILDIR/IN.admin   # mailbox per la posta di sistema, root, postmaster, ecc.
  BULKFOLDER=$MAILDIR/IN.bulk   # mailbox per email da mailing list o Bcc:
  FORMAIL=/usr/bin/formail   # path di formail, usato per processare alcune email

  #log
  VERBOSE = yes   # impostare a no dopo il debug
  LOGABSTRACT = all   # produce log MOLTO estesi, impostare a no in seguito
  LOGFILE = $PMDIR/pm.log   # file di log

  # variabili utili (possono essere usate nelle regole per abbreviarne la scrittura,
  # ad esempio come $NomeVariabile)
  NL = "
  " # nuova linea (un invio tra "")
  WSPC = "        "   # blank: spazio + tab
  SPC = "[$WSPC]"   # Regexp: spazio + tab
  SPCL = "($SPC|$)"   # spazio o tab o nuova linea
  NSPC = "[^$WSPC]"   # NON spazio o tab
  s = $SPC   # abbreviazione: come in Perl \s
  d = "[0-9]"   # una cifra -- Perl \d
  w = "[0-9a-z_A-Z]"   # una parola alfanumerica -- Perl \w
  W = "[^0-9a-z_A-Z]"   # NON una parola alfanumerica  -- Perl \W
  a = "[a-zA-Z]"   # una parola, solo alfabetica

  # imposta la variabile DATE come "mese_esteso-anno"
  # attenzione, gli apici sono inversi, quindi ALT-GR più l'apice normale!
  DATE = `date +%B-%Y`

  #file .rc aggiuntivi
  INCLUDERC = $PMDIR/general.rc
  INCLUDERC = $PMDIR/spam.rc
  INCLUDERC = $PMDIR/friends.rc
  INCLUDERC = $PMDIR/lists.rc
  INCLUDERC = $PMDIR/autoreply.rc
  INCLUDERC = $PMDIR/other.rc
  ______________________________________________________________________



  Per usare procmail, dovete istruire i programmi a richiamarlo. Per
  Fetchmail e Postfix potete trovare le istruzioni nelle relative
  sezioni di questo howto (si tratta di un rigo per parte), mentre per
  Sendmail, dovrete creare il file .forward nella vostra HOME (questo
  passo non è necessario se procmail è il gestore locale di default per
  lo smistamento, come nel caso di Redhat e distribuzioni derivate):

  === file: .forward ===


  ______________________________________________________________________
  "| IFS=' ' && p=/usr/bin/procmail && test -f $p && exec $p -f- || exit 75 #mrshark"
  ______________________________________________________________________


  Ricordatevi di sostituire a mrshark il vostro nome di login, e copiate
  esattamente come vedete, comprese virgolette e apici! In alcuni
  sistemi potrebbe essere richiesto che il file sia leggibile da tutti e
  la vostra directory HOME sia attraversabile: date i comandi


  ______________________________________________________________________
  cd
  chmod 644 .forward
  chmod a+x .
  ______________________________________________________________________



  Per controllare i file di log, potete usare lo script mailstat che
  viene fornito con procmail. Il suo uso è molto semplice, basta
  avviarlo fornendo come argomento il path del file di log (l'esempio
  seguente si riferisce alla configurazione impostata nel file
  .procmailrc precedente):

  mailstat $HOME/Mail/.Pm/pm.log

  Mailstat fornisce un rapporto sulle email arrivate e smistate a
  partire dalla volta precedente in cui è stato lanciato lo stesso
  mailstat: infatti esso dopo l'uso rinomina il file di log precedente
  con estensione .old e ne ricrea uno vuoto. Avete quindi anche un
  metodo per tenere a dimensioni accettabili il file di log, richiamando
  mailstat! Comunque, dopo aver testato procmail, è utile ridurre i log,
  impostando VERBOSE=no e LOGABSTRACT=no in .procmailrc.

  8.3.  File di regole (esempi)

  === file: general.rc ===


  ______________________________________________________________________
  # corregge possibili header from errati
  :0fhw:
  | $FORMAIL -I "From " -a "From"
  # emimina i messaggi doppi, copiandoli per sicurezza in un file apposito
  :0Whc:msgid.lock
  | $FORMAIL -D 8192 msgid.cache
  :0a:
  duplicati
  # backup di tutte le email in ingresso
  # N.B.: se si vuole un backup compresso, sostituire con quanto segue, senza # iniziale
  #:0c:
  #|gzip -9fc >> .backup.gz
  :0c:
  .backup
  :0:
  * ^TO_root
  IN.admin
  ______________________________________________________________________



  Note: Il flag f permette di considerare la pipe seguente come un
  filtro; il flag h impone che siano inviati anche gli header in pipe;
  il flag w impedisce che il file di lock sia rilasciato fino a quando
  il comando in pipe non ha concluso il suo processo. Il flag c permette
  di far proseguire l'email attraverso il flusso delle regole
  successive. Quindi in questo caso, essendo la prima regola, TUTTE le
  email saranno copiate per backup nel file indicato, dopo di che
  continueranno ad attraversare le altre regole, fino a incontrarne
  un'altra che effettuerà un confronto positivo (eventualmente facendola
  proseguire anch'essa con un flag c), e quindi togliendola dal flusso,
  o finiranno nello spool principale nel caso contrario. Il flag W ha lo
  stesso comportamento di w, ma non invia messaggi di avvertimento sullo
  schermo ("Program Failure"). Infine il flag a, permette di eseguire un
  comando SOLO se la regola IMMEDIATAMENTE precedente ha avuto esito
  positivo (quindi in questo caso se viene trovato un messaggio doppio,
  viene accodato a "duplicati"). "TO_" viene spiegato tra poco.

  === file: lists.rc ===


  ______________________________________________________________________
  :0:
  * ^TO_procmail@informatik.rwth-aachen.de
  Lists/ML-procmail
  :0:
  * ^TO_vim@vim.org
  Lists/ML-vim-$DATE
  ______________________________________________________________________



  Note: TO_ è una macro predefinita di procmail che intercetta un
  indirizzo email fra gli header destinazione (To, Cc, Resent-To, ecc.).
  Va scritto ESATTAMENTE come lo vedete (* ^TO_indirizzo@email),
  rispettando spazi e maiuscole. Non inserite simboli < o >. Altre
  informazioni all'interno di man procmailrc.

  Consigli: Inserite le regole per le mailing-list più trafficate
  all'inizio di lists.rc, in modo che i messaggi vengano elaborati prima
  e attraversino meno regole, velocizzando il processo.

  Il secondo esempio invece suddivide le email anche in base a mese e
  anno (la variabile DATE è impostata in .procmailrc), il tutto in
  automatico (mese e anno sono quelli dello smistamento, NON dell'invio
  dagli autori alla mailing-list!)  !

  Infine, le email da mailing-list finiscono in una directory apposita:
  RICORDATEVI DI CREARLA!

  === file: spam.rc ===


  ______________________________________________________________________
  :0:
  * ^from.*qualche\.rompi\.balle@spamlandia\.com
  /dev/null
  :0:
  * ^from.*sex
  /dev/null
  ______________________________________________________________________



  Note: lo spam finisce dritto dritto nel nulla! Notate l'uso di \.  per
  indicare il punto (ricordate che il punto da solo significa QUALSIASI
  CARATTERE, quindi anche il punto stesso, ma non fidatevi, potrebbe
  avere effetti non voluti).  /dev/null è un buco nero di sistema (hai
  capito il pinguino! ;-) ) che disperde qualsiasi cosa ci finisca
  dentro. Il secondo esempio invece l'ho messo per far vedere che non e'
  necessario mettere .* alla fine: è sottinteso, e in questo caso tutte
  le email che contengono la stringa sex vengono eliminate.

  === file: friends.rc ===


  ______________________________________________________________________
  :0:
  * ^from.*gino@pluto\.cxm
  gino
  :0:
  * ^subject.*barzellett
  {
      :0c:
      ! michele@yahoo.com
      :0:
      barzellette
  }
  ______________________________________________________________________



  Note: qui da notare l'uso delle parentesi graffe, che permettono di
  riunire comandi che devono agire su una stessa email. In questo caso
  di tutte le email che arrivano e che contengono la stringa barzellett
  (quindi sia barzelletta che barzellette) nel subject, ne viene
  generata una copia che viene inoltrata a michele@yahoo.com, dopo di
  che l'email finisce nella mailbox barzellette e la regola si conclude.
  In una prossima versione dell'howto vedremo come trattare in
  automatico anche gli attachment, le maledette email in HTML/MIME, e
  qualcos'altro che mi verrà in mente.

  8.4.  Sintassi delle espressioni regolari:

  (N.B.: la sintassi proviene da quella del comando egrep)


  ·  ^ inizio della linea

  ·  $ fine della linea

  ·  ogni singolo carattere corrisponde a sè stesso (se si tratta di un
     carattere speciale, per fare il confronto lo si deve far precedere
     da \ , quindi: \?, \+, \{, \|, \(, \), ecc.

  ·  . qualsiasi carattere eccetto il fine-linea

  ·  [12a-e-] un carattere tra quelli racchiusi tra parentesi. In questo
     caso può essere: 1, 2, a, b, c, d, e, -. Gruppi consecutivi di
     caratteri si identificano con il primo, seguito da - e dall'ultimo
     (a-e=abcde). Se il primo carattere è ^, si intende qualsiasi
     carattere ESCLUSI quelli tra parentesi.  Per includere il simbolo ]
     lo si deve mettere per primo, mentre per inserire il simbolo ^ lo
     si deve mettere da qualsiasi parte TRANNE che all'inizio, e per il
     carattere - deve essere l'ultimo prima della parentesi.

  ·  * il carattere precedente può essere presente 0 o più volte

  ·  + il carattere precedente può essere presente 1 o più volte

  ·  ? il carattere precedente può essere presente 0 o 1 volte al
     massimo

  ·  {n} il carattere precedente può essere presente esattamente n volte

  ·  {n,} il carattere precedente può essere presente almeno n volte

  ·  {n,m} il carattere precedente può essere presente almeno n volte e
     al massimo m

  ·  due espressioni regolari possono essere concatenate, ottenendone
     un'altra generata dalla concatenazione dei risultati delle
     sottostringhe

  ·  due espressioni regolari separate da | diventano alternative

  ·  la ripetizione ha precedenza più alta rispetto alla concatenazione,
     che a sua volta ha precedenza più alta rispetto all'alternatività
     (usate le parentesi tonde per modificare questo comportamento)

  ·  per eseguire il confronto con una parola intera invece che con una
     sottostringa, racchiudetela tra \< e \>: ad esempio \<test\>
     riconoscerà "test" ma non "testing"

  ·  di solito i confronti non sono sensibili a maiuscole o minuscole,
     quindi un piccolo errore sarà perdonato!

  9.  Leafnode

  9.1.  Configurazione

  Leafnode si occupa di ricevere e inviare i post da e verso i newsgroup
  Usenet. E' in genere adatto, data la sua semplicità, per computer
  singoli o comunque piccole reti. Se necessitate di creare newsgroup
  locali per la vostra LAN, o avete bisogno di maggior potenza e
  opzioni, rivolgetevi a INN, di cui potete trovare un'ampia trattazione
  nell'Howto scritto da Filippo Panessa - aka Kalem
  (http://web.tiscalinet.it/kalem). Non potete usare contemporaneamente
  due demoni che cercano di controllare la stessa porta, quindi nel caso
  abbiate INN o altri newsserver, commentate la riga apposita
  all'interno di /etc/inetd.conf e riavviate. Per configurarlo, dopo
  averlo installato, modificate il file /etc/leafnode/config come segue
  (è proprio il minimo indispensabile, ci sono molte più opzioni,
  direttamente commentate nel file). Ricordate che /etc/leafnode/ e il
  suo contenuto devono appartenere all'utente e gruppo news, quindi date
  da una console, loggati come root:


  ______________________________________________________________________
  chown -R news.news /etc/leafnode/
  ______________________________________________________________________



  Ricordate inoltre che alcune vecchie distribuzioni di leafnode non
  erano compatibili con l' anno 2000, quindi usatene una versione >
  1.9.4. Segue il file config di esempio:





















  ______________________________________________________________________
  === file: /etc/leafnode/config ===

  ## inserisci qui il tuo server news - OBBLIGATORIO
  server = news.libero.it

  ## I thread vengono cancellati dopo il numero di giorni seguente,
  ## se non definito diversamente con groupexpire - OBBLIGATORIO
  ## man leafnode per informazioni su groupexpire
  expire = 60

  ## Numero massimo di messaggi da scaricare per volta. Sconsigliato
  ## sia impostarlo al di sotto di 1000 che al disopra di 2000
  maxfetch = 2000

  ## per scaricare solo gli header dei messaggi e in seguito solo i body
  ## marcati per il download, impostare delaybody ad 1
  delaybody = 0

  ## impedisce di scaricare articoli più grandi di 50000 bytes
  maxbytes = 50000

  ## impedisce di scaricare articoli più lunghi di 1000 righe
  maxlines = 1000

  ## massimo numero di giorni in cui sarà scaricato un newsgroup che non
  ## viene letto, prima di annullare la sottoscrizione in automatico
  timeout_long = 7

  ## minimo numero di giorni in cui sarà scaricato un newsgroup che forse si è sottoscritto
  ## per errore e non viene letto, prima di annullare la sottoscrizione in automatico
  timeout_short = 2

  ## attiva l'invio di messaggi di debug al syslog, per evidenziare malfunzionamenti
  debugmode = 1

  ## evita che vengano sottoscritti in automatico newsgroup non desiderati
  ## in caso di crosspost verso di essi
  create_all_links = 0

  ## file contenente i filtri per i messaggi da NON scaricare (leggete alla fine della pagina
  ## per altre informazioni e nel caso togliete il carattere # all'inizio della riga seguente)
  # filterfile = /etc/leafnode/filterfile
  ______________________________________________________________________



  Controllate che in /etc/inetd.conf sia presente una riga come la
  seguente, NON commentata da #:


  ______________________________________________________________________
  nntp   stream   tcp    nowait    news    /usr/sbin/tcpd   /usr/sbin/leafnode
  ______________________________________________________________________



  Nel caso non esista, aggiungetela. Date da root: killall -HUP inetd
  per riavviare il demone inet e provate a fare: telnet localhost 119
  per vedere se leafnode vi risponde (dovreste ottenere qualcosa come:
  200 Leafnode NNTP Daemon, version 1.9.13 running at
  localhost.localdomain). Per scaricare le news, dovete lanciare il
  comando: fetchnews da utente root o news (badate che spesso l'utente
  news viene creato ma non gli viene assegnata una password, quindi non
  può loggarsi; nel caso da root date: passwd news e assegnategliene
  una). Se non volete loggarvi come root o news (presuppongo che
  fetchnews sia in /usr/sbin, se "which fetchnews" vi da un path diverso
  sostituitelo dove necessario), date i seguenti comandi da root :


  ______________________________________________________________________
  chown root.news /usr/sbin/fetchnews
  chmod a+s /usr/sbin/fetchnews
  ln -s /usr/sbin/fetchnews /usr/bin/fetchnews
  ______________________________________________________________________



  e poi modificate /etc/group in modo che nell'ultimo campo appaia il
  vostro nome utente:

  prima: news:x:13:news

  dopo: news:x:13:news,vostronomeutente (il numero può cambiare, e la x
  potrebbe essere assente nel caso non utilizziate le shadow password o
  potrebbe essere qualcosa di ingarbugliato nel caso il gruppo abbia una
  password, sempre non shadow).  La prima volta che lancerete fetchnews
  verranno scaricati tutti i nomi dei gruppi presenti sul server remoto.
  Dopo questa fase, entrate nel vostro newsreader preferito e scorrendo
  la lista dei newsgroup marcate quelli che volete frequentare, entrando
  nel newsgroup scelto e LEGGENDO il placeholder di leafnode (questo
  dovrebbe creare i file:
  /var/spool/news/interesting.groups/nome.del.gruppo.scelto di lunghezza
  0: controllate e se ciò non avviene createli voi con: touch
  /var/spool/news/interesting.groups/nome.del.gruppo.scelto, ripetendo
  per ognuno dei gruppi scelti). Al successivo lancio di fetchnews
  verranno scaricati gli header e gli articoli (in base all'impostazione
  di delaybody nel file /etc/leafnode/config) dei gruppi sottoscritti.
  Per leggerli, impostate il vostro newsreader su server: localhost e
  porta 119. Riguardo a quale newsreader scegliere, io vi consiglio slrn
  per console (la configurazione è nelle ultime pagine di questo Howto):
  ci sono varie scuole di pensiero a seconda che vogliate un programma
  da console o da gui. Tra i migliori per console ci sono slrn e tin,
  tra quelli per gui i più promettenti sembrano pan e knode (notate che
  ho scritto "promettenti", non migliori, in quanto ancora buggatelli
  anzichenò), oltre al veterano knews (che non c'entra niente con il
  KDE, il cui newsreader krn è bene che evitiate come LA PESTE, a meno
  che vi piaccia tanto Windows da volerne emulare i crash sotto Linux!
  ;-) ). Possibili opzioni utili di fetchnews sono:


  ·  -v : (anche ripetuto, come -vvvv) che stampa a video un resoconto
     di quello che sta succedendo, più dettagliato in base a quante v
     mettete

  ·  -P : invia solo i vostri nuovi messaggi, senza scaricare quelli
     presenti sul server remoto

  ·  -n : evita l'annullamento automatico delle sottoscrizioni di gruppi
     che non si leggono da molto tempo (intervallo modificabile nel file
     di configurazione, opzioni timeout_short e timeout_long).

  Per cancellare i vecchi post che hanno superato il tempo di expire,
  data da root o news: texpire, magari forzandolo con l'opzione -f.

  9.2.  Scorefile

  Con leafnode potete anche impostare dei filtri per evitare di
  scaricare del tutto degli articoli che non vi interessano. Quello che
  segue è un esempio di killfile creato da Davide Alberani (un grazie
  1000 a lui!), e per attivarlo modificatelo e copiatelo nel file
  /etc/leafnode/filterfile e decommentate la riga apposita in
  /etc/leafnode/config (per una spiegazione della sintassi delle
  espressioni regolari presenti, fate riferimento alla sezione apposita
  nella pagina di Procmail):































































  ______________________________________________________________________
  #
  # File di filtro per leafnode di Davide Alberani
  #
  # Aggiornato al 17 settembre 2000
  #
  # Leafnode puo` essere scaricato da:
  # http://www.leafnode.org
  #
  # Formato principalmente durante la frequentazione dei gruppi:
  # it.comp.os.linux.*
  # it.cultura.ateismo
  # it.comp.os.dibattiti
  # it.comp.sicurezza.varie
  # it.news.gruppi
  # it.arti.cinema
  #
  # Nota:
  # probabilmente vi conviene cancellare o commentare alcune righe
  # nella sezione Subject, a seconda di quali sono i vostri interessi.
  # Per quanto riguarda le entry nella sezione From, NON rompete le
  # gonadi: c'e` finito chi - a mio insindacabile giudizio - ha rotto
  # troppo le scatole, e` troppo stupido per perdere tempo a leggero
  # o semplicemente si e` fatto trascinare troppe volte in discussioni
  # con cerebrolesi.
  #
  # Killare un dato subject solo in un dato newsgroup:
  # Ne avevo discusso tempo fa con non-ricordo-chi; a quanto mi ricordo,
  # dall'ultima volta che ho controllato i sorgenti, leafnode passa le
  # varie linee dell'header separatamente alla funzione che ne controlla
  # aventuali match, quindi non sarebbe possibile farlo.
  # Era saltato fuori che qualcosa tipo:
  # (?-im)Newsgroups:.*IL.NEWSGROUP\nSubject: IL SUBJECT.*\n
  #
  # Io ci credo pochissimo, se provate qualcosa di simile e funziona,
  # fatemi sapere.
  #
  # More info:
  # Se volete maggiori informazioni sulle regular expression, leggetevi
  # man 7 pcre
  # man 7 regex
  # man 1 egrep
  #
  # Enjoy.
  #

  ###########
  # Subject #
  ###########

  # killa *tutti* i subject completamente maiuscoli (a parte l'eventuale Re:)
  # togliere il commento (#) se si vuole attivare questa regola
  #^Subject: (Re: |R: )*[^a-z]*$
  (?im)^Subject:.*sb[ -]*64
  (?im)^Subject:.*winlinux
  (?im)^Subject:.*emacs
  (?im)^Subject:.*system\.map
  (?im)^Subject:.*iomega
  (?im)^Subject:.*fetchmail
  (?im)^Subject:.*sb pci
  (?im)^Subject:.*toshiba
  (?im)^Subject:.*vmware
  (?im)^Subject:.*banshee
  (?im)^Subject:.*isdn
  (?im)^Subject:.*slrn
  (?im)^Subject:.*adaptec
  (?im)^Subject:.*star.*office
  (?im)^Subject:.*sb.*live
  (?im)^Subject:.*blaster.*live
  (?im)^Subject:.*suse
  (?im)^Subject:.*red[ -]*hat
  (?im)^Subject:.*caldera
  (?im)^Subject:.*mandrake
  (?im)^Subject:.*tnt2
  (?im)^Subject:.*trio.*3d
  (?im)^Subject:.*3dfx
  (?im)^Subject:.*samba
  (?im)^Subject:.*kppp
  (?im)^Subject:.*voo?doo?
  (?im)^Subject:.*rh ?[56]
  (?im)^Subject:.*nvidia
  (?im)^Subject:.*i740
  (?im)^Subject:.*virge
  (?im)^Subject:.*matrox
  (?im)^Subject:.*x11amp
  (?im)^Subject:.*mp3
  (?im)^Subject:.*yamaha
  (?im)^Subject:.*slac?kware
  (?im)^Subject:.*sound ?blaster

  ####################
  # Subject generici #
  ####################

  (?im)^Subject:.*non legge[rt]e
  (?im)^Subject: aiuto+ *[\?\!]*$
  (?im)^Subject: he+l+p+ *[\?\!]*$
  (?im)^Subject: prov[ae] *[\?\!]*$
  (?im)^Subject: problem[ai] *[\?\!]*$
  (?im)^Subject: test *[\?\!]*$
  (?im)^Subject: domand[ae] *[\?\!]*$
  (?im)^Subject:.*\$\$.*\!\!\!\!
  ^Subject:.*\[FAQ\] RISPOSTE ALLE DOMANDE PIU\` FREQUENTI.*
  ^Subject: REGOLE BASE DI it\.comp\.os\.linux\.iniziare.*
  ^Subject: REGOLE BASE DI \"it\.comp\.os\.linux\.iniziare\"
  ^From: From: autoposter <autoposter@autoposter.invalid>
  ^From: gz@indirizzo.non.valido.it \(AUTOPOSTER-AMF\)
  ^Subject:.*benvenuto su Usenet\!
  (?im)^Subject:.*FAQ: Le mailing list italiane
  (?im)^Subject:.*RFD, CFV e it\.news\.gruppi
  (?im)^Subject:.*Usenet e news - dove saperne di piu\`
  (?im)^Subject:.*Istruzioni per la creazione di gruppi della gerarchia it
  (?im)^Subject:.*\[HOWTO\] COME PORRE DOMANDE IN QUESTO GRUPPO
  (?im)^Subject: Funzionamento delle news: il crosspost e\` Male
  (?im)^Subject: I gruppi Usenet it\.\* - istruzioni per l\'uso
  (?im)^Subject: Quali sono i gruppi della gerarchia  it\.\* \?

  ########
  # From #
  ########

  ^From:.*errebi@fiscalinet.it
  ^From:.*a.sevi@katamail.com
  ^From:.*kingz@tiscalinet.it
  ^From:.*nkoffr@tin.it
  ^From:.*giovannad\'arco@tiscalinet.it
  ^From:.*gaucie@tin.it
  ^From:.*borisnospam@hotmail.com.com
  ^From:.*io@io.it
  ^From:.*junfan
  ^From:.*ziocan@fica.it
  ^From:.*ciberneta@libero.it
  ^From:.*junfan77@libero.it
  ^From:.*maandateacagher@dicorsa.gulp
  ^From:.*madQ
  ^From:.*XPDCVwtw
  ^From:.*Club.italia.milano@iol.it
  ^From:.*geremia@mclink.it
  ^From:.*info@aroundstore.com
  ^From:.*woody_hesse@iol.it
  ^From:.*a_capelli@hotmail.com
  ^From:.*aes-mail@freenet.hut.fi
  ^From:.*tommygun.*@freemail.it
  ^From:.*grog@tin.it
  ^From:.*jacline@dueffe.it
  ^From:.*urihel@mmp2.iol.it
  ^From:.*acia@tin.it
  ^From:.*alexievi?c?@tin.it
  ^From:.*liberal73@iname.com
  ^From:.*tznt0078@pt.tizeta.it
  ^From:.*paolocl@netmail.com
  ^From:.*fedrox@libero.it
  ^From:.*fdonline@iname.com
  ^From:.*maga@provincia.ps.it
  ^From:.*inaj@freemail.it
  ^From:.*hot@warm.bo
  ^From:.*npole@_REMOVE_bigfoot.com
  ^From:.*VS©
  ^From:.*glm@biogate.com
  ^From:.*hastaluego99@.*hotmail.com
  ^From:.*bluesedelica@iol.it
  ^From:.*cbu_ut@hotmail.com
  ^From:.*massj@BUDDAflashmail.com
  ^From:.*new@life.now
  ^From:.*debian@matsumanga.co.jp
  ^From:.*as.ps@flashnet.it
  ^From:.*C_Zambo@iol.it
  ^From:.*club.italia.milano@iol.it
  ^From:.*juretto@tin.it
  ^From:.*gattoone@hotmail.com
  ^From:.*mariafrf@tin.it
  ^From:.*tamarica@tin.it
  ^From:.*nathing@tin.it
  ^From:.*andreap@instation.it
  ^From:.*stephendedalus1@yahoo.com
  ^From:.*dpmarc@tin.it
  ^From:.*torque_@hotmail.com
  ^From:.*giulio_bottini@bigfoot.com
  ^From:.*FOX99@mail.asianet.it
  ^From:.*mpolve@tin.it
  ^From:.*nino@affaritaliani.it
  ^From:.*alxcost@tin.it
  ^From:.*eghiani@etruria.net
  ^From:.*microgest@microgest.it
  ^From:.*aiax@excite.com
  ^From:.*tipfkam.*@hotmail.com
  ^From:.*fuoripista@altavista.net
  ^From:.*fuoripista@yahoo.it
  ^From:.*fogazzid@bigfoot.com
  ^From:.*jodyrm@hotmail.com
  ^From:.*menthos@posta.alinet.it
  ^From:.*hongkongmail@iname.com
  ^From:.*f.varoli@antilink.prolink.replica.it
  ^From:.*stamink@armando.com
  ^From:.*taexpo.*@idirect.ca
  ^From:.*vendicator@hell.com
  ^From:.*S&F@tin.it
  ^From:.*rick.sabbadini@iol.it
  ^From:.*fogazzid@usa.net
  ^From:.*maxadamo@tin.it
  ^From:.*lustfemale
  ^From:.*bamoo*@sexmagnet.com
  ^From:.*condon@hotpop.com
  ^From:.*wiwaxia@bigfoot.com
  ^From:.*robcn@ibm.net
  ^From:.*alessandro.villetti@usa.net
  # Pirotti.  Un uomo, un mito.
  ^From:.*pirotti@ngweb.it
  ^From:.*pr[ou]sper.*@.*ctonline.it
  ^From:.*pirotti@tiscalinet.it
  ^From:.*prpiro@tin.it
  ^From:.*prosperopirotti@tin.it
  ^From:.*crpraolini@.*libero.it
  ^From:.*jojo@arcanet.it
  ^From:.*pxqpas@tin.it
  ^From:.*roxana@flashnet.it
  ^From:.*nstdvd@nospamtin.it
  ^From:.*blisset@i.am
  ^From:.*mat66@arc.it
  ^From:.*pod@pineto.net
  ^From:.*nicola@netstation.org
  ^From:.*rcaudan@whitepower.com
  ^From:.*nsj@iname.com
  # Gianfranco Bruno. Cerca di insidiare i record del Pirotti.
  ^From:.*gbruno@webaq.it
  ^From:.*vicolo_connery@yahoo.com
  ^From:.*supergiaf@libero.it
  ^From:.*supergiaf@tiscalinet.it
  ^From:.*Pietro_Buttiglione@insieme.net
  ^From:.*spiritologia@iol.it
  ^From:.*spiritologia@supereva.it
  ^From:.*whole.lotta@lo.ve
  ^From:.*w6130370@inwind.it
  ^From:.*saccoforino@yahoo.com
  ^From:.*chief@etruria.net
  ^From:.*mlagatt@tin.it
  ^From:.*thats.the.way@do.it
  ^From:.*shermin93@hotmail.com
  ^From:.*ad549379@silab.dsi.unimi.it
  ^From:.*auro.zac@tiscalinet.it
  ^From:.*picardismy@life.sbam
  ^From:.*trekkers@forever.slump
  ______________________________________________________________________



  That's all folks!

  9.3.  Leafnode+

  (Sottosezione a cura di Giambo)

  Leafnode+ deriva da Leafnode v1.4. La differenza più interessante
  rispetto al suo "predecessore" è forse la velocità nello scaricare gli
  articoli di ogni NG: Lo scaricamento avviene in maniera "asincrona",
  non aspettando cioè una risposta per ogni richiesta prima di procedere
  con la prossima, bensì spedendo più richieste ed eventualmente
  riformulando quelle che non hanno ricevuto una risposta. Risulta
  inoltre più veloce nel fornire i suoi servizi una volta contattato.
  Manca purtroppo dell'opzione "delaybody" che permette di scaricare in
  un secondo tempo il corpo di un messaggio del quale si è letto il
  titolo: l'autore promette di implementare questa possibilità se le
  richieste saranno numerose. Manca inoltre il filterfile, quindi
  bisogna scaricare tutti i post per ogni newsgroup sottoscritto.
  Personalmente non ne sento la mancanza, anzi, per dirla tutta, non
  credo che sia giusto che un'amministratore si arroghi il diritto di
  filtrare i messaggi che a lui non vanno a genio prevalicando così i
  suoi utenti; questi ultimi possono utilizzare le possibilità di
  filtraggio offerte dai loro newsreader. Dall'altro lato c'è da dire
  che per una LinuxBox configurata per un solo utente, l'utilizzo di un
  filtro può portare ad un buon risparmio sulla bolletta telefonica,
  risparmio però facilmente uguagliabile dalla maggiore velocità di
  leafnode+ nello scaricare i messaggi rispetto al suo predecessore.
  Come si può notare, ci sono tutti gli elementi per innescare una
  "guerra santa", o per spingere qualche volenteroso a iplementare il
  filtraggio utilizzando i sorgenti di leafnode: Magari potra' nascere
  una nuova creatura, leafnode++ :-)

  In linea di massima leafnode+ assomiglia al suo predecessore, vi
  rimando al capitolo su leafnode per quel che concerne la creazione
  degli utenti, l'uso

  di fetchnews e texpire. La differenza principale è che il file di
  configurazione non si trova in /etc/leafnode, bensì in
  /usr/lib/leafnode. Se si compila partendo dai sorgenti, si può
  modificare nel Makefile la voce "LIBDIR" per piazzare i files di
  configurazione in /etc/leafnode (Il che sarebbe, IMHO, più
  "ordinato"). ATTENZIONE ! Se si compila partendo dai sorgenti, di
  default l'installazione crea un file in questa directory con il nome
  "config.example": Sarà necessario quindi copiare il file con il nome
  corretto, cioè "config", facendo attenzione ai diritti di
  lettura/scrittura sia del file che della directory che lo contiene (in
  questa directory verrà scritto pure il groupinfo !). Il file di
  configurazione è analogo a quello di Leafnode.

  [BUGS]

  C'e' un curioso BUG con la versione 2.10: La prima volta che viene
  dato un "make installall" compare la scritta:

  "make: libutil.a: Command not found"

  Ridando il comando "make installall" il tutto viene compilato e
  installato correttamente.

  10.  Firewall

  Un firewall è essenzialmente un dispositivo che permette di gestire
  come un filtro il traffico tra due interfacce di rete. In questa
  sezione vedremo come impostare un firewall per un sistema Linux, sia
  per proteggere un singolo PC, sia una rete locale, in entrambe le
  situazioni nel caso di collegamento a internet. Inoltre vedremo come
  poter consentire la condivisione di una connessione internet, in modo
  che un singolo PC possa isolare da possibili attacchi esterni e allo
  stesso tempo permetta l'accesso all'esterno alla rete locale. Per
  accesso esterno considero solo quello in entrata: tutti i PC della
  rete potranno inviare e ricevere tutte le informazioni che vorranno,
  ma non potranno offrire servizi all'esterno (infatti per questo
  servizio serve un demone apposito, rinetd).  Inoltre l'inserimento
  nella macchina firewall di un server dns e di un cache proxy
  permetteranno di sveltire il traffico: il server dns locale permette
  infatti di avere una risposta più immediata alle richieste di
  risoluzione dei nomi in indirizzi ip, mentre il cache proxy permette
  di tenere copie locali delle pagine web e dei file già scaricati,
  evitando una nuova richiesta esterna (questi due tipi di servizi sono
  trattati nelle sezioni DNS e WWWOFFLE di questo howto).

  Linux contiene già al suo interno tutto il necessario per implementare
  un firewall e il masquerading: si tratta del tool ipchains dei kernel
  2.2.x.  I kernel della serie 2.0.x usavano ipfwadm, mentre quelli
  della futura versione 2.4.x useranno iptables: qui si tratterà solo la
  gestione con ipchains e kernel 2.2.x (e in futuro iptables), mentre
  ipfwadm non verrà trattato. Per poter utilizzare ipchains, è
  necessario che il kernel sia compilato con le opzioni di firewalling
  seguenti impostate a Yes:


  ·  Network firewalls

  ·  IP: firewalling

  ·  IP: always defragment

  ·  IP: transparent proxy support

  ·  IP: masquerading

  ·  IP: ICMP masquerading

  più naturalmente tutto quello che vi serve per la rete (networking,
  ppp, ethernet, routing, ecc.). Ipchains suddivide il traffico in tre
  tronconi, fornendo tre filtri: input, output e forward, gestibili
  tramite una serie di regole che stabiliscono il trattamento del
  pacchetto arrivato. Le regole vengono applicate nell'ordine in cui
  sono inserite, e se non è presente alcuna regola specifica, si applica
  la politica di default. In questo howto prendereno in considerazione
  solo le cose essenziali e solo quelle trattate nello script, per il
  resto si rimanda al Firewall-Howto e all'Ipchains-Howto, oltre
  all'ottima sezione degli Appunti Linux. L'impostazione tipica di una
  regola è la seguente:


  ______________________________________________________________________
  ipchains <opzione-di-comando> <filtro> [<regola>] [<obiettivo>]
  ______________________________________________________________________



  Le opzioni di comando sono:


  ·  -F o --flush : elimina tutte le regole del filtro specificato

  ·  -D o --delete : elimina una o più regole dal filtro specificato

  ·  -A o --append : aggiunge una regola in coda a quelle del filtro
     selezionato

  ·  -I o --insert : inserisce una regola in una posizione stabilita del
     filtro selezionato

  ·  -R o --replace : sostituisce una regola del filtro selezionato

  ·  -L o --list : elenca le regole di un uno o di tutti i filtri

  ·  -P o --policy : cambia la politica predefinita per il filtro
     specificato

  I filtri sono (rispettivamente per pacchetti in entrata, uscita e in
  transito):


  ·  input

  ·  output

  ·  forward

  Gli obiettivi sono:


  ·  ACCEPT : consente il transito del pacchetto

  ·  DENY : impedisce il transito del pacchetto, limitandosi a ignorarlo

  ·  REJECT : impedisce il transito del pacchetto notificando
     all'origine il rifiuto (viene inviato un messaggio ICMP
     specificante che il pacchetto è stato rifiutato)

  Le regole invece usano le seguenti opzioni (le parentesi [] indicano
  qualcosa di opzionale, mentre il ! indica una negazione):


  ·  -p [!] {tcp|udp|icmp|all} : stabilisce il protocollo cui si applica
     la regola (default: all)

  ·  -i [!] interfaccia : stabilisce a quale interfaccia si applica la
     regola

  ·  -j obiettivo : stabilisce cosa fare in caso di corrispondenza della
     regola

  ·  -s [!] indirizzo[/maschera] : l'indirizzo sorgente da cui arriva il
     pacchetto (default : 0.0.0.0/0, cioè ogni indirizzo)

  ·  -d [!] indirizzo[/maschera] : l'indirizzo cui è diretto il
     pacchetto (default : 0.0.0.0/0, cioè ogni indirizzo)

  ·  -l : effettua il log di quanto passa attraverso la regola

  ·  -n : non risolve i nomi di domini (lascia l'ip numerico)

  Altre informazioni sono reperibili nei documenti su indicati. Il
  mascheramento IP permette di far credere all'esterno che l'origine
  delle connessioni è sempre un solo nodo, anche quando in realtà si
  tratta di un nodo interno ad una rete privata. Naturalmente, il nodo
  che esegue il mascheramento è poi in grado di distinguere quali siano
  stati i nodi mascherati che hanno originato la connessione, girando a
  loro i pacchetti di loro competenza.

  Lo script seguente funziona sia come firewall che da mascheramento di
  una rete locale interna verso Internet. E' configurato per l'accesso
  dialup via ppp (usa ppp0). Leggete i commenti nel file, modificate
  dove indicato e andate in pace. Per sapere come abilitare il supporto
  per firewall e masquerading, guardate nella pagina relativa al kernel.
  Dovrebbe fare la maggior parte dei controlli su esistenza di file,
  connessione, parametri, e segnalarvi se qualcosa non va.  ***Nota***
  per il mascheramento di ICQ, dovete scaricare, compilare e installare
  "ip_masq_icq", reperibile all'URL http://freeshell.org/~djsf/masq-icq/
  oppure all'URL http://djsf.narod.ru/masq-icq/ (un grazie a Filippo
  Panessa per il suggerimento!). In ICQ2000 non funziona ancora il
  trasferimento file. Nella configurazione dei client che vengono
  mascherati, dovete impostare nelle loro opzioni l'uso di un firewall
  sull'intervallo di porte 2000:4000.








  ______________________________________________________________________
  #!/bin/bash
  #
  #  ==========================================================================
  #  ========= Script per la configurazione di un Firewall per Linux ==========
  #  ==========================================================================
  #
  # Da utilizzarsi esclusivamente per una macchina stand-alone connessa
  # ad internet tramite connessione dial-up. E' necessario disporre di
  # un kernel della serie 2.2.x o 2.3.x compilato con il supporto
  # del masquerading, del firewall e l'opzione "always defragment".
  # Viene filtrato cio' che entra e permesso alla rete di uscire
  #
  # $Revisione: 7.0$
  # modificato da MrShark su un lavoro precedente di Maurizio Cimaschi,
  # con vari preziosi suggerimenti di Pierluigi De Rosa e Marco d'Itri.
  # (Se ci sono errori, fatemeli conoscere a: <mrshark@tiscalinet.it>).
  #
  # Utilizzo: firewall start|stop|status
  #     start = attiva il firewall
  #     stop = disattiva il firewall
  #     status = impostazioni correnti del firewall
  #
  # by Antonio Fragola, aka MrShark - The Informaniac
  #

  #------------------------------ verifica che lo script sia avviato da root
  if [ $UID !=0 ]; then
      clear
      echo -e "\aATTENZIONE: solo l'utente root puo' avviare il firewall!"
      exit 1
  fi

  #  ==========================================================================
  #  =========== Definizione delle variabili d'ambiente necessarie ============
  #  ==========================================================================

  #------------------------------ variabili utili
      IPCHAINS="/sbin/ipchains"
      INTERFACES=`/sbin/ifconfig | grep Link | cut -d \  -f 1`
      CURRENT_KERNEL=`uname -r`
      IP_MASQ_MODULES="ftp irc quake"
      #IP_MASQ_MODULES="cuseeme ftp irc quake raudio vdolive"
      INTERFACE="ppp0"
      INTERFACEMASK="255.255.255.255"
      INTERFACEIP=`/sbin/ifconfig $INTERFACE | grep inet | cut -d : -f 2 | cut -d \  -f 1`
      LOCALIP="$INTERFACEIP/$INTERFACEMASK"
      LOCALNET="192.168.0.0/16"
      ANYWHERE="0.0.0.0/0"
      LOOPBACK="127.0.0.0/8"
      CLASS_A="10.0.0.0/8"
      CLASS_B="172.16.0.0/12"
      CLASS_C="192.168.0.0/16"
      CLASS_D_MULTICAST="224.0.0.0/4"
      CLASS_E_RESERVED_NET="240.0.0.0/5"
      NFS_PORT="2049"                 # (TCP/UDP) NFS
      SOCKS_PORT="1080"               # (TCP) Socks
      # X Windows alloca le porte a partire dalla 6000 e incrementa
      # fino alla 6063 per ogni server addizionale in funzione.
      XWINDOW_PORTS="6000:6063"       # (TCP) X windows
      # traceroute di solito usa -S 32769:65535 -D 33434:33523
      TRACEROUTE_SRC_PORTS="32769:65535"
      TRACEROUTE_DEST_PORTS="33434:33523"
      PRIVPORTS="0:1023"
      UNPRIVPORTS="1024:65535"
       # SSH incomincia dalla porta 1023 e va a scalare fino alla 513
      SSH_PORTS="1022:1023"

  #------------------------------ codici escape colori
      RED="\\033[1;31m"
      GREEN="\\033[0;32m"
      WHITE="\\033[0;39m"
      CYAN="\\033[0;36m"
      BLUE="\\033[1;34m"
      ORANGE="\\033[0;33m"
      YELLOW="\\033[1;33m"
      MAGENTA="\\033[1;35m"

  #  ==========================================================================
  #  ================== Definizione dei servizi utilizzabili ==================
  #  ============ ON=Servizio attivo    OFF=Servizio non richiesto ============
  #  ==========================================================================

  # masquerading: ON solo se si ha una rete locale che deve accedere a internet
  MASQ="ON"
  FTP="ON"
  DNS1="ON"
  DNS2="ON"
  HTTP="ON"
  SMTP="ON"
  NNTP="ON"
  POP3="ON"
  ICMP="ON"
  AUTH="ON"
  IRC="OFF"
  ICQ="OFF"
  SSH="ON"
  NAP="OFF"

  #  ==========================================================================
  #  ============== Definizione degli IP dei servizi del provider =============
  #  ==========================================================================

  # de/commentare solo le sezioni d'interesse o aggiungerne altre
  #------------------------------ IP di libero
      DNS1_IP="195.210.91.1"
      DNS2_IP="195.210.91.2"
      SMTP_IP="193.70.192.50"
      NNTP_IP="192.106.1.6"
  #------------------------------ IP di iol1055
      #DNS1_IP="195.210.91.1"
      #DNS2_IP="195.210.91.2"
      #SMTP_IP="193.70.192.50"
      #NNTP_IP="193.70.192.201"
  #------------------------------ IP di tiscali
      #DNS1_IP="195.130.224.18"
      #DNS2_IP="195.130.225.129"
      #SMTP_IP="195.130.224.22"
      #NNTP_IP="195.130.224.123"
  #------------------------------ IP di clubnet
      #DNS1_IP="212.216.112.222"
      #DNS2_IP="212.216.172.162"
      #attenzione: clubnet usa smtp con piu' IP - cercarli con nslookup
      #SMTP_IP="212.216.176.50"
      #NNTP_IP="194.243.154.18"

  # Attenzione: aggiungere TUTTI gli IP dei server POP3 usati, non solo
  # quelli del provider in uso, altrimenti non si potra' scaricare la posta
      #pop3 tiscali
      POP3_1_IP="195.130.224.23"
      #pop3 iol1055
      POP3_2_IP="193.70.192.80"
      #pop3 libero
      POP3_3_IP="193.70.192.70"
      #pop3 clubnet
      #attenzione: clubnet usa pop con piu' IP
      POP3_4_IP="212.216.176.71"
      POP3_5_IP="212.216.176.64"
      POP3_6_IP="212.216.176.65"
      POP3_7_IP="212.216.176.67"
      POP3_8_IP="212.216.176.68"
      POP3_9_IP="212.216.176.69"
      POP3_10_IP="212.216.176.70"

  #  ==========================================================================
  #  =========== Da qui in poi non toccare niente (al piu' solo la ===========
  #  ========== parte del POP3 per aggiungere/rimuovere gli account) ==========
  #  ==========================================================================

  case "$1" in

  #------------------------------ opzione start dello script
      start)
  #------------------------------ verifica esistenza interfaccia
          if [ -z $INTERFACEIP ]; then
  #------------------------------ se non esiste, avverti ed esci con errore 1
              clear
              echo -e "${RED}ATTENZIONE: ${YELLOW}l'interfaccia "
              echo -e "${RED}ppp0${YELLOW} NON e' attiva nel sistema."
              echo -e "Firewall NON attivato. Controllare la connessione Internet."
              echo -en "${WHITE}Interfacce attualmente attive nel PC: "
              for irf in ${INTERFACES} ; do
                  echo -en "${RED}${irf}${WHITE} "
              done
              echo -e "\n\a"
              exit 1
  #------------------------------ se l'interfaccia esiste, si procede
          else
              echo
              echo "Attivazione del Firewall in corso..."
              echo -e "Indirizzo IP locale sull'interfaccia ${YELLOW}$INTERFACE"
              echo -e "${WHITE} : ${RED}$LOCALIP${WHITE}"
              echo -n "Flushing delle regole eventualmente presenti : "
              $IPCHAINS -F input
              $IPCHAINS -F output
              $IPCHAINS -F forward
              echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"

  #  ==========================================================================
  #  =========================== Regole in ingresso ===========================
  #  ==========================================================================

  #------------------------------ attivazione protezioni varie
              echo -n "Permesso al traffico locale sull'interfaccia di loopback : "
              $IPCHAINS -A input -s $ANYWHERE -i lo -j ACCEPT
              $IPCHAINS -A input -s $LOCALNET -d $ANYWHERE -j ACCEPT
              echo -e "\t[ ${GREEN}OK ${WHITE}]"
              echo -n "Attivazione Source Address Verification : "
              if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
                  for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
                      echo 1 > $f
                  done
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
                  echo -n "SAV non disponibile, utilizzo di ipchains : "
                  $IPCHAINS -A input -s 127.0.0.1 -i lo -j ACCEPT
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              fi

              echo -n "Attivazione TCP SYN Cookie Protection : "
              if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
                  echo 1 >/proc/sys/net/ipv4/tcp_syncookies
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -n "Attivazione Always Defragging Protection : "
              if [ -e /proc/sys/net/ipv4/ip_always_defrag ]; then
                  echo 1 > /proc/sys/net/ipv4/ip_always_defrag
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -n "Attivazione Broadcast Echo Protection : "
              if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then
                  echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -n "Attivazione Bad Error Message Protection : "
              if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then
                  echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -n "Disattivazione ICMP Redirect Acceptance : "
              if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then
                  for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
                      echo 0 > $f
                  done
                  echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -n "Disattivazione Source Routed Packets : "
              if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then
                  for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
                      echo 0 > $f
                  done
                  echo -e "\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

              echo -e "${YELLOW}Attivazione dei servizi in ingresso richiesti : ${WHITE}"
              echo -n "Impostazione della POLICY di ingresso a DENY : "
              $IPCHAINS -P input DENY
              echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"

  #------------------------------ DNS1 (53)
              echo -n "Server DNS primario : "
              if [ $DNS1 = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $DNS1_IP 53 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p udp -s $DNS1_IP 53 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ DNS2 (53)
              echo -n "Server DNS secondario : "
              if [ $DNS2 = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $DNS2_IP 53 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p udp -s $DNS2_IP 53 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ HTTP (80) e HTTPS (443)
              echo -n "Navigazione WEB : "
              if [ $HTTP = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s 0/0 80 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp ! -y -s 0/0 443 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ SMTP (25)
              echo -n "Invio posta : "
              if [ $SMTP = "ON" ]; then
              $IPCHAINS -A input -p tcp -s $SMTP_IP 25 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
              # $IPCHAINS -A input -p tcp -s $ANYWHERE 25 -d $LOCALIP \
              #        $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ POP3 (110)
              echo -n "Prelievo posta : "
              if [ $POP3 = "ON" ]; then
                  $IPCHAINS -A input -p tcp -s $POP3_1_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_2_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_3_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_4_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_5_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_6_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_7_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_8_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_9_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp -s $POP3_10_IP 110 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ NNTP (119)
              echo -n "Newsgroup Usenet : "
              if [ $NNTP = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $NNTP_IP 119 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ FTP (20/21)
              echo -n "File Transfer Protocol : "
              if [ $FTP = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y --source-port 21 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  #FTP Port Mode (normale)
                  $IPCHAINS -A input -p tcp --source-port 20 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  #FTP Passive Mode (senza questa i browser non accedono ai siti FTP)
                  $IPCHAINS -A input -p tcp ! -y --source-port $UNPRIVPORTS \
                      -d $LOCALIP $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ SSH (22)
              echo -n "Secure Shell : "
              if [ $SSH = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $ANYWHERE 22 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p tcp ! -y -s $ANYWHERE 22 -d $LOCALIP \
                      $SSH_PORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ ICMP (solo tipi 0/3/11)
              echo -n "Traffico ICMP : "
              if [ $ICMP = "ON" ]; then
                  $IPCHAINS -A input -p icmp -s $ANYWHERE 0 -d $LOCALIP -j ACCEPT
                  $IPCHAINS -A input -p icmp -s $ANYWHERE 3 -d $LOCALIP -j ACCEPT
                  $IPCHAINS -A input -p icmp -s $ANYWHERE 11 -d $LOCALIP -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ AUTH (113)
              echo -n "Richieste di identificazione : "
              if [ $AUTH = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -d $LOCALIP 113 -j ACCEPT
                  echo -e "\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ IRC (6667)
              echo -n "Internet Relay Chat : "
              if [ $IRC = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $ANYWHERE 6667 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ ICQ (2000:4000)
              echo -n "ICQ : "
              if [ $ICQ = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $ANYWHERE 2000:4000 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  $IPCHAINS -A input -p udp -s $ANYWHERE 2000:4000 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ NAPSTER (6699)
              echo -n "NAPSTER : "
              if [ $NAP = "ON" ]; then
                  $IPCHAINS -A input -p tcp ! -y -s $ANYWHERE 6699 -d $LOCALIP \
                      $UNPRIVPORTS -j ACCEPT
                  echo -e "\t\t\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
              else
                  echo -e "\t\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi

  #------------------------------ blocco e log
              echo -n "Blocco e log di tutto il resto : "
              # Rifiuta pacchetti spoof che simulano di provenire dall'esterno.
              $IPCHAINS -A input -i $INTERFACE -s $LOCALIP -j DENY -l
              # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe A
              $IPCHAINS -A input -i $INTERFACE -s $CLASS_A -j DENY
              $IPCHAINS -A input -i $INTERFACE -d $CLASS_A -j DENY -l
              # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe B
              $IPCHAINS -A input -i $INTERFACE -s $CLASS_B -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -d $CLASS_B -j DENY -l
              # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe C
              $IPCHAINS -A input -i $INTERFACE -s $CLASS_C -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -d $CLASS_C -j DENY -l
              # Rifiuta pacchetti che sembrano provenire dall'interfaccia di Loopback
              $IPCHAINS -A input -i $INTERFACE -s $LOOPBACK -j DENY -l
              # Rifiuta pacchetti broadcast address SOURCE
              $IPCHAINS -A input -i $INTERFACE -s $INTERFACEMASK -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -d $ANYWHERE -j DENY -l
              # Rifiuta pacchetti multicast addresses di Classe D (in.h) (NET-3-HOWTO)
              # Il Multicast e' illegale come indirizzo sorgente, ed usa UDP.
              $IPCHAINS -A input -i $INTERFACE -s $CLASS_D_MULTICAST -j DENY -l
              # Rifiuta pacchetti  da indirizzi IP riservati di Classe E
              $IPCHAINS -A input -i $INTERFACE -s $CLASS_E_RESERVED_NET -j DENY -l
              # Rifiuta pacchetti con indirizzi definiti riservati dall'IANA
              # 0.*.*.*, 1.*.*.*, 2.*.*.*, 5.*.*.*, 7.*.*.*, 23.*.*.*, 27.*.*.*
              # 31.*.*.*, 37.*.*.*, 39.*.*.*, 41.*.*.*, 42.*.*.*, 58-60.*.*.*
              # 65-95.*.*.*, 96-126.*.*.*, 197.*.*.*, 201.*.*.* (?), 217-223.*.*.*
              $IPCHAINS -A input -i $INTERFACE -s 1.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 2.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 5.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 7.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 23.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 27.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 31.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 37.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 39.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 41.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 42.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 49.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 50.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 58.0.0.0/7 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 60.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 65.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 66.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 67.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 68.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 69.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 70.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 71.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 72.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 73.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 74.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 75.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 76.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 77.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 78.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 79.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 80.0.0.0/4 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 96.0.0.0/4 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 112.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 113.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 114.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 115.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 116.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 117.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 118.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 119.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 120.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 121.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 122.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 123.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 124.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 125.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 126.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 197.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 217.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 218.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 219.0.0.0/8 -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -s 220.0.0.0/6 -j DENY -l
  #------------------------------ porte TCP non privilegiate
              # NFS: instauramento connessione TCP
              $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \
                  $NFS_PORT -j DENY -l
              # Xwindow: instauramento connessione
              $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \
                  $XWINDOW_PORTS -j DENY -l
              # SOCKS: instauramento connessione
              $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \
                  $SOCKS_PORT -j DENY -l
  #------------------------------ porte UDP non privilegiate
              # NFS: instauramento connessione UDP
              $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP \
                  $NFS_PORT -j DENY -l
              # TRACEROUTE UDP in ingresso
              $IPCHAINS -A input -i $INTERFACE -p udp -s $ANYWHERE \
                  $TRACEROUTE_SRC_PORTS -d $LOCALIP $TRACEROUTE_DEST_PORTS -j DENY -l
  #------------------------------ altri log
              $IPCHAINS -A input -i $INTERFACE -p tcp -d $LOCALIP -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP $PRIVPORTS \
                  -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP $UNPRIVPORTS \
                  -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -p icmp -s $ANYWHERE 5 -d $LOCALIP \
                  -j DENY -l
              $IPCHAINS -A input -i $INTERFACE -p icmp -s $ANYWHERE 13:255 -d $LOCALIP \
                  -j DENY -l
              echo -e "\t\t\t\t[ ${GREEN}OK ${WHITE}]"

  #  ==========================================================================
  #  ======================= Mascheramento all' esterno =======================
  #  ==========================================================================

  #------------------------------ verifica esistenza moduli mascheramento
              if [ $MASQ = "ON" ]; then
                  echo -e "${YELLOW}Mascheramento : ${WHITE}"
                  echo -n "Controllo presenza moduli necessari : "
                  MASQ_PRESENT=""
                  for mod in ${IP_MASQ_MODULES}; do
                      if [ ! -e /lib/modules/$CURRENT_KERNEL/ipv4/ip_masq_${mod}.o ]; then
                          MASQ_PRESENT="err"
                      fi
                  done
  #------------------------------ se esistono, attiva mascheramento
                  if [ -z ${MASQ_PRESENT} ]; then
                      echo -e "\t\t\t\t[ ${GREEN}OK ${WHITE}]"
                      echo -n "Installazione dei moduli necessari al Mascheramento : "
                      for mod in ${IP_MASQ_MODULES} ; do
                          /sbin/insmod "ip_masq_${mod}"
                      done
                      echo -e "\t\t[ ${GREEN}OK ${WHITE}]"
                      echo -n "Attivazione IP forwarding : "
                      echo 1 > /proc/sys/net/ipv4/ip_forward
                      echo -e "\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
                      echo -n "Impostazione della POLICY di inoltro a DENY : "
                      $IPCHAINS -P forward DENY
                      $IPCHAINS -A forward -p all -s $LOCALNET -d $ANYWHERE -j MASQ
                      echo -e "\t\t\t[ ${GREEN}OK ${WHITE}]"
                      echo -n "Impostazione Timeout mascheramento connessioni TCP a 10 ore : "
                      $IPCHAINS -M -S 36000 0 0
                      echo -e "\t[ ${GREEN}OK ${WHITE}]"
                      echo -n "Blocco e log di tutto il resto : "
                      $IPCHAINS -A forward -j DENY -s $ANYWHERE -d $ANYWHERE -l
                      echo -e "\t\t\t\t[ ${GREEN}OK ${WHITE}]"
  #------------------------------ se non esistono, avverti e continua senza
                  else
                      echo -e "\t\t\t\t[ ${RED}NO ${WHITE}]"
                      echo
                      echo -e "${RED}Errore!!! Moduli per il Mascheramento "
                      echo -e "non presenti nel sistema. Ricompilare il kernel col "
                      echo -e "supporto per firewall e masquerading.${WHITE}"
                      echo
                  fi
              else
                  echo -en "${YELLOW}Mascheramento : ${WHITE}"
                  echo -e "\t\t\t\t\t\t[ ${RED}NO ${WHITE}]"
              fi
          fi
  ;;

  #------------------------------ opzione stop dello script
      stop)
          clear
          echo "Disattivazione del Firewall in corso..."
          $IPCHAINS -F
          $IPCHAINS -P input ACCEPT
          $IPCHAINS -P forward ACCEPT
          MASQ_PRESENT=""
          for mod in ${IP_MASQ_MODULES} ; do
              if [ ! -e /lib/modules/$CURRENT_KERNEL/ipv4/ip_masq_${mod}.o ]; then
                  MASQ_PRESENT="err"
              fi
          done
          if [ -z ${MASQ_PRESENT} ] ; then
              echo -n "Rimozione dei moduli necessari al Mascheramento : "
              for mod in ${IP_MASQ_MODULES} ; do
                  /sbin/rmmod "ip_masq_${mod}"
              done
              echo -e "\t\t[ ${GREEN}OK ${WHITE}]"
              echo -n "Disattivazione IP forwarding : "
              echo 0 > /proc/sys/net/ipv4/ip_forward
              echo -e "\t\t\t\t\t[ ${GREEN}OK ${WHITE}]"
          fi
          echo -e "${YELLOW}ATTENZIONE: IL FIREWALL NON E' PIU' OPERATIVO${WHITE}"
  ;;

  #------------------------------ opzione status dello script
      status)
          clear
          echo "Impostazioni attuali del firewall : "
          echo -e "Indirizzo IP locale sull'interfaccia ${YELLOW}$INTERFACE${WHITE} : \
              ${RED}$LOCALIP${WHITE}"
          $IPCHAINS -L
  ;;

  #------------------------------ nessuna o errata opzione fornita allo script
      *)
          clear
          echo -e "${BLUE}############################################################${WHITE}"
          echo -en "${BLUE}###${YELLOW}         Script di impostazione "
          echo -e "${MAGENTA}FIREWALL ${YELLOW}v7.0         ${BLUE}###${WHITE}"
          echo -e "${BLUE}############################################################${WHITE}"
          echo -e "${YELLOW}Utilizzo:${WHITE} firewall start|stop|status"
          echo -e "\t${CYAN}start${WHITE} = attiva il firewall"
          echo -e "\t${CYAN}stop${WHITE} = disattiva il firewall"
          echo -e "\t${CYAN}status${WHITE} = impostazioni correnti del firewall"
          echo
          echo -e "${RED}ATTENZIONE: ${YELLOW}ricorda che l'interfaccia \
              ${RED}ppp0${YELLOW} e' attiva"
          echo -e "solo DOPO aver effettuato la connessione a Internet."
          echo -en "${WHITE}Interfacce attualmente attive nel PC: "
          for irf in ${INTERFACES} ; do
              echo -en "${RED}${irf}${WHITE} "
          done
          echo -e "\n\a"
  ;;
  esac
  exit 0

  ______________________________________________________________________



  THIS IS THE END, MY ONLY FRIEND (by JIM).

  11.  DNS

  Come dal titolo dell'Howto, creiamo un DNS facilmente e velocemente.
  Io a casa ho 2 PC, Pingu e Pinga, collegati in rete locale. Inoltre
  accedo a Internet via modem. Senza entrare nei dettagli, scopiazzatevi
  'sti file e andate in pace (per altri dettagli leggete il DNS-Howto o
  gli "immarcescibili" Appunti Linux). Potete cambiare i nomi (DOVETE
  anzi, se no Pingu e Pinga s'incavolano!)  o aggiungerne altri,
  variando solo l'ultimo numero, mentre per il resto lasciate tutto
  com'è. Se anche non avete una rete locale, i file vanno bene
  ugualmente, vi ritroverete con qualcosa in più che non pregiudicherà
  alcunchè, e vi spingerà al prossimo cambio di PC a tenervi quello
  attuale e collegarlo al nuovo, tanto più che non spendereste più di
  centomila lire tra schede di rete e cavi. Per prima cosa impostate il
  nome del vostro Linux-Box. Se non sapete cosa fare, sappiate che
  dovrete inventarvi un nome per il vostro PC e per il vostro dominio
  (consigliato NON sceglierne uno esistente, al massimo cambiate la
  parte finele, tipo: da yahoo.com a yahoo.cxm). Da root date:


  ______________________________________________________________________
  hostname macchina.dominio
  ______________________________________________________________________



  ad esempio nel mio caso: hostname pingu.mrshark.home (d'ora in poi
  ogni volta che vedete pingu.mrshark.home o simili, sostituiteli con i
  nomi scelti da voi). Impostate anche il file /etc/HOSTNAME come segue:


  ______________________________________________________________________
  === file: /etc/HOSTNAME ===

  pingu.mrshark.home
  ______________________________________________________________________



  Nel caso abbiate una RedHat o derivate (Mandrake, ecc.), modificate il
  file /etc/sysconfig/network nella parte relativa a HOSTNAME e
  DOMAINNAME, altrimenti ad ogni riavvio l'hostname ritornerà
  localhost.localdomain :


  ______________________________________________________________________
  === file: /etc/sysconfig/network ===

  ...
  HOSTNAME=pingu.mrshark.home
  DOMAINNAME=mrshark.home
  ______________________________________________________________________



  nel file /etc/hosts aggiungete le altre vostre macchine, se ne avete.
  Il primo campo è l'ip della macchina, il secondo il nome completo, il
  terzo degli alias. NON ELIMINATE la riga 127...: serve per
  l'interfaccia di loopback. Segue il file:


  ______________________________________________________________________
  === file: /etc/hosts ===

  127.0.0.1       localhost.localdomain   localhost
  192.168.0.1     pingu.mrshark.home        pingu mrshark.home
  192.168.0.2     pinga.mrshark.home        pinga
  ______________________________________________________________________



  Nel file /etc/host.conf inserite:







  ______________________________________________________________________
  === file: /etc/host.conf ===

  order hosts,bind
  multi on
  ______________________________________________________________________



  Nel file /etc/named.conf inserite quanto segue, cambiando i due
  mrshark.home alla fine con il vostro dominio, e inserendo nella
  sezione forwarders gli IP dei DNS del provider che usate (commentate
  le 4 righe della direttiva forwarders e le 4 righe di zone "."... se
  avete solo una rete locale e non accedete a internet):


  ______________________________________________________________________
  === file: /etc/named.conf ===

  options {
          directory "/var/named";
          allow-transfer {
                  127.0.0.1;
                  192.168.0.0/24;
          };
          allow-query {
                  127.0.0.1;
                  192.168.0.0/24;
          };
          forward first;
          forwarders {
                  195.210.91.1;
                  195.210.91.2;
          };
  };
  zone "." {
          type hint;
          file "named.root";
  };
  zone "0.0.127.in-addr.arpa" {
           type master;
           file "zone/127.0.0";
  };
  zone "0.168.192.in-addr.arpa" {
          type master;
          file "zone/192.168.0";
  };
  zone "mrshark.home" {
          type master;
          file "zone/mrshark.home";
  };
  ______________________________________________________________________



  Ora spostatevi in /var/named. Dovrebbe esserci già il file named.root,
  oppure potrebbe chiamarsi named.ca. In quest'ultimo caso, rinominatelo
  con mv named.ca named.root. Questo file contiene gli indirizzi IP dei
  server DNS principali di Internet. Se proprio non esiste, scaricatelo
  da http://www.internic.net, oppure createlo, copiando il seguente (NON
  cambiate niente):





  ______________________________________________________________________
  === file: /var/named/named.root ===

  ;       This file holds the information on root name servers needed to
  ;       initialize cache of Internet domain name servers
  ;       (e.g. reference this file in the "cache .  <file>"
  ;       configuration file of BIND domain name servers).
  ;
  ;       This file is made available by InterNIC registration services
  ;       under anonymous FTP as
  ;           file                /domain/named.root
  ;           on server           FTP.RS.INTERNIC.NET
  ;       -OR- under Gopher at    RS.INTERNIC.NET
  ;           under menu          InterNIC Registration Services (NSI)
  ;              submenu          InterNIC Registration Archives
  ;           file                named.root
  ;
  ;       last update:    Aug 22, 1997
  ;       related version of root zone:   1997082200
  ;
  ;
  ; formerly NS.INTERNIC.NET
  ;
  .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
  A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
  ;
  ; formerly NS1.ISI.EDU
  ;
  .                        3600000      NS    B.ROOT-SERVERS.NET.
  B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
  ;
  ; formerly C.PSI.NET
  ;
  .                        3600000      NS    C.ROOT-SERVERS.NET.
  C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
  ;
  ; formerly TERP.UMD.EDU
  ;
  .                        3600000      NS    D.ROOT-SERVERS.NET.
  D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
  ;
  ; formerly NS.NASA.GOV
  ;
  .                        3600000      NS    E.ROOT-SERVERS.NET.
  E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
  ;
  ; formerly NS.ISC.ORG
  ;
  .                        3600000      NS    F.ROOT-SERVERS.NET.
  F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
  ;
  ; formerly NS.NIC.DDN.MIL
  ;
  .                        3600000      NS    G.ROOT-SERVERS.NET.
  G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
  ;
  ; formerly AOS.ARL.ARMY.MIL
  ;
  .                        3600000      NS    H.ROOT-SERVERS.NET.
  H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
  ;
  ; formerly NIC.NORDU.NET
  ;
  .                        3600000      NS    I.ROOT-SERVERS.NET.
  I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
  ;
  ; temporarily housed at NSI (InterNIC)
  ;
  .                        3600000      NS    J.ROOT-SERVERS.NET.
  J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
  ;
  ; housed in LINX, operated by RIPE NCC
  ;
  .                        3600000      NS    K.ROOT-SERVERS.NET.
  K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
  ;
  ; temporarily housed at ISI (IANA)
  ;
  .                        3600000      NS    L.ROOT-SERVERS.NET.
  L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
  ;
  ; housed in Japan, operated by WIDE
  ;
  .                        3600000      NS    M.ROOT-SERVERS.NET.
  M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
  ; End of File
  ______________________________________________________________________



  Create ora la directory /var/named/zone/. Al suo interno create il
  file /var/named/zone/127.0.0 (cambiate solo il dominio e attenzione a
  NON togliere i punti finali):


  ______________________________________________________________________
  === file: /var/named/zone/127.0.0 ===

  @  IN  SOA   pingu.mrshark.home. root.pingu.mrshark.home.  (
  1998031800 ; Serial
  28800      ; Refresh
  7200       ; Retry
  604800     ; Expire
  86400)    ; Minimum
         NS    pingu.mrshark.home.
  1      PTR   localhost.localdomain.
  ______________________________________________________________________



  Ora il file /var/named/zone/192.168.0 (cambiate solo il dominio e i
  nomi delle macchine e attenzione a NON togliere i punti finali):


  ______________________________________________________________________
  === file: /var/named/zone/192.168.0  ===

  @  IN  SOA   pingu.mrshark.home. root.pingu.mrshark.home.  (
  1998031800 ; Serial
  28800      ; Refresh
  7200       ; Retry
  604800     ; Expire
  86400)    ; Minimum
         NS    pingu.mrshark.home.
  1      PTR   pingu.mrshark.home.
  2      PTR   pinga.mrshark.home.
  ______________________________________________________________________



  Eccoci al penultimo file. Questo dovete chiamarlo col nome del dominio
  che avete scelto, quindi nel mio caso sarà
  /var/named/zone/mrshark.home  (come al solito, cambiate i nomi e
  attenti ai punti finali):


  ______________________________________________________________________
  === file: /var/named/zone/mrshark.home  ===

  @  IN      SOA  pingu.mrshark.home. root.pingu.mrshark.home.  (
  1998031800 ; Serial
  28800      ; Refresh
  7200       ; Retry
  604800     ; Expire
  86400)    ; Minimum
         NS   pingu.mrshark.home.
         MX   10 pingu.mrshark.home.
  www.mrshark.home. CNAME pingu.mrshark.home.
  ftp.mrshark.home. CNAME pingu.mrshark.home.
  pingu.mrshark.home.    A    192.168.0.1
  pinga.mrshark.home.    A    192.168.0.2
  ______________________________________________________________________



  Manca l'ultimo file, quello che indica al sistema quali DNS e dominio
  usare, /etc/resolv.conf (come al solito cambiate il dominio):


  ______________________________________________________________________
  === file: /etc/resolv.conf ===

  domain mrshark.home
  nameserver 127.0.0.1
  ______________________________________________________________________



  Salvate tutto, riavviate il sistema o riavviate BIND
  (/etc/rc.d/init.d/named restart), e da root date il comando: nslookup.
  Ora incominciate a fare le vostre prove. Esempi di prove per il mio PC
  sono (dal prompt di nslookup ">"): 192.168.0.1, 192.168.0.2,
  www.mrshark.home, ftp.mrshark.home, pingu.mrshark.home,
  pinga.mrshark.home, pingu, pinga. Se date l'IP dovete ottenere il nome
  e viceversa. Dopo esservi connessi a Internet, provate anche a fare
  qualche risoluzione di nomi di siti, p.e. www.yahoo.it.

  Nota per l'uso di programmi che gestiscono in automatico il file
  /etc/resolv.conf, tipo kppp o wvdial: se avete impostato e testato
  completamente il vostro DNS, nelle impostazioni di questi programmi,
  invece di indicare il dominio e gli IP dei DNS che vi vengono forniti
  dal provider, inserite il VOSTRO dominio e come IP del DNS inserite
  127.0.0.1, ricordando però di inserire i VERI IP dei DNS del provider
  nella sezione "forwarders" del file /etc/named.conf, in modo che il
  vostro DNS possa interrogare quelli esterni nel caso non riesca a
  gestire in proprio la risoluzione dei nomi.

  12.  Wwwoffle

  Wwwoffle è il demone che permette di implementare un cache proxy
  server sul vostro PC, utile per sfogliare offline le pagine che avete
  scaricato e per permettere agli altri vostri pc, se avete una rete
  locale, di accedere a internet, magari limitandone l'uso ad alcuni
  soli siti e impedendone altri.  Tramite un'interfaccia di gestione in
  html e alcuni script, dispone di un comodo motore di ricerca
  all'interno della cache, permette di richiedere pagine anche quando si
  è offline (verranno scaricate quando si sarà online), di controllare i
  cambiamenti di pagine a intervalli predefiniti e riscaricarle, e
  inoltre mi sono anche preso la briga di tradurvi le pagine di
  interfaccia in italiano (sono disponibili dalla versione 2.5e in poi).
  E non dite che non vi voglio bene! Fate in modo che parta in
  automatico ad ogni avvio del PC (aggiungetelo con ntsysv o con
  chkconfig --add wwwoffled). Ricordate di impostare i vostri DNS e
  dominio in /etc/resolv.conf, anche se usate qualche programma che lo
  rigenera in automatico ogni volta, tipo kppp o wvdial. Fatelo prima di
  installarlo, altrimenti potrebbe darvi un errore di nslookup perché
  non riesce a trovare un Non-Authoritative Host. Rimedio spiccio nel
  caso ciò accada: DOPO aver stabilito la connessione, riavviate
  wwwoffle con l'opzione -config, oppure con /etc/rc.d/init.d/wwwoffled
  restart, oppure settate resolv.conf con i DNS fissi. Un rimedio più
  corretto si trova alla fine della sezione relativa al DNS di questo
  Howto. Un esempio di /etc/resolv.conf :


  ______________________________________________________________________
  === file: /etc/resolv.conf ===

  domain libero.it
  nameserver 195.210.91.1
  nameserver 195.210.91.2
  ______________________________________________________________________



  Per default wwwoffle rimane in ascolto sulla porta 8080, quindi per
  usarlo dovete impostare il vostro browser affinche usi il proxy su
  questa porta (leggere la parte relativa a Junkbuster nel caso vogliate
  usarli insieme). Per Netscape cercate nel menu Edit --> Preferences
  --> Advanced --> Proxies --> Manual Proxy -->View e settate la voce
  HTTP Proxy su localhost e port 8080, mentre per Lynx inserite la riga
  seguente in. bash_profile nella vostra home-directory:


  ______________________________________________________________________
  export http_proxy=http://localhost:8080
  ______________________________________________________________________



  L'impostazione di base del file /etc/wwwoffle.conf va già bene,
  comunque potete cambiarla interattivamente puntando il vostro browser
  su http://localhost:8080, avrete una schermata in cui potrete settare
  i vari parametri e con le relative spiegazioni. Se avete una rete
  locale potete concedere l'accesso al proxy modificando la sezione
  AllowedConnectHosts, inserendo ad esempio per una rete di classe C:

  192.168.0.*  Per usare wwwoffle, riavviate il pc o date da root
  /etc/rc.d/init.d/wwwoffle start. Le opzioni base sono:


  ·  -online : attiva wwwoffle in modo che le richieste vengano esaudite
     immediatamente (da attivare appena si e' stabilita una
     connessione);

  ·  -offline : mette wwwoffle in modalità offline, e ogni nuova
     richiesta di connessione viene immagazzinata fino alla successiva
     connessione;

  ·  -fetch : dopo che si è online, scarica le pagine che erano state
     richieste in assenza di connessione;

  ·  -config : rilegge il file di configurazione;


  ·  -purge : svuota la cache.

  Conviene inserire i comandi wwwoffle -online in /etc/ppp/ip-up e
  wwwoffle -offline in /etc/ppp/ip-down, in modo da attivarlo e
  disattivarlo automaticamente non appena viene instaurata la
  connessione o la si conclude.

  13.  Junkbuster

  Junkbuster è un proxy server che filtra le richieste del browser
  impedendo che venga scaricata spazzatura (spam o junk), come banner e
  altre immagini inutili o cookie indesiderati (per entrambe le cose,
  banner e cookie, si può ampliare la lista a mano o scaricare
  periodicamente i file aggiornati - vedi più avanti). Una volta
  scaricato e installato da rpm o tar.gz, bisogna attivarlo con:
  /etc/rc.d/init.d/junkbuster start, oltre che fare in modo che parta in
  automatico ad ogni avvio del PC (aggiungetelo con ntsysv o con
  chkconfig --add junkbuster). Se non avete altri proxy, la
  configurazione è già buona: al massimo potete modificare in
  /etc/junkbuster/config la chiamata tinygif impostandola a 2, cosicchè
  abbiate un riferimento per le immagini che non vengono scaricate,
  altrimenti verrà usata un'immagine trasparente di 1x1 pixel allargata
  alle dimensioni dell'immagine sostituita (un'altra possibilità è di
  avere una "broken icon", cioè l'icona che il browser mette di default
  quando non trova un'immagine, impostando tinygif a 0). Dovete solo
  modificare le impostazioni del browser affinchè usi un proxy sulla
  porta 8000 di localhost (usate le istruzioni date nel capitolo di
  wwwoffle, sostituendo 8080 con 8000. Attenzione: Debian invece della
  8000 usa la porta 5865, quindi o modificate di conseguenza, o cambiate
  la direttiva "listen-address" in /etc/junkbuster/config). Se invece
  avete un altro proxy (wwwoffle o squid), dovete impostare sempre il
  browser affinchè punti a junkbuster sulla porta 8000, e modificare
  /etc/junkbuster/config togliendo il commento # dalla riga :


  ______________________________________________________________________
  forwardfile /etc/junkbuster/forward
  ______________________________________________________________________



  e inserendo alla fine di /etc/junkbuster/forward la riga (nel caso di
  wwwoffle):


  ______________________________________________________________________
  *    localhost:8080    .    .
  ______________________________________________________________________



  (ATTENZIONE ai 2 punti finali - sostituite 8080 con 3128 per squid).
  Questo secondo me è il metodo migliore, cioè browser <--> junkbuster
  <--> proxy <--> internet, al posto di browser <--> proxy <-->
  junkbuster <--> internet, perché nel primo caso le richieste fatte dal
  browser per contenuti junk vengono filtrate e non richieste per nulla
  al proxy e quindi ad internet, mentre nel secondo la cache del proxy
  si riempirebbe delle immagini fittizie generate da junkbuster, pur non
  scaricando ugualmente la spazzatura. Per aggiornare gli elenchi di
  url, immagini e cookie da bloccare, potete scaricarli via browser,
  alla pagina: http://www.waldherr.org/junkbuster/update.shtml, oppure
  usare gli script che trovate in /usr/doc/junkbuster. Si tratta dei
  file junkbuster.monthly e junkbuster.weekly : per usarli, copiateli
  rispettivamente in /etc/cron.monthly e /etc/cron.weekly.  In questo
  modo avrete sempre i file aggiornati. Potete anche lanciarli
  manualmente da shell, naturalmente. Ricordate che usano wget per
  scaricare, quindi dovete installarlo. Rimane solo da dire che se
  volete aggiungere vostri url, cookie o immagini da bloccare, dovete
  farlo nei file /etc/junkbuster/blocklist.local,
  /etc/junkbuster/cookiefile.local e /etc/junkbuster/imagelist.local,
  che verranno accodati dagli script di prima ai file appena scaricati.

  14.  Mutt

  Mutt è uno tra i migliori client email per console. Gestisce POP3,
  IMAP e mailbox/maildir/mh locali. Qui trovate la configurazione di
  Mutt per uso locale (quindi dovrete scaricare le email dai server POP
  via fetchmail o simili).  E' fornito anche un elenco dei tasti
  principali. Ricordate di impostare la variabile d'ambiente "EDITOR"
  con quello che preferite (io uso zed, sezione "Bash" dell'Howto). In
  una prossima release dell'howto verrà trattata in maggior dettaglio la
  gestione degli HOOK, che permettono di gestire con facilità
  personalizzazioni e compiti ripetitivi in base alla mailbox in uso.
  Create le directory $HOME/Mail, $HOME/Mail/Lists, $HOME/Mail/Friends e
  $HOME/Mail/.Mutt .

  14.1.  File di configurazione .muttrc













































  ______________________________________________________________________
  ##########################################################################
  ## OPZIONI PERSONALI

  # elenco degli indirizzi personali (può essere un espressione regolare)
  set alternates = pippo@libero.it,pippo@tiscalinet.it,pippo.pluto@tin.it

  # attiva l'accodamento di @$hostname agli indirizzi locali
  set use_domain

  # dominio da accodare agli indirizzi locali
  set hostname = mrshark.home

  # vero nome personale da usare nelle email
  set realname = "Antonio Fragola - MrShark"

  # file principale dove arrivano le email
  set spoolfile = $HOME/Mail/IN.default

  # attiva l'uso degli header personali 'my_hdr'
  set hdrs

  # header personali - potete crearne quanti ne volete - non esagerate!
  my_hdr From: Antonio Fragola - MrShark <mrshark@linuxfan.com>
  my_hdr Reply-To: mrshark@linuxfan.com
  my_hdr X-Operating-System: Linux 2.2.14 on pingu.mrshark.home
  my_hdr X-Organization: Dark Half SoftWare
  my_hdr X-Disclaimer: Linux - The choice of a GNU generation!

  # ordine di visualizzazione degli header
  unhdr_order *
  hdr_order Subject: From: Reply-To: Date: To: CC: BCC: Organization: \
            X-Organization: X-Operating-System: X-Mailer: User-Agent: \
            X-Disclaimer:

  # header da visualizzare
  ignore *
  unignore Subject: From: Date: To: Reply-To: CC: BCC: Organization: \
           X-Organization: X-Operating-System: X-Mailer: User-Agent: \
           X-Disclaimer:

  # altri possibili Headers - lista parziale
  # notare l'allineamento alla Leonardo Serni... CHE FATICA!!! ;-)
  # "From " Content- Mime-Version X-Unsub X-List In-Reply-To
  # Precedence X-Listprocessor-Version Errors-To Return-Path
  # X-mailing-list X-loop X-MSMail-Priority X-MimeOLE Status
  # Received X-Http-Proxy X-Accept-Language X-Flags X-Status
  # Lines Message-Id Sender References X-Comment X-BeenThere
  # X-Sent X-Recipient X-Authentication- X-Priority X-Sender
  # X-EM- Importance X-Face Organization X-Distribution Path
  # X-Trace Delivered-To NNTP-Posting-Host NNTP-Posting-Date
  # List- Xref X-Complaints-To Resent-Message-Id Resent-Date
  # User-Agent X-Organization X-Disclaimer X-Operating-System
  # X-Mailer X-Uidl

  ##########################################################################
  ## DIRECTORY E MAILBOX

  # posizione della directory contenente le Mailbox. Un '+' o '=' all'inizio
  # di un nome di percorso, in seguito, verrà sostituito con questo valore
  set folder = $HOME/Mail

  # maschera per l'elenco dei file nel browser-file (.* = tutti)
  set mask = ".*"

  # directory in cui verranno spostati dallo spool principale i messaggi letti
  set mbox = +inbox

  # chiede in uscita da una mailbox se si vogliono spostare i messaggi letti
  set move = ask-no

  # tipo di mailbox
  set mbox_type = mbox

  ##########################################################################
  ## OPZIONI PER GLI ALIAS

  # visualizza il nome reale dell'autore dell'email preso dai propri alias
  set reverse_alias

  # file contenente gli alias - si DEVE fare il source del file
  # NdA: preferisco tenere i file accessori di configurazione nella maildir
  set alias_file = +.Mutt/mutt_aliases
  source +.Mutt/mutt_aliases

  # formato degli alias
  set alias_format = "%2n %t %-10a   %r"

  # ordina gli alias in base all'alias (oppure address)
  set sort_alias = alias

  ##########################################################################
  ## OPZIONI GENERALI

  # indicazione del tipodi localizzazione
  set locale = "it_IT.ISO-8859-1"

  # insieme di caratteri ammessi
  set charset = iso-8859-1

  # formato della data
  set date_format = "%A %d %B %Y, alle %H:%M"

  # hook di default
  set default_hook = "~f %s !~P | (~P ~C %s)"

  # imposta la directory per i file temporanei (consiglio per la privacy:
  # impostare TMPDIR come indicato in .bash_profile nella sezione BASH del
  # Quick&Easy Configuration Howto e creare la directory: $HOME/.tmp)
  set tmpdir = $TMPDIR

  ##########################################################################
  ## MENU PRINCIPALE

  # usa caratteri ASCII per indicare le relazioni tra messaggi
  set ascii_chars

  # emetti un suono in caso di errori
  set beep

  # emetti un suono all'arrivo di nuovi messaggi
  set beep_new

  # attiva la visualizzazione della riga di aiuto
  set help

  # attiva la visualizzazione di una 'O' di fianco ai vecchi messaggi non letti
  set mark_old

  # formato dell'indice
  set index_format = "%3C %Z %{%b %d} %-20.20L (%3l) %s"

  # numero di secondi tra i controlli di arrivo nuovi messaggi
  set mail_check = 5

  # chiede conferma prima di cancellare definitivamente i messaggi
  set delete = ask-yes

  # espressione regolare per riconoscere le risposte ai messaggi
  set reply_regexp = "^(re|aw|r):[ \t]*"

  # ordinamento primario in base ai thread
  set sort = threads

  # ordinamento secondario in base alla data di invio
  set sort_aux = date-sent

  ##########################################################################
  ## OPZIONI PER LA VISUALIZZAZIONE MESSAGGIO

  # attiva il ritorno a capo delle righe più lunghe dello schermo
  set smart_wrap

  # attiva la visualizzazione di un '+' all'inizio delle righe mandate a capo
  set markers

  # attiva la visualizzazione di una o più '~' alla fine del messaggio
  set tilde

  # impedisce che PageDown porti al messaggio successivo quando si raggiunge
  # la fine di quello attuale
  set pager_stop

  # numero di righe della pagina precedente da visualizzare durante lo scorrimento
  set pager_context = 2

  # numero di voci di indice dei messaggi da visualizzare durante la lettura
  set pager_index_lines = 4

  ##########################################################################
  ## OPZIONI DI COMPOSIZIONE

  # chiede se si vuole inserire un campo BCC per un nuovo messaggio
  #set askbcc

  # chiede se si vuole inserire un campo CC per un nuovo messaggio
  set askcc

  # inizia a creare o modificare un messaggio e POI visualizza il menu
  set autoedit

  # imposta l'uso di '-- ' prima della firma
  set sig_dashes

  # chiede se si vuole posporre un messaggio che non si vuole inviare subito
  set postpone = ask-yes

  # chiede se si vuole richiamare un messaggio posposto quando se ne crea uno
  set recall = ask-yes

  # imposta l'editor da usare (in questo caso preso da .bash_profile)
  set editor=$EDITOR

  # directory in cui conservare i messaggi posposti
  set postponed = +outbox

  # file contenente la firma
  set signature = $HOME/.signature
  ##########################################################################
  ## OPZIONI PER LE RISPOSTE

  # formato dell'attribuzione all'autore
  set attribution = "* %d, %n scrive:"

  # stringa da preporre al testo quotato
  set indent_string = "> "

  # chiede se includere il messaggio originale nelle risposte
  set include = ask-yes

  # chiede se si vuole usare il campo 'reply-to' del messaggio originale
  set reply_to = ask-yes

  ##########################################################################
  ## OPZIONI PER L'INVIO

  # permette l'uso dell'insieme di caratteri a 8 bit
  set allow_8bit

  # disattivare l'uso di 'Delivered-To' se si usa postfix
  unset bounce_delivered

  # salva una copia dei messaggi in uscita
  set copy = yes

  # mailbox in cui salvare una copia dei messaggi in uscita. In questo caso
  # sono file del tipo 'sent-aprile-2000' nella directory 'Sent' nella propria
  # maildir. ('DATE' in questo caso è preso da .bash_profile, sezione BASH dell'howto)
  set record = +Sent/sent-$DATE

  ##########################################################################
  ## MAILCAP E MIME

  # percorso del file 'mailcap'
  set mailcap_path = ~/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap

  ##########################################################################
  ## MAILING-LIST E MAILBOX

  # elenco delle  mailing-list cui si partecipa
  # in questo caso sono contenute in $folder/Lists/
  # L'elencare qui le ML frequentate permette di rispondere inviando
  # il messaggio alla ML tramite il tasto "L" (maiuscola)
  # ATTENZIONE: se usate mutt 1.2 e vedete che le liste non funzionano,
  # sostituite la direttiva "lists" con la nuova direttiva "subscribe"
  lists +Lists/ML-vim +Lists/ML-pluto-ildp +Lists/ML-it-li-org

  # elenco delle mailbox che si vogliono controllare (gli apici sono inversi!).
  # Sarete quindi avvisati da Mutt se arriva posta in queste mailbox.
  # L'ultima è una via breve per monitorare tutte le mailing-list
  mailboxes +Friends/pippo +IN.admin
  mailboxes `echo $HOME/Mail/Lists/*`

  ##########################################################################
  ## OPZIONI DI STAMPA

  # comando di stampa (in questo caso seleziona la stampante 'lp_360')
  set print_command = "lpr -P lp_360"

  # chiede conferma prima di stampare
  set print = ask-no

  ########################################################################
  ## ASSOCIAZIONI DI TASTI
  bind    index   <up>    previous-entry
  bind    index   <down>  next-entry
  bind    pager   <up>    previous-line
  bind    pager   <down>  next-line
  bind    pager   <left>  previous-entry
  bind    pager   <right> next-entry

  ########################################################################
  ## COMBINAZIONI DI COLORI

  # schermi in bianco e nero
  mono normal     none            # testo normale
  mono indicator  reverse         # messaggio attuale
  mono tree       none            # frecce dei thread
  mono status     reverse         # riga di stato
  mono error      bold            # errori
  mono message    none            # messaggi di informazione
  mono quoted     bold            # testo quotato
  mono signature  none            # firma
  mono attachment underline       # allegati MIME
  mono search     reverse         # ricerche
  mono tilde      none            # ~ alla fine dei messaggi
  mono markers    bold            # + all'inizio delle righe mandate a capo
  mono hdrdefault none            # righe degli header
  mono bold       bold            # evidenziazione in grassetto nei body
  mono underline  underline       # evidenziazione sottolineato nei body
  mono header     bold            "^(from|subject):"
  % consiglio di eliminare l'ultima '\' dalla riga seguente
  % e di inserire la direttiva su un'unica riga
  mono body       underline       "((ftp|http|https)://|(file|mailto|news):|www\\.)\
  [-a-z0-9_.:]*[a-z0-9](/[^][{} \t\n\r\"<>()]*[^][{} \t\n\r\"<>().,:!])?/?"
  mono body       underline       "[-a-z_0-9.]+@[-a-z_0-9.]+"
  mono body       bold            "(^| )\\*[-a-z0-9äöüß*]+\\*[,.?]?[ \n]"
  mono body       underline       "(^| )_[-a-z0-9äöüß_]+_[,.?]?[ \n]"

  # schermi a colori
  color normal     brightwhite    black   # testo normale
  color indicator  brightcyan     blue    # messaggio attuale
  color tree       brightred      black   # frecce dei thread
  color status     brightyellow   blue    # riga di stato
  color error      brightred      black   # errori
  color message    brightyellow   black   # messaggi di informazione
  color signature  red            black   # firma
  color attachment blue           cyan    # allegati MIME
  color search     brightyellow   red     # ricerche
  color tilde      brightmagenta  black   # ~ alla fine dei messaggi
  color markers    brightred      black   # + all'inizio delle righe mandate a capo
  color hdrdefault blue           black   # righe degli header
  color bold       red            black   # evidenziazione in grassetto nei body
  color underline  green          black   # evidenziazione sottolineato nei body
  color quoted     cyan           black   # testo quotato
  color quoted1    yellow         black
  color quoted2    magenta        black
  color quoted3    red            black
  color quoted4    red            black
  color quoted5    red            black
  color quoted6    red            black
  color quoted7    red            black
  color quoted8    red            black
  color quoted9    red            black
  color header     brightyellow   black  "^(from|subject):"
  % consiglio di eliminare l'ultima '\' dalla riga seguente
  % e di inserire la direttiva su un'unica riga
  color body       brightgreen    black  "((ftp|http|https)://|(file|mailto|news):|www\\.)\
  [-a-z0-9_.:]*[a-z0-9](/[^][{} \t\n\r\"<>()]*[^][{} \t\n\r\"<>().,:!])?/?"
  color body       brightred      black  "[-a-z_0-9.+]+@[-a-z_0-9.]+"
  color body       red            black  "(^| )\\*[-a-z0-9*]+\\*[,.?]?[ \n]"
  color body       green          black  "(^| )_[-a-z0-9_]+_[,.?]?[ \n]"
  color index      blue           black  ~F               # impostato
  color index      brightgreen    black  ~N               # nuovo
  color index      magenta        black  ~T               # segnato
  color index      cyan           black  ~D               # cancellato
  ______________________________________________________________________



  14.2.  Tasti principali























































  ______________________________________________________________________
  Note:
  1. I cursori funzionano in maniera diversa dal default, modificato per
     consentire di scorrere la lista dei messaggi anche durante la lettura.
  2. ^ sta per CTRL, <qualcosa> sta per il tasto indicato
  3. I comandi sono case-sensitive, maiuscole e minuscole sono diverse.

  Movimenti:
  <Up>          (NELL'INDICE) spostati alla voce precedente
  <Down>        (NELL'INDICE) spostati alla voce successiva
  <Up>          (DURANTE LA LETTURA MESSAGGI) spostati alla voce precedente
  <Down>        (DURANTE LA LETTURA MESSAGGI) spostati alla voce successiva
  <Left>        (DURANTE LA LETTURA MESSAGGI) spostati al messaggio precedente
  <Right>       (DURANTE LA LETTURA MESSAGGI) spostati al messaggio successivo
  <PageUp>      spostati alla pagina precedente
  <PageDown>    spostati alla pagina successiva
  <Tab>         salta al successivo messaggio nuovo
  <Esc><Tab>    salta al precedente messaggio nuovo
  ^N            salta al thread successivo
  ^P            salta al thread precedente
  =             spostati alla prima voce
  *             spostati all'ultima voce

  Modifiche:
  o             ordina i messaggi
  O             ordina i messaggi in ordine inverso
  c             apri un altro folder
  d             cancella la voce corrente
  u             de-cancella la voce corrente
  D             cancella i messaggi corrispondenti al modello
  U             de-cancella i messaggi corrispondenti al modello
  ^D            cancella tutti i messaggi nel thread
  ^U            de-cancella tutti i messaggi nel thread
  w             imposta un flag di stato su un messaggio
  W             cancella il flag di stato da un messaggio
  t             (de)segna la voce corrente
  T             segna i messaggi corrispondenti al modello
  ^T            togli il segno ai messaggi corrispondenti al modello
  l             mostra solo i messaggi corrispondenti al modello
  ^R            segna il thread corrente come gia` letto
  <Esc>t        segna il thread corrente
  F             (dis)attiva il flag 'importante' del messaggio
  N             (dis)attiva il flag 'nuovo' di un messaggio
  ;             applica la prossima funzione ai messaggi segnati

  Ricerche:
  <Esc>b        cerca all'interno dei Body dei messaggi
  <Esc>b        (ELIMINANDO ~b ) cerca nei subject dei messaggi
  /             cerca una espressione regolare
  <Esc>/        cerca all'indietro una espressione regolare
  n             cerca la prossima corrispondenza

  Messaggi:
  <Return>      visualizza un messaggio
  <Space>       visualizza un messaggio
  @             visualizza l'indirizzo completo del mittente
  h             visualizza il messaggio con gli header completi
  m             componi un nuovo messaggio
  r             rispondi a un messaggio
  L             rispondi alla mailing list indicata
  g             rispondi a tutti i destinatari
  b             rispedisci un messaggio a un altro utente
  f             inoltra un messaggio con i commenti
  R             richiama un messaggio rimandato
  e             modifica il messaggio corrente per rispedirlo
  v             mostra gli allegati MIME
  <Esc>C        fai una copia decodificata (text/plain)
  C             copia un messaggio in un file/mailbox
  s             salva in un file un messaggio/allegato
  a             crea un alias dal mittente del messaggio
  <Tab>         permette di accedere all'elenco degli alias durante la composizione
                quando viene richiesto di inserire il destinatario, il cc o il bcc

  Varie:
  <F1>          mostra la documentazione di Mutt
  ?             aiuto sui tasti
  <NUM>         salta a un al messaggio NUM
  p             stampa la voce corrente
  $             salva i cambiamenti alla mailbox
  q             salva i cambiamenti alla mailbox ed esci
  x             esci da questo menu
  ^L            cancella e ridisegna lo schermo
  :             inserisci un comando di muttrc
  |             manda un messaggio/allegato a un comando della shell con una pipe
  ^B            richiama URLVIEW per estrarre le URL dal messaggio
  V             mostra il numero di versione e la data di Mutt
  ______________________________________________________________________



  E ora divertitevi ad usarlo!

  15.  Slrn

  15.1.  Introduzione

  In questa sezione trovate il file di configurazione, ampiamente
  commentato, e i tasti principali di slrn. Slrn è un news-reader (un
  programma capace di collegarsi ad un news-server) che permette di
  leggere ONLINE i newsgroup. Per questo motivo dovete avere installato
  un news-server locale (guardate la sezione "Leafnode" dell'Howto per
  un esempio), in modo da non dover stare collegati a internet tutto il
  tempo in cui userete i newsgroup: infatti il news-server locale
  scaricherà le nuove news da quello remoto, e voi usarete il news-
  reader collegandovi in locale (quindi per usare un news-reader online
  dovete avere IN FUNZIONE in locale il news-server, anche quando non
  siete collegati a internet). Per indicare a slrn il server e l'editor
  da usare, dovrete inserire in $HOME/.bash_profile le seguenti righe
  (sezione Bash dell'Howto):

  NNTPSERVER='127.0.0.1'

  SLANG_EDITOR='mcedit %s'

  Slrn ha tre modalità di funzionamento:


  1. selezione newsgroup - permette di vedere la lista dei newsgroup
     presenti sul server (magari visualizzandone solo una parte, tramite
     wildcard), sottoscrivere o annullare la sottoscrizione ad essi e
     selezionare quello da consultare

  2. selezione articolo/thread - selezionando un newsgroup entrerete in
     questa modalità, che permette di scegliere gli articoli da salvare,
     marcarli come letti o meno, inviare un nuovo articolo, oppure
     rispondere ad uno già presente con un followup (sul newsgroup) o un
     reply (per email)

  3. lettura articolo - selezionando un articolo per la lettura, è poi
     possibile leggerlo, rispondere per email (tasto "r") o sul
     newsgroup (tasto "f"), salvarlo (tasto "o") o inviarne uno nuovo
     (tasto "P"), o ancora stamparlo (tasto "y").
  Il tasto "?" permette di avere sempre un aiuto, qualunque sia la
  modalità selezionata. "q" permette di ritornare alla modalità
  precedente o di uscire se si è in quella di selezione newsgroup. La
  prima volta che userete slrn, dovrete farlo con l'opzione "-create",
  che genera, nella directory indicata nel file di configurazione, altre
  sottodirectory e il file che contiene la copia locale dei newsgroup
  presenti sul server (nel caso ciò non avvenga, create le directory
  $HOME/News, $HOME/News/decoded, $HOME/News/other e
  $HOME/News/postponed, oltre a $HOME/News/.Slrn).  In seguito basterà
  lanciare in comando "slrn" da solo, senza opzioni.  In genere al primo
  avvio vi ritroverete con già sottoscritti alcuni newsgroup cui forse
  non siete interessati, e avete due possibilità: o scorrere la lista a
  mano e deselezionare i newsgroup uno ad uno con il tasto "u", oppure
  uscire e dare i seguenti comandi nella directory $HOME/News:


  ______________________________________________________________________
  tr \: \! < .newsrc > .newsrc.new
  rm .newsrc
  mv .newsrc.new .newsrc
  ______________________________________________________________________



  Per effettuare le sottoscrizioni, premere "L" e inserire una parte del
  nome del newsgroup, tipo: "*.comp.os.*", poi spostatevi sui newsgroup
  da sottoscrivere e premere "s", infine premete ancora 'L' per
  visualizzare solo i newsgroup sottoscritti.

  A volte può capitare di voler rileggere un articolo o un thread già
  letto e per questo non più visualizzato da slrn: si può farlo con la
  sequenza "<Esc>1<Return>" o con "<Esc>1<Esc>p". La prima riscarica dal
  server tutti gli articoli già letti (riconoscibili da una "D"
  all'inizio della riga), mentre la seconda riconstruisce solo il thread
  corrente. Per applicare uno stesso comando a più articoli (ad esempio
  per salvare un intero thread), selezionateli prima con ";" o "#", e
  poi applicate il comando normalmente. I file generati da slrn quando
  si salva un articolo o un thread sono in formato standard mailbox,
  quindi per aprirli usate l'opzione adatta del vostro mail-reader (per
  esempio per Mutt usate: "mutt -f /path/del/file/salvato").

  Una caratteristica molto utile di slrn è il cosiddetto "scoring": esso
  permette di assegnare un "punteggio" agli articoli in base ad alcuni
  criteri. Questo permette ad esempio di marcare come già letti gli
  articoli con subject che non vi interessano ("killing", da cui
  killfile, sinonimo di scorefile), oppure di assegnare punteggi alti ad
  articoli contenenti determinati subject o provenienti da determinate
  persone, così come di assegnarne di bassi ad altri, facendo in modo da
  avere nell'elenco degli articoli per primi quelli più interessanti, e
  via di seguito gli altri. Premendo il tasto "K" su un articolo e
  rispondendo ad alcune semplici domande, si genera una voce all'interno
  dello scorefile, che è possibile visionare o modificare con la
  sequenza di tasti "<Esc>1 K". In genere dovrete usare delle
  espressioni regolari, potete vederne la sintassi nella sezione di
  Procmail di questo Howto.

  Se volete evitare di scaricare del tutto gli articoli che non vi
  interessano, dovete impostare di conseguenza il news-server, non il
  news-reader (guardate la parte apposita nella sezione di Leafnode di
  questo Howto).

  Altri comandi e consigli sono di seguito, nella descrizione dei tasti
  principali di slrn, mentre molte altre informazioni e macro possono
  essere trovate nell'ottimo Slrn-Slrnpull-HOWTO di Alessandro Airaghi
  (http://web.tiscalinet.it/airaghi).

  15.2.  File di configurazione .slrnrc

































































  ______________________________________________________________________
  % server da cui scaricare le News e file apposito
  % NdA: preferisco tenere i file accessori di configurazione nella newsdir
  server "127.0.0.1" "News/.Slrn/jnewrc"

  % nome utente (parte a sinistra di '@') del proprio indirizzo email
  set username "mrshark"

  % nome dell'host (parte a destra di '@') del proprio indirizzo email
  hostname "ELIMINAMI.linuxfan.com"

  % nome reale
  set realname "MrShark - Antonio Fragola"

  % indirizzo per le risposte (viene usato anche un banale antispam)
  set replyto  "mrshark@ELIMINAMI.linuxfan.com"

  % file contenente la firma da usare
  set signature "$HOME/.signature"

  % stringa da preporre al testo quotato
  set quote_string "> "

  % se diverso da 0, la firma non verrà inclusa nel testo quotato dei followup
  set followup_strip_signature 0

  % se impostato ad 1, slrn non permette di inviare articoli con righe non
  % quotate più lunghe di 80 caratteri. Se impostato a 2 verrà solo mostrato
  % un avvertimento
  set reject_long_lines 2

  % espressione regolare per riconoscere il testo quotato
  ignore_quotes "^ ? ?[><:=|\-]"

  % stringhe da preporre in follow-up e reply
  set followup_string "In data %d, %r scrive:"
  set reply_string "In '%n', nell'articolo '%s', hai scritto:"

  % Header personalizzati da inserire nei nuovi articoli
  % consiglio di eliminare l'ultima '\' dalle righe seguenti
  % e di inserire la direttiva set_custom... su un'unica riga
  set custom_headers "X-Operating-System: Linux 2.2.14 on pingu.mrshark.home\n\
  X-Organization: Dark Half SoftWare\n\
  X-Disclaimer: Linux - The choice of a GNU generation!"

  % Header da mostrare quando si legge un articolo
  % consiglio di eliminare l'ultima '\' dalla riga seguente
  % e di inserire la direttiva visible_headers su un'unica riga
  visible_headers "From,Subject:,Newsgroups:,Followup-To:,Reply-To:,\
  X-Operating-System:,X-Organization:,X-Disclaimer:"

  % WWW browser da usare se si è o no in X, in seguito alla pressione di 'U'
  set non_Xbrowser "lynx '%s'"
  set Xbrowser "netscape '%s' &"

  % se diverso da 0, mostra il primo articolo quando si passa alla modalità articolo
  set show_article 0

  % se diverso da 0, mostra le descrizioni dei newsgroup se disponibili
  set show_descriptions 1

  % colonna dove inizia la descrizione del gruppo
  set group_dsc_start_column 40

  % se diverso da 0, non vengono effettuati backup del file newsrc
  set no_backups 0
  % segnala sia con un beep che visivamente
  set beep 3

  % se diverso da 0, annulla automaticamente le sottoscrizioni ai nuovi gruppi
  set unsubscribe_new_groups 1

  % se posto a 0, previene la ricerca di nuovi newsgroup (SOLO con slrn >=0.9.6.3)
  set check_new_groups 0

  % se 0, visualizza il titolo solo nel primo articolo di un thread
  set show_thread_subject 0

  % usa caratteri ASCII per indicare le relazioni tra messaggi
  set simulate_graphic_chars 1

  % abilita supporto per il mouse in xterm
  set mouse 1

  % usa barra colorata come cursore invece di '->'
  set display_cursor_bar 1

  % se impostato ad 1, un articolo viene segnato come letto se visualizzato
  % se imposatato a 0, deve essere l'utente a segnarlo esplicitamente come letto
  set auto_mark_article_as_read 0

  % se impostati a 0, ci si sposta al prossimo articolo/gruppo automaticamente
  set query_next_article 1
  set query_next_group 1

  % se impostato a 0, non viene proposto il prompt 'next group:'
  set prompt_next_group 1

  % se impostato a 0, non viene chiesta conferma per follow-up, reply, quit, ecc...
  set confirm_actions 1

  % visualizza prima il subject e poi il nome dell'autore
  % 0=niente nome, 2=prima nome e poi subject
  set author_display 1

  % visualizza nome reale dell'autore
  set display_author_realname 1

  % se 0, salva tutti i gruppi durante il salvataggio del file newsrc
  % se 1, non salva i gruppi non sottoscritti
  % se 2, non salva i gruppi non sottoscritti o non letti
  set write_newsrc_flags 0

  % visualizza '~' alla fine di un articolo
  set use_tilde 1

  % nome dei file che conterranno i propri Post e Reply
  % (N.B.: la propria HOME è sottintesa)
  set save_posts "News/My_Posts"
  set save_replies "News/My_Replies"

  % file che conterrà i Post falliti. "" per disabilitare
  set failed_posts_file "News/Failed_Posts"

  % nome del file dei punteggi (score). (N.B.: la propria HOME è sottintesa)
  scorefile "News/scorefile"

  % articoli con punteggi superiori a min_high_score vengono posti in cima
  % articoli con punteggi inferiori a max_low_score vengono posti alla fine
  % articoli con punteggi inferiori a below kill_score vengono eliminati
  set min_high_score 1
  set max_low_score 0
  set kill_score -666

  % nome della directory in cui vengono posti i file decodificati
  % (N.B.: la propria HOME è sottintesa - assicurarsi che esista)
  set decode_directory "News/decoded"
  % directory dove vengono salvati tutti gli altri file
  % (N.B.: la propria HOME è sottintesa - assicurarsi che esista)
  set save_directory "News/other"
  % directory dove verranno posti gli articoli posposti
  % (N.B.: la propria HOME è sottintesa - assicurarsi che esista)
  set postpone_directory "News/postponed"

  % usa la directory TMPDIR per i file temporanei (consiglio per la privacy:
  % impostare TMPDIR come indicato in .bash_profile nella sezione BASH del
  % Quick&Easy Configuration Howto e creare la directory: $HOME/.tmp)
  set use_tmpdir 1

  % ordina per thread, poi per data con i più recenti prima
  set sorting_method 9

  % visualizza il punteggio (score) nell'elenco
  set display_score 1

  % un header con un nuovo subject inizia un nuovo thread
  set new_subject_breaks_threads 1

  % espandi i thread
  set uncollapse_threads 1

  % legge l'active file in avvio
  set read_active 1

  % manda a capo solo il body, non gli header o il testo quotato
  set wrap_flags 4

  %---------------------------------------------------------------------------
  % Supporto Mime
  %---------------------------------------------------------------------------
  set use_mime 1
  set mime_charset "iso-8859-1"
  set use_metamail 0
  set metamail_command "metamail"

  % visualizza i numeri di fianco agli articoli, per selezioni veloci
  set use_header_numbers 1

  % If non-zero, prompt for reconnection if the NNTP connection drops.  If zero,
  % attempt reconnection without asking user.
  set query_reconnect 1

  % Character to use to hide spoiler text:
  set spoiler_char '*'

  % set to 0 to keep the display still, and just reveal the spoiler
  % set to 1 to start a new page when spoiler is revealed
  % set to 2 to keep the display still, and reveal ALL spoilers
  % set to 3 to start new page and reveal ALL spoilers
  set spoiler_display_mode 1

  % Help text to be displayed at bottom of screen in various modes:
  %set art_help_line "bla bla"
  %set header_help_line "more bla bla"
  %set group_help_line "and even more"

  %If set to 1, then spool.c will actually check each article file exists when
  %reading an overview file.  This adds a perceptible delay (especially in a
  %large spool directory), so I've made it an option.  With some servers it is
  %almost redundant, whereas with others which don't expire entries from
  %overview files regularly, it's almost vital.  If the users sees a lot of
  %"article not available" errors, they should probably try turning it on.
  set spool_check_up_on_nov 0

  interpret "News/.Slrn/search.sl"

  %---------------------------------------------------------------------------
  % Colors
  %---------------------------------------------------------------------------
  color header_number     "brightgreen"   "black"
  color header_name       "brightgreen"   "black"
  color normal            "white"         "black"
  color error             "brightred"     "black"
  color status            "yellow"        "blue"
  color group             "brightgreen"   "black"
  color article           "white"         "black"
  color cursor            "brightcyan"    "blue"
  color author            "yellow"        "black"
  color subject           "brightgreen"   "black"
  color headers           "yellow"        "black"
  color menu              "yellow"        "blue"
  color menu_press        "blue"          "yellow"
  color tree              "brightred"     "black"
  color quotes            "cyan"          "black"
  color quotes1           "yellow"        "black"
  color quotes2           "magenta"       "black"
  color quotes3           "red"           "black"
  color quotes4           "red"           "black"
  color quotes5           "red"           "black"
  color quotes6           "red"           "black"
  color quotes7           "red"           "black"
  color thread_number     "brightblue"    "black"
  color high_score        "brightred"     "black"
  color signature         "red"           "black"
  color description       "blue"          "black"
  color tilde             "brightgreen"   "black"
  color response_char     "cyan"          "black"

  %-----------------------------------------------------
  % Monochrome attributes for monochrom terminals.   One or more attributes
  % may be specified.
  %-----------------------------------------------------
  mono normal             "none"
  mono header_number      "none"
  mono header_name        "bold"
  mono error              "blink" "bold"
  mono status             "reverse"
  mono group              "bold"
  mono article            "none"
  mono cursor             "bold"  "reverse"
  mono author             "none"
  mono subject            "none"
  mono headers            "bold"
  mono menu               "reverse"
  mono menu_press         "none"
  mono tree               "bold"
  mono quotes             "underline"
  mono thread_number      "bold"
  mono high_score         "bold"
  mono signature          "none"
  mono description        "none"
  mono response_char      "bold"
  ______________________________________________________________________

  15.3.  Tasti principali

































































  ______________________________________________________________________
  Note:
  1. ^ sta per CTRL, <qualcosa> sta per il tasto indicato
  2. I comandi sono case-sensitive, maiuscole e minuscole sono diverse.
  3. Per attivare il tasto '$' per fare le ricerche all'interno dei messaggi,
     dovete inserire nel vostro .slrnrc una riga tipo:
     interpret "News/.Slrn/search.sl"
     dove 'search.sl' è lo script riportato alla fine di questa sezione dell'Howto

  Comandi attivi sui gruppi:
  P             invia un articolo nel newsgroup corrente
  <Esc>P        invia o modifica un articolo posposto
  <Space>       seleziona il newsgroup corrente
  <Return>      seleziona il newsgroup corrente
  s             sottoscrivi il newsgroup corrente
  <Esc>1 s      sottoscrivi i newsgroup che corrispondono al pattern...
  u             annulla la sottoscrizione al newsgroup
  <Esc>1 u      annulla la sottoscrizione ai newsgroup corrispondondenti  al pattern...
  c             segna tutti gli articoli come letti (catchup)
  <Esc>u        segna tutti gli articoli come non letti

  Movimenti:
  <Esc><        spostati in cima all'elenco
  <Esc>>        spostati in coda all'elenco
  <PageUp>      spostati alla pagina precedente
  <PageDown>    spostati alla pagina successiva
  <Up>          spostati al gruppo precedente
  <Down>        spostati al gruppo successivo

  Varie:
  a             aggiungi un nuovo newsgroup
  ^L            cancella e ridisegna lo schermo
  l             (dis)attiva la visualizzazione dei gruppi che non hanno articoli non letti
  L             (dis)attiva l'elenco dei gruppi non sottoscritti
  <ESC>1 L      nasconde i gruppi non sottoscritti
  /             ricerca una parola nei gruppi ('l' per visualizzare quelli non sottoscritti)
  q             esci dal newsreader
  G             preleva i nuovi articoli
  K             (dis)attiva la modalità punteggi (score)
  X             forza il salvataggio del file newsrc
  <ESC>a        (dis)attiva la visualizzazione della descrizione del newsgroup
  .             ripeti l'ultima sequenza di tasti

  Comandi attivi sugli articoli:
  Movimenti:
  <Space>       seleziona l'articolo o scorri di una pagina
  <Del>         scorri l'articolo indietro di una pagina
  b             scorri l'articolo indietro di una pagina
  <Esc><Up>     scorri l'articolo indietro di una riga
  <Esc><Down>   scorri l'articolo avanti di una riga
  <Left>        sposta la visualizzazione articolo a sinistra
  <Right>       sposta la visualizzazione articolo a destra

  Articoli:
  P             componi un nuovo articolo (NON un follow-up)
  f             componi un follow-up all'articolo corrente
  <Esc>1 f      componi un follow-up all'articolo corrente inserendo tutti gli header
  <Esc>2 f      componi un follow-up all'articolo corrente non quotando l'originale
  <Esc>P        invia o modifica un articolo posposto
  F             reinvia (forward) l'articolo a qualcuno
  r             rispondi via email all'autore

  Ricerche:
  /             cerca in avanti nell'articolo
  a             cerca in avanti un autore
  A             cerca all'indietro un autore
  s             cerca in avanti un Subject
  S             cerca all'indietro un Subject
  $             cerca negli articoli (guarda nota N.3)
  =             salta al prossimo articolo con il Subject indicato
  !             salta al prossimo articolo con il punteggio più alto

  Varie:
  W             (dis)attiva ritorno a capo
  t             (dis)attiva la visualizione completa degli header
  T             (dis)attiva la visualizione delle righe quotate
  h             nascondi la finestra dell'articolo
  <Tab>         salta il testo quotato
  <Esc>^C       cancella l'articolo (solo se si è l'autore)
  y             stampa l'articolo
  o             accoda l'articolo, il thread, o gli articoli segnati ad un file
  |             manda un articolo a un comando della shell con una pipe

  Comandi attivi nella finestra degli header:
  Movimenti:
  <Esc><        spostati in cima all'elenco degli header
  <Esc>>        spostati in coda all'elenco degli header
  p             spostati al precedente articolo non letto
  n             spostati al successivo articolo non letto o gruppo se è raggiunta la fine
  L             torna all'ultimo articolo letto
  N             salta al newsgroup successivo
  <Up>          spostati all'articolo precedente
  <Down>        spostati all'articolo successivo
  ,             torna al precedente articolo segnato

  Gestione:
  d             segna un articolo come letto e spostati al successivo non letto
  <Esc>d        segna un thread come letto e spostati al successivo non letto
  u             segna un articolo come non letto
  ;             segna l'articolo nella posizione corrente
  c             segna tutti gli articoli come letti (catchup)
  <Esc>u        segna tutti gli articoli come non letti
  C             segna tutti gli articoli fino alla posizione corrente come letti
  <Esc>U        segna tutti gli articoli fino alla posizione corrente come non letti

  Varie:
  <Esc>t        (dis)attiva il raggruppamento del thread
  <Esc>a        modifica il formato di visualizzazione degli header
  <Esc>s        seleziona il tipo di ordinamento
  <Esc>p        cerca l'header genitore, scaricandolo dal server se necessario
  <Esc>1<Esc>p  ricostruisci il thread, scaricandolo dal server se necessario
  <Esc>^P       cerca tutti gli header figli di quello corrente (chiedendo al server)
  K             crea una nuova voce di punteggio (score) in base all'header corrente
  <Esc>1 K      modifica il file dei punteggi (score)
  *             segna l'articolo affinchè non sia affetto dai comandi di catchup
  <Esc>1 *      elimina i segni '*' da tutti gli articoli marcati
  x             rimuovi tutti gli articoli letti dall'elenco
  .             ripeti l'ultima sequenza di tasti
  U             cerca l'URL e seguila
  q             esci dalla modalità gruppo
  ______________________________________________________________________



  15.4.  script: "search.sl"







  ______________________________________________________________________
  % File ~/News/.Slrn/search.sl
  % Questa macro è presente nei sorgenti del programma slrn (slrn-*.tar.gz)
  %
  % This macro allows one to search throgh the bodies of the articles in
  % the current newsgroup.  It binds the function 'search_newsgroup' to
  % the '$' key in article mode.
  %
  % Traduzione: questa macro effettua una ricerca all'interno dei
  % messaggi del newsgroup corrente. Associa (in modalità lettura
  % articoli) la funzione 'search_newsgroup' al tasto [$].


  variable Search_Last_Art_Search_Str = "";
  define search_newsgroup ()
  {
  variable str;
  variable flags;

  str = read_mini ("Search for regexp", Search_Last_Art_Search_Str,
  "");
  if (str == "")
  return;

  Search_Last_Art_Search_Str = str;

  uncollapse_threads ();

  do
  {
  flags = get_header_flags ();

  if (re_search_article (str))
  {
  pop ();
  return;
  }

  set_header_flags (flags);

  call ("hide_article");
  }
  while (header_down (1));

  error ("Not found.");
  }
  definekey ("search_newsgroup", "$", "article");
  ______________________________________________________________________



  Siete pronti per il mondo di Usenet, ma prima leggetevi qualche
  documento sulla Netiquette!

  16.  Varie

  16.1.  TrueType

  In questa sezione spiego come impostare X-Window per l'uso dei
  caratteri True-Type. Non uso nè xfstt nè xftft, ma solo xfs patchato
  con l'aggiunta delle librerie freetype (il tutto è di serie dalla
  Redhat 6.0 in poi e derivate - se xfs della Mandrake 7 vi da problemi,
  recuperate quello della RedHat 6.1 e sostituitelo). Vi servono anche i
  file contenuti in ttmkfdir-QUALCOSA.rpm o .tgz o .tar.gz, quindi
  cercatelo in rete. Quindi dopo aver installato quanto appena detto,
  create una directory  /usr/share/fonts/truetype e copiateci dentro i
  file dei font.ttf dalla partizione Windows o da qualche altra parte
  dove avete font.ttf. Quando copio cose da Win in Linux, solitamente mi
  ritrovo i file con l'attributo di esecuzione settato, quindi nel caso
  date: chmod a-x /usr/share/fonts/truetype. I file in questa dir devono
  essere TUTTI in minuscolo, quindi rinominate quelli che abbiano
  lettere in maiuscolo. Se sono pochi potete fare a mano, altrimenti
  usate questo script (dal Tips-HOWTO - ATTENZIONE: i due caratteri
  intorno ad ls e il primo e ultimo della riga lc=... sono apici
  inversi, non apici normali, e si ottengono sulle tastiere italiane con
  ALT_GR-APICE_NORMALE):



  ______________________________________________________________________
  #!/bin/sh
  # lowerit
  # convert all file names in the current directory to
  # lower case only operates on plain files - does not
  # change the name of directories will ask for
  # verification before overwriting an existing file
  for x in `ls`
  do
    if [ ! -f $x ]; then
      continue
    fi
    lc=`echo $x  | tr '[A-Z]' '[a-z]'`
    if [ $lc != $x ]; then
      mv -i $x $lc
    fi
  done
  ______________________________________________________________________



  Riguardo X-Window, conviene installare sia i font da 75 dpi che quelli
  da 100, dovreste averli nella vostra distribuzione (quelli da 75 dpi
  sono indicati per risoluzioni 640x480 o 800x600, quelli da 100 dpi
  sono più adatti alle risoluzioni da 1024x768 in su, oppure a quelle
  più basse se siete parenti di Mr Magoo ;-) ). Entrate nella directory
  /usr/share/fonts/truetype e date: ttmkfdir -o fonts.scale e poi
  mkfontdir. Avrete così creato i file fonts.scale e fonts.dir, che
  saranno letti da xfs tramite la direttiva FontPath. Ogni volta che
  inserirete nuovi font nella directory dovrete rilanciare questi 2
  comandi per ricreare l'elenco dei font. Ora modificate il file:
  /etc/X11/fs/config in modo che carichi e usi prima i font True-Type e
  poi gli altri (potete anche modificare l'ordine dei 75/100 dpi,
  mettendo prima quelli che preferite in base alla risoluzione, come
  spiegato prima):


  ______________________________________________________________________
  catalogue = /usr/share/fonts/truetype,
  /usr/X11R6/lib/X11/fonts/misc:unscaled,
  /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
  /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
  /usr/X11R6/lib/X11/fonts/misc,
  /usr/X11R6/lib/X11/fonts/Type1,
  /usr/X11R6/lib/X11/fonts/Speedo,
  /usr/X11R6/lib/X11/fonts/mdk,
  /usr/share/fonts/default/Type1,
  /usr/X11R6/lib/X11/fonts/100dpi,
  /usr/X11R6/lib/X11/fonts/75dpi
  ______________________________________________________________________



  Infine modificate /etc/X11/XF86Config, commentando nella sezione
  "Files" tutte le righe di FontPath, ora diventate inutili in quanto
  richiamate da xfs, lasciando la riga di RgbPath e aggiungendo la riga:


  ______________________________________________________________________
  FontPath "unix/:7101"
  ______________________________________________________________________



  La RedHat sembra non avviare bene xfs, quindi assicuratevi che xfs NON
  parta ogni volta che il sistema si avvia (eliminatelo con ntsysv o con
  chkconfig --del xfs) e date: /etc/rc.d/init.d/xfs stop per abbatterlo
  nel caso sia in funzione. Aggiungete la seguante riga a
  /etc/rc.d/rc.local :


  ______________________________________________________________________
  /usr/X11R6/bin/xfs -config /etc/X11/fs/config -port 7101 > /dev/null &
  ______________________________________________________________________



  uscite da X-Window se siete in gui, riavviate il sistema o reinserite
  l'ultima riga in console per avviare temporaneamente xfs senza
  riavviare tutto il sistema, e rilanciate startx per vedere se tutto va
  bene, provando a dare xfontsel (è contenuto in X11R6-contrib):
  cliccando su fmly dovreste vedere i vostri font (in KDE potete usare
  anche kfontmanager)!  Per la questione dei 75/100 dpi, se avete messo
  prima quelli da 100, ricordate anche di cambiare, sempre in
  /etc/X11/fs/config, la riga:


  ______________________________________________________________________
  default-resolutions = 75,75,100,100
  ______________________________________________________________________



  in


  ______________________________________________________________________
  default-resolutions = 100,100,75,75
  ______________________________________________________________________



  e modificate in /etc/X11/xdm/Xserver (o comunque cercate il file
  Xserver) la riga:


  ______________________________________________________________________
  :0 local /usr/X11R6/bin/X
  ______________________________________________________________________



  in


  ______________________________________________________________________
  :0 local /usr/X11R6/bin/X -dpi 100
  ______________________________________________________________________

  In una prossima revisione dell'Howto sarà aggiunta la configurazione
  dei font TrueType anche con Xfstt e per l'uso con Staroffice.

  16.2.  Bash

  Alcuni file che possono tornare utili per configurare bash (altri più
  dettagliati sono presenti nel "Config-HOWTO")

  16.2.1.  File .bash_profile


  ______________________________________________________________________
  if [ -f ~/.bashrc ]; then
          . ~/.bashrc
  fi
  USERNAME='mrshark'
  BASH_ENV='$HOME/.bashrc'
  MAIL='$HOME/Mail/mrshark'
  TMPDIR=$HOME/.tmp
  VISUAL='nedit'
  EDITOR='zed'
  SLANG_EDITOR='zed %s'
  DATE=`date +%B-%Y`
  NNTPSERVER='127.0.0.1'
  LANG='it_IT.ISO-8859-1'
  LC_COLLATE='it_IT.ISO-8859-1'
  LC_CTYPE='it_IT.ISO-8859-1'
  LC_NUMERIC='it_IT.ISO-8859-1'
  LC_MONETARY='it_IT.ISO-8859-1'
  LC_MESSAGES='it_IT.ISO-8859-1'
  LC_TIME='it_IT.ISO-8859-1'
  LC_ALL=''
  export USERNAME BASH_ENV MAIL TMPDIR
  export VISUAL EDITOR SLANG_EDITOR DATE NNTPSERVER
  export LANG LC_COLLATE LC_CTYPE LC_NUMERIC LC_ALL
  export LC_MONETARY LC_MESSAGES LC_TIME
  ______________________________________________________________________



  16.2.2.  File .bashrc


  ______________________________________________________________________
  if [ -f /etc/bashrc ]; then
          . /etc/bashrc
  fi
  alias ls='ls -sh1C --color=tty'
  alias rm='rm -i'
  alias cp='cp -i'
  alias mv='mv -i'
  alias df="df -Th"
  alias cdin='mount /mnt/cdrom ; cd /mnt/cdrom ; ls'
  alias cdout='cd ; umount /mnt/cdrom ; eject'
  alias du='du -h --max-depth=1'
  alias tin='tin -r'
  #alias startx='cd / ; startx &'
  umask 077
  ______________________________________________________________________



  Prossimamente aggiungerò altre impostazioni.



  17.  Links

  17.1.  Documenti vari


  ·  ethernet howto: http://www.pluto.linux.it/ildp/HOWTO/Ethernet-
     HOWTO.html

  ·  net howto: http://www.linuxdoc.org/HOWTO/Net-HOWTO.html

  ·  net 3-4 howto: http://www.linuxdoc.org/HOWTO/NET3-4-HOWTO.html

  ·  networking overview howto:
     http://www.pluto.linux.it/ildp/HOWTO/Networking-Overview-HOWTO.html

  ·  cd writing howto: http://www.pluto.linux.it/ildp/HOWTO/CD-Writing-
     HOWTO.html

  ·  mp3 howto: http://www.pluto.linux.it/ildp/HOWTO/MP3-HOWTO.html

  ·  security howto: http://www.linuxdoc.org/HOWTO/Security-HOWTO.html

  ·  linux administrator security guide:
     http://www.securityportal.com/lasg/

  ·  ildp: http://www.pluto.linux.it/ildp/

  ·  appunti linux:
     http://www.pluto.linux.it/ildp/AppuntiLinux/index.html

  17.2.  Partizioni


  ·  parted: http://www.gnu.org/software/parted/

  ·  partition resizer: http://members.xoom.com/zeleps

  ·  partition manager: http://members.xoom.com/ranish/part/

  ·  fips: ftp://ftp.debian.org/pub/debian/tools/fips20.zip

  ·  fsresize: http://www.alphalink.com.au/~clausen/fsresize/

  ·  ext2resize: http://ext2resize.sourceforge.net/

  ·  filesystem howto: http://www.linuxdoc.org/HOWTO/Filesystems-
     HOWTO.html

  ·  partitioning primer: http://members.xoom.com/ranish/part/primer.htm

  ·  large disk howto: http://www.pluto.linux.it/ildp/HOWTO/Large-Disk-
     HOWTO.html

  ·  partition rescue howto:
     http://www.linuxdoc.org/HOWTO/mini/Partition-Rescue-mini-HOWTO.html

  ·  partition howto:
     http://www.pluto.linux.it/ildp/HOWTO/mini/Partition.html

  ·  FSSTND: http://www.pathname.com/fhs

  17.3.  Loadlin


  ·  loadlin: http://elserv.ffm.fgan.de/~lermen/HOME.html

  ·  loadlin+win95 howto:
     http://www.pluto.linux.it/ildp/HOWTO/mini/Loadlin+Win95.html

  17.4.  Kernel


  ·  kernel: http://www.it.kernel.org/

  ·  kernel howto: http://www.pluto.linux.it/ildp/HOWTO/Kernel-
     HOWTO.html

  ·  lilo howto: http://www.pluto.linux.it/ildp/HOWTO/mini/LILO.html

  17.5.  Internet


  ·  ppp howto: http://www.pluto.linux.it/ildp/HOWTO/PPP-HOWTO.html

  ·  serial howto: http://www.pluto.linux.it/ildp/HOWTO/Serial-
     HOWTO.html

  ·  winmodem howto: http://www.linuxdoc.org/HOWTO/Winmodems-and-Linux-
     HOWTO.html

  ·  modem howto: http://www.pluto.linux.it/ildp/HOWTO/Modem-HOWTO.html

  17.6.  Postfix


  ·  postfix: http://postfix.linux.it/start.html

  ·  postfix faq: http://postfix.linux.it/faq.html

  ·  postfix configurazion: http://postfix.linux.it/basic.html

  ·  AGX tutorial: http://www.linux.it/~agx/info/mini-postfix-howto.txt

  17.7.  Fetchmail


  ·  fetchmail: http://www.tuxedo.org/~esr/fetchmail/

  ·  mail administrator howto: http://www.linuxdoc.org/HOWTO/Mail-
     Administrator-HOWTO.html

  ·  mail user howto: http://www.pluto.linux.it/ildp/HOWTO/Mail-User-
     HOWTO.html

  17.8.  Procmail


  ·  procmail: http://www.procmail.org/

  ·  mini faq: http://www.iki.fi/era/procmail/mini-faq.html

  ·  pm-tips: http://www.procmail.org/jari/pm-tips.html

  ·  quick start: http://www.ii.com/internet/robots/procmail/qs/

  ·  proctips: http://www.uwasa.fi/~ts/info/proctips.html

  17.9.  Leafnode


  ·  leafnode: http://www.leafnode.org

  ·  news leafsite howto: http://www.linuxdoc.org/HOWTO/mini/News-
     Leafsite.html

  17.10.  Firewall


  ·  firewall howto: http://www.pluto.linux.it/ildp/HOWTO/Firewall-
     HOWTO.html

  ·  ip masquerade howto: http://www.linuxdoc.org/HOWTO/IP-Masquerade-
     HOWTO.html

  ·  ipchains howto: http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-
     HOWTO.html

  ·  ip masquerade+ napster:
     http://www.linuxdoc.org/HOWTO/mini/IPMasquerading+Napster.html

  ·  generazione firewall online: http://www.linux-firewall-
     tools.com/linux/firewall/index.html

  ·  ipchains-firewall: http://firewall.langistix.com/

  17.11.  DNS


  ·  bind: http://www.isc.org/products/BIND/

  ·  dns howto: http://www.pluto.linux.it/ildp/HOWTO/DNS-HOWTO.html

  ·  dns resource directory: http://www.dns.net/dnsrd/

  ·  bind operation guide: (tra i documenti di bind, in
     /usr/doc/bind...)

  ·  bind faq: http://www.nominum.com/resources/bind-faq.html

  17.12.  Wwwoffle


  ·  wwwoffle: http://www.gedanken.demon.co.uk/wwwoffle/

  17.13.  Junkbuster


  ·  junkbuster: http://www.junkbuster.com/

  ·  aggiornamenti file: http://www.waldherr.org/junkbuster/update.shtml

  17.14.  Mutt


  ·  mutt: http://www.mutt.org

  ·  muttrc builder: http://mutt.netliberte.org/

  ·  mutt gpg pgp howto: http://www.linuxdoc.org/HOWTO/Mutt-GnuPG-PGP-
     HOWTO.html

  17.15.  Slrn


  ·  slrn: http://space.mit.edu/~davis/slrn.html

  ·  slrn+slrnpull howto:
     http://www.pluto.linux.it/ildp/altri/SLRN+SLRNPULL-HOWTO.html
  ·  altra pagina di slrn: http://www.slrn.org

  ·  ancora slrn: http://slrn.sourceforge.net

  ·  introduzione a slrn:
     http://alcor.concordia.ca/topics/netnews/slrn/intro/

  17.16.  Varie

  17.16.1.  True Type


  ·  font howto: http://www.linuxdoc.org/HOWTO/Font-HOWTO.html

  ·  font deuglification howto:
     http://www.pluto.linux.it/ildp/HOWTO/mini/FDU.html

  ·  tt debian howto: http://www.pluto.linux.it/ildp/HOWTO/mini/TT-
     Debian.html

  ·  staroffice fonts:
     http://www.mindspring.com/~john_mcl/adding_fonts.html

  ·  staroffice fonts 2: http://private.addcom.de/alien8/Fonts.html

  ·  staroffice faq: http://www.wernerroth.de/en/staroffice/faq/faq.html

  ·  redhat ttf: http://www.kegel.com/linux/tt.html

  17.16.2.  Bash


  ·  bash prompt howto: http://www.linuxdoc.org/HOWTO/Bash-Prompt-
     HOWTO.html

  ·  config howto: http://www.pluto.linux.it/ildp/HOWTO/Config-
     HOWTO.html

  18.  GNU Free Documentation License

  18.1.  INGLESE

  GNU Free Documentation License

  Version 1.1, March 2000

  Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
  Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and
  distribute verbatim copies of this license document, but changing it
  is not allowed.

  0. PREAMBLE

  The purpose of this License is to make a manual, textbook, or other
  written document "free" in the sense of freedom: to assure everyone
  the effective freedom to copy and redistribute it, with or without
  modifying it, either commercially or noncommercially. Secondarily,
  this License preserves for the author and publisher a way to get
  credit for their work, while not being considered responsible for
  modifications made by others.

  This License is a kind of "copyleft", which means that derivative
  works of the document must themselves be free in the same sense. It
  complements the GNU General Public License, which is a copyleft
  license designed for free software.

  We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does. But this License is not limited to software manuals; it
  can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book. We recommend this License
  principally for works whose purpose is instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

  This License applies to any manual or other work that contains a
  notice placed by the copyright holder saying it can be distributed
  under the terms of this License. The "Document", below, refers to any
  such manual or work. Any member of the public is a licensee, and is
  addressed as "you".

  A "Modified Version" of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.

  A "Secondary Section" is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document's overall
  subject (or to related matters) and contains nothing that could fall
  directly within that overall subject. (For example, if the Document is
  in part a textbook of mathematics, a Secondary Section may not explain
  any mathematics.) The relationship could be a matter of historical
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.

  The "Invariant Sections" are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.

  The "Cover Texts" are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.

  A "Transparent" copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, whose contents can be viewed and edited directly and
  straightforwardly with generic text editors or (for images composed of
  pixels) generic paint programs or (for drawings) some widely available
  drawing editor, and that is suitable for input to text formatters or
  for automatic translation to a variety of formats suitable for input
  to text formatters. A copy made in an otherwise Transparent file
  format whose markup has been designed to thwart or discourage
  subsequent modification by readers is not Transparent. A copy that is
  not "Transparent" is called "Opaque".

  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
  or XML using a publicly available DTD, and standard-conforming simple
  HTML designed for human modification. Opaque formats include
  PostScript, PDF, proprietary formats that can be read and edited only
  by proprietary word processors, SGML or XML for which the DTD and/or
  processing tools are not generally available, and the machine-
  generated HTML produced by some word processors for output purposes
  only.

  The "Title Page" means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page. For works in
  formats which do not have any title page as such, "Title Page" means
  the text near the most prominent appearance of the work's title,
  preceding the beginning of the body of the text.

  2. VERBATIM COPYING

  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no
  other conditions whatsoever to those of this License. You may not use
  technical measures to obstruct or control the reading or further
  copying of the copies you make or distribute. However, you may accept
  compensation in exchange for copies. If you distribute a large enough
  number of copies you must also follow the conditions in section 3.

  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.

  3. COPYING IN QUANTITY

  If you publish printed copies of the Document numbering more than 100,
  and the Document's license notice requires Cover Texts, you must
  enclose the copies in covers that carry, clearly and legibly, all
  these Cover Texts: Front-Cover Texts on the front cover, and Back-
  Cover Texts on the back cover. Both covers must also clearly and
  legibly identify you as the publisher of these copies.  The front
  cover must present the full title with all words of the title equally
  prominent and visible. You may add other material on the covers in
  addition.  Copying with changes limited to the covers, as long as they
  preserve the title of the Document and satisfy these conditions, can
  be treated as verbatim copying in other respects.

  If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.

  If you publish or distribute Opaque copies of the Document numbering
  more than 100, you must either include a machine-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
  a publicly-accessible computer-network location containing a complete
  Transparent copy of the Document, free of added material, which the
  general network-using public has access to download anonymously at no
  charge using public-standard network protocols.  If you use the latter
  option, you must take reasonably prudent steps, when you begin
  distribution of Opaque copies in quantity, to ensure that this
  Transparent copy will remain thus accessible at the stated location
  until at least one year after the last time you distribute an Opaque
  copy (directly or through your agents or retailers) of that edition to
  the public.

  It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to
  give them a chance to provide you with an updated version of the
  Document.

  4. MODIFICATIONS

  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
  the Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  and modification of the Modified Version to whoever possesses a copy
  of it. In addition, you must do these things in the Modified Version:

  A. Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions (which
  should, if there were any, be listed in the History section of the
  Document). You may use the same title as a previous version if the
  original publisher of that version gives permission.

  B. List on the Title Page, as authors, one or more persons or entities
  responsible for authorship of the modifications in the Modified
  Version, together with at least five of the principal authors of the
  Document (all of its principal authors, if it has less than five).

  C. State on the Title page the name of the publisher of the Modified
  Version, as the publisher.

  D. Preserve all the copyright notices of the Document.

  E. Add an appropriate copyright notice for your modifications adjacent
  to the other copyright notices.

  F. Include, immediately after the copyright notices, a license notice
  giving the public permission to use the Modified Version under the
  terms of this License, in the form shown in the Addendum below.

  G. Preserve in that license notice the full lists of Invariant
  Sections and required Cover Texts given in the Document's license
  notice.

  H. Include an unaltered copy of this License.

  I. Preserve the section entitled "History", and its title, and add to
  it an item stating at least the title, year, new authors, and
  publisher of the Modified Version as given on the Title Page. If there
  is no section entitled "History" in the Document, create one stating
  the title, year, authors, and publisher of the Document as given on
  its Title Page, then add an item describing the Modified Version as
  stated in the previous sentence.

  J. Preserve the network location, if any, given in the Document for
  public access to a Transparent copy of the Document, and likewise the
  network locations given in the Document for previous versions it was
  based on. These may be placed in the "History" section. You may omit a
  network location for a work that was published at least four years
  before the Document itself, or if the original publisher of the
  version it refers to gives permission.

  K. In any section entitled "Acknowledgements" or "Dedications",
  preserve the section's title, and preserve in the section all the
  substance and tone of each of the contributor acknowledgements and/or
  dedications given therein.

  L. Preserve all the Invariant Sections of the Document, unaltered in
  their text and in their titles. Section numbers or the equivalent are
  not considered part of the section titles.

  M. Delete any section entitled "Endorsements". Such a section may not
  be included in the Modified Version.

  N. Do not retitle any existing section as "Endorsements" or to
  conflict in title with any Invariant Section.

  If the Modified Version includes new front-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant. To do this, add their titles to the
  list of Invariant Sections in the Modified Version's license notice.
  These titles must be distinct from any other section titles.


  You may add a section entitled "Endorsements", provided it contains
  nothing but endorsements of your Modified Version by various
  parties--for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.

  You may add a passage of up to five words as a Front-Cover Text, and a
  passage of up to 25 words as a Back-Cover Text, to the end of the list
  of Cover Texts in the Modified Version. Only one passage of Front-
  Cover Text and one of Back-Cover Text may be added by (or through
  arrangements made by) any one entity. If the Document already includes
  a cover text for the same cover, previously added by you or by
  arrangement made by the same entity you are acting on behalf of, you
  may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.

  The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice.

  The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy. If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
  author or publisher of that section if known, or else a unique number.
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.

  In the combination, you must combine any sections entitled "History"
  in the various original documents, forming one section entitled
  "History"; likewise combine any sections entitled "Acknowledgements",
  and any sections entitled "Dedications". You must delete all sections
  entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

  You may make a collection consisting of the Document and other
  documents released under this License, and replace the individual
  copies of this License in the various documents with a single copy
  that is included in the collection, provided that you follow the rules
  of this License for verbatim copying of each of the documents in all
  other respects.

  You may extract a single document from such a collection, and
  distribute it individually under this License, provided you insert a
  copy of this License into the extracted document, and follow this
  License in all other respects regarding verbatim copying of that
  document.

  7. AGGREGATION WITH INDEPENDENT WORKS

  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
  distribution medium, does not as a whole count as a Modified Version
  of the Document, provided no compilation copyright is claimed for the
  compilation. Such a compilation is called an "aggregate", and this
  this License does not apply to the other self-contained works thus
  compiled with the Document, on account of their being thus compiled,
  if they are not themselves derivative works of the Document. If the
  Cover Text requirement of section 3 is applicable to these copies of
  the Document, then if the Document is less than one quarter of the
  entire aggregate, the Document's Cover Texts may be placed on covers
  that surround only the Document within the aggregate. Otherwise they
  must appear on covers around the whole aggregate.

  8. TRANSLATION

  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
  original versions of these Invariant Sections. You may include a
  translation of this License provided that you also include the
  original English version of this License. In case of a disagreement
  between the translation and the original English version of this
  License, the original English version will prevail.

  9. TERMINATION

  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided for under this License. Any other attempt
  to copy, modify, sublicense or distribute the Document is void, and
  will automatically terminate your rights under this License. However,
  parties who have received copies, or rights, from you under this
  License will not have their licenses terminated so long as such
  parties remain in full compliance.

  10. FUTURE REVISIONS OF THIS LICENSE

  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time. Such new versions
  will be similar in spirit to the present version, but may differ in
  detail to address new problems or concerns. See
  http://www.gnu.org/copyleft/.

  Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
  License "or any later version" applies to it, you have the option of
  following the terms and conditions either of that specified version or
  of any later version that has been published (not as a draft) by the
  Free Software Foundation. If the Document does not specify a version
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.

  18.2.  ITALIANO

  GNU Free Documentation License

  Versione 1.1, Marzo 2000

  Copyright (C) 2000  Free Software Foundation, Inc. 59 Temple Place,
  Suite 330, Boston, MA  02111-1307  USA Chiunque può copiare e
  distribuire copie letterali di questo documento di licenza, ma non ne
  è permessa la modifica.

  0. PREAMBOLO

  Lo scopo di questa licenza è di rendere un manuale, un testo o altri
  documenti scritti "liberi" nel senso di assicurare a tutti la libertà
  effettiva di copiarli e redistribuirli, con o senza modifiche, a fini
  di lucro o no.  In secondo luogo questa licenza prevede per autori ed
  editori il modo per ottenere il giusto riconoscimento del proprio
  lavoro, preservandoli dall'essere considerati responsabili per
  modifiche apportate da altri.

  Questa licenza è un "copyleft": ciò vuol dire che i lavori che
  derivano dal documento originale devono essere ugualmente liberi. È il
  complemento alla GNU General Public License, che è una licenza di tipo
  "copyleft" pensata per il software libero.

  Abbiamo progettato questa licenza al fine di applicarla alla
  documentazione del software libero, perché il software libero ha
  bisogno di documentazione libera: un programma libero dovrebbe
  accompagnarsi a manuali che forniscano la stessa libertà del software.
  Ma questa licenza non è limitata alla documentazione del software; può
  essere utilizzata per ogni testo che tratti un qualsiasi argomento e
  al di là dell'avvenuta pubblicazione cartacea. Raccomandiamo
  principalmente questa licenza per opere che abbiano fini didattici o
  per manuali di consultazione.


  1. APPLICABILITÀ E DEFINIZIONI

  Questa licenza si applica a qualsiasi manuale o altra opera che
  contenga una nota messa dal detentore del copyright che dica che si
  può distribuire nei termini di questa licenza. Con "Documento", in
  seguito ci si riferisce a qualsiasi manuale o opera. Ogni fruitore è
  un destinatario della licenza e viene indicato con "voi".

  Una "versione modificata" di un documento è ogni opera contenente il
  documento stesso o parte di esso, sia riprodotto alla lettera che con
  modifiche, oppure traduzioni in un'altra lingua.

  Una "sezione secondaria" è un'appendice cui si fa riferimento o una
  premessa del documento e riguarda esclusivamente il rapporto
  dell'editore o dell'autore del documento con l'argomento generale del
  documento stesso (o argomenti affini) e non contiene nulla che possa
  essere compreso nell'argomento principale. (Per esempio, se il
  documento è in parte un manuale di matematica, una sezione secondaria
  non può contenere spiegazioni di matematica). Il rapporto con
  l'argomento può essere un tema collegato storicamente con il soggetto
  principale o con soggetti affini, o essere costituito da
  argomentazioni legali, commerciali, filosofiche, etiche o politiche
  pertinenti.

  Le "sezioni non modificabili" sono alcune sezioni secondarie i cui
  titoli sono esplicitamente dichiarati essere sezioni non modificabili,
  nella nota che indica che il documento è realizzato sotto questa
  licenza.

  I "testi copertina" sono dei brevi brani di testo che sono elencati
  nella nota che indica che il documento è realizzato sotto questa
  licenza.

  Una copia "trasparente" del documento indica una copia leggibile da un
  calcolatore, codificata in un formato le cui specifiche sono
  disponibili pubblicamente, i cui contenuti possono essere visti e
  modificati direttamente, ora e in futuro, con generici editor di testi
  o (per immagini composte da pixel) con generici editor di immagini o
  (per i disegni) con qualche editor di disegni ampiamente diffuso, e la
  copia deve essere adatta al trattamento per la formattazione o per la
  conversione in una varietà di formati atti alla successiva
  formattazione.  Una copia fatta in un altro formato di file
  trasparente il cui markup è stato progettato per intralciare o
  scoraggiare modifiche future da parte dei lettori non è trasparente.
  Una copia che non è trasparente è "opaca".

  Esempi di formati adatti per copie trasparenti sono l'ASCII puro senza
  markup, il formato di input per Texinfo, il formato di input per
  LaTex, SGML o XML accoppiati ad una DTD pubblica e disponibile, e
  semplice HTML conforme agli standard e progettato per essere
  modificato manualmente. Formati opachi sono PostScript, PDF, formati
  proprietari che possono essere letti e modificati solo con word
  processor proprietari, SGML o XML per cui non è in genere disponibile
  la DTD o gli strumenti per il trattamento, e HTML generato
  automaticamente da qualche word processor per il solo output.

  La "pagina del titolo" di un libro stampato indica la pagina del
  titolo stessa, più qualche pagina seguente per quanto necessario a
  contenere in modo leggibile, il materiale che la licenza prevede che
  compaia nella pagina del titolo.

  Per opere in formati in cui non sia contemplata esplicitamente la
  pagina del titolo, con "pagina del titolo" si intende il testo
  prossimo al titolo dell'opera, precedente l'inizio del corpo del
  testo.

  2. COPIE ALLA LETTERA

  Si può copiare e distribuire il documento con l'ausilio di qualsiasi
  mezzo, per fini di lucro e non, fornendo per tutte le copie questa
  licenza, le note sul copyright e l'avviso che questa licenza si
  applica al documento, e che non si aggiungono altre condizioni al di
  fuori di quelle della licenza stessa.  Non si possono usare misure
  tecniche per impedire o controllare la lettura o la produzione di
  copie successive alle copie che si producono o distribuiscono.  Però
  si possono ricavare compensi per le copie fornite. Se si
  distribuiscono un numero sufficiente di copie si devono seguire anche
  le condizioni della sezione 3.

  Si possono anche prestare copie e con le stesse condizioni sopra
  menzionate possono essere utilizzate in pubblico.

  3. COPIARE IN NOTEVOLI QUANTITÀ

  Se si pubblicano a mezzo stampa più di 100 copie del documento, e la
  nota della licenza indica che esistono uno o più testi copertina, si
  devono includere nelle copie, in modo chiaro e leggibile, tutti i
  testi copertina indicati: il testo della prima di copertina in prima
  di copertina e il testo di quarta di copertina in quarta di copertina.
  Ambedue devono identificare l'editore che pubblica il documento. La
  prima di copertina deve presentare il titolo completo con tutte le
  parole che lo compongono egualmente visibili ed evidenti.  Si può
  aggiungere altro materiale alle copertine. Il copiare con modifiche
  limitate alle sole copertine, purché si preservino il titolo e le
  altre condizioni viste in precedenza, è considerato alla stregua di
  copiare alla lettera.

  Se il testo richiesto per le copertine è troppo voluminoso per essere
  riprodotto in modo leggibile, se ne può mettere una prima parte per
  quanto ragionevolmente può stare in copertina, e continuare nelle
  pagine immediatamente seguenti.


  Se si pubblicano o distribuiscono copie opache del documento in numero
  superiore a 100, si deve anche includere una copia trasparente
  leggibile da un calcolatore per ogni copia o menzionare per ogni copia
  opaca un indirizzo di una rete di calcolatori pubblicamente
  accessibile in cui vi sia una copia trasparente completa del
  documento, spogliato di materiale aggiuntivo, e a cui si possa
  accedere anonimamente e gratuitamente per scaricare il documento
  usando i protocolli standard e pubblici generalmente usati. Se si
  adotta l'ultima opzione, si deve prestare la giusta attenzione, nel
  momento in cui si inizia la distribuzione in quantità elevata di copie
  opache, ad assicurarsi che la copia trasparente rimanga accessibile
  all'indirizzo stabilito fino ad almeno un anno di distanza dall'ultima
  distribuzione (direttamente o attraverso rivenditori) di
  quell'edizione al pubblico.

  È caldamente consigliato, benché non obbligatorio, contattare l'autore
  del documento prima di distribuirne un numero considerevole di copie,
  per metterlo in grado di fornire una versione aggiornata del
  documento.

  4. MODIFICHE

  Si possono copiare e distribuire versioni modificate del documento
  rispettando le condizioni delle precedenti sezioni 2 e 3, purché la
  versione modificata sia realizzata seguendo scrupolosamente questa
  stessa licenza, con la versione modificata che svolga il ruolo del
  "documento", così da estendere la licenza sulla distribuzione e la
  modifica a chiunque ne possieda una copia.  Inoltre nelle versioni
  modificate si deve:

  A. Usare nella pagina del titolo (e nelle copertine se ce ne sono) un
  titolo diverso da quello del documento, e da quelli di versioni
  precedenti (che devono essere elencati nella sezione storia del
  documento ove presenti). Si può usare lo stesso titolo di una versione
  precedente se l'editore di quella versione originale ne ha dato il
  permesso.

  B. Elencare nella pagina del titolo, come autori, una o più persone o
  gruppi responsabili in qualità di autori delle modifiche nella
  versione modificata, insieme ad almeno cinque fra i principali autori
  del documento (tutti gli autori principali se sono meno di cinque).

  C. Dichiarare nella pagina del titolo il nome dell'editore della
  versione modificata in qualità di editore.

  D. Conservare tutte le note sul copyright del documento originale.

  E. Aggiungere un'appropriata licenza per le modifiche di seguito alle
  altre licenze sui copyright.

  F. Includere immediatamente dopo la nota di copyright, un avviso di
  licenza che dia pubblicamente il permesso di usare la versione
  modificata nei termini di questa licenza, nella forma mostrata
  nell'addendum alla fine di questo testo.


  G. Preservare in questo avviso di licenza l'intera lista di sezioni
  non modificabili e testi copertina richieste come previsto dalla
  licenza del documento.


  H. Includere una copia non modificata di questa licenza.

  I. Conservare la sezione intitolata "Storia", e il suo titolo, e
  aggiungere a questa un elemento che riporti al minimo il titolo,
  l'anno, i nuovi autori, e gli editori della versione modificata come
  figurano nella pagina del titolo. Se non ci sono sezioni intitolate
  "Storia" nel documento, createne una che riporti il titolo, gli
  autori, gli editori del documento come figurano nella pagina del
  titolo, quindi aggiungete un elemento che descriva la versione
  modificata come detto in precedenza.

  J. Conservare l'indirizzo in rete riportato nel documento, se c'è, al
  fine del pubblico accesso ad una copia trasparente, e possibilmente
  l'indirizzo in rete per le precedenti versioni su cui ci si è basati.
  Questi possono essere collocati nella sezione "Storia". Si può
  omettere un indirizzo di rete per un'opera pubblicata almeno quattro
  anni prima del documento stesso, o se l'originario editore della
  versione cui ci si riferisce ne dà il permesso.


  K. In ogni sezione di "Ringraziamenti" o "Dediche", si conservino il
  titolo, il senso, il tono della sezione stessa.

  L. Si conservino inalterate le sezioni non modificabili del documento,
  nei propri testi e nei propri titoli. I numeri della sezione o
  equivalenti non sono considerati parte del titolo della sezione.

  M. Si cancelli ogni sezione intitolata "Riconoscimenti". Solo questa
  sezione può non essere inclusa nella versione modificata.

  N. Non si modifichi il titolo di sezioni esistenti come "miglioria" o
  per creare confusione con i titoli di sezioni non modificabili.

  Se la versione modificata comprende nuove sezioni di primaria
  importanza o appendici che ricadono in "sezioni secondarie", e non
  contengono materiale copiato dal documento, si ha facoltà di rendere
  non modificabili quante sezioni si voglia. Per fare ciò si aggiunga il
  loro titolo alla lista delle sezioni immutabili nella nota di
  copyright della versione modificata.  Questi titoli devono essere
  diversi dai titoli di ogni altra sezione.

  Si può aggiungere una sezione intitolata "Riconoscimenti", a patto che
  non contenga altro che le approvazioni alla versione modificata
  prodotte da vari soggetti--per esempio, affermazioni di revisione o
  che il testo è stato approvato da una organizzazione come la
  definizione normativa di uno standard.


  Si può aggiungere un brano fino a cinque parole come Testo Copertina,
  e un brano fino a 25 parole come Testo di Retro Copertina, alla fine
  dell'elenco dei Testi Copertina nella versione modificata. Solamente
  un brano del Testo Copertina e uno del Testo di Retro Copertina
  possono essere aggiunti (anche con adattamenti) da ciascuna persona o
  organizzazione. Se il documento include già un testo copertina per la
  stessa copertina, precedentemente aggiunto o adattato da voi o dalla
  stessa organizzazione nel nome della quale si agisce, non se ne può
  aggiungere un altro, ma si può rimpiazzare il vecchio ottenendo
  l'esplicita autorizzazione dall'editore precedente che aveva aggiunto
  il testo copertina.

  L'autore/i e l'editore/i del "documento" non ottengono da questa
  licenza il permesso di usare i propri nomi per pubblicizzare la
  versione modificata o rivendicare l'approvazione di ogni versione
  modificata.

  5. UNIONE DI DOCUMENTI

  Si può unire il documento con altri realizzati sotto questa licenza,
  seguendo i termini definiti nella precedente sezione 4 per le versioni
  modificate, a patto che si includa l'insieme di tutte le Sezioni
  Invarianti di tutti i documenti originali, senza modifiche, e si
  elenchino tutte come Sezioni Invarianti della sintesi di documenti
  nella licenza della stessa.

  Nella sintesi è necessaria una sola copia di questa licenza, e
  multiple sezioni invarianti possono essere rimpiazzate da una singola
  copia se identiche.  Se ci sono multiple Sezioni Invarianti con lo
  stesso nome ma contenuti differenti, si renda unico il titolo di
  ciascuna sezione aggiungendovi alla fine e fra parentesi, il nome
  dell'autore o editore della sezione, se noti, o altrimenti un numero
  distintivo. Si facciano gli stessi aggiustamenti ai titoli delle
  sezioni nell'elenco delle Sezioni Invarianti nella nota di copiright
  della sintesi.

  Nella sintesi si devono unire le varie sezioni intitolate "storia" nei
  vari documenti originali di partenza per formare una unica sezione
  intitolata "storia"; allo stesso modo si unisca ogni sezione
  intitolata "Ringraziamenti", e ogni sezione intitolata "Dediche". Si
  devono eliminare tutte le sezioni intitolate "Riconoscimenti".

  6. RACCOLTE DI DOCUMENTI

  Si può produrre una raccolta che consista del documento e di altri
  realizzati sotto questa licenza; e rimpiazzare le singole copie di
  questa licenza nei vari documenti con una sola inclusa nella raccolta,
  solamente se si seguono le regole fissate da questa licenza per le
  copie alla lettera come se si applicassero a ciascun documento.

  Si può estrarre un singolo documento da una raccolta e distribuirlo
  individualmente sotto questa licenza, solo se si inserisce una copia
  di questa licenza nel documento estratto e se si seguono tutte le
  altre regole fissate da questa licenza per le copie alla lettera del
  documento.

  7. RACCOGLIERE INSIEME A LAVORI INDIPENDENTI

  Una raccolta del documento o sue derivazioni con altri documenti o
  lavori separati o indipendenti, all'interno di o a formare un archivio
  o un supporto per la distribuzione, non è una "versione modificata"
  del documento nella sua interezza, se non ci sono copiright per
  l'intera raccolta. Ciascuna raccolta si chiama allora "aggregato" e
  questa licenza non si applica agli altri lavori contenuti in essa che
  ne sono parte, per il solo fatto di essere raccolti insieme, qualora
  non siano però loro stessi lavori derivati dal documento.

  Se le esigenze del Testo Copertina della sezione 3 sono applicabili a
  queste copie del documento allora, se il documento è inferiore ad un
  quarto dell'intero aggregato i Testi Copertina del documento possono
  essere piazzati in copertine che delimitano solo il documento
  all'interno dell'aggregato. Altrimenti devono apparire nella copertina
  dell'intero aggregato.

  8. TRADUZIONI

  La traduzione è considerata un tipo di modifica, e di conseguenza si
  possono distribuire traduzioni del documento seguendo i termini della
  sezione 4. Rimpiazzare sezioni non modificabili con traduzioni
  richiede un particolare permesso da parte dei detentori del diritto
  d'autore, ma si possono includere traduzioni di una o più sezioni non
  modificabili in aggiunta alle versioni originali di queste sezioni
  immutabili. Si può fornire una traduzione della presente licenza a
  patto che si includa anche l'originale versione inglese di questa
  licenza.  In caso di discordanza fra la traduzione e l'originale
  inglese di questa licenza la versione originale inglese prevale
  sempre.

  9. TERMINI

  Non si può applicare un'altra licenza al documento, copiarlo,
  modificarlo, o distribuirlo al di fuori dei termini espressamente
  previsti da questa licenza.  Ogni altro tentativo di applicare
  un'altra licenza al documento, copiarlo, modificarlo, o distribuirlo è
  deprecato e pone fine automaticamente ai diritti previsti da questa
  licenza. Comunque, per quanti abbiano ricevuto copie o abbiano diritti
  coperti da questa licenza, essi non ne cessano se si rimane
  perfettamente coerenti con quanto previsto dalla stessa.
  10. REVISIONI FUTURE DI QUESTA LICENZA

  La Free Software Foundation può pubblicare nuove, rivedute versioni
  della Gnu Free Documentation License volta per volta. Qualche nuova
  versione potrebbe essere simile nello spirito alla versione attuale ma
  differire in dettagli per affrontare nuovi problemi e concetti. Si
  veda http://www.gnu.org/copyleft.


  Ad ogni versione della licenza viene dato un numero che distingue la
  versione stessa. Se il documento specifica che si riferisce ad una
  versione particolare della licenza contraddistinta dal numero o "ogni
  versione successiva", si ha la possibilità di seguire termini e
  condizioni sia della versione specificata che di ogni versione
  successiva pubblicata (non come bozza) dalla Free Software Foundation.
  Se il documento non specifica un numero di versione particolare di
  questa licenza, si può scegliere ogni versione pubblicata (non come
  bozza) dalla Free Software Foundation.

  Traduzione in italiano a cura di Andrea Ferro, Leandro Noferini e
  Franco Vite.