Quick&Easy Configuration HOWTO Antonio Fragola - 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: 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 \ 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 ^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 [] [] ______________________________________________________________________ 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: ). # # 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 . " ; 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 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 previous-entry bind index next-entry bind pager previous-line bind pager next-line bind pager previous-entry bind pager 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, sta per il tasto indicato 3. I comandi sono case-sensitive, maiuscole e minuscole sono diverse. Movimenti: (NELL'INDICE) spostati alla voce precedente (NELL'INDICE) spostati alla voce successiva (DURANTE LA LETTURA MESSAGGI) spostati alla voce precedente (DURANTE LA LETTURA MESSAGGI) spostati alla voce successiva (DURANTE LA LETTURA MESSAGGI) spostati al messaggio precedente (DURANTE LA LETTURA MESSAGGI) spostati al messaggio successivo spostati alla pagina precedente spostati alla pagina successiva salta al successivo messaggio nuovo 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 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: b cerca all'interno dei Body dei messaggi b (ELIMINANDO ~b ) cerca nei subject dei messaggi / cerca una espressione regolare / cerca all'indietro una espressione regolare n cerca la prossima corrispondenza Messaggi: visualizza un messaggio 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 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 permette di accedere all'elenco degli alias durante la composizione quando viene richiesto di inserire il destinatario, il cc o il bcc Varie: mostra la documentazione di Mutt ? aiuto sui tasti 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 "1" o con "1p". 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 "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, 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 P invia o modifica un articolo posposto seleziona il newsgroup corrente seleziona il newsgroup corrente s sottoscrivi il newsgroup corrente 1 s sottoscrivi i newsgroup che corrispondono al pattern... u annulla la sottoscrizione al newsgroup 1 u annulla la sottoscrizione ai newsgroup corrispondondenti al pattern... c segna tutti gli articoli come letti (catchup) u segna tutti gli articoli come non letti Movimenti: < spostati in cima all'elenco > spostati in coda all'elenco spostati alla pagina precedente spostati alla pagina successiva spostati al gruppo precedente 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 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 a (dis)attiva la visualizzazione della descrizione del newsgroup . ripeti l'ultima sequenza di tasti Comandi attivi sugli articoli: Movimenti: seleziona l'articolo o scorri di una pagina scorri l'articolo indietro di una pagina b scorri l'articolo indietro di una pagina scorri l'articolo indietro di una riga scorri l'articolo avanti di una riga sposta la visualizzazione articolo a sinistra sposta la visualizzazione articolo a destra Articoli: P componi un nuovo articolo (NON un follow-up) f componi un follow-up all'articolo corrente 1 f componi un follow-up all'articolo corrente inserendo tutti gli header 2 f componi un follow-up all'articolo corrente non quotando l'originale 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 salta il testo quotato ^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: < spostati in cima all'elenco degli header > 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 spostati all'articolo precedente spostati all'articolo successivo , torna al precedente articolo segnato Gestione: d segna un articolo come letto e spostati al successivo non letto 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) u segna tutti gli articoli come non letti C segna tutti gli articoli fino alla posizione corrente come letti U segna tutti gli articoli fino alla posizione corrente come non letti Varie: t (dis)attiva il raggruppamento del thread a modifica il formato di visualizzazione degli header s seleziona il tipo di ordinamento p cerca l'header genitore, scaricandolo dal server se necessario 1p ricostruisci il thread, scaricandolo dal server se necessario ^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 1 K modifica il file dei punteggi (score) * segna l'articolo affinchè non sia affetto dai comandi di catchup 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.