{\rtf1\ansi\deff0 {\fonttbl{\f2\fnil\fcharset0 Courier New;} {\f1\fnil\fcharset0 Arial;} {\f0\fnil\fcharset0 Times New Roman;} } {\colortbl;}{\stylesheet{\s1 Heading 1;}{\s2 Heading 2;}{\s3 Heading 3;}{\s4 Heading 4;}{\s5 Heading 5;}{\s6 Heading 6;}{\s7 Heading 7;}{\s8 Heading 8;}{\s9 Heading 9;}} \deflang1024\notabind\facingp\hyphauto1\widowctrl \sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}\pard\sl20 {\*\bkmkstart ID_INDEX}{\*\bkmkend ID_INDEX}\fs20 \hyphpar0\par\pard\sb373\sl647\qc \b\i\fs49\f1 Quick&Easy Configuration HOWTO\keepn\hyphpar0\par\pard\sl260 \b0\i0\fs20\f0 \~\hyphpar0\par\pard\sb1991\sl449\qc \b\fs34\f1 Antonio Fragola\hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}\pard\sl20 \fs20 \keepn\hyphpar0\par\pard\sl-240 \b\i\f1 Quick&Easy Configuration HOWTO\hyphpar0\par\pard\sl260 \b0\i0\f0 \~Antonio Fragola\hyphpar0\par\pard\sb260\sl260 Copyright\~\'a9\~2000 - 2001 Antonio Fragola\hyphpar0\par\pard\sb200\sl260 \lang1040 Configurazione rapida e facile di una \i LinuxBox\i0 domestica. \par\pard\sb259\sl260 \lang1024 Diario delle revisioni\sa90\par\trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.7\~-\cell \plain \pard\intbl\sl260 \fs20 27 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 ampliamento della sezione \i Mutt\i0 (GPG e Hooks), e mini-sezione su \i grepmail\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.6\~-\cell \plain \pard\intbl\sl260 \fs20 20 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 ampliamento della sezione \i Procmail\i0 (antispam e trucchetti)\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.5\~-\cell \plain \pard\intbl\sl260 \fs20 5 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 nuova sezione \i Xinetd\i0 , modifiche sezioni \i Bash\i0 e \i Slrn\i0 (0.9.7.1)\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.4\~-\cell \plain \pard\intbl\sl260 \fs20 4 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 nuova sezione sul \i Chroot\i0 del \i DNS\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.3\~-\cell \plain \pard\intbl\sl260 \fs20 3 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 nuova sezione sui \i Wheelmouse\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.2\~-\cell \plain \pard\intbl\sl260 \fs20 2 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \i\fs20 Firewall\i0 completamente modulare e modifiche \i Leafnode\i0 (filterfile e xinetd)\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.1\~-\cell \plain \pard\intbl\sl260 \fs20 1 Agosto 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 piccole modifiche sezioni \i Partizioni\i0 e \i Masterizzazione\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 2.0\~-\cell \plain \pard\intbl\sl260 \fs20 1 Febbraio 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 modularizzazione della sezione \i Firewall\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.9\~-\cell \plain \pard\intbl\sl260 \fs20 29 Gennaio 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunta la nuova sezione \i Masterizzazione\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.8\~-\cell \plain \pard\intbl\sl260 \fs20 11 Gennaio 2001\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 revisione della sezione \i Dns\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.7\~-\cell \plain \pard\intbl\sl260 \fs20 23 Novembre 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunta la nuova sezione \i Servizi\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.6\~-\cell \plain \pard\intbl\sl260 \fs20 31 Ottobre 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 passaggio dal DTD \i Linuxdoc\i0 a \i Docbook\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.5\~-\cell \plain \pard\intbl\sl260 \fs20 1 Ottobre 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 ampliata le sezioni \i Postfix\i0 e \i Leafnode\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.4\~-\cell \plain \pard\intbl\sl260 \fs20 14 Luglio 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 corretti alcuni errori e aggiunta l'introduzione a \i Slrn\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.3\~-\cell \plain \pard\intbl\sl260 \fs20 7 Luglio 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunte le sottosezioni filesystem (\i Partizioni\i0 ) e l'introduzione del \i Firewall\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.2\~-\cell \plain \pard\intbl\sl260 \fs20 1 Luglio 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 primo rilascio ufficiale su \i Sourceforge\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.1\~-\cell \plain \pard\intbl\sl260 \fs20 23 Giugno 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunta la breve sezione \i Varie\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 1.0\~-\cell \plain \pard\intbl\sl260 \fs20 7 Giugno 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 completata la sezione di \i Procmail\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 0.9\~-\cell \plain \pard\intbl\sl260 \fs20 23 Maggio 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 completato lo script di \i Firewall\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 0.8\~-\cell \plain \pard\intbl\sl260 \fs20 5 Maggio 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 inserimento della sezione \i Partizioni\i0 , estratta da un lavoro precedente\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 0.7\~-\cell \plain \pard\intbl\sl260 \fs20 30 Aprile 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunta la sezione \i Kernel\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 0.6\~-\cell \plain \pard\intbl\sl260 \fs20 21 Aprile 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 aggiunte le sezioni \i Mutt\i0 e \i Slrn\sa100\cell \row \trowd\trql \clvertalt\cellx3120\clvertalt\cellx6240\clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 Revisione 0.5\~-\cell \plain \pard\intbl\sl260 \fs20 17 Marzo 2000\cell \plain \intbl\cell \row \trowd\trql \clvertalt\cellx9360 \plain \pard\intbl\sl260 \fs20 inizio stesura (bel modo di passare il giorno del proprio compleanno... ;-) )\cell \row \pard\plain\sl-1\hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgnlcrm\pgnrestart{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 \b\fs41\f1 Sommario\keepn\hyphpar0\par\pard\sb207\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PREFAZIONE}{\fldrslt \fs20\f0 Prefazione}}\fs20\f0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PREFAZIONE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PREFAZIONE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INFOBASE}{\fldrslt \b0 1. Informazioni base}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INFOBASE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INFOBASE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_ALTREINFO}{\fldrslt 2. Altre informazioni}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_ALTREINFO}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_ALTREINFO}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PARTIZIONI}{\fldrslt \b 1. Partizioni}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PARTIZIONI}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PARTIZIONI}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEPARTIZIONI}{\fldrslt \b0 1.1. Introduzione}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEPARTIZIONI}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTRODUZIONEPARTIZIONI}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_NOZIONIGENERALI}{\fldrslt 1.2. Nozioni Generali}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_NOZIONIGENERALI}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_NOZIONIGENERALI}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FILESYSTEM}{\fldrslt 1.3. Filesystem}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FILESYSTEM}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FILESYSTEM}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PREREQUISITIGENERALI}{\fldrslt 1.4. Prerequisiti generali}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PREREQUISITIGENERALI}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PREREQUISITIGENERALI}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FIPS}{\fldrslt 1.5. FIPS}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FIPS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FIPS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FSRESIZE}{\fldrslt 1.6. FSRESIZE}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FSRESIZE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FSRESIZE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LOADLIN}{\fldrslt \b 2. Loadlin}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LOADLIN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LOADLIN}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_KERNEL}{\fldrslt 3. Kernel}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_KERNEL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_KERNEL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PREREQUISITIKERNEL}{\fldrslt \b0 3.1. Prerequisiti}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PREREQUISITIKERNEL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PREREQUISITIKERNEL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PARAMETRIKERNEL}{\fldrslt 3.2. Parametri}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PARAMETRIKERNEL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PARAMETRIKERNEL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_COMPILAZIONEINSTALLAZIONE}{\fldrslt 3.3. Compilazione e installazione}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_COMPILAZIONEINSTALLAZIONE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_COMPILAZIONEINSTALLAZIONE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTERNET}{\fldrslt \b 4. Internet}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTERNET}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTERNET}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_POSTFIX}{\fldrslt 5. Postfix}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_POSTFIX}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_POSTFIX}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEPOSTFIX}{\fldrslt \b0 5.1. Configurazione di Postfix}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEPOSTFIX}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEPOSTFIX}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_DISATTIVAZIONESENDMAIL}{\fldrslt 5.2. Disattivazione e disinstallazione di Sendmail}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_DISATTIVAZIONESENDMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_DISATTIVAZIONESENDMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FETCHMAIL}{\fldrslt \b 6. Fetchmail}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FETCHMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FETCHMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PROCMAIL}{\fldrslt 7. Procmail}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PROCMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PROCMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEPROCMAIL}{\fldrslt \b0 7.1. Introduzione}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEPROCMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTRODUZIONEPROCMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEPROCMAIL}{\fldrslt 7.2. File di configurazione}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEPROCMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEPROCMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_REGOLEPROCMAIL}{\fldrslt 7.3. File di regole (esempi)}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_REGOLEPROCMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_REGOLEPROCMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_ADVANCEDPROCMAIL}{\fldrslt 7.4. Usi avanzati e trucchetti}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_ADVANCEDPROCMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_ADVANCEDPROCMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PROCMAILANTISPAM}{\fldrslt 7.5. Combattere lo SPAM}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PROCMAILANTISPAM}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PROCMAILANTISPAM}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_SINTASSIREGEXP}{\fldrslt 7.6. Sintassi delle espressioni regolari}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_SINTASSIREGEXP}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_SINTASSIREGEXP}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODE}{\fldrslt \b 8. Leafnode}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LEAFNODE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONELEAFNODE}{\fldrslt \b0 8.1. Configurazione}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONELEAFNODE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONELEAFNODE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_SCOREFILE}{\fldrslt 8.2. Scorefile}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_SCOREFILE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_SCOREFILE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODEPLUS}{\fldrslt 8.3. Leafnode+}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODEPLUS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LEAFNODEPLUS}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FIREWALL}{\fldrslt \b 9. Firewall}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FIREWALL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FIREWALL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_DNS}{\fldrslt 10. DNS}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_DNS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_DNS}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEBIND}{\fldrslt \b0 10.1. Configurazione di Bind}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEBIND}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEBIND}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CHROOTINGBIND}{\fldrslt 10.2. Chrooting Bind}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CHROOTINGBIND}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CHROOTINGBIND}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_WWWOFFLE}{\fldrslt \b 11. Wwwoffle}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_WWWOFFLE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_WWWOFFLE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_JUNKBUSTER}{\fldrslt 12. Junkbuster}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_JUNKBUSTER}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_JUNKBUSTER}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_XINETD}{\fldrslt 13. Xinetd}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_XINETD}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_XINETD}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INFORMAZIONIBASEXINETD}{\fldrslt \b0 13.1. Informazioni di base}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INFORMAZIONIBASEXINETD}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INFORMAZIONIBASEXINETD}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEBASEXINETD}{\fldrslt 13.2. Configurazione di base}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEBASEXINETD}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEBASEXINETD}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEAVANZATAXINETD}{\fldrslt 13.3. Configurazione avanzata}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEAVANZATAXINETD}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEAVANZATAXINETD}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MUTT}{\fldrslt \b 14. Mutt}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MUTT}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MUTT}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEMUTT}{\fldrslt \b0 14.1. File di configurazione .muttrc}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONEMUTT}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONEMUTT}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MUTTHOOKS}{\fldrslt 14.2. Mutt e gli Hooks}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MUTTHOOKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MUTTHOOKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_TASTIMUTT}{\fldrslt 14.3. Tasti principali}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_TASTIMUTT}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_TASTIMUTT}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_GREPMAIL}{\fldrslt 14.4. Grepmail e Mutt}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_GREPMAIL}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_GREPMAIL}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_SLRN}{\fldrslt \b 15. Slrn}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_SLRN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_SLRN}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONESLRN}{\fldrslt \b0 15.1. Introduzione}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONESLRN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTRODUZIONESLRN}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONESLRN}{\fldrslt 15.2. File di configurazione .slrnrc}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_CONFIGURAZIONESLRN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_CONFIGURAZIONESLRN}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_TASTISLRN}{\fldrslt 15.3. Tasti principali}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_TASTISLRN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_TASTISLRN}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MACROSLRN}{\fldrslt 15.4. Varie macro per SLRN}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MACROSLRN}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MACROSLRN}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZAZIONE}{\fldrslt \b 16. Masterizzazione}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZAZIONE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MASTERIZZAZIONE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEMASTERIZZAZIONE}{\fldrslt \b0 16.1. Introduzione}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTRODUZIONEMASTERIZZAZIONE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTRODUZIONEMASTERIZZAZIONE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_KERNELMASTER}{\fldrslt 16.2. Compilazione del kernel per il riconoscimento del masterizzatore}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_KERNELMASTER}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_KERNELMASTER}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZARECDR}{\fldrslt 16.3. Procedura di masterizzazione CDR}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZARECDR}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MASTERIZZARECDR}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZARECDRW}{\fldrslt 16.4. Procedura di masterizzazione CDRW}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MASTERIZZARECDRW}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MASTERIZZARECDRW}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_ONTHEFLY}{\fldrslt 16.5. Procedura di masterizzazione On The Fly}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_ONTHEFLY}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_ONTHEFLY}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_SERVIZI}{\fldrslt \b 17. Servizi}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_SERVIZI}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_SERVIZI}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_WHEELMOUSE}{\fldrslt 18. Wheel Mouse}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_WHEELMOUSE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_WHEELMOUSE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_VARIE}{\fldrslt 19. Varie}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_VARIE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_VARIE}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_TRUETYPE}{\fldrslt \b0 19.1. TrueType}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_TRUETYPE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_TRUETYPE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_BASH}{\fldrslt 19.2. Bash}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_BASH}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_BASH}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LINKS}{\fldrslt \b 20. Links}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_DOCSVARILINKS}{\fldrslt \b0 20.1. Documenti vari}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_DOCSVARILINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_DOCSVARILINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PARTIZIONILINKS}{\fldrslt 20.2. Partizioni}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PARTIZIONILINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PARTIZIONILINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LOADLINLINKS}{\fldrslt 20.3. Loadlin}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LOADLINLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LOADLINLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_KERNELLINKS}{\fldrslt 20.4. Kernel}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_KERNELLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_KERNELLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_INTERNETLINKS}{\fldrslt 20.5. Internet}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_INTERNETLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_INTERNETLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_POSTFIXLINKS}{\fldrslt 20.6. Postfix}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_POSTFIXLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_POSTFIXLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FETCHMAILLINKS}{\fldrslt 20.7. Fetchmail}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FETCHMAILLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FETCHMAILLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_PROCMAILLINKS}{\fldrslt 20.8. Procmail}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_PROCMAILLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_PROCMAILLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODELINKS}{\fldrslt 20.9. Leafnode}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LEAFNODELINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LEAFNODELINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FIREWALLLINKS}{\fldrslt 20.10. Firewall}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FIREWALLLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FIREWALLLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_DNSLINKS}{\fldrslt 20.11. DNS}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_DNSLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_DNSLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_WWWOFFLELINKS}{\fldrslt 20.12. Wwwoffle}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_WWWOFFLELINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_WWWOFFLELINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_JUNKBUSTERLINKS}{\fldrslt 20.13. Junkbuster}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_JUNKBUSTERLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_JUNKBUSTERLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_MUTTLINKS}{\fldrslt 20.14. Mutt}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_MUTTLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_MUTTLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_SLRNLINKS}{\fldrslt 20.15. Slrn}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_SLRNLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_SLRNLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_WHEELLINKS}{\fldrslt 20.16. Wheel Mouse}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_WHEELLINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_WHEELLINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_VARIELINKS}{\fldrslt 20.17. Varie}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_VARIELINKS}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_VARIELINKS}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_LICENZA}{\fldrslt \b A. GNU Free Documentation License}}\b \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_LICENZA}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_LICENZA}{\fldrslt 000}}}}\hyphpar0\par\pard\sb48\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FDLINGLESE}{\fldrslt \b0 A.1. Versione originale in Inglese}}\b0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FDLINGLESE}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FDLINGLESE}{\fldrslt 000}}}}\hyphpar0\par\pard\li960\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l ID_FDLITALIANO}{\fldrslt A.2. Versione tradotta in Italiano}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l ID_FDLITALIANO}{\fldrslt {\field\flddirty{\*\fldinst PAGEREF ID_FDLITALIANO}{\fldrslt 000}}}}\hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgnlcrm{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 \b\fs41\f1 Lista delle Tabelle\keepn\hyphpar0\par\pard\sb207\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l _319 }{\fldrslt \b0\fs20\f0 1-1. Elenco dei tipi di file (in base al primo carattere)}}\b0\fs20\f0 \tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l _319 }{\fldrslt {\field\flddirty{\*\fldinst PAGEREF _319}{\fldrslt 000}}}}\hyphpar0\par\pard\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l _2653 }{\fldrslt 13-1. Attributi}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l _2653 }{\fldrslt {\field\flddirty{\*\fldinst PAGEREF _2653}{\fldrslt 000}}}}\hyphpar0\par\pard\li480\sl260\fi-480 {\field{\*\fldinst HYPERLINK \\l _2792 }{\fldrslt 13-2. Argomenti obbligatori}}\tqr\tldot\tx9360\tab {\field{\*\fldinst HYPERLINK \\l _2792 }{\fldrslt {\field\flddirty{\*\fldinst PAGEREF _2792}{\fldrslt 000}}}}\hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgnlcrm\pgnrestart\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Prefazione}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Prefazione}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_PREFAZIONE}{\*\bkmkend ID_PREFAZIONE}\b\fs41\f1 Prefazione\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INFOBASE}{\*\bkmkend ID_INFOBASE}\fs34 1. Informazioni base\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_COPYRIGHT}{\*\bkmkend ID_COPYRIGHT}\fs28 1.1. Copyright\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 \i English\i0 - Permission is granted to copy, distribute and/or modify this document under the terms of the \i GNU Free Documentation License\i0 , Version 1.1 or any later version published by the \i Free Software Foundation\i0 ; 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 \i GNU Free Documentation License\i0 . \par\pard\sb100\sl260 \i Italiano\i0 - \'c8 garantito il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della \i GNU Free Documentation License\i0 , 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 \'e8 acclusa nella sezione intitolata \i GNU Free Documentation License\i0 . \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_LIBERATORIA}{\*\bkmkend ID_LIBERATORIA}\b\fs28\lang1024\f1 1.2. Liberatoria\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Il \i Quick&Easy Configuration HOWTO\i0 \'e8 una documentazione gratuita, fornita cos\'ec com'\'e8, senza alcuna garanzia, n\'e9 implicita, n\'e9 esplicita di adeguatezza ad un uso particolare o di commerciabilit\'e0. Non mi assumo alcuna responsabilit\'e0 per eventuali danni provocati da quanto segue: leggete, confrontate, scopiazzate, ma \i nun me citate\i0 in tribunale, che vi do una lisciata alla coda con lo schioppo caricato a sale grosso! ;-) \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_INFORMAZIONI}{\*\bkmkend ID_INFORMAZIONI}\b\fs28\lang1024\f1 1.3. Informazioni\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Salve a tutti i pinguini! Chi l'avrebbe detto che anch'io avrei fatto un Howto? Io per primo no, e invece... ;-) Il \i Quick&Easy Configuration HOWTO\i0 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\'e0 spiegato come configurare posta elettronica, dns, firewall, newsgroup, true-type fonts, fax, proxy+spamkiller, connessione internet, una rete base e quant'altro mi verr\'e0 in mente di aggiungere man mano. Il tutto sar\'e0 improntato alla massima praticit\'e0, quindi niente configurazioni meticolose e approfondite, verr\'e0 fornito quanto basta per essere attivi e produttivi SUBITO, mentre per le cose pi\'f9 avanzate si rimander\'e0 a pagine man, siti e documenti vari. Il tutto \'e8 corredato da una serie di script funzionanti (salvo piccole modifiche), ampiamente commentati, che potranno anche essere \i taglincollati\i0 direttamente nel vostro sistema per avere una base immediata di applicazione. \par\pard\sb100\sl260 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 \b .fetchmailrc\b0 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 \i Mandrake\i0 7.0, quindi si adattano anche a Redhat. Dal 2001 su PINGU sono passato a \i Debian\i0 , e quindi ora molte cose sono anche specificate per questa distribuzione. Invece sul portatile ora uso \i Mandrake\i0 8.0. Un ultimo avvertimento, prima di interpellarmi eventualmente per email: \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\f1 Attenzione\keepn\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18 NON fate taglia e incolla dai documenti, perch\'e9 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. In particolare, se mi scrivete perch\'e9 trovate dei file con le righe che terminano con ^M, v'accoppo! Idem se il vostro Netschiappa vi fa vedere caratteri strani invece di scaricare i file: usate un download manager con le palle, ed evitate di scaricare da win i file testuali, \'e8 isso che introduce i ^M! \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_ALTREINFO}{\*\bkmkend ID_ALTREINFO}\b\fs34\lang1024\f1 2. Altre informazioni\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_REPERIBILITA}{\*\bkmkend ID_REPERIBILITA}\fs28 2.1. Reperibilit\'e0\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Il \i Quick&Easy Configuration HOWTO\i0 , in formato SGML, TXT, HTML mono e multipagina, PS e PDF singola e doppia pagina in A4, RTF, TEX, e gli script in esso riportati, possono essere scaricati da: http://mrshark.sourceforge.net, o dal mirror su http://mrshark.cjb.net, o ancora da http://www.mrshark.it. \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_DAFARE}{\*\bkmkend ID_DAFARE}\b\fs28\lang1024\f1 2.2. Da fare\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Nelle prossime versioni e revisioni del \i Quick&Easy Configuration HOWTO\i0 saranno incluse le seguenti nuove configurazioni: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 Aggiungere l'uso di cdrdao e cdda2wav/cdparanoia alla sezione Masterizzazione \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Configurazione di una piccola rete Lan \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Gestione Fax \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Configurazione dei font TrueType anche con Xfstt e con Staroffice \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Sicurezza di base \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Altro (boh...) \hyphpar0\par\pard\sb100\sl260 \lang1040 pi\'f9 alcune revisioni e aggiunte a sezioni gi\'e0 presenti. \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_COMMENTI}{\*\bkmkend ID_COMMENTI}\b\fs28\lang1024\f1 2.3. Commenti\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Fatemi sapere se qualcosa non va o se avete altri suggerimenti. Mandate un'email a: mrshark@libero.it (mailto:mrshark@libero.it). \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_RINGRAZIAMENTI}{\*\bkmkend ID_RINGRAZIAMENTI}\b\fs28\lang1024\f1 2.4. Ringraziamenti\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Molto di quello che so, e che c'\'e8 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. Ringraziamenti per contributi vari, sono sparsi nelle varie sezioni. Ringrazio anche tutti quelli che mi hanno scritto per lodare questo lavoro o per segnalare errori, spingendomi a migliorarlo e a continuare a svilupparlo. Ciauz ;-) \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CSLUG}{\*\bkmkend ID_CSLUG}\b\fs28\lang1024\f1 2.5. CS-LUG\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 A dicembre 2000 \'e8 nato il \b CS-LUG\b0 (\i Cosenza Linux User Group\i0 ), di cui sono membro, insieme al flagello degli spammer usenet, l'asciatore Thorin (mailto:oakenshield@freemail.it) (\i Pierluigi De Rosa\i0 ), e altri (promemoria: inserire i nomi degli altri membri). Se siete pinguini della zona (o volete diventarlo), potete iscrivervi alla mailing-list cslug@lists.linux.it (mailto:cslug-request@lists.linux.it?subject=subscribe), oppure frequentare il canale IRC \b #cslug\b0 , sui server della rete \i irc.openprojects.net\i0 (NON su ircnet!). Per altre informazioni, fate riferimento al sito: http://cslug.linux.it. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\pgnrestart\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 1. Partizioni}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 1. Partizioni}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_PARTIZIONI}{\*\bkmkend ID_PARTIZIONI}\b\fs41\f1 Capitolo 1. Partizioni\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INTRODUZIONEPARTIZIONI}{\*\bkmkend ID_INTRODUZIONEPARTIZIONI}\fs34 1.1. Introduzione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Oggi gli hard-disk sono sempre pi\'f9 grandi. Partizionare un hard-disk, ossia suddividerlo in pi\'f9 parti, consente in genere di renderne pi\'f9 pratica ed efficiente la gestione, e permette di avere pi\'f9 sistemi operativi installati sullo stesso pc. In questa parte viene spiegato perch\'e9 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. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 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 \'e8 stato abbandonato, e ora una versione ridotta al solo uso di \b Fips\b0 e \b Fsresize\b0 fa parte del \i Quick&Easy Configuration HOWTO\i0 .\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_NOZIONIGENERALI}{\*\bkmkend ID_NOZIONIGENERALI}\b\fs34 1.2. Nozioni Generali\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_COSASONO}{\*\bkmkend ID_COSASONO}\fs28 1.2.1. Cosa sono le partizioni\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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\'f9 hard-disk, tramite i sistemi \i RAID\i0 , 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 \'e8 possibile avere pi\'f9 di 4 partizioni primarie. Questo limite impone di usare le partizioni estese per suddividere ulteriormente l'hard-disk. Pu\'f2 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\'f2 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 \'e8 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. \par\pard\sb100\sl260 Linux e tutti gli Unix in generale usano invece un metodo pi\'f9 avanzato per indicare le partizioni, tramite 4 caratteri: i primi due indicano il tipo di unit\'e0 (hd: ide/eide, sd: scsi, fd: floppy), il 3\'b0 indica il canale cui \'e8 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 \'e8 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\'e0, ma non vi cambia l'assegnazione per i drive rimasti. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Questo schema cambier\'e0 con i kernel della serie 2.4, appena ne so di pi\'f9 aggiorner\'f2 questa sezione.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'MBR contiene un puntatore ad una delle partizioni primarie, detta avviabile. Il firmware del \i BIOS\i0 del pc, dopo il \i POST\i0 (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\'b0 cilindro, e ci\'f2 pu\'f2 creare problemi a Linux, in particolare a \i LILO\i0 , 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, come anche se usate GRUB). 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\'b0 cilindro si pu\'f2 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\'f9 piccola (di solito compresa tra i 16 e i 32 Mbyte), pi\'f9 prossima all'inizio dell'hard-disk, da usare per effettuare il mount della directory \b /boot\b0 , che contiene il kernel e i moduli. Dopo che il kernel ha preso il controllo del pc, il 1024\'b0 cilindro non rappresenta pi\'f9 un problema. In genere, se si crea un'unica partizione di grosse dimensioni, pi\'f9 grande di 1024 cilindri, NON \'e8 detto che \b /boot\b0 sia all'inizio, quindi conviene comunque creargli una partizione apposta. In Linux non esistono lettere di unit\'e0, come abbiamo detto, ed esiste un unico filesystem, in cui sono presenti anche le altre periferiche hardware del sistema, in genere sotto \b /dev\b0 . Se vogliamo accedere a un'altra unit\'e0 (cd, hard-disk, file-system condiviso via NFS), dobbiamo effettuarne l'\i innesto\i0 (mount), in un punto del file-system principale (mount point). Questo permette anche di suddividere il file-system principale in pi\'f9 parti (e partizioni), che verranno montate durante la procedura di avvio o secondo necessit\'e0. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 dalla versione 0.21.4.2 Lilo non avr\'e0 pi\'f9 il problema del 1024\'b0 cilindro, grazie ad un'apposita patch.\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PERCHEPARTIZIONARE}{\*\bkmkend ID_PERCHEPARTIZIONARE}\b\fs28 1.2.2. Perch\'e9 (ri)partizionare: partizioni e buonsenso\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Tre sono i motivi principali per cui \'e8 bene partizionare un hard-disk: \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 1.\tab \i Organizzazione\i0 : 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\'e8 stante facilit\'e0 le operazioni di backup e rende pi\'f9 facile la (re)installazione di un sistema operativo; \'e8 possibile condividere in rete una partizione contenente dati, senza dare accesso anche al sistema. \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 2.\tab \i Ottimizzazione\i0 : si recupera fino al 30/40% di spazio grazie a cluster di dimensioni minori; si pu\'f2 mettere il file di swap di Windows in una partizione dedicata, riducendo la frammentazione (Linux usa addirittura una partizione di swap, pi\'f9 efficiente del semplice file, che comunque \'e8 possibile usare); se i dati sono separati, la deframmentazione delle applicazioni \'e8 pi\'f9 rapida; si pu\'f2 mantenere una partizione FAT16 per i dati, compatibile con molti sistemi operativi (OS/2, Linux, Windows NT). \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 3.\tab \i Sicurezza\i0 : si separano i dati da applicazioni e sistema operativo; una singola partizione pu\'f2 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\'f2 testare software instabile con tranquillit\'e0; si pu\'f2 mantenere il vecchio sistema operativo fino a quando non ci si sente a proprio agio in quello nuovo (questo \'e8 l'uso preferito dai pinguini ;-) ); \'e8 possibile mantenere copia dei file di sistema importanti o di un immagine dell'hard-disk per un rapido ripristino. \hyphpar0\par\pard\sb100\sl260 \lang1040 Quando si vuole installare Linux, nasce la necessit\'e0 di creargli spazio: i \i credenti\i0 piallano senza ritegno le eventuali partizioni esistenti di altri SO, mentre i nuovi \i adepti\i0 di solito fannno convivere Linux con Windows finch\'e8 non se ne ha pi\'f9 bisogno. Se la quantit\'e0 di dati presenti nella partizione Windows non \'e8 elevata (diciamo che con un gigabyte libero si pu\'f2 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\'f9 di quello che si ha col semplice DOS, ad esempio server web, DB, email, news e altro), si pu\'f2 cercare di ridurre lo spazio occupato, liberandolo alla fine dell'hard-disk, per poi usare lo spazio vuoto per le partizioni \i EXT2\i0 (Linux native, type 0x83), e in genere 64 Mbyte per la partizione di \i swap\i0 (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 \'e8 il seguente: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 16 Mb per la partizione \b /boot\b0 , tenendosi mooolto larghi (anche 5 vanno bene, ma le potenze di 2 fanno pi\'f9 fico ;-) ). Deve essere possibilmente la prima ad essere creata, in modo che sia al di sotto del 1024\'b0 cilindro, per evitare problemi con Lilo (per altre informazioni, guardate la sezione di Loadlin). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Tra i 50 e i 100 Mb per la partizione root ("\b /\b0 ", da NON confondere con \b /root\b0 , che \'e8 la directory home dell'utente amministratore del sistema). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Per la partizione \b /usr\b0 , tra i 300 e i 700 Mb se create partizioni autonome per \b /usr/src\b0 e \b /usr/local\b0 , altrimenti tra 500 Mb e 1 Gb , a seconda di ci\'f2 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. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 50 Mb minimo per ogni utente che si vuole avere, da montare sotto \b /home\b0 . \hyphpar0\par\pard\sb100\sl260 \lang1040 Altre partizioni che potrebbero essere utili sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b /usr/local\b0 , in cui installare il software \i locale\i0 alla macchina e che in genere non fa parte direttamente della distribuzione, assegnandogli spazio secondo necessit\'e0 (diciamo tra i 100 e i 200 Mb, a tenersi larghi); conviene crearla se \b /usr\b0 \'e8 a sola lettura. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /usr/src\b0 , in cui installare i sorgenti, utile in caso si ricompili spesso, ad esempio il kernel (anche qui tra i 100 e i 200 Mb). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /tmp\b0 , 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 \b /tmp\b0 --> \b /var/tmp\b0 ). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /opt\b0 , usata da alcuni programmi, potrebbe anche essere un semplice link simbolico a \b /usr\b0 o \b /usr/local\b0 . \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /var\b0 , 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, specie se la si crea su un hard-disk separato. Gli utenti Debian tengano presente che questa distribuzione, tramite il suo tool apt-get, tiene in \b /var/cache/apt\b0 tutti i file .deb che vengono scaricati durante l'aggiornamento del sistema o l'aggiunta di altre applicazioni, e che quindi \b /var\b0 pu\'f2 crescere a dismisura! Sarebbe consigliabile quindi fare un'altra partizione separata per \b /var/cache\b0 . \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FILESYSTEM}{\*\bkmkend ID_FILESYSTEM}\b\fs34\f1 1.3. Filesystem\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 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 \'e8 possibile individuare un blocco, l'unit\'e0 pi\'f9 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\'e9 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 \'e8 leggermente diverso). Nel caso dei cdrom per\'f2, 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 \'e8 un sistema per organizzare i file nei dispositivi in modo da avere un accesso diretto, senza il vincolo della sequenzialit\'e0. \par\pard\sb100\sl260 Un filesystem quindi contiene file, mantenendo un elenco di essi e della loro posizione sul disco, eventualmente (quasi sempre...) suddivisi in pi\'f9 settori del dispositivo. L'organizzazione \'e8 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\'ec 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 \i montare\i0 (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 \i unmount\i0 (smontaggio) di un dispositivo effettua inoltre il \i sync\i0 (sincronizzazione) del suo contenuto, garantendo l'integrit\'e0 dei dati. Infatti Unix non scrive immediatamente le modifiche effettuate, ma aspetta che altri processi pi\'f9 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 \i path\i0 (percorso) all'interno del filesystem principale, partendo da "/" e separando ogni nodo (directory) con il simbolo "/", ad esempio: \b /home/utente/testi/tesi.txt\b0 . 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 \b ls -la\b0 e guardare il primo carattere della riga del file in questione, ad esempio: \par\pard\sb200\sl234 \fs18\lang1024\f2 ..........\sa0\par\fi0\sb0 drwxr-xr-x 2 utente gruppo 1024 Mar 23 1999 docs \sa0\par\fi0\sb0 -rw------- 2 utente gruppo 1024 Apr 12 2000 testo\sa0\par\fi0\sb0 ..........\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 {\*\bkmkstart _319}{\*\bkmkend _319}\b\fs20\f0 Tabella 1-1. Elenco dei tipi di file (in base al primo carattere)\sa100\keepn\par\trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~-\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~file regolare\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~d\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~directory\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~l\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~link (collegamento)\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~b\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~periferica a blocchi con buffer\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~c\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~periferica a caratteri con buffer\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~u\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~periferica a caratteri senza buffer\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~p\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~pipe FIFO\~\~\sa60\cell \row \trowd\trql \clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx4680\clvertalt\clbrdrt\brdrs\brdrw20\clbrdrb\brdrs\brdrw20\clbrdrl\brdrs\brdrw20\clbrdrr\brdrs\brdrw20\cellx9360 \plain \pard\intbl\sb60\li100\ri100\sl260 \b\fs20 \~\~s\~\~\sa60\cell \plain \pard\intbl\sb60\li100\ri100\sl260 \fs20 \~\~socket\~\~\sa60\cell \row \pard\plain\sl-1\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040 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. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 I CD audio puri (o la sola parte audio di quelli Mixed-mode) NON contengono filesystem, quindi non si possono montare: per ascoltarli basta usare un lettore CD, sempre ammesso di avere i permessi di accesso in lettura al dispositivo!\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Da notare che non necessariamente, per il solo fatto di essere un dispositivo a blocchi, un disco deve contenere un filesystem. Un disco pu\'f2 comunque essere usato alla \i vecchia maniera\i0 sequenziale: infatti un disco senza filesystem \'e8 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 \i loopback device\i0 , compilato insieme al kernel. Le partizioni di \i swap\i0 sono gestite a blocchi, senza filesystem. \par\pard\sb100\sl260 La maggior parte delle distribuzioni Unix e Linux seguono il \i Filesystem Structure Standard\i0 (\b FSSTND\b0 , ora evolutosi in \b FHS\b0 , \i Filesystem Hierarchy Standard\i0 ), in modo da garantire una certa uniformit\'e0 o comparibilit\'e0. Il \b FSSTND\b0 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: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b /\b0 - \'e8 la directory principale che contiene tutte le altre. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /boot\b0 - contiene i file statici usati durante l'avvio, compreso il kernel e i file di Lilo. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /home\b0 - \'e8 la directory che contiene quelle personali degli utenti. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /mnt\b0 - di solito contiene i punti di innesto dei dispositivi rimovibili (\b /mnt/floppy\b0 , \b /mnt/cdrom\b0 , \b /mnt/zip\b0 , ecc.). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /dev\b0 - contiene i file speciali dei dispositivi di sistema, a blocchi o a caratteri (ebbene s\'ec, anche i dispositivi fisici sono visti come file: mai sentito il detto "\i In Unix tutto \'e8 un file\i0 "?). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /etc\b0 - contiene i file di configurazione generali del sistema. Eventuali sottodirectory raggruppano file di configurazione specifici di qualche programma o servizio, ad esempio \b /etc/X11\b0 per il sistema grafico, \b /etc/ppp\b0 per il demone ppp, \b /etc/httpd\b0 per apache, ecc. (anzi, /etc /etc ;-) ). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /lib\b0 - contiene le librerie condivise, usate in link dinamico dai programmi contenuti in \b /bin\b0 e \b /usr/bin\b0 . \b /lib/modules\b0 contiene i moduli caricati dinamicamente dal kernel. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /proc\b0 - \'e8 il punto d'innesto del filesystem virtuale \i proc\i0 , che contiene informazioni varie sul sistema in attivit\'e0 (viene infatti generato a runtime dal kernel), oltre a possibili impostazioni da applicare ogni volta che si avvia il sistema. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /sbin\b0 - 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 \b /lib\b0 . \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /bin\b0 - contiene i file eseguibili che in genere possono essere usati localmente anche dai comuni utenti. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /usr\b0 - contiene i file condivisibili in rete tra pi\'f9 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: \b /usr/bin\b0 per i file eseguibili anche dagli utenti comuni, \b /usr/sbin\b0 per quelli dell'utente root, \b /usr/doc\b0 e \b /usr/info\b0 per la documentazione, \b /usr/man\b0 per le pagine di manuale, \b /usr/X11R6\b0 per il sistema grafico X11, \b /usr/include\b0 per gli header necessari per la compilazione di programmi C, \b /usr/lib\b0 per le librerie, \b /usr/src\b0 per i sorgenti (in particolare \b /usr/src/linux\b0 per i sorgenti del kernel), e \b /usr/local\b0 per programmi locali alla macchina, ma aggiunti in seguito alla stabilizzazione del sistema. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /var\b0 - contiene i file variabili del sistema (a differenza di \b /usr\b0 , che dovrebbe poter essere montata a sola lettura). Contiene le directory di spool del sistema (come \b /var/spool/lpd\b0 per la stampa, \b /var/spool/fax\b0 per i fax, \b /var/spool/mail\b0 per la posta, \b /var/spool/news\b0 per i newsgroup, ecc.), la directory dei log (registrazioni delle attivit\'e0) del sistema (\b /var/log/...\b0 ), la directory contenente i PID dei processi in esecuzione (\b /var/run/...\b0 ), la directory delle cache (\b /var/cache\b0 ), e altro. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b /tmp\b0 - contiene i file temporanei generati dagli utenti e dai programmi in esecuzione, ed \'e8 accessibile in genere in lettura/scrittura/esecuzione a tutti gli utenti (pu\'f2 anche essere un link simbolico a \b /var/tmp\b0 ). \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PREREQUISITIGENERALI}{\*\bkmkend ID_PREREQUISITIGENERALI}\b\fs34\f1 1.4. Prerequisiti generali\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 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: \b format a:/u/s\b0 . Alla fine copiateci dentro dalla directory \b c:\\windows\\command\b0 oppure \b c:\\dos\b0 i file: \b fdisk.exe\b0 , \b format.com\b0 e \b sys.com\b0 \par\pard\sb100\sl260 Prima di iniziare (escludiamo naturalmente il ripartizionamento distruttivo e il caso di hard-disk nuovo o comunque vuoto, nel cui caso si pu\'f2 procedere come esposto nella prima parte), l'hard-disk va preparato. Prima di tutto \'e8 bene controllare che non ci siano errori sul disco, con (in ordine dal programma peggiore al migliore) \b Chkdsk\b0 , \b Scandisk\b0 , \b Ndd\b0 (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, \'e8 per essere sicuri che non ci siano settori danneggiati, o almeno che essi vengano individuati e annotati nella FAT. \par\pard\sb100\sl260 Poi un bel backup, che male non fa mai, quindi cogliete l'attimo e salvatevi le cose importanti (anche nel caso di pi\'f9 partizioni di cui una dedicata apposta ai dati, conviene sempre fare un backup su floppy, zip o meglio CD-R o CD-RW). \par\pard\sb100\sl260 Ancora, opzionalmente, una bella passata di antivirus non farebbe male, l'importante \'e8 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\'e0 infetto, per questo lo si deve installare su un pc SICURAMENTE sano e crearsi i dischetti di emergenza al pi\'f9 presto (chiaramente se aggiornate l'antivirus sul pc dovete ricreare i dischetti). \par\pard\sb100\sl260 Se non vengono segnalati errori, si procede alla deframmentazione. ALT! Credevate di cavarvela cos\'ec 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 \'e8 tutto un altro paio di maniche. Vediamo i possibili problemi: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 DOVETE disattivare la memoria virtuale, per poi riattivarla dopo che la procedura \'e8 conclusa. In Windows 9x ci\'f2 si fa cos\'ec: click destro su \b Risorse del Computer\b0 / \b Propriet\'e0\b0 / click sulla linguetta \b Prestazioni\b0 / click su \b Memoria Virtuale\b0 / click su \b Impostazione manuale della memoria virtuale\b0 / selezione di \b Disattiva memoria virtuale\b0 / poi premere \b Invio\b0 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 ;-) ). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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 \b smartdrv /c\b0 o equivalente per eseguire il flush della cache). \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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: \b attrib -r -s -h image.idx\b0 oppure \b attrib -r -s -h mirorsav.fil\b0 e poi cancellateli normalmente. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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: \hyphpar0\par\pard\sb100\li200\sl234 \fs18\f2 cd \\\sa0\par\fi0\sb0 dir /s /b /a:h >>t.bat\sa0\par\fi0\sb0 dir /s /b /a:s >>t.bat\sa0\par\fi0\sb0 edit t.bat\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li840\ri200\brdrl\brdrs\brdrw40\brsp200\li840\ri200\brdrb\brdrs\brdrw40\brsp0\li840\ri200\brdrr\brdrs\brdrw40\brsp200\li840\ri200\sl374\qc \b\fs28\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li840\ri200\brdrl\brdrs\brdrw40\brsp200\li840\ri200\brdrb\brdrs\brdrw40\brsp0\li840\ri200\brdrr\brdrs\brdrw40\brsp200\li840\ri200\sl234 \b0\fs18\lang1040 IMPORTANTE: prima di procedere, eliminate dal file \b t.bat\b0 TUTTE le righe che riportano \b c:\\io.sys\b0 e \b c:\\msdos.sys\b0 oppure \b c:\\ibmbio.com\b0 e \b c:\\ibmdos.com\b0 (dovrebbero esserci 2 righe per ognuno dei file elencati). Se saltate questo punto e deframmentate, \'e8 probabile che al riavvio il sistema non parta pi\'f9 (se comunque dovesse succedere, se avete creato il disco di avvio come vi ho detto in precedenza basta che partiate con quello e diate \b a:sys c:\b0 dal prompt). \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li840\ri200\brdrl\brdrs\brdrw40\brsp200\li840\ri200\brdrb\brdrs\brdrw40\brsp0\li840\ri200\brdrr\brdrs\brdrw40\brsp200\li840\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\li200\sl260 \fs20\f0 Sostituite nel file \b t.bat\b0 tutte le occorrenze di \b c:\\\b0 con \b attrib -r -s -h c:\\\b0 , uscite da Edit salvando e lanciate dal prompt il file \b t.bat\b0 . Questo elimina gli attributi che potrebbere creare problemi a Defrag. \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 Disattivate TUTTE le opzioni di ottimizzazione del programma di deframmentazione (in particolare disattivate da Windows 98 l'opzione "\i Riorganizza i file dei programmi per un avvio pi\'f9 rapido\i0 "), perch\'e9 con la scusa di ottimizzare l'avvio (usando i dati contenuti nella directory nascosta \b c:\\windows\\applog\b0 ) 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. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Un'ultima nota: conviene deframmentare dalla \i Modalit\'e0 provvisoria\i0 , cos\'ec sarete certi che non ci siano processi in background che potrebbero far ripartire Defrag nel caso essi si mettessero in attivit\'e0, o peggio che andassero a scrivere nella zona appena deframmentata, o alla fine del disco, vanificando il tutto. \hyphpar0\par\pard\sb100\sl260 \lang1040 A questo punto partite in modalit\'e0 provvisoria e deframmentate, finalmente! Un ultimo consiglio: quando Defrag ha finito il suo lavoro, anche se la procedura pu\'f2 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\'e9 attiva la memoria virtuale) conviene RESETTARE, invece di chiudere Defrag e Sessione per riavviare. Questo perch\'e9 Windows in fase di chiusura potrebbe andare a riscrivere nella zona appena deframmentata (esperienza personale). \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 ATTENZIONE: io ho eseguito questa procedura pi\'f9 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\'e0 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 \'e8 pericolosa, quindi...). \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 Ancora una cosa: il DOS standard stabilisce che non ci sia pi\'f9 di una partizione primaria, anche se nella pratica ci\'f2 \'e8 tollerato e permette di realizzare un sistema multiboot come ho esposto all'inizio. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FIPS}{\*\bkmkend ID_FIPS}\b\fs34\lang1024\f1 1.5. FIPS\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_INTRODUZIONEFIPS}{\*\bkmkend ID_INTRODUZIONEFIPS}\fs28 1.5.1. Introduzione\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 \b Fips\b0 \'e8 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\'e0 raggiunto il limite di 4 partizioni primarie per hard-disk. Fips non cambia la dimensione dei cluster n\'e9 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. \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PREREQUISITIFIPS}{\*\bkmkend ID_PREREQUISITIFIPS}\b\fs28\lang1024\f1 1.5.2. Prerequisiti all'uso di FIPS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Preparate il dischetto come spiegato prima e dalla directory dove avete scompattato Fips copiateci dentro i file: \b restorrb.exe\b0 , \b fips.exe\b0 e \b errors.txt\b0 . Leggete tutte le istruzioni generali date in precedenza. \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 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\'e0 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. \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_USOFIPS}{\*\bkmkend ID_USOFIPS}\b\fs28\lang1024 1.5.3. Uso di FIPS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Infilate il floppy preparato prima e riavviate il pc. Al prompt lanciate \b fips\b0 , il quale dopo aver controllato di non essere in ambiente multitasking incomincer\'e0 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\'f9 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. \b FATELO!\b0 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\'e0 di nuovo tutti i controlli, vi mostra la nuova tabella delle partizioni e vi chiede se volete continuare, premendo \b C\b0 . Fips rif\'e0 ancora tutti i controlli (pignolo, eh? ;-) ) e vi chiede se volete scrivere la nuova tabella delle partizioni su disco. Se premete \b Y\b0 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\'e9 l'avete fatto, vero? ;-) ) usando \b restorrb\b0 . Controllate di nuovo la vecchia partizione con \b Scandisk\b0 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 \b MKFS\b0 per creare un file-system EXT2. Dovreste a questo punto essere a posto (pi\'f9 o meno, fino a quando la met\'e0 oscura del vostro hard-disk (DOS/Win) non sar\'e0 stata eliminata ;-) ). \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FSRESIZE}{\*\bkmkend ID_FSRESIZE}\b\fs34\lang1024\f1 1.6. FSRESIZE\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 \b Fsresize\b0 \'e8 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\'e0, ma alcuni pesanti difetti: infatti, poich\'e8 non pu\'f2 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\'f2 eccedere quello stabilito dalla FAT (es.: se anche aveste 4 GB liberi, ma usate FAT16, non potete avere una partizione di pi\'f9 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): \par\pard\sb200\sl260 \lang1024 \b fsresize /dev/hda9 -i \b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab mostra delle informazioni sulla partizione specificata \hyphpar0\par\pard\sb200\sl260 \b fsresize /dev/hda2 324M --backup=dosc.backup \b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab esegue il resize della partizione specificata impostandola a 324 MB e facendo il backup nel file indicato \hyphpar0\par\pard\sb200\sl260 \b fsresize /dev/hda1 5654k \b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab esegue il resize della partizione specificata impostandola a 5654 KB senza fare il backup \hyphpar0\par\pard\sb200\sl260 \b fsresize /dev/hda3 2545 \b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab 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 \'e8 k, per kilobytes) \hyphpar0\par\pard\sb200\sl260 \b fsresize /dev/hda5 --restore dosd.backup \b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab ripristina la partizione specificata a partire dal file indicato \hyphpar0\par\pard\sb100\sl260 \lang1040 Usate SEMPRE l'opzione \i --backup\i0 , che in caso di errori permette tramite \i --restore\i0 di ripristinare il tutto. \'c8 possibile che LILO non funzioni al riavvio, quindi prima di riavviare date \b /sbin/lilo\b0 da root per risistemarlo. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 2. Loadlin}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 2. Loadlin}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_LOADLIN}{\*\bkmkend ID_LOADLIN}\b\fs41\f1 Capitolo 2. Loadlin\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 In questa sezione spiego come avviare Linux con \b Loadlin\b0 , un programma DOS che permette di evitare di installare \b Lilo\b0 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\'e0 anche mostrato l'uso di un menu che faciliter\'e0 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). \par\pard\sb100\sl260 Create una directory (io la chiamo \b loadlin\b0 , perch\'e9 in \b linux\b0 ho installato \i mulinux\i0 , per emergenze) nella vostra partizione Windows e copiateci dentro il kernel stabile che usate (da Linux, \'e8 nella directory \b /boot\b0 ), rinominandolo \b vmlinuz.old\b0 , e l'eventuale nuovo kernel in prova, rinominandolo \b vmlinuz.new\b0 . Copiateci dentro anche \b loadlin.exe\b0 , dalla directory \b Dosutils\b0 presente nel cd della vostra distribuzione. Ora create il file \b c:\\loadlin\\linuxold.bat\b0 come segue: \par\pard\sb200\sl234 \fs18\lang1024\f2 loadlin.exe @loadlin.old\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e create il file delle impostazioni \b c:\\loadlin\\loadlin.old\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 vmlinuz.old\sa0\par\fi0\sb0 root=/dev/hdb2\sa0\par\fi0\sb0 ro\sa0\par\fi0\sb0 vga=extended\sa0\par\fi0\sb0 mem=128M\sa0\par\fi0\sb0 append="reserve=0x300,64 ether=9,0x300,eth0"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Il primo rigo \'e8 il nome del file del kernel; il secondo (MODIFICATELO per il vostro sistema! Altre info nella pagina delle Partizioni) \'e8 la partizionie di root di linux; il terzo \'e8 OBBLIGATORIO per montare il filesystem a sola lettura (ci penser\'e0 il processo principale init a rimontartlo in lettura/scrittura durante l'avvio); il quarto rigo \'e8 opzionale (a me piace la console 80x50); il quinto permette di specificare se avete pi\'f9 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). \par\pard\sb100\sl260 Se avete il secondo kernel in prova, create anche il file \b c:\\loadlin\\linuxnew.bat\b0 come segue: \par\pard\sb200\sl234 \fs18\lang1024\f2 loadlin.exe @loadlin.new\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e create il secondo file delle impostazioni \b c:\\loadlin\\loadlin.new\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 vmlinuz.new\sa0\par\fi0\sb0 root=/dev/hdb2\sa0\par\fi0\sb0 ro\sa0\par\fi0\sb0 vga=extended\sa0\par\fi0\sb0 mem=128M\sa0\par\fi0\sb0 append="reserve=0x300,64 ether=9,0x300,eth0"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora modificate il file \b c:\\msdos.sys\b0 (PRIMA date: \b attrib -s -h -r c:\\msdos.sys\b0 ) nelle seguenti righe: \par\pard\sb200\sl234 \fs18\lang1024\f2 ... altre cose presenti da non toccare\sa0\par\fi0\sb0 [Options]\sa0\par\fi0\sb0 BootGUI=0\sa0\par\fi0\sb0 Logo=0\sa0\par\fi0\sb0 ... altre cose presenti da non toccare\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 NON cancellate tutte quelle x alla fine, il file deve essere pi\'f9 lungo di 1024 byte. Rimettete a posto i permessi con \b attrib +s +h +r c:\\msdos.sys\b0 . Ora il file \b c:\\config.sys\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 [Menu]\sa0\par\fi0\sb0 menuitem=Win98, Avvia Windows 98...\sa0\par\fi0\sb0 menuitem=MSdos, Avvia MS-DOS...\sa0\par\fi0\sb0 menuitem=Linux_New, Avvia Linux-New...\sa0\par\fi0\sb0 menuitem=Linux_Old, Avvia Linux-Old...\sa0\par\fi0\sb0 menudefault=Win98,5\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [Win98]\sa0\par\fi0\sb0 DEVICE=C:\\WINDOWS\\HIMEM.SYS\sa0\par\fi0\sb0 DEVICE=C:\\WINDOWS\\EMM386.EXE NOEMS\sa0\par\fi0\sb0 DOS=HIGH,UMB\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [MSdos]\sa0\par\fi0\sb0 DEVICE=C:\\WINDOWS\\HIMEM.SYS\sa0\par\fi0\sb0 DEVICE=C:\\WINDOWS\\EMM386.EXE NOEMS\sa0\par\fi0\sb0 DOS=HIGH,UMB\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [Linux_New]\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [Linux_Old]\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Naturalmente prendete tutto quello che gi\'e0 avete nel vostro \b config.sys\b0 e copiatelo in entrambe le sezioni Win98 e MSdos (dovrebbero essere uguali), al posto di quello che ho messo io. Ultimo file, \b c:\\autoexec.bat\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 goto %config%\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :Win98\sa0\par\fi0\sb0 rem ... inserite le altre cose presenti nel vostro autoexec.bat\sa0\par\fi0\sb0 rem le 4 righe seguenti non servono per linux, ma tornano utili con win ;-)\sa0\par\fi0\sb0 deltree /y c:\\windows\\temp\sa0\par\fi0\sb0 md c:\\windows\\temp\sa0\par\fi0\sb0 set tmp=c:\\windows\\temp\sa0\par\fi0\sb0 set temp=c:\\windows\\temp\sa0\par\fi0\sb0 win\sa0\par\fi0\sb0 goto end\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :MSdos\sa0\par\fi0\sb0 rem ... inserite le altre cose presenti nel vostro autoexec.bat\sa0\par\fi0\sb0 rem le 4 righe seguenti non servono per linux, ma tornano utili con win ;-)\sa0\par\fi0\sb0 deltree /y c:\\windows\\temp\sa0\par\fi0\sb0 md c:\\windows\\temp\sa0\par\fi0\sb0 set tmp=c:\\windows\\temp\sa0\par\fi0\sb0 set temp=c:\\windows\\temp\sa0\par\fi0\sb0 goto end\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :Linux_New\sa0\par\fi0\sb0 call c:\\loadlin\\linuxnew.bat\sa0\par\fi0\sb0 goto end\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :Linux_Old\sa0\par\fi0\sb0 call c:\\loadlin\\linuxold.bat\sa0\par\fi0\sb0 goto end\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :end\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Un consiglio: dati i noti disservizi di Windows, se avete 2 o pi\'f9 partizioni VFAT, spostate la directory loadlin in un'altra partizione e modificate i path (magari copiateci dentro per backup anche i file \b autoexec.bat\b0 , \b config.sys\b0 e \b msdos.sys\b0 ). Nel caso aggiorniate il kernel, ricordate di ricopiare il nuovo file nella directory \b loadlin\b0 !!! \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 3. Kernel}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 3. Kernel}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_KERNEL}{\*\bkmkend ID_KERNEL}\b\fs41\f1 Capitolo 3. Kernel\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 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\'e0 non presenti, ad esempio il supporto per alcune schede che per motivi di genericit\'e0 non vengono sempre incluse nei kernel di serie delle distribuzioni, oppure per modelli recenti che per forza non esistevano all'epoca. Non \'e8 un procedimento complicato, ma vanno seguiti dei passi stabiliti, per non creare instabilit\'e0 nel sistema a causa del mancato supporto a propriet\'e0 basilari, come il supporto al filesystem \b ext2\b0 , o ai binari \b elf\b0 , oppure ancora al tipo di disco da cui fate il boot. Per sapere quale kernel avete in funzione nel vostro PC, usate il comando \b uname -r\b0 . Per sapere qual \'e8 l'ultima versione di kernel disponibile online, usate il comando \b finger @finger.kernel.org\b0 . \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PREREQUISITIKERNEL}{\*\bkmkend ID_PREREQUISITIKERNEL}\b\fs34\lang1024\f1 3.1. Prerequisiti\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_REPERIMENTOKERNEL}{\*\bkmkend ID_REPERIMENTOKERNEL}\fs28 3.1.1. Reperimento\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Il sito principale \'e8 ftp://ftp.kernel.org, ma esistono i mirror nazionali, reperibili come ftp.XX.kernel.org, dove XX \'e8 il codice del paese (ad esempio "it" per Italia, "de" per Germania, "fr" per Francia, "uk" per Inghilterra, e cos\'ec via). Cercate nella directory \b /pub/linux/kernel/2.2\b0 . In genere esistono 2 tipi di file in 2 formati di compressione diversi. I file sono del tipo: \b linux-VERSIONE_KERNEL.tar.COMPRESSORE\b0 , oppure \b patch-VERSIONE_KERNEL.tar.COMPRESSORE\b0 . COMPRESSORE pu\'f2 essere \b gz\b0 per file compressi con GZIP, o \b bz2\b0 per file compressi con BZIP2 (in genere pi\'f9 piccoli) I file che iniziano per \b linux\b0 contenengono i sorgenti del kernel COMPLETO, mentre i file che iniziano per \b patch\b0 contengono solo le differenze con le versioni precedenti. Quindi, per esempio, ci possono essere i file: \b linux-2.2.14.tar.gz\b0 , \b linux-2.2.14.tar.bz2\b0 , \b patch-2.2.14.tar.gz\b0 e \b patch-2.2.14.tar.bz2\b0 , 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\'f2 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 \b linux-2.2.11.tar.gz\b0 , e volete arrivare alla versione 2.2.14, dovete scaricare i file \b patch-2.2.12.tar.gz\b0 , \b patch-2.2.13.tar.gz\b0 e \b patch-2.2.14.tar.gz\b0 , 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\'e9 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\'e9 a volte non sono completamente stabili (sono sperimentali per questo). \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SOFTWARENECESSARIO}{\*\bkmkend ID_SOFTWARENECESSARIO}\b\fs28\lang1024\f1 3.1.2. Software necessario\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Naturalmente i sorgenti del kernel. Poi i programmi \b gzip\b0 e \b bzip2\b0 , in base al tipo di compressione usata per i sorgenti. I pacchetti software: \b make\b0 , \b bin86\b0 , \b glibc-devel\b0 , \b gcc\b0 (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 \i X-Window\i0 , naturalmente dovete aver installato e configurato bene l'\i X-server\i0 , e poi vi servono anche il pacchetto contenente il linguaggio \b tcl\b0 e il suo tool grafico \b tk\b0 . \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SCOMPATTAZIONEPATCHCONF}{\*\bkmkend ID_SCOMPATTAZIONEPATCHCONF}\b\fs28\lang1024\f1 3.1.3. Scompattazione, patch e avvio della configurazione\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Ecco i passi da seguire (tutto ci\'f2 che \'e8 tra doppi apici in \b grassetto\b0 \'e8 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): \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 1.\tab Se non lo siete gi\'e0, diventate utente root e spostatevi in /usr/src ("\b su root\b0 ", pi\'f9 la password, poi "\b cd /usr/src\b0 ") \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 2.\tab Date: "\b ls -l\b0 ". Controllate se esiste una riga che contiene '\i linux\i0 ': se non esiste, saltate al punto 5; se esiste e il primo carattere della riga \'e8 \b d\b0 , si tratta di una directory, saltate al punto 4; altrimenti se esiste e il primo carattere della riga \'e8 \b l\b0 , si tratta di un collegamento, continuate col punto 3 \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 3.\tab Rimuovete il link: "\b rm -f linux\b0 " (in questo modo i vecchi sorgenti eventualmente presenti rimarranno nella directory cui puntava il link, in genere '\i linux-VERSIONE_KERNEL\i0 '), e saltate al punto 5 \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 4.\tab Rinominate la directory: "\b mv linux linux.old\b0 " (in questo modo i vecchi sorgenti eventualmente presenti verranno spostati nella directory '\i linux.old\i0 '), e continuate col punto 5 \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 5.\tab Scompattate i nuovi sorgenti: se il file in vostro possesso finisce in '\i .gz\i0 ', date "\b tar xvzf /persorso/del/file/linux-2.2.11.tar.gz\b0 ", mentre se finisce con '\i .bz2\i0 ', date "\b tar xvf /persorso/del/file/linux-2.2.11.tar.bz2 --use-compress-program bzip2\b0 " \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 6.\tab Se avete gi\'e0 l'ultima versione dei sorgenti, saltate al punto 7, altrimenti se dovete applicare delle patch per aggiornare i sorgenti ad una versione pi\'f9 recente, date i seguenti comandi (TUTTE le patch vanno applicate in sequenza): \hyphpar0\par\pard\sb100\li360\sl234 \fs18\f2 cd linux\sa0\par\fi0\sb0 gzip -dc /persorso/del/file/patch-2.2.12.gz | patch -p1\sa0\par\fi0\sb0 gzip -dc /persorso/del/file/patch-2.2.13.gz | patch -p1\sa0\par\fi0\sb0 gzip -dc /persorso/del/file/patch-2.2.14.gz | patch -p1\sa0\par\fi0\sb0 cd .. \sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li360\sl260 \fs20\lang1040\f0 nel caso abbiate dei file del tipo '\i patch-VERSIONE_KERNEL.bz2\i0 ', sostituite nei comandi precedenti '\b gzip\b0 ' con '\b bzip2\b0 ' \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 7.\tab Rinominate la directory ottenuta in base alla versione dei sorgenti che avete ottenuto (nell'esempio 2.2.14) e ricreate alcuni collegamenti simbolici: \hyphpar0\par\pard\sb100\li360\sl234 \fs18\f2 mv linux linux-2.2.14\sa0\par\fi0\sb0 ln -s linux-2.2.14 linux\sa0\par\fi0\sb0 rm -rf /usr/src/linux/include/asm /usr/include/asm\sa0\par\fi0\sb0 rm -rf /usr/include/linux /usr/include/scsi\sa0\par\fi0\sb0 ln -s /usr/src/linux/include/asm-i386/ /usr/src/linux/include/asm\sa0\par\fi0\sb0 ln -s /usr/src/linux/include/asm-i386/ /usr/include/asm\sa0\par\fi0\sb0 ln -s /usr/src/linux/include/linux/ /usr/include/linux\sa0\par\fi0\sb0 ln -s /usr/src/linux/include/scsi/ /usr/include/scsi\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li360\sl260 \fs20\lang1040\f0 cos\'ec da portare il tutto in una situazione standard (i sorgenti devono essere in '\i /usr/src/linux/\i0 ') \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 8.\tab Si passa ora alla fase pi\'f9 delicata dell'operazione: scegliere cosa includere e cosa no nel kernel. Date "\b cd linux\b0 " e poi "\b make mrproper\b0 " per eliminare residui di eventuali vecchie compilazioni (attenzione che questo comando cancella il file '\i .config\i0 ', 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'\'e8 prima del # !!!): \hyphpar0\par\pard\sb100\li360\sl234 \fs18\f2 make config # (interfaccia a caratteri base)\sa0\par\fi0\sb0 make menuconfig # (interfaccia a caratteri con menu)\sa0\par\fi0\sb0 make xconfig # (interfaccia grafica - dovete essere in X-Window)\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li360\sl260 \fs20\lang1040\f0 e passiamo alla configurazione dei parametri. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PARAMETRIKERNEL}{\*\bkmkend ID_PARAMETRIKERNEL}\b\fs34\lang1024\f1 3.2. Parametri\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CODEMATURITY}{\*\bkmkend ID_CODEMATURITY}\fs28 3.2.1. Code maturity level options\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Prompt for development and/or incomplete code/drivers: 'y' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PROCESSORTYPE}{\*\bkmkend ID_PROCESSORTYPE}\b\fs28\f1 3.2.2. Processor type and features\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 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 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Maximum Physical Memory: scegliete 1GB se avete meno di 1 GB, 2GB altrimenti \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Math emulation: 'n' ('y' solo se avete un 386 o 486 sx senza coprocessore) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 MTRR (Memory Type Range Register) support: 'y', anche se il vostro processore non lo supporta \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Symmetric multi-processing support: 'y' solo se avete pi\'f9 processori (nello STESSO computer!) \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_LOADABLEMODULE}{\*\bkmkend ID_LOADABLEMODULE}\b\fs28\f1 3.2.3. Loadable module support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Enable loadable module support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Set version information on all symbols for modules: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel module loader: 'y' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_GENERALSETUP}{\*\bkmkend ID_GENERALSETUP}\b\fs28\f1 3.2.4. General setup\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Networking support: 'y' SEMPRE, serve almeno per il dispositivo di loopback. least need it for loopback interface \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PCI support: 'y', tranne se avete vecchi PC senza bus PCI \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PCI access mode: Any \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PCI quirks: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PCI bridge optimization (experimental): 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Backward-compatible /proc/pci: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 MCA support: 'n', tranne che per vecchi PC IBM con bus Microchannel \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SGI Visual Workstation support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 System V IPC: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 BSD Process Accounting: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Sysctl support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel support for a.out binaries: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel support for ELF binaries: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel support for MISC binaries: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel support for JAVA binaries (obsolete): 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Parallel port support: 'y' or 'm', a scelta. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PC-style hardware: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support foreign hardware: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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 \'e8 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Ignore USER SUSPEND: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Enable PM at boot time: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Make CPU Idle calls when idle: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Enable console blanking using APM: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Power off on shutdown: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Ignore multiple suspend: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Ignore multiple suspend/resume cycle: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 RTC stores time in GMT: 'y' solo se il PC \'e8 impostato sull'ora di Greenwich invece di quella locale \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Allow interrupts during APM BIOS calls: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PLUGANDPLAY}{\*\bkmkend ID_PLUGANDPLAY}\b\fs28\f1 3.2.5. Plug and Play support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Plug and Play support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Auto-probe for parallel devices: 'm' se avete periferiche su porta parallela, altrimenti 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_BLOCKDEVICE}{\*\bkmkend ID_BLOCKDEVICE}\b\fs28\f1 3.2.6. Block devices\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Normal PC floppy disk support: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support: 'y' se si hanno periferiche IDE \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Use old disk-only driver on primary interface: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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') \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Include IDE/ATAPI CDROM support: 'm' se avete un CDROM IDE \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Include IDE/ATAPI TAPE support: 'y' o 'm' solo se avete periferiche di backup a nastro IDE \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Include IDE/ATAPI FLOPPY support: 'y' o 'm' solo se avete periferiche floppy IDE, tipo ZIP \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI emulation support: 'm' se avete un masterizzatore IDE \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 CMD640 chipset bugfix/support: 'y' se avete questo chip ('n' se avete solo periferiche SCSI) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 CMD640 enhanced support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 RZ1000 chipset bugfix/support: 'y' se avete questo chip ('n' se avete solo periferiche SCSI) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Generic PCI IDE chipset support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Generic PCI bus-master DMA support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Boot off-board chipsets first support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Use DMA by default when available: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: attivate le varie opzioni in base al vostro PC (in genere, 'n' a tutte) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Loopback device support: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Network block device support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Multiple devices driver support: 'n' a meno che non vogliate provare il RAID software (leggete il RAID-HOWTO) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 RAM disk support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 XT hard disk support: 'n' -- what, you still have disks like this? :) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Parallel port IDE device support: 'm' se avete qualche periferica IDE su porta parallela, tipo CDROM (e selezionate il driver opportuno), 'n' altrimenti \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Compaq SMART2 support: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_NETWORKINGOPTIONS}{\*\bkmkend ID_NETWORKINGOPTIONS}\b\fs28\f1 3.2.7. Networking options\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Packet socket: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel/User netlink socket: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Routing messages: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Netlink device emulation: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Network firewalls: 'y' se volete abilitare il supporto per il firewalling e masquerading \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Socket filtering: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 UNIX domain sockets: 'y' altrimenti X-window non si avvier\'e0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 TCP/IP networking: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: multicasting: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: advanced router: 'y' se volete usare il PC come router o per fare il masquerading di una rete locale verso Internet \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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" \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: firewall packet netlink device: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: transparent proxy support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: masquerading: 'y' per attivare il masquerading \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: ICMP masquerading: 'y' per attivare il masquerading \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: masquerading special modules support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: optimize as router not host: 'y' per attivare il masquerading e il router \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: TCP syncookie support: 'y' per prevenire il D.O.S. da SYN-FLOOD \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: Reverse ARP: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: Allow large windows (not recommended if <16MB of memory): 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 CPU is too slow to handle full bandwidth: 'n', tranne se siete connessi a interfacce a larga banda (gigabit Ethernet, FDDI, etc.) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte, tranne se dovete collegarvi a reti Novell, nel qual caso attivate "The IPX protocol" \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_QOSFAIR}{\*\bkmkend ID_QOSFAIR}\b\fs28\f1 3.2.8. QoS and/or fair queueing\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 QoS and/or fair queueing: 'n' (il resto \'e8 disabilitato di conseguenza) \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_TELEFONYSUPPORT}{\*\bkmkend ID_TELEFONYSUPPORT}\b\fs28\f1 3.2.9. Telephony Support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Linux Telephony Support: 'n' (il resto \'e8 disabilitato di conseguenza) \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SCSISUPPORT}{\*\bkmkend ID_SCSISUPPORT}\b\fs28\f1 3.2.10. SCSI support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 SCSI support: 'y' se avete uno o pi\'f9 adattatori e periferiche SCSI oppure un drive ZIP parallelo o un masterizzatore, 'n' altrimenti. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI disk support: 'y' (e non 'm') per se fate il boot da un disco SCSI, altrimenti non riuscirete ad avviare il sistema! \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI tape support: 'm' se avete periferiche a nastro SCSI \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI CDROM support: 'm' se avete CDROM SCSI \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Enable vendor-specific extensions (for SCSI CDROM): 'y' se avete CDROM SCSI Nec, Toshiba o masterizzatori HP \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI generic support: 'm' se avete un masterizzatore, IDE o SCSI \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Probe all LUNs on each SCSI device: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Verbose SCSI error reporting (kernel size +=12K): 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 SCSI logging facility: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SCSILOWLEVEL}{\*\bkmkend ID_SCSILOWLEVEL}\b\fs28\f1 3.2.11. SCSI low-level drivers\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte, tranne che per il vostro eventuale adattatore SCSI \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IOMEGA parallel port (ppa - older drives): 'm' se avete uno dei primi modelli di ZIP parallelo \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IOMEGA parallel port (imm - newer drives): 'm' se avete uno degli ultimi modelli di ZIP parallelo \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte, tranne che per il vostro eventuale adattatore SCSI \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_NETWORKDEVICE}{\*\bkmkend ID_NETWORKDEVICE}\b\fs28\f1 3.2.12. Network device support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Network device support: 'y' se avete una scheda di rete o per collegarvi a Internet \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Dummy net driver support: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PLIP (parallel port) support: 'm' se volete creare una rete con cavi paralleli PLIP, altrimenti 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 PPP (point-to-point) support: 'y' o 'm' se volete collegarvi a Internet via modem \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ARCNET}{\*\bkmkend ID_ARCNET}\b\fs28\f1 3.2.13. ARCnet devices\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 ARCnet devices: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ETHERNET10100}{\*\bkmkend ID_ETHERNET10100}\b\fs28\f1 3.2.14. Ethernet (10 or 100Mbit)\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 ETHERNET (10 or 100Mbit): 'y' se avete uno o pi\'f9 adattatori di rete Ethernet \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello di scheda \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ETHERNET1000}{\*\bkmkend ID_ETHERNET1000}\b\fs28\f1 3.2.15. Ethernet (1000 Mbit)\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_APPLETALK}{\*\bkmkend ID_APPLETALK}\b\fs28\f1 3.2.16. Appletalk devices\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Dovrebbe essere disattivato, altrimenti 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_TOKENRING}{\*\bkmkend ID_TOKENRING}\b\fs28\f1 3.2.17. Token ring devices\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_WANINTERFACE}{\*\bkmkend ID_WANINTERFACE}\b\fs28\f1 3.2.18. Wan interfaces\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_AMATEURRADIO}{\*\bkmkend ID_AMATEURRADIO}\b\fs28\f1 3.2.19. Amateur Radio support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_IRDASUBSYSTEM}{\*\bkmkend ID_IRDASUBSYSTEM}\b\fs28\f1 3.2.20. IrDA subsystem support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 IrDA subsystem support: 'y' o 'm' se avete una porta a infrarossi (tipicamente i portatili) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IrLAN protocol: 'y' o 'm' se avete abilitato IrDA e avete un sistema di emulazione di rete Ethernet \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IrCOMM protocol: 'y' o 'm' se avete abilitato IrDA e avete un sistema di emulazione di porta seriale \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IrDA protocol options: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Cache last LSAP: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Fast RRs: 'n' (guardate l'help) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Debug information; 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IrLAP compression: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_INFRAREDPORT}{\*\bkmkend ID_INFRAREDPORT}\b\fs28\f1 3.2.21. Infrared-port device drivers\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 IrTTY (uses Linux serial driver): 'y' o 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IrPORT (IrDA serial driver): 'y' o 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello di chip \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ISDNSUBSYSTEM}{\*\bkmkend ID_ISDNSUBSYSTEM}\b\fs28\f1 3.2.22. ISDN subsystem\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 ISDN support: 'y' se avete un adattatore ISDN interno \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support synchronous PPP: 'y' se vi connettete a Internet \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Use VJ-compression with synchronous PPP: chiedete al provider se \'e8 supportata \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support generic MP (RFC 1717): 'n' (guardate l'help) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support audio via ISDN: 'n' (guardate l'help) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support ISDN diversion services: 'n' (guardate l'help) e nel caso abilitate "Support AT-FAX Class 2 commands" \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello di scheda \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_OLDCDROM}{\*\bkmkend ID_OLDCDROM}\b\fs28\f1 3.2.23. Old CD-ROM drivers (not SCSI, not IDE)\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Old CD-ROM drivers (not SCSI, not IDE): 'n', tranne che per vecchi modelli di CDROM con interfaccia proprietaria \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CHARACTERDEVICES}{\*\bkmkend ID_CHARACTERDEVICES}\b\fs28\f1 3.2.24. Character devices\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Virtual terminal: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support for console on virtual terminal: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Standard/generic (dumb) serial support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support for console on serial port: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Extended dumb serial driver options: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Non-standard serial port support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Unix98 PTY support: 'y' e lasciate il valore "Maximum number of Unix98 PTYs in use (0-2048)" al default, 256 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Parallel printer support: 'm' se avete una stampante parallelaif you have a parallel port printer \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support IEEE1284 status readback: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Mouse Support (not serial mice): 'y' in genere, ma guardate l'help e attenti ai laptop. Se avete un mouse seriale, scegliete 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 QIC-02 tape support: 'y' se avete un sistema di backup a nastro non SCSI (esclusi quelli su controller floppy, altre informazioni nel seguito) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Watchdog Timer Support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 /dev/nvram support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Enhanced Real Time Clock Support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Double Talk PC internal speech card support: 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_MICE}{\*\bkmkend ID_MICE}\b\fs28\f1 3.2.25. Mice\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne che per il vostro modello di mouse (esclusi i seriali, guardate sopra) \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_JOYSTICKS}{\*\bkmkend ID_JOYSTICKS}\b\fs28\f1 3.2.26. Joysticks\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne che se volete il supporto per i joystick, e sceglietene il modello \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_WATCHDOG}{\*\bkmkend ID_WATCHDOG}\b\fs28\f1 3.2.27. Watchdog Cards\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Dovrebbe essere disattivato, altrimenti 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_VIDEO4LINUX}{\*\bkmkend ID_VIDEO4LINUX}\b\fs28\f1 3.2.28. Video For Linux\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...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 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_FTAPEFLOPPY}{\*\bkmkend ID_FTAPEFLOPPY}\b\fs28\f1 3.2.29. Ftape, the floppy tape device driver\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Ftape (QIC-80/Travan) support: 'y' se avete un drive a nastro connesso al controller dei floppy disk \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_FILESYSTEMSTYPE}{\*\bkmkend ID_FILESYSTEMSTYPE}\b\fs28\f1 3.2.30. Filesystems\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Quota support: 'n' tranne che se volete stabilire delle quote di disco per gli utenti (in genere sui server) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Kernel automounter support: 'n' tranne se volete che i device vengano montati in automatico \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 ADFS filesystem support (read only) (EXPERIMENTAL): 'n' tranne se volete accedere a filesystem Acorn \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Amiga FFS filesystem support: 'n' tranne se volete accedere a filesystem Amiga \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Apple Macintosh filesystem support (experimental): 'n' tranne se volete accedere a filesystem Macintosh \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 DOS FAT fs support: 'y' or 'm' per poter accedere a dischi o partizioni MS-DOS/Windows da Linux \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 MSDOS fs support: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 UMSDOS: Unix-like filesystem on top of standard MSDOS filesystem: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 VFAT (Windows-95) fs support: 'm' (comprende il supporto a FAT32) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 ISO 9660 CDROM filesystem support: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Microsoft Joliet CDROM extensions: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Minix fs support: 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NTFS filesystem support (read only): 'n' tranne se volete accedere a filesystem Windows NT (il supporto in scrittura \'e8 PERICOLOSO) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 OS/2 HPFS filesystem support (read only): 'n' tranne se volete accedere a filesystem OS/2 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 /proc filesystem support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 /dev/pts filesystem for Unix98 PTYs: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 QNX filesystem support (EXPERIMENTAL): 'n' tranne se volete accedere a filesystem QNX \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Second extended fs support: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_NETWORKFILESYSTEM}{\*\bkmkend ID_NETWORKFILESYSTEM}\b\fs28\f1 3.2.31. Network File Systems\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Coda filesystem support (advanced network fs): 'n' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NFS filesystem support: 'y' se il vostro PC \'e8 un client NFS \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NFS server support: 'y' se il vostro PC \'e8 un server NFS, e nel caso lasciate a 'n' "Emulate SUN NFS server" \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NCP filesystem support (to mount NetWare volumes): 'y' se volete montare partizioni di rete da server Novel NetWare, altrimenti 'n' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PARTITIONTYPES}{\*\bkmkend ID_PARTITIONTYPES}\b\fs28\f1 3.2.32. Partition Types\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_NATIVELANGUAGE}{\*\bkmkend ID_NATIVELANGUAGE}\b\fs28\f1 3.2.33. Native Language Support\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne a quelle seguenti: \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Codepage 437 (United States, Canada): 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Codepage 850 (Europe): 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NLS ISO 8859-1: 'm' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 NLS ISO 8859-15: 'm' \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CONSOLEDRIVERS}{\*\bkmkend ID_CONSOLEDRIVERS}\b\fs28\f1 3.2.34. Console drivers\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte tranne a quelle seguenti: \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 VGA text console: 'y' \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 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 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Support for frame buffer devices (EXPERIMENTAL): 'y' se volete attivare il framebuffer \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 VESA VGA graphics console: 'y' se volete attivare il framebuffer \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SOUNDSUBSYSTEM}{\*\bkmkend ID_SOUNDSUBSYSTEM}\b\fs28\f1 3.2.35. Sound\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tuttetranne a quelle seguenti: \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 Sound card support: 'm' se avete una scheda audio, e selezionate il driver opportuno \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_LOWLEVELSOUND}{\*\bkmkend ID_LOWLEVELSOUND}\b\fs28\f1 3.2.36. Additional low level sound drivers\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 [...VARIE]: in genere, 'n' a tutte, o selezionate il driver opportuno \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_KERNELHACKING}{\*\bkmkend ID_KERNELHACKING}\b\fs28\f1 3.2.37. Kernel hacking\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 Magic SysRq key: 'n' \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_COMPILAZIONEINSTALLAZIONE}{\*\bkmkend ID_COMPILAZIONEINSTALLAZIONE}\b\fs34\f1 3.3. Compilazione e installazione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Fatto tutto questo, salvate con l'opzione apposita, incrociate le dita e date: \par\pard\sb200\sl234 \fs18\lang1024\f2 make dep && make clean && make bzImage && make modules\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 uscite e andate a farvi un caff\'e8 o una lunga passeggiata (con un processore a 200 MHz servono in genere una quindicina di minuti, regolatevi!) Non \'e8 come aspettare un figlio, ma la prima volta ci si ritrova con le unghie completamente rosicchiate ;-). Se tutto \'e8 andato bene, il vostro nuovo bambino... ehm, kernel, \'e8 contenuto nel file '\b /usr/src/linux/arch/i386/boot/bzImage\b0 '. Complimenti! Ora bisogna installare il tutto. Per prima cosa i moduli. Se avete ricompilato la stessa versione di kernel che state gi\'e0 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): \par\pard\sb200\sl234 \fs18\lang1024\f2 mv /lib/modules/VERSIONE_KERNEL /lib/modules/VERSIONE_KERNEL.old\sa0\par\fi0\sb0 make modules_install\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Fatto questo, controllate se nella directory '\b /boot\b0 ' esistono i seguenti file: \par\pard\sb200\sl234 \fs18\lang1024\f2 ls -l /boot/System.map /boot/vmlinuz\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 come prima, se il primo carattere \'e8 una '\b l\b0 ' si tratta di collegamenti (rimuoveteli con \b rm -f /boot/...\b0 ), mentre se \'e8 '\b -\b0 ' si tratta di file (rinominateli con \b mv -f /boot/NOMEFILE /boot/NOMEFILE-VERSIONE_KERNEL_PRECEDENTE\b0 ). Ora copiate in '\b /boot\b0 ' il kernel e la \b System-map\b0 aggiornate e ricreate i collegamenti (l'esempio si riferisce sempre al kernel 2.2.14): \par\pard\sb200\sl234 \fs18\lang1024\f2 cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.14\sa0\par\fi0\sb0 ln -s /boot/vmlinuz-2.2.14 /boot/vmlinuz\sa0\par\fi0\sb0 cp /usr/src/linux/System.map /boot/System.map-2.2.14\sa0\par\fi0\sb0 ln -s /boot/System.map-2.2.14 /boot/System.map\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se usate '\b loadlin\b0 ', copiate il nuovo kernel nella sua directory (guardate la pagina apposita del \i Quick&Easy Configuration HOWTO\i0 ). Mentre se usate '\b lilo\b0 ', modificate il file '\b /etc/lilo.conf\b0 ' 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 \'e8 quella tra le due righe di ###..., e qualcosa potrebbe essere diverso): \par\pard\sb200\sl234 \fs18\lang1024\f2 boot = /dev/hda\sa0\par\fi0\sb0 delay = 5\sa0\par\fi0\sb0 vga = normal\sa0\par\fi0\sb0 root = /dev/hdb2 # correggere con la vostra partizione di root!\sa0\par\fi0\sb0 read-only\sa0\par\fi0\sb0 image = /boot/vmlinuz.old # controllate o rinominate il vecchio kernel di conseguenza\sa0\par\fi0\sb0 label = oldlinux\sa0\par\fi0\sb0 #################################\sa0\par\fi0\sb0 image = /boot/vmlinuz # questo \'e8 il nuovo kernel\sa0\par\fi0\sb0 label = linux\sa0\par\fi0\sb0 #################################\sa0\par\fi0\sb0 other = /dev/hda1\sa0\par\fi0\sb0 label = dos\sa0\par\fi0\sb0 table = /dev/hda\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e ridate "\b /sbin/lilo -v\b0 " per rimetterlo a posto (\b man lilo\b0 , \b man lilo.conf\b0 o \i lilo-howto\i0 per altre informazioni). Se volete rimuovere lilo, usate il comando "\b fdisk /mbr\b0 " dal DOS, oppure "\b lilo -U\b0 " da Linux. Per la stampante, controllate che il file '\b /etc/conf.modules\b0 ' contenga le righe: \par\pard\sb200\sl234 \fs18\lang1024\f2 alias parport_lowlevel parport_pc\sa0\par\fi0\sb0 options parport_pc io=0x378, 0x278 irq=7 auto\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se volete provare il kernel prima di usarlo definitivamene, tralasciate per ora tutta la parte dopo "\b make modules_install\b0 " e copiatelo su un dischetto che userete come boot (il floppy NON va montato per eseguire queste operazioni!!!): \par\pard\sb200\sl234 \fs18\lang1024\f2 cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.14\sa0\par\fi0\sb0 cp /usr/src/linux/vmlinuz-2.2.14 /dev/fd0\sa0\par\fi0\sb0 rdev /dev/fd0 /dev/hda2\sa0\par\fi0\sb0 rdev -R /dev/fd0 1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Sostituite a \b /dev/hda2\b0 la vostra partizione di root ('/')!!! Questo \'e8 tutto! \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Per Debian: dopo aver ricompilato, potete ottenere un pacchetto \b .deb\b0 contenente kernel e moduli e che aggiorna anche in automatico lilo, col seguente comando dato da dentro la dir '\b /usr/src/linux/\b0 ' :\hyphpar0\par\pard\sb200\li400\sl211 \fs16\f2 make-kpkg --revision pingu.0 kernel_image\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \fs18\f1 dove potete sostituire pingu.0 con quello che volete.\hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 4. Internet}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 4. Internet}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_INTERNET}{\*\bkmkend ID_INTERNET}\b\fs41\f1 Capitolo 4. Internet\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 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 \i X-window\i0 , pu\'f2 sembrare un controsenso, ma se vi abituerete a fare alcune cose da shell vedrete che sarete molto pi\'f9 produttivi e veloci che sotto X. E poi, per leggere e inviare mail e news, che sono puro testo, \'e8 inutile caricare pesanti tool grafici, che spesso crashano sul pi\'f9 bello. Oppure potreste avere problemi col server X, rimanendo tagliati fuori (se postate un messaggio sul perch\'e9 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. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Io sono un'anomalia: Linux \'e8 bello perch\'e9 si possono fare le stesse cose in svariati modi. Parto sempre da shell, ma uno dei primi comandi che do \'e8 startx, perch\'e9 il mio Celeron 450 con 256Mb regge bene e mi piace il desktop di KDE. Per avviare la connessione uso kppp perch\'e9 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 del \i Quick&Easy Configuration HOWTO\i0 .\hyphpar0\par\pard\sb100\li400\sl234 Aggiornamento (31/7/2001): nel mio cammino verso il Nirvana Pinguino, ormai uso solo tool testuali per cose nate testuali e che continuano ad essere ancor'oggi prevalentemente testuali. Ormai uso solo Slrn, Mutt, e le connessioni da console con Pon e Poff. Per Irc e Icq uso Xchat e Licq, ma in caso di emergenza ho sempre sottomano le loro versioni da console ;-).\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Naturalmente dovete avere il supporto per il protocollo PPP nel kernel (scrivete \b pppd\b0 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 \'e8 supportato, con i parametri si pu\'f2 configurare anche una caffettiera! In particolare dovete chiedere gli indirizzi IP dei DNS, che in Windows vengono settati in automatico. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Per conoscere in Windows gli IP dei DNS (in caso vengano assegnati in automatico), per poterli inserire in Linux, che invece li richiede obbligatoriamente, eseguite (tramite la voce \b Esegui...\b0 del Menu d'Avvio o Start) il comando \b winipcfg\b0 DOPO esservi collegati a internet, poi cliccate su \b Dettagli >>\b0 e guardate la seconda voce (DNS) della schermata che vi trovate davanti: quello che vedete \'e8 l'IP del DNS primario del provider che state usando, mentre premendo il tasto con i 2 punti ".." avrete l'IP del DNS secondario.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per prima cosa configurate il modem, creando se non gi\'e0 presente un link tra il dispositivo seriale e il modem. Ricordate che in Linux le seriali corrispondono a \b /dev/ttySX\b0 , dove X vale 0 per \b COM1\b0 , 1 per \b COM2\b0 e cos\'ec via (NON usate pi\'f9 le vecchie \b /dev/cuaX\b0 , ormai cadute in disuso e deprecate). Nel mio sistema il modem \'e8 connesso a \b COM2\b0 , quindi il collegamento sar\'e0: \par\pard\sb200\sl234 \fs18\lang1024\f2 ln -sf /dev/ttyS1 /dev/modem\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Prima di continuare una nota: esistono in giro dei FALSI modem, non perch\'e9 contengano mattoni, alla napoletana ;-), ma perch\'e9 hanno una parte della logica di controllo implementata via software. E qual \'e8 il software pi\'f9 diffuso, purtroppo? Quello di zio Bill! Per questo sono anche chiamati softmodem o winmodem. La quasi totalit\'e0 di quelli interni PCI sono winmodem (scrivo quasi perch\'e9 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 \'e8 un Cosexant, o un Motorola SM56, o un Soft56k e compagnia, solo per citare quelli che pi\'f9 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'\'e8 alcun supporto, speriamo che qualcosa si muova dopo l'uscita dei kernel 2.4.x, che incominceranno a supportare anche l'USB. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Aggiornamento: pare che ultimamente le cose si siano smosse e finalmente alcuni Winmodem inizino a funzionare anche con Linux. Pare che ora i modem Conexant e altri funzionino, ma non so quanto bene. Forse funziona anche qualche modem USB, ma per maggiori dettagli riferitevi a http://www.linmodems.org.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Continuiamo. Lanciate minicom da utente \b root\b0 , se tutto procede bene dovreste ottenere un output come il seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 AT S7=45 S0=0 L1 V1 X4 &C1 E1 Q0\sa0\par\fi0\sb0 OK\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Uscite da minicom con \b CTRL-A X Invio\b0 . Create o modificate tutti i file seguenti, cambiando i parametri di DNS, dominio, numero di telefono, nome utente e password. \par\pard\sb100\sl260 \b === file: /etc/resolv.conf ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # cambiate dominio e DNS (se avete impostato un DNS locale, sostituite\sa0\par\fi0\sb0 # a libero.it il vostro dominio, e a nameserver il valore 127.0.0.1)\sa0\par\fi0\sb0 domain libero.it\sa0\par\fi0\sb0 nameserver 195.210.91.1\sa0\par\fi0\sb0 nameserver 195.210.91.2\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/ppp/pon ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 # NON lasciate spazi dopo la \\ alla fine delle righe seguenti\sa0\par\fi0\sb0 # e sostituite il vostro nome utente alla fine dell'ultima riga\sa0\par\fi0\sb0 /usr/sbin/pppd connect "/usr/sbin/chat -v -f /etc/ppp/ppp-chat" noauth \\\sa0\par\fi0\sb0 /dev/modem 57600 deflate 12,12 crtscts debug lock modem nodetach \\\sa0\par\fi0\sb0 defaultroute noipdefault login noproxyarp asyncmap 0 hide-password \\\sa0\par\fi0\sb0 ipcp-accept-remote lcp-echo-interval 30 lcp-echo-failure 8 user mionomeutente &\sa0\par\fi0\sb0 # aggiungete le 2 opzioni seguenti alla riga precedente per avviare in automatico\sa0\par\fi0\sb0 # la connessione non appena pppd riscontra traffico sulla seriale\sa0\par\fi0\sb0 # demand idle 30\sa0\par\fi0\sb0 # i messaggi d'errore sono inviati dal pppd verso il syslog, da dove potrete\sa0\par\fi0\sb0 # leggerli da root con il comando: tail -n 25 -f /var/log/messages\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/ppp/poff ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 kill -INT `cat /var/run/ppp0.pid`\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/ppp/pap-secrets ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #inserite qui il vostro nome utente e la vostra password\sa0\par\fi0\sb0 mionomeutente * miapassword\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/ppp/ppp-chat ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # Cambiate la stringa di init e il numero del vostro ISP alla fine\sa0\par\fi0\sb0 TIMEOUT 30\sa0\par\fi0\sb0 ABORT BUSY\sa0\par\fi0\sb0 ABORT ERROR\sa0\par\fi0\sb0 ABORT 'NO CARRIER'\sa0\par\fi0\sb0 ABORT 'NO DIALTONE'\sa0\par\fi0\sb0 ABORT 'Invalid Login'\sa0\par\fi0\sb0 ABORT 'Login incorrect'\sa0\par\fi0\sb0 '' '+++AT&FB40&K44X3S2=128'\sa0\par\fi0\sb0 OK 'ATDT096851010'\sa0\par\fi0\sb0 CONNECT ''\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora date tutti i seguenti comandi, per consentire anche ad un utente comune di avviare e chiudere la connessione. \par\pard\sb200\sl234 \fs18\lang1024\f2 chmod 750 /etc/ppp/pon\sa0\par\fi0\sb0 chmod 750 /etc/ppp/poff\sa0\par\fi0\sb0 chmod 600 /etc/ppp/pap-secrets\sa0\par\fi0\sb0 ln -sf /etc/ppp/pon /usr/bin\sa0\par\fi0\sb0 ln -sf /etc/ppp/poff /usr/bin\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora verificate che esista un gruppo degli utenti che possono usare il ppp. Controllate che in \b /etc/group\b0 ci sia una riga simile alla seguente, altrimenti inseritela, magari usando il comando \b addgroup\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 pppusers:x:230:\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e modificatela come la seguente, inserendo alla fine separati da virgole i nome degli utenti che possono collegarsi: \par\pard\sb200\sl234 \fs18\lang1024\f2 pppusers:x:230:VostroNomeDiLogin,AltroUtentePpp\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Continuate a dare i comandi seguenti: \par\pard\sb200\sl234 \fs18\lang1024\f2 chown root.pppusers /dev/ttyS1\sa0\par\fi0\sb0 chmod 664 /dev/ttyS1\sa0\par\fi0\sb0 chown root.pppusers /etc/ppp/pon\sa0\par\fi0\sb0 chown root.pppusers /etc/ppp/poff\sa0\par\fi0\sb0 chown root.pppusers /usr/bin/pon\sa0\par\fi0\sb0 chown root.pppusers /usr/bin/poff\sa0\par\fi0\sb0 chmod a+s /usr/sbin/pppd\sa0\par\fi0\sb0 chmod a+s /usr/sbin/chat\sa0\par\fi0\sb0 ln -sf /usr/sbin/pppd /usr/bin\sa0\par\fi0\sb0 ln -sf /usr/sbin/chat /usr/bin\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per un minimo di sicurezza, modificate i file \b /etc/hosts.allow\b0 e \b /etc/hosts.deny\b0 come segue (ed eliminate da \b /etc/inetd.conf\b0 i servizi che non vi servono, cio\'e8 tutti tranne auth, commentandoli con #; se avete configurato un news server locale lasciate attivo anche nntp): \par\pard\sb100\sl260 \b === file: /etc/hosts.allow ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ALL:127.0.0.1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/hosts.deny ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ALL:ALL\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Potete avviare ed arrestare automaticamente dei programmi insieme alla connessione, tramite i file script \b /etc/ppp/ip-up\b0 e \b /etc/ppp/ip-down\b0 , che vengono richiamati dal pppd in automatico appena la connessione \'e8 attiva e quando non \'e8 pi\'f9 presente. ecco alcuni esempi: \par\pard\sb100\sl260 \b === file: /etc/ppp/ip-up ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 # inserite le righe alla fine di quanto eventualmente\sa0\par\fi0\sb0 # gi\'e0 presente e prima di un eventuale exit 0\sa0\par\fi0\sb0 # avvia il proxy server in modalit\'e0 online\sa0\par\fi0\sb0 wwwoffle -online\sa0\par\fi0\sb0 # attiva il firewall\sa0\par\fi0\sb0 /usr/sbin/firewall start\sa0\par\fi0\sb0 # invia la posta in giacenza\sa0\par\fi0\sb0 sendmail -q\sa0\par\fi0\sb0 # scarica le news usenet\sa0\par\fi0\sb0 fetchnews\sa0\par\fi0\sb0 # scarica la posta dell'utente mrshark ricontrollando ogni 300 secondi\sa0\par\fi0\sb0 su mrshark -c "fetchmail -d 300"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/ppp/ip-down ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 #interrompe lo scaricamento della posta\sa0\par\fi0\sb0 su mrshark -c "fetchmail -q"\sa0\par\fi0\sb0 # abbatte il firewall\sa0\par\fi0\sb0 /usr/sbin/firewall stop\sa0\par\fi0\sb0 # pone il proxy server in modalit\'e0 offline\sa0\par\fi0\sb0 wwwoffle -offline\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Dovreste essere a posto, ora potrete avviare la connessione con \b pon\b0 e abbatterla con \b poff\b0 . E invece NO! Il \b pon\b0 funziona anche da utente, mentre il \b poff\b0 no, perch\'e9 non \'e8 permesso ad un utente che non sia root di abbattere la connessione ppp. Il \i PPP-Howto\i0 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. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 5. Postfix}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 5. Postfix}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_POSTFIX}{\*\bkmkend ID_POSTFIX}\b\fs41\f1 Capitolo 5. Postfix\keepn\hyphpar0\par\pard\sb207\li400\sl234 \fs18 Nota: \b0 Questa parte \'e8 un'estensione del \i mini-postfix-howto\i0 di AGX, autore della distribuzione italiana BadPenguin (http://www.badpenguin.org), e a cui va il merito di buona parte di questa sezione.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \i Postfix\i0 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! \'c8 preferibile al pi\'f9 diffuso \i Sendmail\i0 per ragioni di sicurezza, facilit\'e0 di configurazione e di manutenzione. Prima di installarlo, rimuovete sendmail (le istruzioni sono in fondo alla pagina), altrimenti avrete conflitti tra i due. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONEPOSTFIX}{\*\bkmkend ID_CONFIGURAZIONEPOSTFIX}\b\fs34\lang1024\f1 5.1. Configurazione di Postfix\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Innanzitutto assicuratevi che parta ad ogni avvio, controllate che in \b /etc/rc.d/init.d\b0 (o l'equivalente della vostra distribuzione) ci sia lo script \b postfix\b0 e date \b chkconfig --add postfix\b0 , oppure aggiungete \b postfix start\b0 a \b /etc/rc.d/rc.local\b0 (o equivalente). \par\pard\sb100\sl260 Modificate \b /etc/postfix/aliases\b0 in modo che la posta indirizzata all'utente root venga ricevuta da un utente realmente esistente (\'e8 pericoloso gestire la posta da root, potreste perderla tutta, ricordatelo!), inserendo o modificando l'ultima riga come segue: \par\pard\sb200\sl234 \fs18\lang1024\f2 # Basic system aliases -- these MUST be present.\sa0\par\fi0\sb0 MAILER-DAEMON: postmaster\sa0\par\fi0\sb0 postmaster: root\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # General redirections for pseudo accounts.\sa0\par\fi0\sb0 bin: root\sa0\par\fi0\sb0 daemon: root\sa0\par\fi0\sb0 games: root\sa0\par\fi0\sb0 ingres: root\sa0\par\fi0\sb0 nobody: root\sa0\par\fi0\sb0 system: root\sa0\par\fi0\sb0 toor: root\sa0\par\fi0\sb0 uucp: root\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Well-known aliases.\sa0\par\fi0\sb0 manager: root\sa0\par\fi0\sb0 dumper: root\sa0\par\fi0\sb0 operator: root\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trap decode to catch security attacks\sa0\par\fi0\sb0 decode: root\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Person who should get root's mail\sa0\par\fi0\sb0 root: nome_utente_esistente\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Consiglio di lasciare che postfix contatti l'SMTP del vostro provider, perch\'e9 sempre pi\'f9 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\'e0 nel vostro spool! Consiglio inoltre di impostare l'opzione \b defer_transports=smtp\b0 in \b /etc/postfix/main.cf\b0 per evitare che postfix continui ad interrogare internet per cercare di inviare la posta: a collegamento avvenuto potete usare \b sendmail -q\b0 o \b postfix flush\b0 per inviare tutto (potete inserire il comando in \b /etc/ppp/ip-up\b0 , in modo da fare tutto in automatico a connessione stabilita). Il comando \b mailq\b0 (o \b sendmail -bp\b0 ) vi fornisce informazioni sullo stato del vostro spool SMTP, quali e quanti messaggi sono ancora accodati e altro ancora. Per sapere quando la coda \'e8 vuota, potete usare il seguente script: \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 /usr/sbin/sendmail -q\sa0\par\fi0\sb0 sleep 10\sa0\par\fi0\sb0 while mailq | grep '^[^ ]*\\*' >/dev/null\sa0\par\fi0\sb0 do\sa0\par\fi0\sb0 sleep 10\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Altri comandi utili sono \b postfix start\b0 (avvia postfix), \b postfix reload\b0 (per far s\'ec che postfix rilegga il file di configurazione dopo eventuali cambiamenti), \b postfix stop\b0 (ferma postfix), \b postfix check\b0 (controlla la configurazione di postfix). Ecco un esempio di file \b /etc/postfix/main.cf\b0 (le poche righe da modificare sono indicate all'inizio del file, e eventuali altri parametri presenti nel vostro file \b main.cf\b0 possono essere lasciati al loro valore di default): \par\pard\sb200\sl234 \fs18\lang1024\f2 #- file di configurazione principale di Postfix\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- I parametri che DOVETE cambiare sono i seguenti, seguendo le istruzioni\sa0\par\fi0\sb0 #- date nel file. In particolare, per il relayhost, fate il comando seguente:\sa0\par\fi0\sb0 #- nslookup smtp.vostro.provider\sa0\par\fi0\sb0 #- per conoscere l'IP dell'SMTP del vostro provider, e sostituitelo tra le\sa0\par\fi0\sb0 #- parentesi quadre, LASCIANDOLE!\sa0\par\fi0\sb0 #- "myhostname", "mydomain" e "relayhost"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- la directory della coda di postfix\sa0\par\fi0\sb0 queue_directory = /var/spool/postfix\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- la directory dove risiedono i programmi di postfix (gli RPM di solito li\sa0\par\fi0\sb0 #- installano in /usr/sbin, cambiate di conseguenza per altre installazioni)\sa0\par\fi0\sb0 program_directory = /usr/sbin\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- la directory dove risiedono tutti i programmi del tipo postXXX\sa0\par\fi0\sb0 command_directory = $program_directory\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- la directory che contiene i demoni di postfix\sa0\par\fi0\sb0 daemon_directory = /usr/lib/postfix\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il possessore dei processi di postfix. Usate un utente dedicato, con\sa0\par\fi0\sb0 #- privilegi minimi, e che non sia daemon o nobody, e CREATELO!!!\sa0\par\fi0\sb0 mail_owner = postfix\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- i privilegi di default dell'agente di smistamento locale\sa0\par\fi0\sb0 default_privs = nobody\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- la directory di spool di default, dove finiscono le email in arrivo\sa0\par\fi0\sb0 mail_spool_directory = /var/spool/mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il programma usato per lo smistamento locale delle email. Correggete\sa0\par\fi0\sb0 #- eventualmente il path. In genere per sicurezza \'e8 meglio richiamare\sa0\par\fi0\sb0 #- procmail qu\'ec, piuttosto che da fetchmail\sa0\par\fi0\sb0 mailbox_command = /usr/bin/procmail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il nome COMPLETO del vostro host, compreso il dominio\sa0\par\fi0\sb0 myhostname = pingu.mrshark.home\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il nome del vostro dominio\sa0\par\fi0\sb0 mydomain = mrshark.home\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il dominio che risulter\'e0 l'origine per le email smistate localmente\sa0\par\fi0\sb0 myorigin = $mydomain\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- l'elenco di domini che postfix condiderer\'e0 locali, per i queli cio\'e8\sa0\par\fi0\sb0 #- verranno smistate le email direttamente, senza interpellare l'esterno\sa0\par\fi0\sb0 mydestination = $myhostname, localhost.$mydomain, $mydomain\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- le interfacce di rete da cui accettare email, in genere tutte\sa0\par\fi0\sb0 inet_interfaces = all\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il banner riportato da postfix quando lo si contatta\sa0\par\fi0\sb0 smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- il metodo di trasporto delle email usato di default\sa0\par\fi0\sb0 default_transport = smtp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- l'elenco degli IP delle reti attaccate al computer, ritenute come locali.\sa0\par\fi0\sb0 #- Per un computer singolo basta solo 127.0.0.0/8, mentre per reti pi\'f9 ampie\sa0\par\fi0\sb0 #- aggiungete le relative sottoreti, usando le maschere opportune\sa0\par\fi0\sb0 mynetworks = 127.0.0.0/8, 192.168.0.0/24\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- l'SMTP del vostro provider, cui verranno inviate le email in uscita.\sa0\par\fi0\sb0 #- Se volete che postfix contatti direttamente l'SMTP di destinazione,\sa0\par\fi0\sb0 #- commentate la riga seguente. Le [] evitano la risoluzione del nome\sa0\par\fi0\sb0 #- da parte del DNS, accelerando le operazioni (se inserite l'ip \'e8 meglio)\sa0\par\fi0\sb0 relayhost = [mail.libero.it]\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- disabilita la risoluzione dei nomi di dominio. Se usate quest'opzione,\sa0\par\fi0\sb0 #- DOVETE usare l'indirizzo IP dell'SMTP del vostro provider per il parametro\sa0\par\fi0\sb0 #- relayhost visto in precedenza (usate "nslookup smtp.vostro.provider" ...)\sa0\par\fi0\sb0 disable_dns_lookups = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- informa il postmaster di possibili problemi con il mail-server\sa0\par\fi0\sb0 notify_classes = resource, software, bounce, policy, protocol\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- questo evita connessioni indesiderate spontanee via PPP\sa0\par\fi0\sb0 defer_transports = smtp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- questi lasciateli come sono, indicano i limiti per le operazioni simultanee\sa0\par\fi0\sb0 local_destination_concurrency_limit = 2\sa0\par\fi0\sb0 default_destination_concurrency_limit = 10\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- riscrive gli header mascherandoli, in modo che appaiano come tutti\sa0\par\fi0\sb0 #- provenienti come da un unico host, utile sia in dial-up che in rete.\sa0\par\fi0\sb0 #- Usatelo in unione ai file XXX_canonical, spiegati di seguito\sa0\par\fi0\sb0 masquerade_domains = $mydomain\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- l'elenco degli alias di sistema\sa0\par\fi0\sb0 alias_maps = hash:$config_directory/aliases\sa0\par\fi0\sb0 alias_database = hash:$config_directory/aliases\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- usate questi file per specificare come riscrivere gli indirizzi in uscita\sa0\par\fi0\sb0 #- (in seguito \'e8 presente un esempio). Potete usare il solo canonical sia per\sa0\par\fi0\sb0 #- gli indirizzi in ingresso che per quelli in uscita, oppure usare i file\sa0\par\fi0\sb0 #- sender_canonical e recipient_canonical per essere pi\'f9 precisi. Se presenti\sa0\par\fi0\sb0 #- tutti, comunque il file canonical \'e8 l'ultimo ad essere processato, perch\'e9\sa0\par\fi0\sb0 #- il pi\'f9 generico. In genere basta usare solo il file sender_canonical,\sa0\par\fi0\sb0 #- commentate gli altri. Se ad esempio inviate una email come utente locale pippo,\sa0\par\fi0\sb0 #- verr\'e0 riscritta in uscita come se fosse inviata da pippo@libero.it, per esempio\sa0\par\fi0\sb0 #canonical_maps = hash:$config_directory/canonical\sa0\par\fi0\sb0 #recipient_canonical_maps = hash:$config_directory/recipient_canonical\sa0\par\fi0\sb0 sender_canonical_maps = hash:$config_directory/sender_canonical\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- usate questo file per riscrivere gli indirizzi delle email in ingresso, in modo\sa0\par\fi0\sb0 #- che se contengono uno dei vostri indirizzi email pubblici, vengano riscritti\sa0\par\fi0\sb0 #- come se fossero diretti al vostro utente locale indicato (un esempio in seguito)\sa0\par\fi0\sb0 virtual_maps = hash:$config_directory/virtual\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- anti-spam! Confronta gli header delle email con quelli riconosciuti come spammers,\sa0\par\fi0\sb0 #- e in tal caso scarta l'email. Rallenta leggermente il processo! La prima riga\sa0\par\fi0\sb0 #- definisce i server usati per il controllo, la seconda e la terza impongono delle\sa0\par\fi0\sb0 #- restrizioni, la quarta definisce un file aggiuntivo in cui inserire delle espressioni\sa0\par\fi0\sb0 #- regolari tramite le quali scartare a priori email potenzialmente pericolose, come il\sa0\par\fi0\sb0 #- famoso virus I-Love-You. NON va fatto il postmap! La quinta richiede che l'MTA invii\sa0\par\fi0\sb0 #- un comando HELO per stabilire la connessione, cosa che i software di spam di solito\sa0\par\fi0\sb0 #- non fanno, mentre gli MTA veri fanno quasi sempre!\sa0\par\fi0\sb0 maps_rbl_domains = blackholes.mail-abuse.org, dialups.mail-abuse.org, rbl.maps.vix.com, dul.maps.vix.com\sa0\par\fi0\sb0 smtpd_client_restrictions = permit_mynetworks, reject_maps_rbl, reject_unknown_hostname\sa0\par\fi0\sb0 smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain\sa0\par\fi0\sb0 #header_checks = regexp:$config_directory/header_checks\sa0\par\fi0\sb0 smtpd_helo_required = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #- Se volete un backup TOTALE di tutto quello che passa attraverso Postfix,\sa0\par\fi0\sb0 #- togliete il commento dalla riga seguente e modificate l'indirizzo email.\sa0\par\fi0\sb0 #- L'indirizzo indicato ricever\'e0 in copia nascosta (BCC) tutte le email!!!\sa0\par\fi0\sb0 #always_bcc = indirizzo.email@backup.com\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 Se volete gestire pi\'f9 domini virtuali sul vostro server, per fare in modo che le email che dovrebbero essere smistate in locale non vadano a zonzo per internet prima di essere consegnate, dovete elencare TUTTI i domini che sono LOCALI nella direttiva \b mydestination\b0 , separandoli con virgole.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora create i file per far corrispondere i vostri indirizzi email ai vostri utenti locali. Si tratta dei file \b /etc/postfix/sender_canonical\b0 (che contiene gli indirizzi che verranno inseriti nel campo from per ogni utente al posto di \i utente@vostra.macchina\i0 ) e \b /etc/postfix/virtual\b0 (che stabilisce a quali utenti locali vadano inviate le email in base all'indirizzo remoto contenuto). Come esempi ecco i miei file. Questo \'e8 il mio \b /etc/postfix/sender_canonical\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 root mrshark@libero.it\sa0\par\fi0\sb0 mrshark mrshark@libero.it\sa0\par\fi0\sb0 antonio mrshark@libero.it\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e questo il mio \b /etc/postfix/virtual\b0 (tutte le email dai miei indirizzi finiscono all'utente locale \i mrshark\i0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 mrshark@linuxfan.com mrshark\sa0\par\fi0\sb0 mrshark@libero.it mrshark\sa0\par\fi0\sb0 mrshark@tiscalinet.it mrshark\sa0\par\fi0\sb0 antonio.fragola@tin.it mrshark\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ogni volta che modificate \b /etc/postfix/aliases\b0 dovete rigenerare il database dando il comando: \par\pard\sb200\sl234 \fs18\lang1024\f2 postalias /etc/postfix/aliases\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 mentre se modificate il file \b /etc/postfix/sender_canonical\b0 date: \par\pard\sb200\sl234 \fs18\lang1024\f2 postmap /etc/postfix/sender_canonical\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 oppure per \b /etc/postfix/virtual\b0 date: \par\pard\sb200\sl234 \fs18\lang1024\f2 postmap /etc/postfix/virtual\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Dopo ogni modifica a qualcuno di questi tre file, dovete riavviare postfix con il comando \b postfix reload\b0 . Ricordate di installare e configurare anche un \i MDA\i0 , come \b procmail\b0 , per far smistare la posta in arrivo in mailbox diverse piuttosto che in una sola di default. \par\pard\sb100\sl260 Se volete un'analisi dei log di postfix, potete usare il programma in perl \b pflogsumm\b0 , scaricabile da http://home.msen.com/~jimsun/postfix_contrib.html, inserendo con \b crontab -e\b0 una riga tipo la seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 0 2 * * * /path/to/pflogsumm.pl -d today /var/log/maillog | mail -s "Postfix Mail Report" root\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'utente indicato alla fine della riga precedente ricever\'e0 delle email contenenti un'analisi dei log di postfix. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_DISATTIVAZIONESENDMAIL}{\*\bkmkend ID_DISATTIVAZIONESENDMAIL}\b\fs34\lang1024\f1 5.2. Disattivazione e disinstallazione di Sendmail\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Per disattivare sendmail date i seguenti comandi: \par\pard\sb200\sl234 \fs18\lang1024\f2 mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF\sa0\par\fi0\sb0 mv /usr/bin/newaliases /usr/bin/newaliases.OFF\sa0\par\fi0\sb0 mv /usr/bin/mailq /usr/bin/mailq.OFF\sa0\par\fi0\sb0 chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF /usr/bin/mailq.OFF\sa0\par\fi0\sb0 /usr/sbin/sendmail.OFF -q\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'ultimo comando serve a svuotare dalle eventuali email la coda delle email, inviandole. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Per \i RedHat\i0 e \i Mandrake\i0 : se installando \b postfix\b0 vi dice che c'\'e8 un conflitto con \b sendmail\b0 , devete prima rimuovere quest'ultimo, magari prima facendovi un backup dei suoi file di configurazione, nel caso (ma quando mai! ;-) ) voleste ritornare indietro. \b Postfix\b0 fornisce dei \i wrapper\i0 per i comandi di \b sendmail\b0 , quindi forzate la rimozione con l'opzione "\b --nodeps\b0 ", per ignorare le dipendenze. Se volete semplicemente disattivarlo, fate come mostrato poco fa, altrimenti per disinstallarlo, date i seguenti comandi:\hyphpar0\par\pard\sb200\sl234 \f2 mkdir /root/sendmail-old\sa0\par\fi0\sb0 cp /etc/aliases /root/sendmail-old/\sa0\par\fi0\sb0 cp /etc/sendmail.cf /root/sendmail-old/\sa0\par\fi0\sb0 cp /etc/sendmail.cw /root/sendmail-old/\sa0\par\fi0\sb0 cp /etc/mail/* /root/sendmail-old/\sa0\par\fi0\sb0 rpm -e sendmail sendmail-doc sendmail-cf --nodeps\sa0\par\fi0\sb0 killall sendmail\sa0\par\fi0\sb0 rpm -Uvh postfix-19990906_pl07.i586.rpm\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 (l'ultimo comando potrebbe essere diverso, nel caso abbiate una versione pi\'f9 recente di \b postfix\b0 ). \par\pard\sb100\sl260 Se avevate un'installazione funzionante precedente di \b sendmail\b0 , potete importare i vecchi alias in \b postfix\b0 senza riscriverli tutti, copiando dal backup precedente \b /root/sendmail-old/aliases\b0 in \b /etc/postfix/aliases\b0 e dando il comando \b newaliases\b0 per creare il file \b aliases.db\b0 necessario a postfix. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 6. Fetchmail}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 6. Fetchmail}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_FETCHMAIL}{\*\bkmkend ID_FETCHMAIL}\b\fs41\f1 Capitolo 6. Fetchmail\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 \b Fetchmail\b0 \'e8 il programma che si occupa di ricevere la posta dalle vostre caselle email remote e passarle a procmail che si occupa dello smistamento locale. \'c8 forse il programma pi\'f9 semplice da configurare, basta creare nella propria home un file \fs18\f2 .fetchmailrc\fs20\f0 simile al seguente: \par\pard\sb100\sl260 \b === file: $HOME/.fetchmailrc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 poll popmail.libero.it timeout 60 with proto POP3\sa0\par\fi0\sb0 user "tuo-nome-utente-remoto" there\sa0\par\fi0\sb0 with password "tua-password-remota"\sa0\par\fi0\sb0 is tuo-login-locale here options fetchall\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 poll pop.tiscalinet.it timeout 60 with proto POP3\sa0\par\fi0\sb0 user "tuo-nome-utente-remoto" there\sa0\par\fi0\sb0 with password "tua-password-remota"\sa0\par\fi0\sb0 is tuo-login-locale here options keep\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Le sezioni possono essere ripetute, aggiungendone altre per eventuali altri pop-server. La sintassi \'e8 simile all'inglese, quindi: interroga (\b poll\b0 ) il server remoto indicato, se non ottieni risposta (\b timeout\b0 ) per 60 secondi abortisci, usa il protocollo (\b proto\b0 ) POP3, con il nome utente (\b user\b0 ) e la password (\b password\b0 ) remoti indicati, che corrisponde all'utente (\b is here\b0 ) dato e passa tutto quello che ricevi al server smtp locale per lo smistamento tramite \b procmail\b0 (si potrebbe usare l'opzione \b mda\b0 di \b fetchmail\b0 , ma per sicurezza \'e8 meglio fare richiamare \b procmail\b0 dall'smtp). \b options keep\b0 mantiene la posta sul server remoto, senza cancellarla dopo averla scaricata, mentre \b options fetchall\b0 scarica tutti i messaggi, sia vecchi che nuovi. \par\pard\sb100\sl260 Ricordate che il file \fs18\f2 .fetchmailrc\fs20\f0 deve avere al piu' attributi \b 0710\b0 (io uso \b 0600\b0 ), altrimenti \b fetchmail\b0 non parte: quindi date nella vostra home-directory un bel: \par\pard\sb200\sl234 \fs18\lang1024\f2 chmod 0710 .fetchmailrc\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per ricevere la vostra posta, date dal prompt di shell il comando: \b fetchmail\b0 . Possibili opzioni utili sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b -v\b0 : (anche ripetuto, come \b -vvvv\b0 ) che stampa a video un resoconto di quello che sta succedendo, pi\'f9 dettagliato in base a quante \b v\b0 mettete \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -c\b0 : controlla se c'\'e8 nuova posta senza scaricarla \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -d n\b0 : (dove \b n\b0 indica il numero di secondi), avvia in modalit\'e0 demone, che controlla e scarica la posta ogni \b n\b0 secondi \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -q\b0 : interrompe lo scaricamento a intervalli regolari della posta \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -a\b0 : scarica sia i vecchi che i nuovi messaggi \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -k\b0 : scarica la posta lasciandola anche sul server remoto \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -F\b0 : cancella i vecchi messaggi dal server remoto \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -l n\b0 : non scarica i messaggi di dimensione superiore a quella indicata con \b n\b0 \hyphpar0\par\pard\sb100\sl260 \lang1040 Ricordate di impostare anche \b procmail\b0 per lo smistamento della posta prelevata nelle vostre caselle locali, altrimenti la posta rimane in \b /var/spool/mail/nomeutente\b0 . \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 NON USATE LA POSTA DA UTENTE \b root\b0 ! \'c8 PERICOLOSO, POTRESTE PERDERLA TUTTA! \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 7. Procmail}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 7. Procmail}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_PROCMAIL}{\*\bkmkend ID_PROCMAIL}\b\fs41\f1 Capitolo 7. Procmail\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INTRODUZIONEPROCMAIL}{\*\bkmkend ID_INTRODUZIONEPROCMAIL}\fs34 7.1. Introduzione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 \b Procmail\b0 \'e8 il programma che si occupa di smistare in diverse caselle le email che arrivano dai vostri account pop o direttamente dal sistema. \'c8 forse il pi\'f9 complicato tra i programmi che dovrete configurare per la gestione della vostra posta elettronica. Prima di tutto alcune precisazioni su alcune convenzioni che uso: le caselle che contengono email in entrata io le chiamo per comodit\'e0 \b IN-qualchecosa\b0 , mentre quelle in uscita sono ovviamente \b OUT-qualcosaltro\b0 , e le mailing-lists con \b ML-ancoraqualcosa\b0 . I nomi di file sono interamente in minuscolo, mentre le directory iniziano con una lettera Maiuscola. I file accessori di \fs18\f2 .procmailrc\fs20\f0 finiscono con "\b .rc\b0 ". Per mia comodit\'e0 tengo di solito i file di configurazione ausiliari nelle directory di pertinenza del servizio, quindi i file richiamati da \fs18\f2 .procmailrc\fs20\f0 sono in \b $HOME/Mail/.Pm\b0 (mentre i file di \b Mutt\b0 sono in \b $HOME/Mail/.Mutt\b0 , i file di \b Slrn\b0 sono in \b $HOME/News/.Slrn\b0 , 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\'f2 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. \par\pard\sb100\sl260 Il file di configurazione di \b Procmail\b0 (\fs18\f2 .procmailrc\fs20\f0 , nella vostra directory \b HOME\b0 ) \'e8 suddiviso in due parti distinte: la prima \'e8 la configurazione vera e propria del programma, con variabili e path vari; la seconda invece \'e8 fatta dall'insieme delle regole che permettono di smistare la posta nei diversi file mailbox. In particolare, per la seconda parte, \'e8 pi\'f9 comodo suddividere le regole in file distinti (da includere nel file principale con la direttiva \b INCLUDERC\b0 ), 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\'ec via. Questa comunque \'e8 la strada seguito nel \i Quick&Easy Configuration HOWTO\i0 . \b Procmail\b0 processa messaggi nell'ordine in cui sono scritte le regole, all'interno del file \fs18\f2 .procmailrc\fs20\f0 o nei file in esso inclusi, e se non trova alcuna regola adatta accoda il messaggio allo spool principale (ecco perch\'e9, senza alcun file .\fs18\f2 procmailrc\fs20\f0 , i messaggi finiscono in \b /var/spool/mail/nomeutente\b0 , in genere mailbox di default di un sistema Linux). Le regole di \b procmail\b0 sono composte da espressioni regolari (la sintassi \'e8 nella sezione apposita), e possono essere divise in tre parti: \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 1.\tab una linea di inizio (con possibili flag), \b :0\b0 , seguito da una serie di flags che ne indicano il comportamento (alcune vengono spiegate nel seguito, le altre possono essere trovate in \b man procmailrc\b0 ). Il secondo "\b :\b0 " indica che si vuole usare un \i lockfile\i0 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 \'e8 in fase di elaborazione da procmail). Dopo il "\b :\b0 " si pu\'f2 indicare un nome per il file di lock, altrimenti verr\'e0 generato in automatico da procmail. \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 2.\tab una o pi\'f9 condizioni, identificate da \b *\b0 come primo carattere \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 3.\tab una linea di smistamento, che pu\'f2 essere un file, una directory o una linea che inizia con \b |\b0 (\i pipe\i0 ), che permette di inviare il messaggio in input ad un programma esterno per una qualche elaborazione, o ancora una linea che inizia per \b !\b0 , che permette di inviare una copia del messaggio a ciascun indirizzo email indicato dopo il \b !\b0 . Altre possibilit\'e0 sono elencate in \b man procmailrc\b0 . \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONEPROCMAIL}{\*\bkmkend ID_CONFIGURAZIONEPROCMAIL}\b\fs34\f1 7.2. File di configurazione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Questo \'e8 un file di configurazione abbastanza generico, pu\'f2 essere usato cos\'ec com'\'e8, perch\'e9 le parti variabili (le regole di smistamento) sono contenute in altri file (elencati alla fine di questo) che vengono richiamati da questo principale: \par\pard\sb100\sl260 \b === file: .procmailrc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #directory\sa0\par\fi0\sb0 MAILDIR = $HOME/Mail # ASSICURATI CHE ESISTA! Le email finiranno qui!\sa0\par\fi0\sb0 PMDIR = $MAILDIR/.Pm # crea anche questa dir\sa0\par\fi0\sb0 PMSRC = $PMDIR\sa0\par\fi0\sb0 DUMMY=`test -d $MAILDIR || mkdir $MAILDIR`\sa0\par\fi0\sb0 DUMMY=`test -d $PMDIR || mkdir $PMDIR`\sa0\par\fi0\sb0 DUMMY=`test -d $MAILDIR/Sent || mkdir $MAILDIR/Sent`\sa0\par\fi0\sb0 DUMMY=`test -d $MAILDIR/Read || mkdir $MAILDIR/Read`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #varie\sa0\par\fi0\sb0 SHELL=/bin/sh\sa0\par\fi0\sb0 LINEBUF=8192\sa0\par\fi0\sb0 PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin\sa0\par\fi0\sb0 DEFAULT=$MAILDIR/IN.default # mailbox di default per le email in entrata. Qui finiscono\sa0\par\fi0\sb0 # le email che non sono elaborate o smistate prima da qualche regola adatta.\sa0\par\fi0\sb0 # Se non definito, in generale le email finiscono in /var/spool/mail/nomeutente.\sa0\par\fi0\sb0 DUMMY=`test -f $DEFAULT || touch $DEFAULT` # crea lo spool principale se non esiste\sa0\par\fi0\sb0 FORMAIL=/usr/bin/formail # path di formail, usato per processare alcune email\sa0\par\fi0\sb0 SENDMAIL=/usr/sbin/sendmail # path di sendmail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #log\sa0\par\fi0\sb0 VERBOSE = yes # impostare a no dopo il debug\sa0\par\fi0\sb0 LOGABSTRACT = all # produce log MOLTO estesi, impostare a no in seguito\sa0\par\fi0\sb0 LOGFILE = $PMDIR/pm.log # file di log\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # variabili utili (possono essere usate nelle regole per abbreviarne la scrittura,\sa0\par\fi0\sb0 # ad esempio come $NomeVariabile)\sa0\par\fi0\sb0 NL = "\sa0\par\fi0\sb0 " # nuova linea (un invio tra "")\sa0\par\fi0\sb0 WSPC = " " # blank: spazio + tab\sa0\par\fi0\sb0 SPC = "[$WSPC]" # Regexp: spazio + tab\sa0\par\fi0\sb0 SPCL = "($SPC|$)" # spazio o tab o nuova linea\sa0\par\fi0\sb0 NSPC = "[^$WSPC]" # NON spazio o tab\sa0\par\fi0\sb0 s = $SPC # abbreviazione: come in Perl \\s\sa0\par\fi0\sb0 d = "[0-9]" # una cifra -- Perl \\d\sa0\par\fi0\sb0 w = "[0-9a-z_A-Z]" # una parola alfanumerica -- Perl \\w\sa0\par\fi0\sb0 W = "[^0-9a-z_A-Z]" # NON una parola alfanumerica -- Perl \\W\sa0\par\fi0\sb0 a = "[a-zA-Z]" # una parola, solo alfabetica\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # imposta la variabile DATE come "mese_esteso-anno"\sa0\par\fi0\sb0 # attenzione, gli apici sono inversi, quindi ALT-GR piu' l'apice normale!\sa0\par\fi0\sb0 DATE = `date +%B-%Y`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #file .rc aggiuntivi\sa0\par\fi0\sb0 INCLUDERC = $PMDIR/general.rc\sa0\par\fi0\sb0 INCLUDERC = $PMDIR/lists.rc\sa0\par\fi0\sb0 INCLUDERC = $PMDIR/autoreply.rc\sa0\par\fi0\sb0 INCLUDERC = $PMDIR/friends.rc\sa0\par\fi0\sb0 INCLUDERC = $PMDIR/spam.rc # attivate 1 solo di questi filtri antispam\sa0\par\fi0\sb0 #INCLUDERC = $PMDIR/spam2.rc\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per usare procmail, dovete istruire i programmi a richiamarlo. Per Fetchmail e Postfix potete trovare le istruzioni nelle relative sezioni del \i Quick&Easy Configuration HOWTO\i0 (si tratta di un rigo per parte), mentre per Sendmail, dovrete creare il file \fs18\f2 .forward\fs20\f0 nella vostra directory \b HOME\b0 (questo passo non \'e8 necessario se procmail \'e8 il gestore locale di default per lo smistamento, come nel caso di \i Redhat\i0 e distribuzioni derivate): \par\pard\sb100\sl260 \b === file: .forward ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 "| IFS=' ' && p=/usr/bin/procmail && test -f $p && exec $p -f- || exit 75 #mrshark"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ricordatevi di sostituire a \i mrshark\i0 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 \b HOME\b0 sia attraversabile. Date i comandi seguenti (quello relativo al .procmailrc serve a prevenire che il file venga ignorato dall'MTA, infatti se ha permessi 666 postfix lo ignora e invia la posta in \fs18\f2 /var/spool/mail/nomeutente\fs20\f0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 cd\sa0\par\fi0\sb0 chmod 644 .forward\sa0\par\fi0\sb0 chmod 644 .procmailrc\sa0\par\fi0\sb0 chmod a+x .\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per controllare i file di log, potete usare lo script \b mailstat\b0 che viene fornito con procmail. Il suo uso \'e8 molto semplice, basta avviarlo fornendo come argomento il path del file di log (l'esempio seguente si riferisce alla configurazione impostata nel file \fs18\f2 .procmailrc\fs20\f0 precedente): \b mailstat $HOME/Mail/.Pm/pm.log\b0 \par\pard\sb100\sl260 \b mailstat\b0 fornisce un rapporto sulle email arrivate e smistate a partire dalla volta precedente in cui \'e8 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 entro dimensioni accettabili il file di log, richiamando \b mailstat\b0 ! Comunque, dopo aver testato procmail, \'e8 utile ridurre i log, impostando \b VERBOSE=no\b0 e \b LOGABSTRACT=no\b0 in \fs18\f2 .procmailrc\fs20\f0 . \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_REGOLEPROCMAIL}{\*\bkmkend ID_REGOLEPROCMAIL}\b\fs34\lang1024\f1 7.3. File di regole (esempi)\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 \b === file: general.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # backup di tutte le email in ingresso\sa0\par\fi0\sb0 # N.B.: se si vuole un backup compresso, sostituire con quanto segue, senza # iniziale\sa0\par\fi0\sb0 :0c:\sa0\par\fi0\sb0 |gzip -9fc >> .backup.gz\sa0\par\fi0\sb0 #:0c:\sa0\par\fi0\sb0 #.backup\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # corregge possibili header from errati\sa0\par\fi0\sb0 :0fhw:\sa0\par\fi0\sb0 | $FORMAIL -I "From " -a "From "\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # emimina i messaggi doppi, copiandoli per sicurezza in un file apposito\sa0\par\fi0\sb0 :0Whc:msgid.lock\sa0\par\fi0\sb0 | $FORMAIL -D 8192 $PMDIR/msgid.cache\sa0\par\fi0\sb0 :0a:\sa0\par\fi0\sb0 .duplicati\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^TO_root\sa0\par\fi0\sb0 IN.admin\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #correzione vecchi messaggi pgp\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * !^Content-Type: message/\sa0\par\fi0\sb0 * !^Content-Type: multipart/\sa0\par\fi0\sb0 * !^Content-Type: application/pgp\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 :0 fBw\sa0\par\fi0\sb0 * ^-----BEGIN PGP MESSAGE-----\sa0\par\fi0\sb0 * ^-----END PGP MESSAGE-----\sa0\par\fi0\sb0 | formail -i "Content-Type: application/pgp; format=text; x-action=encrypt"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0 fBw\sa0\par\fi0\sb0 * ^-----BEGIN PGP SIGNED MESSAGE-----\sa0\par\fi0\sb0 * ^-----BEGIN PGP SIGNATURE-----\sa0\par\fi0\sb0 * ^-----END PGP SIGNATURE-----\sa0\par\fi0\sb0 | formail -i "Content-Type: application/pgp; format=text; x-action=sign"\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # corregge indicatori di firme errati (maledetto outlook...)\sa0\par\fi0\sb0 :0 fBw\sa0\par\fi0\sb0 * ^--$\sa0\par\fi0\sb0 | sed -e 's/^--$/-- /'\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # corregge prefissi di risposta errati (sempre sia maledetto outlook...)\sa0\par\fi0\sb0 :0 fHw\sa0\par\fi0\sb0 * ^Subject:.*R:\sa0\par\fi0\sb0 | sed -e 's/R:/Re:/g'\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # "impipa" a Little Brother DataBase per conservare\sa0\par\fi0\sb0 # gli indirizzi email di chiunque mi scriva\sa0\par\fi0\sb0 :0hc\sa0\par\fi0\sb0 | lbdb-fetchaddr\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 Il flag \b f\b0 permette di considerare la \i pipe\i0 seguente come un filtro; il flag \b h\b0 impone che siano inviati anche gli \i header\i0 in \i pipe\i0 ; il flag \b w\b0 impedisce che il file di lock sia rilasciato fino a quando il comando in \i pipe\i0 non ha concluso il suo processo. Il flag \b c\b0 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\'e0 un confronto positivo (eventualmente facendola proseguire anch'essa con un flag \b c\b0 ), e quindi togliendola dal flusso, o finiranno nello spool principale nel caso contrario. Il flag \b W\b0 ha lo stesso comportamento di quello \b w\b0 , ma non invia messaggi di avvertimento sullo schermo ("\i Program Failure\i0 "). Infine il flag \b a\b0 , 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"). La \i macro\i0 "\b TO_\b0 " viene spiegato tra poco. Le ultime regole correggono alcuni messaggi che potrebbero risultare errati (vecchi pgp, outlook...), e conservano gli indirizzi nell'archivi di LBDB, un programma che consente di raccogliere informazioni sui mittenti.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: lists.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 DUMMY=`test -d $MAILDIR/Lists || mkdir $MAILDIR/Lists`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^TO_procmail@informatik.rwth-aachen.de\sa0\par\fi0\sb0 Lists/ML-procmail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^TO_vim@vim.org\sa0\par\fi0\sb0 Lists/ML-vim-$DATE\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: TO_\b0 \'e8 una \i macro\i0 predefinita di procmail che intercetta un indirizzo email fra gli header destinazione (\b To\b0 , \b Cc\b0 , \b Resent-To\b0 , ecc.). Va scritto ESATTAMENTE come lo vedete (* ^TO_indirizzo@email), rispettando spazi e maiuscole. Non inserite simboli < o >. Altre informazioni all'interno di \b man procmailrc\b0 .\hyphpar0\par\pard\sb200\li400\sl234 \b Suggerimento: \b0 Inserite le regole per le \i mailing-list\i0 pi\'f9 trafficate all'inizio di \fs16\f2 lists.rc\fs18\f1 , in modo che i messaggi vengano elaborati prima e attraversino meno regole, velocizzando il processo.\hyphpar0\par\pard\sb200\li400\sl234 \b Nota: \b0 Il secondo esempio invece suddivide le email anche in base a mese e anno (la variabile \b DATE\b0 \'e8 impostata in \fs16\f2 .procmailrc\fs18\f1 ), il tutto in automatico (mese e anno sono quelli dello smistamento, NON dell'invio dagli autori alla mailing-list!) !\hyphpar0\par\pard\sb100\li400\sl234 Le email da mailing-list finiscono in una directory apposita, che viene creata in automatico se non esiste.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: spam.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 :0:\sa0\par\fi0\sb0 * ^from.*qualche\\.rompi\\.balle@spamlandia\\.com\sa0\par\fi0\sb0 /dev/null\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^from.*sex\sa0\par\fi0\sb0 /dev/null\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # free money? Ma andassero a cag**e...\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * ^Subject:.*\\$\\$\\$\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # filtro tramite black-list\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * ? formail -x"From" -x"From:" -x"Sender:" -x"Reply-To:" -x"Return-Path:" -x"To:" | egrep -is -f $PMDIR/black.lst\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # email che non hanno me come destinatario\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * !^TO .*(mrshark|fragola).*\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # X-Advertisement header = spam!\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-Advertisement:.*\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # email indirizzate a nessuno!\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * To:[ ]*$\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # header "To:" assente!\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * !^To: .*\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # campi Message-ID vuoti di solito indicano mailserver\sa0\par\fi0\sb0 # fuori norma, spesso usati per inviare spam.\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * ^Message-ID.*<>\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 Lo spam finisce dritto dritto nel nulla! Notate l'uso di \b \\.\b0 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). \b /dev/null\b0 \'e8 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 \'e8 necessario mettere \b .*\b0 alla fine: \'e8 sottinteso, e in questo caso tutte le email che contengono la stringa \i sex\i0 vengono eliminate. La terza filtra i messaggi che contengono $$$ nel Subject:. Le ultime regole sono spiegate nella sezione seguente dei trucchetti.\hyphpar0\par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 I due file di regole \fs16\f2 spam.rc\fs18\f1 e \fs16\f2 spam2.rc\fs18\f1 sono attualmente alternativi! Infatti molte delle cose presenti nel primo file sono fatte anche da \b SpamBouncer\b0 , e per filtri specifici potete sempre usare la Black-List. Attivatene quindi un solo file in \fs16\f2 .procmailrc\fs18\f1 ! \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \b === file: friends.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 :0:\sa0\par\fi0\sb0 * ^from.*gino@pluto\\.cxm\sa0\par\fi0\sb0 gino\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^subject.*barzellett\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 :0c:\sa0\par\fi0\sb0 ! michele@yahoo.com\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 barzellette\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 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 \i barzellett\i0 (quindi sia barzelletta che barzellette) nel \i subject\i0 , ne viene generata una copia che viene inoltrata a \b michele@yahoo.com\b0 , dopo di che l'email finisce nella mailbox \b barzellette\b0 e la regola si conclude.\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_ADVANCEDPROCMAIL}{\*\bkmkend ID_ADVANCEDPROCMAIL}\b\fs34 7.4. Usi avanzati e trucchetti\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_MLPROCMAIL}{\*\bkmkend ID_MLPROCMAIL}\fs28 7.4.1. Gestione compatta delle Mailing List\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Un grazie ad \b Aldo Maggi (Turms)\b0 per la prima regola seguente! ;-) Potete sostituire le regole nel file \fs18\f2 lists.rc\fs20\f0 con la sola regola seguente, elencando tra le () tutte le mailing list che avete sottoscritto, separandole con una pipe (|). Dovete inserire solo la parte dell'indirizzo email della ML che compare prima della @ nel campo From delle email che ricevete. \par\pard\sb200\sl234 \fs18\lang1024\f2 :0:\sa0\par\fi0\sb0 * ^TO_\\/(debian-lists|pluto-linux|lugroma|cslug|erlug)@\sa0\par\fi0\sb0 * MATCH ?? ()\\/[^@]+\sa0\par\fi0\sb0 Lists/ML-$MATCH\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se volete automatizzare ancora la gestione delle mailing list, potete usare al posto della regola precedente le seguenti, che cercano di intercettare gli header aggiuntivi che di solito vengono aggiunti dai gestori di ML. Questi sono quelli che ho trovato io, se per caso qualche email scappa a queste regole e finisce nella vostra mailbox di default, non dovete fare altro che vedere quale altro header usa il programma che gestisce la ML e aggiungere una nuova regola simile alle seguenti: \par\pard\sb200\sl234 \fs18\lang1024\f2 :0:\sa0\par\fi0\sb0 * ^X-Mailing-List-Name: \\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^Sender: owner-\\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-BeenThere: \\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^Delivered-To: mailing list \\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-Mailing-List: <\\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-Loop: \\/[^@]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-List-ID: <\\/[^@\\.]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ^X-list: \\/[^@\\.]+\sa0\par\fi0\sb0 Lists/`echo $MATCH | sed -e 's/[\\/]/_/g'`\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ALLEGATIPROCMAIL}{\*\bkmkend ID_ALLEGATIPROCMAIL}\b\fs28\f1 7.4.2. Salvataggio automatico degli allegati\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 La regola seguente salva tutti gli allegati delle email in entrata in una serie di sottodirectory di \fs18\f2 $MAILDIR/attach/\fs20\f0 : le sottodirectory sono create in base alla data, ma potete modificare molto semplicemente lo script per salvarle in altri modi. \b DATE\b0 \'e8 definita nello script \fs18\f2 .procmailrc\fs20\f0 principale. Per salvare TUTTI gli allegati, questa regola va messa in coda a \fs18\f2 general.rc\fs20\f0 La regola ha il flag \b c\b0 , quindi il messaggio poi procede normalmente attraverso le regole seguenti. \par\pard\sb200\sl234 \fs18\lang1024\f2 DUMMY=`test -d $MAILDIR/attach || mkdir $MAILDIR/attach`\sa0\par\fi0\sb0 DUMMY=`test -d $MAILDIR/attach/$DATE || mkdir $MAILDIR/attach/$DATE`\sa0\par\fi0\sb0 METAMAIL_TMPDIR=$MAILDIR/attach/$DATE\sa0\par\fi0\sb0 :0cbhHB:\sa0\par\fi0\sb0 | metamail -q -w -x\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_AUTORESPONDERPROCMAIL}{\*\bkmkend ID_AUTORESPONDERPROCMAIL}\b\fs28\f1 7.4.3. Risponditore automatico\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Le regole seguenti creano dei risponditori automatici, che inviano una email precreata in risposta ad un'altra email con un subject fissato, evitando per\'f2 di rispondere a mailing list o a messaggi provenienti da noi stessi, e inviando un unico messaggio per persona, anche in presenza di email multiple, usando una cache dei campi From. \par\pard\sb100\sl260 La seconda regola invece invia in automatico un file (se volete sapere le novit\'e0 dell'ultima versione del \i Quick&Easy Configuration HOWTO\i0 , mandatemi un'email con subject: "qechowto-update", senza le virgolette e con body vuoto, tanto non lo leggo, visto che vi sar\'e0 inviata una risposta automatica ;-) ), conservando comunque l'email in un file nascosto, per sapere chi richiede cosa...). L'ultima regola invia la vostra firma pubblica pgp a chi la richiede. \par\pard\sb100\sl260 \b === file: autoreply.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 :0Whc: vacation.lock\sa0\par\fi0\sb0 * $^To:.*\\<$\\LOGNAME\\>\sa0\par\fi0\sb0 * !^FROM_DAEMON\sa0\par\fi0\sb0 * !^X-Loop: tuo.indirizzo@di.email\sa0\par\fi0\sb0 | formail -rD 8192 vacation.cache\sa0\par\fi0\sb0 :0ehc\sa0\par\fi0\sb0 | (formail -rI"Precedence: junk" \\\sa0\par\fi0\sb0 -A"X-Loop: tuo.indirizzo@di.email" ; \\\sa0\par\fi0\sb0 echo "Ho ricevuto la tua email,"; \\\sa0\par\fi0\sb0 echo "ma non sar\'f2 a casa prima di luned\'ec."; \\\sa0\par\fi0\sb0 echo "-- "; cat $HOME/.signature \\\sa0\par\fi0\sb0 ) | $SENDMAIL -oi -t\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * !^From +TUO_USERNAME\sa0\par\fi0\sb0 * !^Subject:.*Re:\sa0\par\fi0\sb0 * !^FROM_DAEMON\sa0\par\fi0\sb0 * ^Subject:.*send-file\sa0\par\fi0\sb0 | (formail -r ; cat filename) | $SENDMAIL -oi -t\sa0\par\fi0\sb0 .richieste_file\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # invia in automatico la chiave pubblica pgp a chi\sa0\par\fi0\sb0 # la richiede indicando nel Subject: "get pgp key"\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * !^Subject:.*Re:\sa0\par\fi0\sb0 * !^FROM_DAEMON\sa0\par\fi0\sb0 * ^Subject: get pgp key\sa0\par\fi0\sb0 | (/usr/bin/formail -r ; cat $HOME/.pgp_publickey) | $SENDMAIL -oi -t\sa0\par\fi0\sb0 .richieste_pgp\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PROCMAILFILEESISTENTE}{\*\bkmkend ID_PROCMAILFILEESISTENTE}\b\fs28\f1 7.4.4. Processare via procmail una mailbox esistente\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Se dovete/volete far processare una mailbox esistente secondo le regole che avete stabilito per procmail, potete usare il seguente script, preso dai docs ufficiali. Sostituite il percorso di ORGMAIL con quello del vostro effettivo spool o della mailbox da trattare. \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 ORGMAIL=/var/spool/mail/$LOGNAME\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if cd $HOME &&\sa0\par\fi0\sb0 test -s $ORGMAIL &&\sa0\par\fi0\sb0 lockfile -r0 -l1024 .newmail.lock 2>/dev/null\sa0\par\fi0\sb0 then\sa0\par\fi0\sb0 trap "rm -f .newmail.lock" 1 2 3 13 15\sa0\par\fi0\sb0 umask 077\sa0\par\fi0\sb0 lockfile -l1024 -ml\sa0\par\fi0\sb0 cat $ORGMAIL >>.newmail &&\sa0\par\fi0\sb0 cat /dev/null >$ORGMAIL\sa0\par\fi0\sb0 lockfile -mu\sa0\par\fi0\sb0 formail -s procmail <.newmail &&\sa0\par\fi0\sb0 rm -f .newmail\sa0\par\fi0\sb0 rm -f .newmail.lock\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 exit 0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 oppure usare il semplice comando: \par\pard\sb200\sl234 \fs18\lang1024\f2 cat nome-file-mbox | formail -s procmail\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PROCMAILMUTT}{\*\bkmkend ID_PROCMAILMUTT}\b\fs28\f1 7.4.5. Killing form Mutt\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Questo tip \'e8 una semplificazione di quello presente in \b Linux Gazette N. 62\b0 . Le regole seguenti, insieme a 2 macro per mutt e a uno script perl, permettono di implementare velocemente un sistema di \b kill\b0 con una semplice combinazioni di tasti, in modo simile alla macro \i onekey-score.sl\i0 del newsreader slrn. Aggiungete queste 2 righe al file \fs18\f2 .muttrc\fs20\f0 nella vostra HOME: \par\pard\sb200\sl234 \fs18\lang1024\f2 macro index \\ek "| formail -x From: | addysort >> ~/Mail/.Pm/black.lst\\n"\sa0\par\fi0\sb0 macro pager \\ek "| formail -x From: | addysort >> ~/Mail/.Pm/black.lst\\n"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 In questo modo, con un semplice \b k\b0 aggiungerete il mittente dell'email attualmente visualizzata o evidenziata in mutt alla \i black-list\i0 , cio\'e8 un file che viene poi usato da procmail nelle volte successive per filtrare le email indesiderate, inviandole in una mailbox per lo spam o direttamente su \fs18\f2 /dev/null\fs20\f0 , a voi la scelta. Lo script perl \b addysort\b0 \'e8 il seguente (copiatelo in qualche directory compresa nel vostro $PATH, e rendetelo eseguibile con un \b chmod 755 addysort\b0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/usr/bin/perl -wn\sa0\par\fi0\sb0 # Estrae l'indirizzo email dall'attuale riga "From:"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 unless (/\\]+)/, "\\n"; \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 La regola che filtra tramite la black-list l'ho aggiunta al file \fs18\f2 spam.rc\fs20\f0 visto prima, quindi andate a leggerla direttamente in quella sezione, e in pratica confronta gli header che indicano la destinazione finale con i campi "From" contenuti nel file della black-list. Le ultime 5 regole del file \fs18\f2 spam.rc\fs20\f0 servono a intercettare altre possibili fonti di spam. \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PROCMAILMIMEERRATI}{\*\bkmkend ID_PROCMAILMIMEERRATI}\b\fs28\lang1024\f1 7.4.6. Correzione tipi MIME errati\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 La regola seguente preconverte le email testuali in arrivo, che dovessero essere in formato \i base64\i0 o \i quoted-printed\i0 , in un pi\'f9 semplicemente gestibile formato \i 8bit\i0 . \par\pard\sb200\sl234 \fs18\lang1024\f2 :0\sa0\par\fi0\sb0 * ^Content-Type: *text/plain\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 :0 fbw\sa0\par\fi0\sb0 * ^Content-Transfer-Encoding: *quoted-printable\sa0\par\fi0\sb0 | mimencode -u -q\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0 Afhw\sa0\par\fi0\sb0 | formail -I "Content-Transfer-Encoding: 8bit"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0 fbw\sa0\par\fi0\sb0 * ^Content-Transfer-Encoding: *base64\sa0\par\fi0\sb0 | mimencode -u -b\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0 Afhw\sa0\par\fi0\sb0 | formail -I "Content-Transfer-Encoding: 8bit"\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PROCMAILANTISPAM}{\*\bkmkend ID_PROCMAILANTISPAM}\b\fs34\f1 7.5. Combattere lo SPAM\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Vediamo ora come filtrare eventuale \b UCE/UBE\b0 (\i Unsolicited Commercial/Bulk Email\i0 , cio\'e8 spam o posta indesiderata). Ci sono vari metodi e programmi, ma io uso \b SpamBouncer\b0 , prelevabile da http://www.spambouncer.org, cio\'e8 una serie di file rc contenenti un insieme di regole per procmail che permettono di fare varie cose sfiziose ;-), individuando lo spam cercando tra gli spammer conosciuti, siti e domini noti, ISP irresponsabili, header e body con contenuti riferibili a spam. In base a come impostato, permette di fare le seguenti cose: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 marcare con un header aggiuntivo le email, rispedendole al normale flusso delle regole di procmail, potendo cos\'ec fare il filtraggio direttamente dal mailreader \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 marcare le email sospette, inviandole in una mailbox separata, e cancellando quelle che sono sicuramente spam \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 inviare un "bounce" simulato di tipo \b MAILER-DAEMON\b0 , che a volte fa pensare a un indirizzo email errato, portando alla cancellazione del medesimo dalla ML (ma non sperateci molto...) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 contattare gli ISP degli spammer lamentandosi per lo spam ricevuto \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 notificare gli spammer che le loro email sono state bloccate, fornendo loro una password per aggirare il blocco (gli spammer raramente lo fanno, ma qualche vostro conoscente eventualmente bloccato potrebbe averne bisogno) \hyphpar0\par\pard\sb100\sl260 \lang1040 Nell'ultimo caso, gli indirizzi email di quelli che vi rispondono vengono aggiunti al file indicato dalla direttiva \b NOBOUNCE\b0 , e non verranno pi\'f9 bloccati in futuro. Tenete presente che comunque il tutto \'e8 gestito automaticamente, quindi \'e8 normale che salti fuori l'eccezione che confermi la regola... Scaricate il file: http://www.spambouncer.org/sb.zip e date i comandi seguenti per scompattare il tutto: \par\pard\sb200\sl234 \fs18\lang1024\f2 cd $HOME/Mail/.Pm\sa0\par\fi0\sb0 mkdir sb && cd sb\sa0\par\fi0\sb0 cp /percorso/verso/il/file/sb.zip .\sa0\par\fi0\sb0 unzip sb.zip\sa0\par\fi0\sb0 rm -f sb.zip \sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Si consiglia di filtrare lo spam nell'ultima parte, in particolare dopo il trattamento delle mailing list. Il file principale \'e8 \fs18\f2 sb.rc\fs20\f0 , che contiene tutte le impostazioni per il filtro, e che viene richiamato dal file \fs18\f2 spam2.rc\fs20\f0 seguente: \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 I due file di regole \fs16\f2 spam.rc\fs18\f1 e \fs16\f2 spam2.rc\fs18\f1 sono attualmente alternativi! Infatti molte delle cose presenti nel primo file sono fatte anche da \b SpamBouncer\b0 , e per filtri specifici potete sempre usare la Black-List. Attivatene quindi un solo file in \fs16\f2 .procmailrc\fs18\f1 ! \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \b === file: spam2.rc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # filtro tramite black-list\sa0\par\fi0\sb0 :0\sa0\par\fi0\sb0 * ? formail -x"From" -x"From:" -x"Sender:" -x"Reply-To:" -x"Return-Path:" -x"To:" | egrep -is -f $PMDIR/black.lst\sa0\par\fi0\sb0 spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # impostazioni per spambouncer\sa0\par\fi0\sb0 ADMINFOLDER=$\{MAILDIR\}/IN.admin # email bounced, da root, postmaster, abuse, etc.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 BULKFOLDER=$\{MAILDIR\}/IN.bulk # per bulk email, che sembra leggittima\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 MYEMAIL=$\{PMDIR\}/.myemail # posizione del file contenente tutti i vostri\sa0\par\fi0\sb0 # indirizzi email, elencati uno per riga\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ALTFROM=otheremail@othersite.com # un indirizzo email alternativo, ma comunque valido,\sa0\par\fi0\sb0 # per non far sapere agli spammer la tua vera email,\sa0\par\fi0\sb0 # quando invii messaggi in cui ti lamenti dello spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 BLOCKFOLDER=$\{MAILDIR\}/IN.block # email sospette, ma possibilmente non spam\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 BLOCKREPLY=SILENT # SILENT per filtrare semplicemente le email bloccate\sa0\par\fi0\sb0 # NOTIFY per informare l'autore che l'email e' stata\sa0\par\fi0\sb0 # bloccata, e informarlo su come oltrepassare il\sa0\par\fi0\sb0 # blocco se pensano di essere leggittimati a farlo\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 BYPASSWD=zeugma # password per le persone che si vedono bloccate le\sa0\par\fi0\sb0 # loro email legittime da Spam Bouncer. Permette di\sa0\par\fi0\sb0 # aggirare il filtro. CAMBIARLA SPESSO!!!\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 NOBOUNCE=$\{PMDIR\}/.nobounce # posizione del file NOBOUNCE, contenente una per\sa0\par\fi0\sb0 # riga le email delle persone che non devono MAI\sa0\par\fi0\sb0 # essere bloccate. E' un normale file di testo,\sa0\par\fi0\sb0 # quindi non usate escape per il punto, tipo \\. !!!\sa0\par\fi0\sb0 # Viene anche aggiornato in automatico da SB stesso.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 NOLOOP=$\{ALTFROM\} # email usata nel campo X-Loop: per prevenire i loop\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 PATTERNMATCHING=SILENT # abilita il filtro Pattern Matching di Spam Bouncer\sa0\par\fi0\sb0 # NONE lo disattiva; SILENT filtra le email senza\sa0\par\fi0\sb0 # avvertire il mittente; NOTIFY filtra e avverte il\sa0\par\fi0\sb0 # mittente che la sua email e' stata bloccata\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 SBDIR=$\{PMDIR\}/sb # directory contenente i filtri di SpamBouncer\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 SPAMFOLDER=$\{MAILDIR\}/spam # mailbox che ricevera' lo spam, cambiare in /dev/null\sa0\par\fi0\sb0 # per eliminarla definitivamente\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 SPAMREPLY=SILENT # SILENT per filtrare ma non autolamentarsi.\sa0\par\fi0\sb0 # BOUNCE per inviare al mittente un messaggio bounce\sa0\par\fi0\sb0 # di tipo "MAILER-DAEMON". COMPLAIN per inviare un\sa0\par\fi0\sb0 # messaggio di lamentela all'abuse del mittente. BOTH\sa0\par\fi0\sb0 # per inviare il bounce e lamentarsi con l'abuse\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 DULCHECK=no # se impostata a "yes", effettua un controllo con le\sa0\par\fi0\sb0 # liste MAPS DUL. Questo riduce significativamente lo\sa0\par\fi0\sb0 # spam, ma puo' crearvi problemi se corrispondete con\sa0\par\fi0\sb0 # molta gente che usa uno Unix e un proprio mailserver.\sa0\par\fi0\sb0 # Consiglio in questo caso di attivare la variabile\sa0\par\fi0\sb0 # BLOCKREPLY=NOTIFY, in modo da consentire al mittente\sa0\par\fi0\sb0 # di aggiungere il proprio indirizzo all'elenco dei\sa0\par\fi0\sb0 # NOBOUNCE, usando la password contenute in $BYPASSWD.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ORBSCHECK=no # stesse considerazioni di DULCHECK, ma per l'ORBS.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 RSSCHECK=no # stesse considerazioni di DULCHECK, ma per il MAPS RSS.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 RBLCHECK=yes # questa invece puo' essere attivata tranquillamente,\sa0\par\fi0\sb0 # visto che l'RBL lista spammer e siti certificati :-)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 INCLUDERC=$\{SBDIR\}/sb.rc # ATTIVA SPAMBOUNCER!!!\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Le regole seguenti inviano le email indirizzate a uno dei vostri indirizzi email\sa0\par\fi0\sb0 # nello spool di default, spostando quelle che non hanno voi nei campi To: o Cc:,\sa0\par\fi0\sb0 # o che vi sono state inviate in Bcc: in un altro folder. Viene usato il file indicato\sa0\par\fi0\sb0 # in precedenza nella variabile $MYEMAIL, quindi create questo file indicando tutti\sa0\par\fi0\sb0 # gli indirizzi email in cui ricevete posta, elencandoli uno per riga\sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 * ? test -f $\{MYEMAIL\} && \\\sa0\par\fi0\sb0 ($\{FORMAIL\} -zxFrom: -zxReply-To: |\\\sa0\par\fi0\sb0 fgrep -i -f $\{MYEMAIL\})\sa0\par\fi0\sb0 | $\{FORMAIL\} -A"X-Folder: Default" >>$\{DEFAULT\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 :0:\sa0\par\fi0\sb0 | $\{FORMAIL\} -A"X-Folder: Bulk" >>$\{BULKFOLDER\}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Il file \'e8 ampliamente commentato, quindi leggetelo direttamente e modificate dove necessario. \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 Si consiglia inoltre di tradurre i due file \fs16\f2 spam\fs18\f1 e \fs16\f2 notify\fs18\f1 , che contengono rispettivamente i messaggi automatici usati per lamentarsi con l'ISP dello spammer, e il messaggio inviato a chi si vede bloccate le proprie email per avvisarlo su come aggirare il blocco tramite una password. Nella tarball dei FILES ci sono le versioni che uso io, gi\'e0 tradotte. \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\li400\sl234 \b\lang1024 Nota: \b0 Per aggiornare il tutto, controllate le novit\'e0 sul sito indicato in precedenza, e scompattate il nuovo file come fatto prima, a sovrascrivere la vecchia versione. Consiglio di sottoscrivere la mailing list che annuncia le nuove versioni, tanto \'e8 a bassissimo traffico.\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_SINTASSIREGEXP}{\*\bkmkend ID_SINTASSIREGEXP}\b\fs34 7.6. Sintassi delle espressioni regolari\keepn\hyphpar0\par\pard\sb200\li400\sl234 \fs18 Nota: \b0 La sintassi proviene da quella del comando \b egrep\b0 .\hyphpar0\par\pard\sb200\li200\sl260\fi-200 \tx200 \fs16\f0 \'95\tab \fs20 \b ^\b0 inizio della linea \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b $\b0 fine della linea \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 ogni \i singolo carattere\i0 corrisponde a s\'e8 stesso (se si tratta di un carattere \i speciale\i0 , per fare il confronto lo si deve far precedere da \b \\\b0 , quindi: \b \\?\b0 , \b \\+\b0 , \b \\\{\b0 , \b \\|\b0 , \b \\(\b0 , \b \\)\b0 , ecc. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b .\b0 qualsiasi carattere eccetto il \i fine-linea\i0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b [12a-e-]\b0 un carattere tra quelli racchiusi tra parentesi. In questo caso pu\'f2 essere: \b 1\b0 , \b 2\b0 , \b a\b0 , \b b\b0 , \b c\b0 , \b d\b0 , \b e\b0 , \b -\b0 . Gruppi consecutivi di caratteri si identificano con il primo, seguito da \b -\b0 e dall'ultimo (\b a-e\b0 =\b abcde\b0 ). Se il primo carattere \'e8 \b ^\b0 , si intende qualsiasi carattere \i ESCLUSI\i0 quelli tra parentesi. Per includere il simbolo \b ]\b0 lo si deve mettere per primo, mentre per inserire il simbolo \b ^\b0 lo si deve mettere da qualsiasi parte \i TRANNE\i0 che all'inizio, e per il carattere \b -\b0 deve essere l'\i ULTIMO\i0 prima della parentesi quadra. \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b *\b0 il carattere precedente pu\'f2 essere presente \b 0\b0 o \b pi\'f9\b0 volte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b +\b0 il carattere precedente pu\'f2 essere presente \b 1\b0 o \b pi\'f9\b0 volte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ?\b0 il carattere precedente pu\'f2 essere presente \b 0\b0 o \b 1\b0 volte \i al massimo\i0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b \{n\}\b0 il carattere precedente pu\'f2 essere presente \i esattamente\i0 \b n\b0 volte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b \{n,\}\b0 il carattere precedente pu\'f2 essere presente \i almeno\i0 \b n\b0 volte \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b \{n,m\}\b0 il carattere precedente pu\'f2 essere presente \i almeno\i0 \b n\b0 volte e \i al massimo\i0 \b m\b0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 due espressioni regolari possono essere \i concatenate\i0 , ottenendone un'altra generata dalla \i concatenazione\i0 dei risultati delle \i sottostringhe\i0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 due espressioni regolari \i separate\i0 da \b |\b0 diventano alternative \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 la \i ripetizione\i0 ha precedenza pi\'f9 alta rispetto alla \i concatenazione\i0 , che a sua volta ha precedenza pi\'f9 alta rispetto all'\i alternativit\'e0\i0 (usate le parentesi tonde per modificare questo comportamento) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 per eseguire il confronto con una \i parola intera\i0 invece che con una \i sottostringa\i0 , racchiudetela tra \b \\<\b0 e \b \\>\b0 : ad esempio \b \\\b0 riconoscer\'e0 "\i test\i0 " ma non "\i testing\i0 " \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 di solito i confronti non sono \i sensibili a maiuscole o minuscole\i0 , quindi un piccolo errore sar\'e0 perdonato! \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 8. Leafnode}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 8. Leafnode}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_LEAFNODE}{\*\bkmkend ID_LEAFNODE}\b\fs41\f1 Capitolo 8. Leafnode\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONELEAFNODE}{\*\bkmkend ID_CONFIGURAZIONELEAFNODE}\fs34 8.1. Configurazione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 \b Leafnode\b0 si occupa di ricevere e inviare i post da e verso i \i newsgroup Usenet\i0 . \'c8 in genere adatto, data la sua semplicit\'e0, 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 \b INN\b0 , di cui potete trovare un'ampia trattazione nell'Howto scritto da \i Filippo Panessa - aka Kalem\i0 (http://web.tiscalinet.it/kalem). Non potete usare contemporaneamente due demoni che cercano di controllare la stessa porta, quindi nel caso abbiate \b INN\b0 o altri newsserver, commentate la riga apposita all'interno di \fs18\f2 /etc/inetd.conf\fs20\f0 o \fs18\f2 /etc/xinetd.conf\fs20\f0 e riavviate. Per configurarlo, dopo averlo installato, modificate il file \fs18\f2 /etc/leafnode/config\fs20\f0 come segue (\'e8 proprio il minimo indispensabile, ci sono molte pi\'f9 opzioni, direttamente commentate nel file). Ricordate che la directory \b /etc/leafnode/\b0 e il suo contenuto devono appartenere all'utente e gruppo \b news\b0 , quindi date da una console, loggati come utente \b root\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 chown -R news.news /etc/leafnode/\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ricordate inoltre che alcune vecchie distribuzioni di \b leafnode\b0 non erano compatibili con l'anno 2000, quindi usatene una versione > 1.9.4. Segue il file \b config\b0 di esempio: \par\pard\sb100\sl260 \b === file: /etc/leafnode/config ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ## inserisci qui il tuo server news - OBBLIGATORIO\sa0\par\fi0\sb0 server = news.libero.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## I thread vengono cancellati dopo il numero di giorni seguente,\sa0\par\fi0\sb0 ## se non definito diversamente con groupexpire - OBBLIGATORIO\sa0\par\fi0\sb0 ## man leafnode per informazioni su groupexpire\sa0\par\fi0\sb0 expire = 60\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## Numero massimo di messaggi da scaricare per volta. Sconsigliato\sa0\par\fi0\sb0 ## sia impostarlo al di sotto di 1000 che al disopra di 2000\sa0\par\fi0\sb0 maxfetch = 2000\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## per scaricare solo gli header dei messaggi e in seguito solo i body\sa0\par\fi0\sb0 ## marcati per il download, impostare delaybody ad 1\sa0\par\fi0\sb0 delaybody = 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## impedisce di scaricare articoli pi\'f9 grandi di 50000 bytes\sa0\par\fi0\sb0 maxbytes = 50000\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## impedisce di scaricare articoli pi\'f9 lunghi di 1000 righe\sa0\par\fi0\sb0 maxlines = 1000\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## massimo numero di giorni in cui sar\'e0 scaricato un newsgroup che non\sa0\par\fi0\sb0 ## viene letto, prima di annullare la sottoscrizione in automatico\sa0\par\fi0\sb0 timeout_long = 7\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## minimo numero di giorni in cui sar\'e0 scaricato un newsgroup che forse si \'e8 sottoscritto\sa0\par\fi0\sb0 ## per errore e non viene letto, prima di annullare la sottoscrizione in automatico\sa0\par\fi0\sb0 timeout_short = 2\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## attiva l'invio di messaggi di debug al syslog, per evidenziare malfunzionamenti\sa0\par\fi0\sb0 debugmode = 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## evita che vengano sottoscritti in automatico newsgroup non desiderati\sa0\par\fi0\sb0 ## in caso di crosspost verso di essi\sa0\par\fi0\sb0 create_all_links = 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ## file contenente i filtri per i messaggi da NON scaricare (leggete alla fine della pagina\sa0\par\fi0\sb0 ## per altre informazioni e nel caso togliete il carattere # all'inizio della riga seguente)\sa0\par\fi0\sb0 # filterfile = /etc/leafnode/filterfile\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Controllate che in \fs18\f2 /etc/inetd.conf\fs20\f0 sia presente una riga come la seguente, NON commentata da #: \par\pard\sb200\sl234 \fs18\lang1024\f2 nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/leafnode\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Nel caso non esista, aggiungetela. Se invece usate xinetd, guardate la sezione apposita dell'howto, c'\'e8 un file gi\'e0 pronto. Date da utente \b root\b0 : \b killall -HUP inetd\b0 per riavviare il demone inetd, oppure \b killall -USR1 xinetd\b0 per riavviare il demone xinetd e provate a fare: \b telnet localhost 119\b0 per vedere se \b leafnode\b0 vi risponde. Dovreste ottenere una riga simile alla seguente:\par\pard\sb200\sl234 \fs18\lang1024\f2 200 Leafnode NNTP Daemon, version 1.9.19 running at localhost.localdomain\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Nel caso di inetd, potrebbe dover essere aggiunta al file \fs18\f2 /etc/hosts.allow\fs20\f0 la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 leafnode: LOCAL\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e al file \fs18\f2 /etc/hosts.deny\fs20\f0 la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 ALL: ALL\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per scaricare le news, dovete lanciare il comando: \b fetchnews\b0 da utente \b root\b0 o \b news\b0 (badate che spesso l'utente \b news\b0 viene creato ma non gli viene assegnata una password, quindi non pu\'f2 loggarsi; nel caso da utente \b root\b0 date il comando: \b passwd news\b0 e assegnategliene una). Se non volete loggarvi come utenti \b root\b0 o \b news\b0 (presuppongo che l'eseguibile \b fetchnews\b0 sia in \b /usr/sbin/\b0 , se \b which fetchnews\b0 vi da un \i path\i0 diverso sostituitelo dove necessario), date i seguenti comandi da root : \par\pard\sb200\sl234 \fs18\lang1024\f2 chown root.news /usr/sbin/fetchnews\sa0\par\fi0\sb0 chmod a+s /usr/sbin/fetchnews\sa0\par\fi0\sb0 ln -s /usr/sbin/fetchnews /usr/bin/fetchnews\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e poi modificate \fs18\f2 /etc/group\fs20\f0 in modo che nell'ultimo campo appaia il vostro nome utente: \par\pard\sb100\sl260 \i prima\i0 : news:x:13:news \par\pard\sb100\sl260 \i dopo\i0 : news:x:13:news,vostronomeutente \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 il numero pu\'f2 cambiare, e la \b x\b0 potrebbe essere assente nel caso non utilizziate le \i shadow password\i0 o potrebbe essere qualcosa di ingarbugliato nel caso il gruppo abbia una password, sempre \i non shadow\i0 .\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 La prima volta che lancerete il comando \b fetchnews\b0 verranno scaricati tutti i nomi dei gruppi presenti sul server remoto. Dopo questa fase, entrate nel vostro \i newsreader\i0 preferito e scorrendo la lista dei newsgroup marcate quelli che volete frequentare, entrando nel newsgroup scelto e LEGGENDO il \i placeholder\i0 di leafnode (questo dovrebbe creare i file: \fs18\f2 /var/spool/news/interesting.groups/nome.del.gruppo.scelto\fs20\f0 di lunghezza 0: controllate e se ci\'f2 non avviene createli voi con il comando: \b touch /var/spool/news/interesting.groups/nome.del.gruppo.scelto\b0 , ripetendo per ognuno dei gruppi scelti). Al successivo lancio di \b fetchnews\b0 verranno scaricati gli \i header\i0 e gli \i articoli\i0 (in base all'impostazione di \i delaybody\i0 nel file \fs18\f2 /etc/leafnode/config\fs20\f0 ) dei gruppi sottoscritti. Per leggerli, impostate il vostro newsreader su server: \b localhost\b0 e porta \b 119\b0 . Riguardo a quale newsreader scegliere, io vi consiglio slrn per console (la configurazione \'e8 nelle ultime pagine del \i Quick&Easy Configuration HOWTO\i0 ): ci sono varie scuole di pensiero a seconda che vogliate un programma da \i console\i0 o da \i gui\i0 . Tra i migliori per \i console\i0 ci sono slrn e tin, tra quelli per \i gui\i0 i pi\'f9 promettenti sembrano pan e knode (notate che ho scritto "promettenti", non migliori, in quanto ancora buggatelli anzichen\'f2), oltre al veterano knews (che non c'entra niente con il \i KDE\i0 , il cui newsreader krn \'e8 bene che evitiate come LA PESTE, a meno che vi piaccia tanto Windows da volerne emulare i crash sotto Linux! ;-) ). \par\pard\sb100\sl260 Possibili opzioni utili di fetchnews sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b -v\b0 : (anche ripetuto, come \b -vvvv\b0 ) che stampa a video un resoconto di quello che sta succedendo, pi\'f9 dettagliato in base a quante \b v\b0 mettete \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -P\b0 : invia solo i vostri nuovi messaggi, senza scaricare quelli presenti sul server remoto \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -n\b0 : evita l'annullamento automatico delle sottoscrizioni di gruppi che non si leggono da molto tempo (intervallo modificabile nel file di configurazione, opzioni \i timeout_short\i0 e \i timeout_long\i0 ). \hyphpar0\par\pard\sb100\sl260 \lang1040 Per cancellare i vecchi post che hanno superato il tempo di \i expire\i0 , data da utenti \b root\b0 o \b news\b0 il comando: \b texpire\b0 , magari forzandolo con l'opzione \b -f\b0 . \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_SCOREFILE}{\*\bkmkend ID_SCOREFILE}\b\fs34\lang1024\f1 8.2. Scorefile\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Con \b leafnode\b0 potete anche impostare dei filtri per evitare di scaricare del tutto degli articoli che non vi interessano. Quello che segue \'e8 un esempio di \b killfile\b0 creato da Davide Alberani (http://members.xoom.com/alberanid) (un grazie 1000 a lui!), e per attivarlo modificatelo e copiatelo nel file \fs18\f2 /etc/leafnode/filterfile\fs20\f0 e decommentate la riga apposita nel file \fs18\f2 /etc/leafnode/config\fs20\f0 (per una spiegazione della sintassi delle \i espressioni regolari\i0 presenti, fate riferimento alla sezione apposita del \i Quick&Easy Configuration HOWTO\i0 nella pagina di \b Procmail\b0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 #\sa0\par\fi0\sb0 # File di filtro per leafnode di Davide Alberani\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Aggiornato al 12 aprile 2001\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Leafnode puo` essere scaricato da:\sa0\par\fi0\sb0 # http://www.leafnode.org\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Formato principalmente durante la frequentazione dei gruppi:\sa0\par\fi0\sb0 # it.comp.os.linux.*\sa0\par\fi0\sb0 # it.cultura.ateismo\sa0\par\fi0\sb0 # it.comp.os.dibattiti\sa0\par\fi0\sb0 # it.comp.sicurezza.varie\sa0\par\fi0\sb0 # it.news.gruppi\sa0\par\fi0\sb0 # it.arti.cinema\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Nota:\sa0\par\fi0\sb0 # probabilmente vi conviene cancellare o commentare alcune righe\sa0\par\fi0\sb0 # nella sezione Subject, a seconda di quali sono i vostri interessi.\sa0\par\fi0\sb0 # Per quanto riguarda le entry nella sezione From, NON rompete le\sa0\par\fi0\sb0 # gonadi: c'e` finito chi - a mio *insindacabile* giudizio - ha rotto\sa0\par\fi0\sb0 # troppo le scatole, e` troppo stupido per perdere tempo a leggero\sa0\par\fi0\sb0 # o semplicemente si e` fatto trascinare troppe volte in discussioni\sa0\par\fi0\sb0 # con cerebrolesi.\sa0\par\fi0\sb0 # Qualcuno puo` anche esserci finito per errore, capita.\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # L'angolo polemico:\sa0\par\fi0\sb0 # Ho ricevuto lamentele da persone che, avendo trovato un proprio\sa0\par\fi0\sb0 # indirizzo e-mail in questa lista, mi hanno richiesto di eliminare\sa0\par\fi0\sb0 # l'intero filtro (il tutto perche`, per un qualche motivo, non mi si\sa0\par\fi0\sb0 # voleva indicare l'indirizzo in questione).\sa0\par\fi0\sb0 # Ora, immagino che nella mente di qualcuno cio` possa essere\sa0\par\fi0\sb0 # perfettamente sensato, magari tirando in causa la famosa ed\sa0\par\fi0\sb0 # abusatissima legge sulla privacy (675/96).\sa0\par\fi0\sb0 # Naturalmente nutro seri dubbi che tale legge possa limitare il\sa0\par\fi0\sb0 # mio diritto (che discende dalla costituzione) di pubblicare un\sa0\par\fi0\sb0 # banale elenco di persone/indirizzi/subject che mi stanno antipatici,\sa0\par\fi0\sb0 # ricordando che tutte le voci sono tratte da post Usenet pubblicamente\sa0\par\fi0\sb0 # disponibili.\sa0\par\fi0\sb0 # Mi ero peraltro - e ripeto, per pura sensibilita` personale, non\sa0\par\fi0\sb0 # certo perche` stia violando qualche legge - reso disponibile ad\sa0\par\fi0\sb0 # eliminare la *singola* voce interessata, specie nel caso essa\sa0\par\fi0\sb0 # contenesse un cognome/nome. Non avendo mai ricevuto indicazione\sa0\par\fi0\sb0 # di quale fosse la riga "incriminata", a questo punto ritiro la\sa0\par\fi0\sb0 # mia disponibilita`.\sa0\par\fi0\sb0 # \sa0\par\fi0\sb0 # Corollario di MrShark: siccome il tizio in questione non ha MAI\sa0\par\fi0\sb0 # fornito l'indirizzo email da eliminare, ma ha trolleggiato per\sa0\par\fi0\sb0 # una settimana accampando diritti che non ha, abbiamo inserito\sa0\par\fi0\sb0 # anche i due suoi nuovi indirizzi email con i quali ha rotto le\sa0\par\fi0\sb0 # balle sul NG del net-abuse, perche` se non era troll prima e\sa0\par\fi0\sb0 # non meritava di finire nel killfile, sicuramente l'ha meritato\sa0\par\fi0\sb0 # dopo i suoi exploit, vincendo un mongolino d'oro! Tie'! ;-)\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Killare un dato subject solo in un dato newsgroup:\sa0\par\fi0\sb0 # Ne avevo discusso tempo fa con Derfel; a quanto mi ricordo,\sa0\par\fi0\sb0 # dall'ultima volta che ho controllato i sorgenti, leafnode passa le\sa0\par\fi0\sb0 # varie linee dell'header separatamente alla funzione che ne controlla\sa0\par\fi0\sb0 # eventuali match, quindi non sarebbe possibile farlo.\sa0\par\fi0\sb0 # Derfel pero` era giunto a questa soluzione:\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # (?-im)Newsgroups:.*IL.NEWSGROUP\\nSubject: IL SUBJECT.*\\n\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Che pare funzionare.\sa0\par\fi0\sb0 # Io pero` ci credo ancora il giusto. :-)\sa0\par\fi0\sb0 # Aggiornamento: da quanto ho capito questa regola funziona usando\sa0\par\fi0\sb0 # il comando applyfilter, che pero` non e` come vorrei usare io il\sa0\par\fi0\sb0 # filtro... :-)\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # More info:\sa0\par\fi0\sb0 # Se volete maggiori informazioni sulle regular expression, leggetevi:\sa0\par\fi0\sb0 # man 7 pcre\sa0\par\fi0\sb0 # man 7 regex\sa0\par\fi0\sb0 # man 1 egrep\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Enjoy.\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ####################\sa0\par\fi0\sb0 # Subject generici #\sa0\par\fi0\sb0 ####################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # killa *tutti* i subject completamente maiuscoli (a parte l'eventuale Re:)\sa0\par\fi0\sb0 # togliere il commento (#) se si vuole attivare questa regola\sa0\par\fi0\sb0 #^Subject: (Re: |R: )*[^a-z]*$\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # i post con troppi '!', '?' o '$'\sa0\par\fi0\sb0 (?im)^Subject:.*\\!\\!\\!\\!\sa0\par\fi0\sb0 (?im)^Subject:.*\\?\\?\\?\\?\sa0\par\fi0\sb0 (?im)^Subject:.*\\$\\$\\$.*\sa0\par\fi0\sb0 # subject eccessivamente generici\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*non legge[rt]e *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*aiuto+ *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*he+l+p+ *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*prov[ae] *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*problem[ai] *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*test *[\\?\\!]*$\sa0\par\fi0\sb0 (?im)^Subject: (Re: |R: )*domand[ae] *[\\?\\!]*$\sa0\par\fi0\sb0 # post periodici del GCN\sa0\par\fi0\sb0 ^Subject:.*benvenuto su Usenet\\!\sa0\par\fi0\sb0 (?im)^Subject: RFD, CFV e it\\.news\\.gruppi\sa0\par\fi0\sb0 (?im)^Subject: Usenet e news - dove saperne di piu\\`\sa0\par\fi0\sb0 (?im)^Subject: Istruzioni per la creazione di gruppi della gerarchia it\sa0\par\fi0\sb0 (?im)^Subject: \\[HOWTO\\] COME PORRE DOMANDE IN QUESTO GRUPPO\sa0\par\fi0\sb0 (?im)^Subject: Come funzionano le news: il crosspost e\\` Male\sa0\par\fi0\sb0 (?im)^Subject: \\[MANIFESTO\\] it\\.news\\.gruppi\sa0\par\fi0\sb0 (?im)^Subject: I gruppi Usenet it\\.\\* - istruzioni per l\\'uso\sa0\par\fi0\sb0 (?im)^Subject: E Quali sono i gruppi della gerarchia it\\.\\* \\?\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##################################\sa0\par\fi0\sb0 # Subject per it.comp.os.linux.* #\sa0\par\fi0\sb0 ##################################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 (?im)^Subject:.*sb[ -]*64\sa0\par\fi0\sb0 (?im)^Subject:.*winlinux\sa0\par\fi0\sb0 (?im)^Subject:.*emacs\sa0\par\fi0\sb0 (?im)^Subject:.*system\\.map\sa0\par\fi0\sb0 (?im)^Subject:.*iomega\sa0\par\fi0\sb0 (?im)^Subject:.*sb pci\sa0\par\fi0\sb0 (?im)^Subject:.*toshiba\sa0\par\fi0\sb0 (?im)^Subject:.*vmware\sa0\par\fi0\sb0 (?im)^Subject:.*banshee\sa0\par\fi0\sb0 (?im)^Subject:.*isdn\sa0\par\fi0\sb0 (?im)^Subject:.*slrn\sa0\par\fi0\sb0 (?im)^Subject:.*star.*office\sa0\par\fi0\sb0 (?im)^Subject:.*sb.*live\sa0\par\fi0\sb0 (?im)^Subject:.*blaster.*live\sa0\par\fi0\sb0 (?im)^Subject:.*suse\sa0\par\fi0\sb0 (?im)^Subject:.*red[ -]*hat\sa0\par\fi0\sb0 (?im)^Subject:.*caldera\sa0\par\fi0\sb0 (?im)^Subject:.*mandrake\sa0\par\fi0\sb0 (?im)^Subject:.*tnt2\sa0\par\fi0\sb0 (?im)^Subject:.*trio.*3d\sa0\par\fi0\sb0 (?im)^Subject:.*3dfx\sa0\par\fi0\sb0 (?im)^Subject:.*samba\sa0\par\fi0\sb0 (?im)^Subject:.*kppp\sa0\par\fi0\sb0 (?im)^Subject:.*voo?doo?\sa0\par\fi0\sb0 (?im)^Subject:.*rh ?[567]\sa0\par\fi0\sb0 (?im)^Subject:.*nvidia\sa0\par\fi0\sb0 (?im)^Subject:.*i740\sa0\par\fi0\sb0 (?im)^Subject:.*virge\sa0\par\fi0\sb0 (?im)^Subject:.*matrox\sa0\par\fi0\sb0 (?im)^Subject:.*x11amp\sa0\par\fi0\sb0 (?im)^Subject:.*mp3\sa0\par\fi0\sb0 (?im)^Subject:.*yamaha\sa0\par\fi0\sb0 (?im)^Subject:.*slac?kware\sa0\par\fi0\sb0 (?im)^Subject:.*sound ?blaster\sa0\par\fi0\sb0 # i post periodici su it.comp.os.linux.*\sa0\par\fi0\sb0 (?im)^Subject:.*FAQ: Le mailing list italiane\sa0\par\fi0\sb0 ^Subject:.*\\[FAQ\\] RISPOSTE ALLE DOMANDE PIU\\` FREQUENTI\sa0\par\fi0\sb0 ^Subject: REGOLE BASE DI \\"it\\.comp\\.os\\.linux\\.iniziare\\"\sa0\par\fi0\sb0 ^From: autoposter \sa0\par\fi0\sb0 ^From: autoposter \sa0\par\fi0\sb0 ^From: gz@indirizzo.non.valido.it \\(AUTOPOSTER-AMF\\)\sa0\par\fi0\sb0 #(?im)^Subject:.*cazz.*linux\sa0\par\fi0\sb0 #^Subject: REGOLE BASE DI it\\.comp\\.os\\.linux\\.iniziare\sa0\par\fi0\sb0 #^Subject: \\[NEW\\] REGOLE BASE DI \\"it\\.comp\\.os\\.linux\\.iniziare\\"\sa0\par\fi0\sb0 #(?im)^Subject: Quali sono i gruppi della gerarchia it\\.\\* \\?\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########\sa0\par\fi0\sb0 # From #\sa0\par\fi0\sb0 ########\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # La suddivisione in sezioni potrebbe essere inesatta...\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########\sa0\par\fi0\sb0 # VS\'a9s #\sa0\par\fi0\sb0 ########\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*VS\'a9\sa0\par\fi0\sb0 ^From:.*vs\\.ru\sa0\par\fi0\sb0 ^From:.*>>FoX<<\sa0\par\fi0\sb0 ^From:.*Gek\'a9\sa0\par\fi0\sb0 ^From:.*glm\sa0\par\fi0\sb0 ^From:.*tommygun.*@freemail.it\sa0\par\fi0\sb0 #^From:.*Frank\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ############\sa0\par\fi0\sb0 # Raeliani #\sa0\par\fi0\sb0 ############\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*exdor@tin.it\sa0\par\fi0\sb0 ^From:.*kenpatera@tin.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ###############################\sa0\par\fi0\sb0 # From per it.comp.os.linux.* #\sa0\par\fi0\sb0 ###############################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*KiLLa\sa0\par\fi0\sb0 ^From:.*kurty@libero.it\sa0\par\fi0\sb0 ^From:.*kaig@wappi.com\sa0\par\fi0\sb0 ^From:.*deditor@libero.it\sa0\par\fi0\sb0 ^From:.*Marco Bertini\sa0\par\fi0\sb0 ^From:.*geqbm@tin.it\sa0\par\fi0\sb0 ^From:.*pigo@ahoooo.libero.it\sa0\par\fi0\sb0 ^From:.*nobady@nobady.com\sa0\par\fi0\sb0 ^From:.*butindaro@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*jalessa@tin.it\sa0\par\fi0\sb0 ^From:.*lorciao@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*giochio@inwind.it\sa0\par\fi0\sb0 ^From:.*plucky@libero.it\sa0\par\fi0\sb0 ^From:.*nme106@hotmail.com\sa0\par\fi0\sb0 ^From:.*oivluf@libero.it\sa0\par\fi0\sb0 ^From:.*henrywinter\sa0\par\fi0\sb0 ^From:.*BeavisandButthead@usa.net\sa0\par\fi0\sb0 ^From:.*Windows\'ae2000\sa0\par\fi0\sb0 ^From:.*sevenofnine@freemail.it\sa0\par\fi0\sb0 ^From:.*dark\\.tower@iol.it\sa0\par\fi0\sb0 ^From:.*BLUKLEIN@iol.it\sa0\par\fi0\sb0 ^From:.*m\\.lore@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*suppo@katamail.com\sa0\par\fi0\sb0 ^From:.*newsoft@nsoft.it\sa0\par\fi0\sb0 ^From:.*errebi@fiscalinet.it\sa0\par\fi0\sb0 ^From:.*a\\.sevi@katamail.com\sa0\par\fi0\sb0 ^From:.*kingz@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*nkoffr@tin.it\sa0\par\fi0\sb0 ^From:.*giovannad\\'arco@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*gaucie@tin.it\sa0\par\fi0\sb0 ^From:.*borisnospam@hotmail.com.com\sa0\par\fi0\sb0 ^From:.*io@io.it\sa0\par\fi0\sb0 ^From:.*junfan\sa0\par\fi0\sb0 ^From:.*ziocan@fica.it\sa0\par\fi0\sb0 ^From:.*ciberneta@libero.it\sa0\par\fi0\sb0 ^From:.*junfan77@libero.it\sa0\par\fi0\sb0 ^From:.*maandateacagher@dicorsa.gulp\sa0\par\fi0\sb0 ^From:.*madQ\sa0\par\fi0\sb0 ^From:.*XPDCVwtw\sa0\par\fi0\sb0 ^From:.*geremia@mclink.it\sa0\par\fi0\sb0 ^From:.*info@aroundstore.com\sa0\par\fi0\sb0 ^From:.*woody_hesse@iol.it\sa0\par\fi0\sb0 ^From:.*a_capelli@hotmail.com\sa0\par\fi0\sb0 ^From:.*aes-mail@freenet.hut.fi\sa0\par\fi0\sb0 ^From:.*grog@tin.it\sa0\par\fi0\sb0 ^From:.*jacline@dueffe.it\sa0\par\fi0\sb0 ^From:.*urihel@mmp2.iol.it\sa0\par\fi0\sb0 ^From:.*acia@tin.it\sa0\par\fi0\sb0 ^From:.*alexievi?c?@tin.it\sa0\par\fi0\sb0 ^From:.*liberal73@iname.com\sa0\par\fi0\sb0 ^From:.*tznt0078@pt.tizeta.it\sa0\par\fi0\sb0 ^From:.*paolocl@netmail.com\sa0\par\fi0\sb0 ^From:.*fedrox@libero.it\sa0\par\fi0\sb0 ^From:.*fdonline@iname.com\sa0\par\fi0\sb0 ^From:.*maga@provincia.ps.it\sa0\par\fi0\sb0 ^From:.*inaj@freemail.it\sa0\par\fi0\sb0 ^From:.*hot@warm.bo\sa0\par\fi0\sb0 ^From:.*npole@_REMOVE_bigfoot.com\sa0\par\fi0\sb0 ^From:.*hastaluego99@.*hotmail.com\sa0\par\fi0\sb0 ^From:.*bluesedelica@iol.it\sa0\par\fi0\sb0 ^From:.*cbu_ut@hotmail.com\sa0\par\fi0\sb0 ^From:.*massj@BUDDAflashmail.com\sa0\par\fi0\sb0 ^From:.*new@life.now\sa0\par\fi0\sb0 ^From:.*debian@matsumanga.co.jp\sa0\par\fi0\sb0 ^From:.*as.ps@flashnet.it\sa0\par\fi0\sb0 ^From:.*C_Zambo@iol.it\sa0\par\fi0\sb0 ^From:.*club.italia.milano@iol.it\sa0\par\fi0\sb0 ^From:.*juretto@tin.it\sa0\par\fi0\sb0 ^From:.*gattoone@hotmail.com\sa0\par\fi0\sb0 ^From:.*mariafrf@tin.it\sa0\par\fi0\sb0 ^From:.*tamarica@tin.it\sa0\par\fi0\sb0 ^From:.*nathing@tin.it\sa0\par\fi0\sb0 ^From:.*andreap@instation.it\sa0\par\fi0\sb0 ^From:.*stephendedalus1@yahoo.com\sa0\par\fi0\sb0 ^From:.*dpmarc@tin.it\sa0\par\fi0\sb0 ^From:.*torque_@hotmail.com\sa0\par\fi0\sb0 ^From:.*giulio_bottini@bigfoot.com\sa0\par\fi0\sb0 ^From:.*FOX99@mail.asianet.it\sa0\par\fi0\sb0 ^From:.*mpolve@tin.it\sa0\par\fi0\sb0 ^From:.*nino@affaritaliani.it\sa0\par\fi0\sb0 ^From:.*alxcost@tin.it\sa0\par\fi0\sb0 ^From:.*eghiani@etruria.net\sa0\par\fi0\sb0 ^From:.*microgest@microgest.it\sa0\par\fi0\sb0 ^From:.*aiax@excite.com\sa0\par\fi0\sb0 ^From:.*jodyrm@hotmail.com\sa0\par\fi0\sb0 ^From:.*menthos@posta.alinet.it\sa0\par\fi0\sb0 ^From:.*hongkongmail@iname.com\sa0\par\fi0\sb0 ^From:.*taexpo.*@idirect.ca\sa0\par\fi0\sb0 ^From:.*vendicator@hell.com\sa0\par\fi0\sb0 ^From:.*S&F@tin.it\sa0\par\fi0\sb0 ^From:.*rick\\.sabbadini@iol.it\sa0\par\fi0\sb0 ^From:.*condon@hotpop.com\sa0\par\fi0\sb0 ^From:.*wiwaxia@bigfoot.com\sa0\par\fi0\sb0 #^From:.*maxadamo@tin.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ######################\sa0\par\fi0\sb0 # From per it.news.* #\sa0\par\fi0\sb0 ######################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*lustfemale\sa0\par\fi0\sb0 ^From:.*bamoo*@sexmagnet.com\sa0\par\fi0\sb0 ^From:.*fogazzid@usa.net\sa0\par\fi0\sb0 ^From:.*robcn@ibm.net\sa0\par\fi0\sb0 ^From:.*alessandro\\.villetti@usa.net\sa0\par\fi0\sb0 ^From:.*f.varoli@antilink.prolink.replica.it\sa0\par\fi0\sb0 ^From:.*crpraolini@.*libero.it\sa0\par\fi0\sb0 ^From:.*jojo@arcanet.it\sa0\par\fi0\sb0 ^From:.*pxqpas@tin.it\sa0\par\fi0\sb0 ^From:.*roxana@flashnet.it\sa0\par\fi0\sb0 ^From:.*nstdvd@nospamtin.it\sa0\par\fi0\sb0 ^From:.*blisset@i.am\sa0\par\fi0\sb0 ^From:.*mat66@arc.it\sa0\par\fi0\sb0 ^From:.*pod@pineto.net\sa0\par\fi0\sb0 ^From:.*nicola@netstation.org\sa0\par\fi0\sb0 ^From:.*rcaudan@whitepower.com\sa0\par\fi0\sb0 ^From:.*nsj@iname.com\sa0\par\fi0\sb0 ^From:.*tipfkam.*@hotmail.com\sa0\par\fi0\sb0 ^From:.*fuoripista@altavista.net\sa0\par\fi0\sb0 ^From:.*fuoripista@yahoo.it\sa0\par\fi0\sb0 ^From:.*fogazzid@bigfoot.com\sa0\par\fi0\sb0 # Pirotti. Un uomo, un mito.\sa0\par\fi0\sb0 ^From:.*pirotti@ngweb.it\sa0\par\fi0\sb0 ^From:.*pr[ou]sper.*@.*ctonline.it\sa0\par\fi0\sb0 ^From:.*pirotti@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*prpiro@tin.it\sa0\par\fi0\sb0 ^From:.*prosperopirotti@tin.it\sa0\par\fi0\sb0 ^From:.*stamink@armando.com\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ###############################\sa0\par\fi0\sb0 # From per it.cultura.ateismo #\sa0\par\fi0\sb0 ###############################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*canali.massimo@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*tito_tazio@hotmail.com\sa0\par\fi0\sb0 ^From:.*rcaudan@mankind.org\sa0\par\fi0\sb0 ^From:.*pasquale.tufano@libero.it\sa0\par\fi0\sb0 ^From:.*cavaliereverde@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*botti\\.d@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*med.nat@transports.it\sa0\par\fi0\sb0 ^From:.*barabb\\.a@iol\\.it\sa0\par\fi0\sb0 ^From:.*Club\\.italia\\.milano@iol.it\sa0\par\fi0\sb0 ^From:.*Pietro_Buttiglione@insieme.net\sa0\par\fi0\sb0 ^From:.*spiritologia@iol.it\sa0\par\fi0\sb0 ^From:.*spiritologia@supereva.it\sa0\par\fi0\sb0 ^From:.*whole\\.lotta@lo.ve\sa0\par\fi0\sb0 ^From:.*w6130370@inwind.it\sa0\par\fi0\sb0 ^From:.*saccoforino@yahoo.com\sa0\par\fi0\sb0 ^From:.*chief@etruria.net\sa0\par\fi0\sb0 ^From:.*mlagatt@tin.it\sa0\par\fi0\sb0 ^From:.*thats\\.the\\.way@do.it\sa0\par\fi0\sb0 ^From:.*shermin93@hotmail.com\sa0\par\fi0\sb0 ^From:.*ad549379@silab.dsi.unimi.it\sa0\par\fi0\sb0 ^From:.*auro\\.zac@tiscalinet.it\sa0\par\fi0\sb0 ^From:.*picardismy@life.sbam\sa0\par\fi0\sb0 ^From:.*trekkers@forever.slump\sa0\par\fi0\sb0 # Gianfranco Bruno. Cerca di insidiare i record del Pirotti.\sa0\par\fi0\sb0 ^From:.*gbruno@webaq.it\sa0\par\fi0\sb0 ^From:.*vicolo_connery@yahoo.com\sa0\par\fi0\sb0 ^From:.*supergiaf@libero.it\sa0\par\fi0\sb0 ^From:.*supergiaf@tiscalinet.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #############################\sa0\par\fi0\sb0 # Vari e ben poco eventuali #\sa0\par\fi0\sb0 #############################\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ^From:.*titanio@freemail.it\sa0\par\fi0\sb0 ^From:.*aledumas@libero.it\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 That's all folks! \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_LEAFNODEPLUS}{\*\bkmkend ID_LEAFNODEPLUS}\b\fs34\lang1024\f1 8.3. Leafnode+\keepn\hyphpar0\par\pard\sb200\li400\sl234 \fs18 Nota: \b0 Sottosezione a cura di Giambo (mailto:ggiambon@student.ethz.ch)\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Leafnode+ deriva da \b Leafnode v1.4\b0 . La differenza pi\'f9 interessante rispetto al suo \i predecessore\i0 \'e8 forse la velocit\'e0 nello scaricare gli articoli di ogni NG: lo scaricamento avviene in maniera \i asincrona\i0 , non aspettando cio\'e8 una risposta per ogni richiesta prima di procedere con la prossima, bens\'ec spedendo pi\'f9 richieste ed eventualmente riformulando quelle che non hanno ricevuto una risposta. Risulta inoltre pi\'f9 veloce nel fornire i suoi servizi una volta contattato. Manca purtroppo dell'opzione \b delaybody\b0 che permette di scaricare in un secondo tempo il corpo di un messaggio del quale si \'e8 letto il titolo: l'autore promette di implementare questa possibilit\'e0 se le richieste saranno numerose. Manca inoltre il \i filterfile\i0 , 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 prevaricando cos\'ec i suoi utenti; questi ultimi possono utilizzare le possibilit\'e0 di filtraggio offerte dai loro \i newsreader\i0 . Dall'altro lato c'\'e8 da dire che per una LinuxBox configurata per un solo utente, l'utilizzo di un filtro pu\'f2 portare ad un buon risparmio sulla bolletta telefonica, risparmio per\'f2 facilmente uguagliabile dalla maggiore velocit\'e0 di leafnode+ nello scaricare i messaggi rispetto al suo predecessore. Come si pu\'f2 notare, ci sono tutti gli elementi per innescare una \i guerra santa\i0 , o per spingere qualche volenteroso a implementare il filtraggio utilizzando i sorgenti di leafnode: magari potr\'e0 nascere una nuova creatura, \i leafnode++\i0 :-) \par\pard\sb100\sl260 In linea di massima leafnode+ assomiglia al suo predecessore, vi rimando al capitolo su \b leafnode\b0 per quel che concerne la creazione degli utenti, l'uso di \b fetchnews\b0 e \b texpire\b0 . La differenza principale \'e8 che il file di configurazione non si trova nella directory \b /etc/leafnode/\b0 , bens\'ec in quella \b /usr/lib/leafnode/\b0 . Se si compila partendo dai sorgenti, si pu\'f2 modificare nel \i Makefile\i0 la voce \b LIBDIR\b0 per piazzare i file di configurazione in \b /etc/leafnode/\b0 (Il che sarebbe, IMHO, pi\'f9 \i ordinato\i0 ). \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 Se si compila partendo dai sorgenti, di default l'installazione crea un file in questa directory con il nome \fs16\f2 config.example\fs18\f1 : Sar\'e0 necessario quindi copiare il file con il nome corretto, cio\'e8 \fs16\f2 config\fs18\f1 , facendo attenzione ai diritti di lettura/scrittura sia del file che della directory che lo contiene (in questa directory verr\'e0 scritto pure il \fs16\f2 groupinfo\fs18\f1 !). Il file di configurazione \'e8 analogo a quello di Leafnode. \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \b [BUGS]\b0 . C'\'e8 un curioso \i BUG\i0 con la versione 2.10: la prima volta che viene dato il comando \b make installall\b0 compare la scritta: \par\pard\sb200\sl234 \fs18\lang1024\f2 make: libutil.a: Command not found\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ridando il comando \b make installall\b0 il tutto viene compilato e installato correttamente. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 9. Firewall}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 9. Firewall}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_FIREWALL}{\*\bkmkend ID_FIREWALL}\b\fs41\f1 Capitolo 9. Firewall\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Un \i firewall\i0 \'e8 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 \b Linux\b0 , sia per proteggere un singolo PC, sia una \b rete locale\b0 , in entrambe le situazioni nel caso di collegamento a internet. Inoltre vedremo come poter consentire la \b condivisione\b0 di una connessione internet, in modo che un singolo PC possa isolare da possibili \i attacchi\i0 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 \i servizi\i0 all'esterno (infatti per questo servizio serve un demone apposito, \b rinetd\b0 ). Inoltre l'inserimento nella macchina firewall di un server \b DNS\b0 e di un \b cache proxy\b0 permetteranno di sveltire il traffico: il server DNS locale permette infatti di avere una risposta pi\'f9 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\'e0 scaricati, evitando una nuova richiesta esterna \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Questi due tipi di servizi sono trattati nelle sezioni \b DNS\b0 e \b WWWOFFLE\b0 del \i Quick&Easy Configuration HOWTO\i0 ).\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Linux contiene gi\'e0 al suo interno tutto il necessario per implementare un \i firewall\i0 e il \i masquerading\i0 : si tratta del tool ipchains dei kernel 2.2.x. I kernel della serie 2.0.x usavano ipfwadm, mentre quelli dell'ultima versione 2.4.x usano iptables: qui si tratter\'e0 solo la gestione con \b ipchains\b0 e kernel 2.2.x (e in futuro \b iptables\b0 ), mentre \b ipfwadm\b0 non verr\'e0 trattato. Per poter utilizzare ipchains, \'e8 necessario che il kernel sia compilato con le opzioni di firewalling seguenti impostate a \b Yes\b0 : \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 Network firewalls \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: firewalling \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: always defragment \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: transparent proxy support \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: masquerading \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 IP: ICMP masquerading \hyphpar0\par\pard\sb100\sl260 \lang1040 pi\'f9 naturalmente tutto quello che vi serve per la rete (\b networking\b0 , \b ppp\b0 , \b ethernet\b0 , \b routing\b0 , ecc.). Ipchains suddivide il traffico in tre tronconi, fornendo tre filtri: \b input\b0 , \b output\b0 e \b forward\b0 , 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 \'e8 presente alcuna regola specifica, si applica la politica di \i default\i0 . Nel \i Quick&Easy Configuration HOWTO\i0 prendereno in considerazione solo le cose essenziali e solo quelle trattate nello script seguente, per il resto si rimanda al \b Firewall-Howto\b0 e all' \b Ipchains-Howto\b0 , oltre all'ottima sezione degli \b Appunti di Informatica Libera\b0 . L'impostazione tipica di una regola \'e8 la seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 ipchains [] []\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Le opzioni di comando sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b -F\b0 o \b --flush\b0 : elimina tutte le regole del filtro specificato \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -D\b0 o \b --delete\b0 : elimina una o pi\'f9 regole dal filtro specificato \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -A\b0 o \b --append\b0 : aggiunge una regola in coda a quelle del filtro selezionato \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -I\b0 o \b --insert\b0 : inserisce una regola in una posizione stabilita del filtro selezionato \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -R\b0 o \b --replace\b0 : sostituisce una regola del filtro selezionato \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -L\b0 o \b --list\b0 : elenca le regole di un uno o di tutti i filtri \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -P\b0 o \b --policy\b0 : cambia la politica predefinita per il filtro specificato \hyphpar0\par\pard\sb100\sl260 \lang1040 I filtri sono (rispettivamente per pacchetti in entrata, uscita e in transito): \b input\b0 , \b output\b0 , \b forward\b0 \par\pard\sb100\sl260 Gli obiettivi sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b ACCEPT\b0 : consente il transito del pacchetto \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b DENY\b0 : impedisce il transito del pacchetto, limitandosi a ignorarlo \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b REJECT\b0 : impedisce il transito del pacchetto notificando all'origine il rifiuto (viene inviato un messaggio \i ICMP\i0 specificante che il pacchetto \'e8 stato rifiutato) \hyphpar0\par\pard\sb100\sl260 \lang1040 Le regole invece usano le seguenti opzioni (le parentesi \b []\b0 indicano qualcosa di opzionale, mentre il \b !\b0 indica una negazione): \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b -p [!] \{tcp|udp|icmp|all\}\b0 : stabilisce il protocollo cui si applica la regola (default: all) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -i [!] interfaccia\b0 : stabilisce a quale interfaccia si applica la regola \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -j obiettivo\b0 : stabilisce cosa fare in caso di corrispondenza della regola \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -s [!] indirizzo[/maschera]\b0 : l'indirizzo sorgente da cui arriva il pacchetto (default : 0.0.0.0/0, cio\'e8 ogni indirizzo) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -d [!] indirizzo[/maschera]\b0 : l'indirizzo cui \'e8 diretto il pacchetto (default : 0.0.0.0/0, cio\'e8 ogni indirizzo) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -l\b0 : effettua il log di quanto passa attraverso la regola \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -n\b0 : non risolve i nomi di domini (lascia l'ip numerico) \hyphpar0\par\pard\sb100\sl260 \lang1040 Altre informazioni sono reperibili nei documenti su indicati. Il \i mascheramento IP\i0 permette di far credere all'esterno che l'origine delle connessioni \'e8 sempre un solo nodo, anche quando in realt\'e0 si tratta di un nodo interno ad una rete privata. Naturalmente, il nodo che esegue il mascheramento \'e8 poi in grado di distinguere quali siano stati i nodi mascherati che hanno originato la connessione, girando a loro i pacchetti di loro competenza. \par\pard\sb100\sl260 Lo script seguente funziona sia come firewall che da mascheramento di una rete locale interna verso Internet. \'c8 configurato per l'accesso \i dialup\i0 via \b ppp\b0 (usa l'interfaccia \i ppp0\i0 ). Leggete i commenti nel file, modificate dove indicato e andate in pace. Dalla revisione 10 dello script, la configurazione (cio\'e8 le parti dello script che NECESSARIAMENTE vanno adeguate al proprio sistema) \'e8 stata estrapolata dallo script principale, e posta il un file a parte, che se non modificate lo script sar\'e0 \fs18\f2 /etc/firewall.conf\fs20\f0 . Per sapere come abilitare il supporto per firewall e masquerading, guardate nella pagina relativa al kernel. Lo script dovrebbe fare la maggior parte dei controlli su esistenza di file, connessione, parametri, e segnalarvi se qualcosa non va. Date i seguenti comandi per settare i giusti proprietari e permessi: \par\pard\sb200\sl234 \fs18\lang1024\f2 cp firewall /usr/sbin\sa0\par\fi0\sb0 chown root.root /usr/sbin/firewall\sa0\par\fi0\sb0 chmod 744 /usr/sbin/firewall\sa0\par\fi0\sb0 cp firewall.conf /etc\sa0\par\fi0\sb0 chown root.root /etc/firewall.conf\sa0\par\fi0\sb0 chmod 644 /etc/firewall.conf\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Una volta modificato il file di configurazione, potete avviare il firewall DOPO aver stabilito la connessione (prima non esiste l'interfaccia di rete \b ppp0\b0 !) col comando \b firewall start\b0 , e arrestarlo col comando \b firewall stop\b0 . Altri comandi sono: \b firewall restart\b0 , per riavviarlo dopo aver modificato il file di configurazione a connessione attivata, e \b firewall status\b0 , per avere un resoconto delle regole attualmente attive nel sistema. Consiglio di automatizzare questa procedura, inserendo i comandi di avvio e arresto rispettivamente in \b /etc/ppp/ip-up\b0 e \b /etc/ppp/ip-down\b0 . Se usate REDHAT e simili, questi ultimi sono dei file, quindi basta inserire i comandi al loro interno. Se invece usate DEBIAN, questi sono delle directory, e contengono degli script. Per il resto il funzionamento \'e8 analogo: i file o gli script nelle dir vengono avviati rispettivamente subito dopo aver stabilito la connessione e subito prima di arrestarla. Esempi di script per Debian sono i seguenti: \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/bash\sa0\par\fi0\sb0 # script /etc/ppp/ip-up/firewallstart\sa0\par\fi0\sb0 /usr/sbin/firewall start\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e: \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/bash\sa0\par\fi0\sb0 # script /etc/ppp/ip-up/firewallstop\sa0\par\fi0\sb0 /usr/sbin/firewall stop\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 Per il mascheramento di \b ICQ\b0 , dovete scaricare, compilare e installare il modulo \b ip_masq_icq\b0 , reperibile all'URL http://freeshell.org/~djsf/masq-icq/ oppure all'URL http://djsf.narod.ru/masq-icq/ (un grazie a \i Filippo Panessa\i0 per il suggerimento!). In \b ICQ2000\b0 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 \b 2000:4000\b0 .\hyphpar0\par\pard\sb200\sl234 \f2 #!/bin/bash\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 # ========= Script per la configurazione di un Firewall per Linux ==========\sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Da utilizzarsi esclusivamente per una macchina stand-alone connessa\sa0\par\fi0\sb0 # ad internet tramite connessione dial-up. E' necessario disporre di\sa0\par\fi0\sb0 # un kernel della serie 2.2.x o 2.3.x compilato con il supporto\sa0\par\fi0\sb0 # del masquerading, del firewall e l'opzione "always defragment".\sa0\par\fi0\sb0 # In questa versione si usa IPCHAINS, NON IPFWADM o IPTABLES!\sa0\par\fi0\sb0 # Viene filtrato cio' che entra e permesso alla rete di uscire\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # $Revisione: 11.0$\sa0\par\fi0\sb0 # modificato da MrShark su un lavoro precedente di Maurizio Cimaschi,\sa0\par\fi0\sb0 # con vari preziosi suggerimenti di Pierluigi De Rosa e Marco d'Itri.\sa0\par\fi0\sb0 # (Se ci sono errori, fatemeli conoscere a: ).\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Utilizzo: firewall start|stop|status|restart\sa0\par\fi0\sb0 # start = attiva il firewall\sa0\par\fi0\sb0 # stop = disattiva il firewall\sa0\par\fi0\sb0 # status = impostazioni correnti del firewall\sa0\par\fi0\sb0 # restart = rilegge il file di configurazione\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # by Antonio Fragola, aka MrShark - The Informaniac\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Da questa revisione, le parti variabili sono state spostate in un\sa0\par\fi0\sb0 # file esterno di configurazione, quindi NON c'e' piu' bisogno di\sa0\par\fi0\sb0 # intervenire all'interno di questo file, a meno di non volerlo\sa0\par\fi0\sb0 # personalizzare aggiungendo nuovi servizi eventualmente assenti.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Segue una serie di funzioni, lo script principale e' alla fine\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_root () \{\sa0\par\fi0\sb0 #--------------- verifica che lo script sia avviato da root\sa0\par\fi0\sb0 if [ $UID != 0 ]; then\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo -e "\\aATTENZIONE: solo l'utente root puo' avviare il firewall!"\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_root\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_cfg () \{\sa0\par\fi0\sb0 #--------------- verifica presenza file di configurazione\sa0\par\fi0\sb0 CFG="/etc/firewall.conf"\sa0\par\fi0\sb0 if [ -f $CFG ]; then\sa0\par\fi0\sb0 # source del file di configurazione\sa0\par\fi0\sb0 . $CFG\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo -e "\\aATTENZIONE: il file $CFG non e' presente!"\sa0\par\fi0\sb0 echo "Da questa revisione, le parti variabili sono state spostate in un"\sa0\par\fi0\sb0 echo "file esterno di configurazione, quindi NON c'e' piu' bisogno di"\sa0\par\fi0\sb0 echo "intervenire all'interno di questo file, a meno di non volerlo"\sa0\par\fi0\sb0 echo "personalizzare aggiungendo nuovi servizi eventualmente assenti."\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_cfg\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_const () \{\sa0\par\fi0\sb0 #--------------- costanti utili\sa0\par\fi0\sb0 #--------------- le parti variabili sono nel file di configurazione\sa0\par\fi0\sb0 INTERFACES=`/sbin/ifconfig | grep Link | cut -d \\ -f 1`\sa0\par\fi0\sb0 CURRENT_KERNEL=`uname -r`\sa0\par\fi0\sb0 INTERFACEMASK="255.255.255.255"\sa0\par\fi0\sb0 INTERFACEIP=`/sbin/ifconfig $INTERFACE | grep inet | \\\sa0\par\fi0\sb0 cut -d : -f 2 | cut -d \\ -f 1`\sa0\par\fi0\sb0 LOCALIP="$INTERFACEIP/$INTERFACEMASK"\sa0\par\fi0\sb0 ANYWHERE="0.0.0.0/0"\sa0\par\fi0\sb0 LOOPBACK="127.0.0.0/8"\sa0\par\fi0\sb0 CLASS_A="10.0.0.0/8"\sa0\par\fi0\sb0 CLASS_B="172.16.0.0/12"\sa0\par\fi0\sb0 CLASS_C="192.168.0.0/16"\sa0\par\fi0\sb0 CLASS_D_MULTICAST="224.0.0.0/4"\sa0\par\fi0\sb0 CLASS_E_RESERVED_NET="240.0.0.0/5"\sa0\par\fi0\sb0 NFS_PORT="2049" # (TCP/UDP) NFS\sa0\par\fi0\sb0 SOCKS_PORT="1080" # (TCP) Socks\sa0\par\fi0\sb0 # X Windows alloca le porte a partire dalla 6000 e incrementa\sa0\par\fi0\sb0 # fino alla 6063 per ogni server addizionale in funzione.\sa0\par\fi0\sb0 XWINDOW_PORTS="6000:6063" # (TCP) X windows\sa0\par\fi0\sb0 # traceroute di solito usa -S 32769:65535 -D 33434:33523\sa0\par\fi0\sb0 TRACEROUTE_SRC_PORTS="32769:65535"\sa0\par\fi0\sb0 TRACEROUTE_DEST_PORTS="33434:33523"\sa0\par\fi0\sb0 PRIVPORTS="0:1023"\sa0\par\fi0\sb0 UNPRIVPORTS="1024:65535"\sa0\par\fi0\sb0 # i client SSH incominciano dalla porta 1023 e vanno a scalare fino alla 513\sa0\par\fi0\sb0 # per ogni nuova connessione simultanea generata da una porta privilegiata.\sa0\par\fi0\sb0 # I client possono essere impostati per usare solo porte non privilegiate.\sa0\par\fi0\sb0 SSH_PORTS="1022:1023"\sa0\par\fi0\sb0 #--------------- codici escape colori\sa0\par\fi0\sb0 RED="\\\\033[1;31m"\sa0\par\fi0\sb0 GREEN="\\\\033[0;32m"\sa0\par\fi0\sb0 WHITE="\\\\033[0;39m"\sa0\par\fi0\sb0 CYAN="\\\\033[0;36m"\sa0\par\fi0\sb0 BLUE="\\\\033[1;34m"\sa0\par\fi0\sb0 ORANGE="\\\\033[0;33m"\sa0\par\fi0\sb0 YELLOW="\\\\033[1;33m"\sa0\par\fi0\sb0 MAGENTA="\\\\033[1;35m"\sa0\par\fi0\sb0 \} # fw_const\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_nointerface () \{\sa0\par\fi0\sb0 #--------------- comunica che non esiste l'interfaccia di rete\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo -e "$\{RED\}ATTENZIONE: $\{YELLOW\}l'interfaccia "\sa0\par\fi0\sb0 echo -e "$\{RED\}ppp0$\{YELLOW\} NON e' attiva nel sistema."\sa0\par\fi0\sb0 echo -e "Firewall NON attivato. Controllare connessione Internet"\sa0\par\fi0\sb0 echo -en "$\{WHITE\}Interfacce attualmente attive nel PC: "\sa0\par\fi0\sb0 for irf in $\{INTERFACES\} ; do\sa0\par\fi0\sb0 echo -en "$\{RED\}$\{irf\}$\{WHITE\} "\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\n\\a"\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 \} # fw_nointerface\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_go () \{\sa0\par\fi0\sb0 #--------------- inizio attivazione e flushing\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 echo "Attivazione del Firewall in corso..."\sa0\par\fi0\sb0 echo -e "Indirizzo IP locale sull'interfaccia $\{YELLOW\}"\sa0\par\fi0\sb0 echo -e "$INTERFACE$\{WHITE\} : $\{RED\}$LOCALIP$\{WHITE\}"\sa0\par\fi0\sb0 echo -n "Flushing delle regole eventualmente presenti : "\sa0\par\fi0\sb0 $IPCHAINS -F input\sa0\par\fi0\sb0 $IPCHAINS -F output\sa0\par\fi0\sb0 $IPCHAINS -F forward\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 \} # fw_go\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_protezioni () \{\sa0\par\fi0\sb0 #--------------- attivazione protezioni varie\sa0\par\fi0\sb0 echo -n "Permesso traffico locale sull'interfaccia di loopback : "\sa0\par\fi0\sb0 $IPCHAINS -A input -s $ANYWHERE -i lo -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Permesso traffico locale sull'interfaccia di rete della LAN : "\sa0\par\fi0\sb0 $IPCHAINS -A input -i $LOCAL_INTERFACE -s $LOCALNET -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Attivazione Source Address Verification : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then\sa0\par\fi0\sb0 for f in /proc/sys/net/ipv4/conf/*/rp_filter; do\sa0\par\fi0\sb0 echo 1 > $f\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "SAV non disponibile, utilizzo di ipchains : "\sa0\par\fi0\sb0 $IPCHAINS -A input -s 127.0.0.1 -i lo -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- syn cookie\sa0\par\fi0\sb0 echo -n "Attivazione TCP SYN Cookie Protection : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then\sa0\par\fi0\sb0 echo 1 >/proc/sys/net/ipv4/tcp_syncookies\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- always defrag\sa0\par\fi0\sb0 echo -n "Attivazione Always Defragging Protection : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/ip_always_defrag ]; then\sa0\par\fi0\sb0 echo 1 > /proc/sys/net/ipv4/ip_always_defrag\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- broadcast echo\sa0\par\fi0\sb0 echo -n "Attivazione Broadcast Echo Protection : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then\sa0\par\fi0\sb0 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- bad error\sa0\par\fi0\sb0 echo -n "Attivazione Bad Error Message Protection : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then\sa0\par\fi0\sb0 echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- icmp redirect\sa0\par\fi0\sb0 echo -n "Disattivazione ICMP Redirect Acceptance : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then\sa0\par\fi0\sb0 for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do\sa0\par\fi0\sb0 echo 0 > $f\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 for f in /proc/sys/net/ipv4/conf/*/send_redirects; do\sa0\par\fi0\sb0 echo 0 > $f\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- source route\sa0\par\fi0\sb0 echo -n "Disattivazione Source Routed Packets : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then\sa0\par\fi0\sb0 for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do\sa0\par\fi0\sb0 echo 0 > $f\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- i marziani!\sa0\par\fi0\sb0 echo -n "Log pacchetti spoofed, source routed, redirected : "\sa0\par\fi0\sb0 if [ -e /proc/sys/net/ipv4/conf/all/log_martians ]; then\sa0\par\fi0\sb0 for f in /proc/sys/net/ipv4/conf/*/log_martians; do\sa0\par\fi0\sb0 echo 1 > $f\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 #--------------- impostazione policy\sa0\par\fi0\sb0 echo -e "$\{YELLOW\}Attivazione dei servizi in ingresso richiesti : $\{WHITE\}"\sa0\par\fi0\sb0 echo -n "Impostazione della POLICY di ingresso a DENY : "\sa0\par\fi0\sb0 $IPCHAINS -P input DENY\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 \} # fw_protezioni\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_dns () \{\sa0\par\fi0\sb0 #--------------- DNS (53)\sa0\par\fi0\sb0 echo -n "Server DNS : "\sa0\par\fi0\sb0 if [ $DNS = "ON" ]; then\sa0\par\fi0\sb0 for dns in $DNS_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $dns 53 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -s $dns 53 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_dns\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_http () \{\sa0\par\fi0\sb0 #--------------- HTTP (80) e HTTPS (443)\sa0\par\fi0\sb0 echo -n "Navigazione WEB : "\sa0\par\fi0\sb0 if [ $HTTP = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s 0/0 80 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s 0/0 443 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_http\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_smtp () \{\sa0\par\fi0\sb0 #--------------- SMTP (25)\sa0\par\fi0\sb0 echo -n "Invio posta : "\sa0\par\fi0\sb0 if [ $SMTP = "ON" ]; then\sa0\par\fi0\sb0 for smtp in $SMTP_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -s $smtp 25 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -p tcp -s $ANYWHERE 25 \\\sa0\par\fi0\sb0 # -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_smtp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_imap () \{\sa0\par\fi0\sb0 #--------------- IMAP (143)\sa0\par\fi0\sb0 echo -n "Posta IMAP : "\sa0\par\fi0\sb0 if [ $IMAP = "ON" ]; then\sa0\par\fi0\sb0 for imap in $IMAP_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -s $imap 143 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_imap\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_pop3 () \{\sa0\par\fi0\sb0 #--------------- POP3 (110)\sa0\par\fi0\sb0 echo -n "Prelievo posta : "\sa0\par\fi0\sb0 if [ $POP3 = "ON" ]; then\sa0\par\fi0\sb0 for pop3 in $POP3_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -s $pop3 110 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_pop3\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_nntp () \{\sa0\par\fi0\sb0 #--------------- NNTP (119)\sa0\par\fi0\sb0 echo -n "Newsgroup Usenet : "\sa0\par\fi0\sb0 if [ $NNTP = "ON" ]; then\sa0\par\fi0\sb0 for news in $NNTP_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $news 119 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_nntp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_ftp () \{\sa0\par\fi0\sb0 #--------------- FTP (20/21)\sa0\par\fi0\sb0 echo -n "File Transfer Protocol : "\sa0\par\fi0\sb0 if [ $FTP = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y --source-port 21 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 # FTP Port Mode (normale)\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp --source-port 20 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 # FTP Passive Mode (senza questa i browser non accedono ai siti FTP)\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE ! -y --source-port $UNPRIVPORTS \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -p tcp -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_ftp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_ssh () \{\sa0\par\fi0\sb0 #--------------- SSH (22)\sa0\par\fi0\sb0 echo -n "Secure Shell : "\sa0\par\fi0\sb0 if [ $SSH = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $ANYWHERE 22 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $ANYWHERE 22 \\\sa0\par\fi0\sb0 -d $LOCALIP $SSH_PORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_ssh\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_icmp () \{\sa0\par\fi0\sb0 #--------------- ICMP (solo tipi 0/3/11)\sa0\par\fi0\sb0 echo -n "Traffico ICMP : "\sa0\par\fi0\sb0 if [ $ICMP = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -p icmp -s $ANYWHERE 0 -d $LOCALIP -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -p icmp -s $ANYWHERE 3 -d $LOCALIP -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -p icmp -s $ANYWHERE 11 -d $LOCALIP -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_icmp\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_auth () \{\sa0\par\fi0\sb0 #--------------- AUTH (113)\sa0\par\fi0\sb0 echo -n "Richieste di identificazione : "\sa0\par\fi0\sb0 if [ $AUTH = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -d $LOCALIP 113 -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_auth\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_irc () \{\sa0\par\fi0\sb0 #--------------- IRC (6667)\sa0\par\fi0\sb0 echo -n "Internet Relay Chat : "\sa0\par\fi0\sb0 if [ $IRC = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $ANYWHERE 6667 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_irc\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_icq () \{\sa0\par\fi0\sb0 #--------------- ICQ (2000:4000)\sa0\par\fi0\sb0 echo -n "ICQ : "\sa0\par\fi0\sb0 if [ $ICQ = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -d $LOCALIP 2000:4000 -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP 4000 -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp --source-port 2000:4000 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 # con il "! -y" non funge il dcc in uscita! si deve impostare\sa0\par\fi0\sb0 # anche il client ad usare questo range di porte\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -p tcp ! -y --source-port 2000:4000 \\\sa0\par\fi0\sb0 # -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp --source-port 4000 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_icq\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_napster () \{\sa0\par\fi0\sb0 #--------------- NAPSTER (6699)\sa0\par\fi0\sb0 echo -n "NAPSTER : "\sa0\par\fi0\sb0 if [ $NAP = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y -s $ANYWHERE 6699 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_napster\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_realaudio () \{\sa0\par\fi0\sb0 #--------------- REALAUDIO (6970:6999)\sa0\par\fi0\sb0 echo -n "REALAUDIO : "\sa0\par\fi0\sb0 if [ $RAUD = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp --source-port $UNPRIVPORTS \\\sa0\par\fi0\sb0 -d $LOCALIP 6970:6999 -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_realaudio\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_whois () \{\sa0\par\fi0\sb0 #--------------- WHOIS (43)\sa0\par\fi0\sb0 echo -n "WHOIS : "\sa0\par\fi0\sb0 if [ $WHS = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp ! -y --source-port 43 \\\sa0\par\fi0\sb0 -d $LOCALIP $UNPRIVPORTS -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_whois\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_trojan () \{\sa0\par\fi0\sb0 #--------------- log bo e netbus\sa0\par\fi0\sb0 # Ogni tanto mi prude e mi va di divertirmi con fakebo! ;-)\sa0\par\fi0\sb0 # Cosa c'e` dietro queste mie porte? Venite a trovarmi quando\sa0\par\fi0\sb0 # sono online per saperlo, a vostro rischio e pericolo!!! ;-)\sa0\par\fi0\sb0 echo -n "Log Bo e Netbus : "\sa0\par\fi0\sb0 if [ $FAKE = "ON" ]; then\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 12345:12346 -l -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 31337 -l -j ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp \\\sa0\par\fi0\sb0 --destination-port 31337 -l -j ACCEPT\sa0\par\fi0\sb0 #socks per fake proxy\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 1080 -l -j ACCEPT\sa0\par\fi0\sb0 #fake telnet\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 23 -l -j ACCEPT\sa0\par\fi0\sb0 #fake finger\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 79 -l -j ACCEPT\sa0\par\fi0\sb0 #fake http\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp \\\sa0\par\fi0\sb0 --destination-port 80 -l -j ACCEPT\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_trojan\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_jerks () \{\sa0\par\fi0\sb0 #--------------- ip personalizzati da filtrare\sa0\par\fi0\sb0 echo -n "Internet Jerks : "\sa0\par\fi0\sb0 if [ $JERK = "ON" ]; then\sa0\par\fi0\sb0 for jerk in $JERK_IP ; do\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $jerk -j DENY\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_jerks\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_nolog () \{\sa0\par\fi0\sb0 #--------------- blocco senza log\sa0\par\fi0\sb0 echo -n "Blocco IGMP e PIM : "\sa0\par\fi0\sb0 # Rifiuta senza loggarli i pacchetti dei protocolli IGMP (2) e PIM (103)\sa0\par\fi0\sb0 # Libero ha il vizio di mandare 'sti pacchetti che ingolfano i log! ;-)\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p 2 -s $ANYWHERE \\\sa0\par\fi0\sb0 -d $CLASS_D_MULTICAST -j DENY\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p 103 -s $ANYWHERE \\\sa0\par\fi0\sb0 -d $CLASS_D_MULTICAST -j DENY\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]" \sa0\par\fi0\sb0 \} # fw_nolog\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_blocklog () \{\sa0\par\fi0\sb0 #--------------- blocco e log\sa0\par\fi0\sb0 echo -n "Blocco e log di tutto il resto : "\sa0\par\fi0\sb0 # Rifiuta pacchetti spoof che simulano di provenire dall'esterno.\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $LOCALIP -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe A\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $CLASS_A -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -d $CLASS_A -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe B\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $CLASS_B -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -d $CLASS_B -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti che sembrano provenire da una rete privata di Classe C\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $CLASS_C -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -d $CLASS_C -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti che sembrano provenire dall'interfaccia di Loopback\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $LOOPBACK -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti broadcast address SOURCE\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $INTERFACEMASK -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti multicast addresses di Classe D (in.h) (NET-3-HOWTO)\sa0\par\fi0\sb0 # Il Multicast e' illegale come indirizzo sorgente, ed usa UDP.\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $CLASS_D_MULTICAST -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti da indirizzi IP riservati di Classe E\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s $CLASS_E_RESERVED_NET -j DENY -l\sa0\par\fi0\sb0 # Rifiuta pacchetti con indirizzi definiti riservati dall'IANA.\sa0\par\fi0\sb0 # Nota: questi indirizzi vengono allocati periodicamente e possono\sa0\par\fi0\sb0 # quindi variare. Controllare possibilmente ogni mese la nuova lista\sa0\par\fi0\sb0 # http://www.isi.edu/in-notes/iana/assignments/ipv4-address-space\sa0\par\fi0\sb0 # Per sicurezza, sono attivi solo le seguenti classi di ip:\sa0\par\fi0\sb0 # \sa0\par\fi0\sb0 # 0.*.*.* - Non possono essere bloccati per il DHCP\sa0\par\fi0\sb0 # 127.*.*.* - LoopBack\sa0\par\fi0\sb0 # 169.254.*.* - Link Local Networks\sa0\par\fi0\sb0 # 192.0.2.* - TEST-NET\sa0\par\fi0\sb0 # 224-255.*.*.*\sa0\par\fi0\sb0 # \sa0\par\fi0\sb0 # Gli altri variano troppo spesso ultimamente...\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s 127.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s 169.254.0.0/16 -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s 192.0.2.0/24 -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -s 224.0.0.0/3 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 1.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 2.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 5.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 7.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 23.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 27.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 31.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 36.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 37.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 39.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 41.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 42.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 49.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 50.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 58.0.0.0/7 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 60.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 67.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 68.0.0.0/6 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 72.0.0.0/5 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 80.0.0.0/4 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 96.0.0.0/3 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 197.0.0.0/8 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 218.0.0.0/7 -j DENY -l\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -s 220.0.0.0/6 -j DENY -l\sa0\par\fi0\sb0 #--------------- porte TCP non privilegiate\sa0\par\fi0\sb0 # NFS: instauramento connessione TCP\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \\\sa0\par\fi0\sb0 $NFS_PORT -j DENY -l\sa0\par\fi0\sb0 # Xwindow: instauramento connessione\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \\\sa0\par\fi0\sb0 $XWINDOW_PORTS -j DENY -l\sa0\par\fi0\sb0 # SOCKS: instauramento connessione\sa0\par\fi0\sb0 # $IPCHAINS -A input -i $INTERFACE -p tcp -y -d $LOCALIP \\\sa0\par\fi0\sb0 # $SOCKS_PORT -j DENY -l\sa0\par\fi0\sb0 #--------------- porte UDP non privilegiate\sa0\par\fi0\sb0 # NFS: instauramento connessione UDP\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP \\\sa0\par\fi0\sb0 $NFS_PORT -j DENY -l\sa0\par\fi0\sb0 # TRACEROUTE UDP in ingresso\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -s $ANYWHERE \\\sa0\par\fi0\sb0 $TRACEROUTE_SRC_PORTS -d $LOCALIP $TRACEROUTE_DEST_PORTS -j DENY -l\sa0\par\fi0\sb0 #--------------- altri log\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p tcp -d $LOCALIP -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP $PRIVPORTS \\\sa0\par\fi0\sb0 -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p udp -d $LOCALIP $UNPRIVPORTS \\\sa0\par\fi0\sb0 -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p icmp -s $ANYWHERE 5 \\\sa0\par\fi0\sb0 -d $LOCALIP -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -p icmp -s $ANYWHERE 13:255 \\\sa0\par\fi0\sb0 -d $LOCALIP -j DENY -l\sa0\par\fi0\sb0 $IPCHAINS -A input -i $INTERFACE -d $ANYWHERE -j DENY -l\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 \} # fw_blocklog\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_ver_masqmod () \{\sa0\par\fi0\sb0 #--------------- controllo presenza moduli masquerading\sa0\par\fi0\sb0 echo -e "$\{YELLOW\}Mascheramento : $\{WHITE\}"\sa0\par\fi0\sb0 echo -n "Controllo presenza moduli necessari : "\sa0\par\fi0\sb0 MASQ_PRESENT=""\sa0\par\fi0\sb0 for mod in $\{IP_MASQ_MODULES\}; do\sa0\par\fi0\sb0 if [ ! -e /lib/modules/$CURRENT_KERNEL/ipv4/ip_masq_$\{mod\}.o ]; then\sa0\par\fi0\sb0 MASQ_PRESENT="err"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 \} # fw_ver_masqmod\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_yesmasqmod () \{\sa0\par\fi0\sb0 #--------------- moduli masquerading presenti e si continua\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Installazione dei moduli necessari al Mascheramento : "\sa0\par\fi0\sb0 for mod in $\{IP_MASQ_MODULES\} ; do\sa0\par\fi0\sb0 /sbin/insmod "ip_masq_$\{mod\}" > /dev/null\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Attivazione IP forwarding : "\sa0\par\fi0\sb0 echo 1 > /proc/sys/net/ipv4/ip_forward\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Impostazione della POLICY di inoltro a DENY : "\sa0\par\fi0\sb0 $IPCHAINS -P forward DENY\sa0\par\fi0\sb0 $IPCHAINS -A forward -i $INTERFACE -s $LOCALNET -j MASQ\sa0\par\fi0\sb0 echo -e "\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Impostazione Timeout mascher. connessioni TCP a 10 ore : "\sa0\par\fi0\sb0 $IPCHAINS -M -S 36000 0 0\sa0\par\fi0\sb0 echo -e "\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Blocco e log di tutto il resto : "\sa0\par\fi0\sb0 $IPCHAINS -A forward -j DENY -s $ANYWHERE -d $ANYWHERE -l\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 \} # fw_yesmasqmod\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_nomasqmod () \{\sa0\par\fi0\sb0 #--------------- moduli masquerading assenti, informa e continua senza\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 echo -e "$\{RED\}Errore!!! Moduli per il Mascheramento "\sa0\par\fi0\sb0 echo -e "non presenti nel sistema. Ricompilare il kernel col "\sa0\par\fi0\sb0 echo -e "supporto per firewall e masquerading.$\{WHITE\}"\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 \} # fw_nomasqmod\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_masq () \{\sa0\par\fi0\sb0 #--------------- mascheramento rete locale all' esterno\sa0\par\fi0\sb0 #--------------- verifica esistenza moduli mascheramento\sa0\par\fi0\sb0 if [ $MASQ = "ON" ]; then\sa0\par\fi0\sb0 fw_ver_masqmod\sa0\par\fi0\sb0 #--------------- se esistono, attiva mascheramento\sa0\par\fi0\sb0 if [ -z $\{MASQ_PRESENT\} ]; then\sa0\par\fi0\sb0 fw_yesmasqmod\sa0\par\fi0\sb0 #--------------- se non esistono, avverti e continua senza\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 fw_nomasqmod\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo -en "$\{YELLOW\}Mascheramento : $\{WHITE\}"\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t\\t[ $\{RED\}NO $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_masq\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_start () \{\sa0\par\fi0\sb0 #--------------- parte start dello script\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 #--------------- verifica esistenza interfaccia esterna\sa0\par\fi0\sb0 if [ -z $INTERFACEIP ]; then\sa0\par\fi0\sb0 #--------------- se non esiste, avverti ed esci con errore 1\sa0\par\fi0\sb0 fw_nointerface\sa0\par\fi0\sb0 #--------------- se l'interfaccia esiste, si procede\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 fw_go\sa0\par\fi0\sb0 fw_protezioni \sa0\par\fi0\sb0 fw_dns\sa0\par\fi0\sb0 fw_http\sa0\par\fi0\sb0 fw_smtp\sa0\par\fi0\sb0 fw_imap\sa0\par\fi0\sb0 fw_pop3\sa0\par\fi0\sb0 fw_nntp\sa0\par\fi0\sb0 fw_ftp\sa0\par\fi0\sb0 fw_ssh\sa0\par\fi0\sb0 fw_icmp\sa0\par\fi0\sb0 fw_auth\sa0\par\fi0\sb0 fw_irc\sa0\par\fi0\sb0 fw_icq\sa0\par\fi0\sb0 fw_napster\sa0\par\fi0\sb0 fw_realaudio\sa0\par\fi0\sb0 fw_whois\sa0\par\fi0\sb0 fw_trojan\sa0\par\fi0\sb0 fw_jerks\sa0\par\fi0\sb0 fw_nolog\sa0\par\fi0\sb0 fw_blocklog\sa0\par\fi0\sb0 fw_masq\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \} # fw_start\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_stop () \{\sa0\par\fi0\sb0 #--------------- parte stop dello script\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo "Disattivazione del Firewall in corso..."\sa0\par\fi0\sb0 $IPCHAINS -F\sa0\par\fi0\sb0 $IPCHAINS -P input ACCEPT\sa0\par\fi0\sb0 $IPCHAINS -P forward ACCEPT\sa0\par\fi0\sb0 if [ $MASQ = "ON" ]; then\sa0\par\fi0\sb0 MASQ_PRESENT=""\sa0\par\fi0\sb0 for mod in $\{IP_MASQ_MODULES\} ; do\sa0\par\fi0\sb0 if [ ! -e /lib/modules/$CURRENT_KERNEL/ipv4/ip_masq_$\{mod\}.o ]; then\sa0\par\fi0\sb0 MASQ_PRESENT="err"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 if [ -z $\{MASQ_PRESENT\} ] ; then\sa0\par\fi0\sb0 echo -n "Rimozione dei moduli necessari al Mascheramento : "\sa0\par\fi0\sb0 for mod in $\{IP_MASQ_MODULES\} ; do\sa0\par\fi0\sb0 /sbin/rmmod "ip_masq_$\{mod\}" > /dev/null\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 echo -n "Disattivazione IP forwarding : "\sa0\par\fi0\sb0 echo 0 > /proc/sys/net/ipv4/ip_forward\sa0\par\fi0\sb0 echo -e "\\t\\t\\t\\t\\t[ $\{GREEN\}OK $\{WHITE\}]"\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 echo -e "$\{YELLOW\}ATTENZIONE: IL FIREWALL NON E' PIU' OPERATIVO$\{WHITE\}"\sa0\par\fi0\sb0 \} # fw_stop\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_status () \{\sa0\par\fi0\sb0 #--------------- parte stats dello script\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo "Impostazioni attuali del firewall : "\sa0\par\fi0\sb0 echo -e "Indirizzo IP locale sull'interfaccia \\\sa0\par\fi0\sb0 $\{YELLOW\}$INTERFACE$\{WHITE\} : $\{RED\}$LOCALIP$\{WHITE\}"\sa0\par\fi0\sb0 $IPCHAINS -L -n\sa0\par\fi0\sb0 \} # fw_status\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 fw_altro () \{\sa0\par\fi0\sb0 #--------------- nessuna o errata opzione fornita allo script\sa0\par\fi0\sb0 clear\sa0\par\fi0\sb0 echo -en "$\{BLUE\}#############################"\sa0\par\fi0\sb0 echo -e "###############################$\{WHITE\}"\sa0\par\fi0\sb0 echo -en "$\{BLUE\}###$\{YELLOW\} Script di impostazione "\sa0\par\fi0\sb0 echo -e "$\{MAGENTA\}FIREWALL $\{YELLOW\}v11.0 $\{BLUE\}###$\{WHITE\}"\sa0\par\fi0\sb0 echo -en "$\{BLUE\}#############################"\sa0\par\fi0\sb0 echo -e "###############################$\{WHITE\}"\sa0\par\fi0\sb0 echo -e "$\{YELLOW\}Utilizzo:$\{WHITE\} firewall start|stop|status|restart"\sa0\par\fi0\sb0 echo -e "\\t$\{CYAN\}start$\{WHITE\} = attiva il firewall"\sa0\par\fi0\sb0 echo -e "\\t$\{CYAN\}stop$\{WHITE\} = disattiva il firewall"\sa0\par\fi0\sb0 echo -e "\\t$\{CYAN\}status$\{WHITE\} = impostazioni correnti del firewall"\sa0\par\fi0\sb0 echo -e "\\t$\{CYAN\}restart$\{WHITE\} = rilegge il file di configurazione"\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 echo -en "$\{RED\}ATTENZIONE: $\{YELLOW\}ricorda che l'interfaccia "\sa0\par\fi0\sb0 echo -e "$\{RED\}ppp0$\{YELLOW\} e' attiva"\sa0\par\fi0\sb0 echo -e "solo DOPO aver effettuato la connessione a Internet."\sa0\par\fi0\sb0 echo -en "$\{WHITE\}Interfacce attualmente attive nel PC: "\sa0\par\fi0\sb0 for irf in $\{INTERFACES\} ; do\sa0\par\fi0\sb0 echo -en "$\{RED\}$\{irf\}$\{WHITE\} "\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 echo -e "\\n\\a"\sa0\par\fi0\sb0 \} # fw_altro\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 # script principale\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 fw_root #--------------- verifica che lo script sia avviato da root\sa0\par\fi0\sb0 fw_cfg #--------------- verifica presenza file di configurazione\sa0\par\fi0\sb0 fw_const #--------------- costanti utili\sa0\par\fi0\sb0 #--------------- le parti variabili sono nel file di configurazione\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 case "$1" in\sa0\par\fi0\sb0 start)\sa0\par\fi0\sb0 fw_start\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 stop)\sa0\par\fi0\sb0 fw_stop\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 restart)\sa0\par\fi0\sb0 fw_stop\sa0\par\fi0\sb0 fw_start\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 status)\sa0\par\fi0\sb0 fw_status\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 *)\sa0\par\fi0\sb0 fw_altro\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 esac\sa0\par\fi0\sb0 exit 0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Segue il file di configurazione: \par\pard\sb200\sl234 \fs18\lang1024\f2 # ==========================================================================\sa0\par\fi0\sb0 # ========= Script per la configurazione di un Firewall per Linux ==========\sa0\par\fi0\sb0 # ==========================================================================\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # Questo e' il file di configurazione usato dallo script generale di\sa0\par\fi0\sb0 # firewall/masquerading. Modificate tutto quello che serve per adattarlo\sa0\par\fi0\sb0 # al vostro sistema. NON dovrebbe essere necessario modificare lo script\sa0\par\fi0\sb0 # in se', in quanto tutte le cose da modificare sono state spostate qui'\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # by Antonio Fragola, aka MrShark - The Informaniac\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # NON rimuovete nulla, cambiate solo le cose indicate.\sa0\par\fi0\sb0 # Impostate a ON o OFF i servizi che vi servono o meno\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # posizione dell'eseguibile "ipchains" - eseguite "which ipchains" da root\sa0\par\fi0\sb0 IPCHAINS="/sbin/ipchains"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # interfaccia di rete che vi connette a Internet - di solito ppp0\sa0\par\fi0\sb0 INTERFACE="ppp0"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # masquerading: ON solo se si ha una rete locale che deve accedere a internet.\sa0\par\fi0\sb0 # Indicate anche l'interfaccia che vi collega alla rete locale per la quale\sa0\par\fi0\sb0 # volete fare il masquerading, e la classe della vostra rete locale. Inoltre\sa0\par\fi0\sb0 # indicate quali moduli volete mascherare (per icq serve un modulo NON fornito\sa0\par\fi0\sb0 # col kernel, leggere nel Quick&Easy Configuration Howto per reperirlo).\sa0\par\fi0\sb0 MASQ="ON"\sa0\par\fi0\sb0 LOCAL_INTERFACE="eth0"\sa0\par\fi0\sb0 LOCALNET="192.168.0.0/16"\sa0\par\fi0\sb0 IP_MASQ_MODULES="ftp irc" # altri sono: "cuseeme quake vdolive raudio"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # navigazione web\sa0\par\fi0\sb0 HTTP="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trasferimento file\sa0\par\fi0\sb0 FTP="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # risoluzione nomi dominio - indicare gli IP dei server del vostro ISP\sa0\par\fi0\sb0 DNS="ON"\sa0\par\fi0\sb0 DNS_IP="193.70.152.25 193.70.192.25 195.130.224.18 195.130.225.129"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # invio email - indicare l'IP del server del vostro ISP\sa0\par\fi0\sb0 SMTP="ON"\sa0\par\fi0\sb0 SMTP_IP="193.70.192.50 195.130.225.171"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ricezione email pop3 - inserite gli IP dei server imap che usate\sa0\par\fi0\sb0 # (TUTTI quelli da cui volete ricevere email pop3, non solo quelli\sa0\par\fi0\sb0 # del provider che usate correntemente), nel campo POP3_IP, usando\sa0\par\fi0\sb0 # uno spazio come separatore tra l'uno e l'altro. Se volete andare\sa0\par\fi0\sb0 # a capo, usate a fine riga il carattere "\\", SENZA lasciare spazi\sa0\par\fi0\sb0 # dopo di esso!!! Tenete presente che molti provider (come tiscali\sa0\par\fi0\sb0 # e tin) usano IP multipli per i server, quindi dovrete elencarli\sa0\par\fi0\sb0 # tutti (cercateli con nslookup) \sa0\par\fi0\sb0 POP3="ON"\sa0\par\fi0\sb0 POP3_IP="195.130.225.147 195.130.225.148 195.130.225.149 \\\sa0\par\fi0\sb0 195.130.225.150 195.130.225.151 195.130.225.152 \\\sa0\par\fi0\sb0 195.130.225.153 195.130.225.154 193.70.192.80 \\\sa0\par\fi0\sb0 195.130.225.172 193.70.192.70 62.149.128.10"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ricezione email imap - inserite gli IP dei server imap che usate\sa0\par\fi0\sb0 # (TUTTI quelli da cui volete ricevere email imap, non solo quelli\sa0\par\fi0\sb0 # del provider che usate correntemente), nel campo IMAP_IP, usando\sa0\par\fi0\sb0 # uno spazio come separatore tra l'uno e l'altro. Se volete andare\sa0\par\fi0\sb0 # a capo, usate a fine riga il carattere "\\", SENZA lasciare spazi\sa0\par\fi0\sb0 # dopo di esso!!! Tenete presente che molti provider (come tiscali\sa0\par\fi0\sb0 # e tin) usano IP multipli per i server, quindi dovrete elencarli\sa0\par\fi0\sb0 # tutti (cercateli con nslookup) \sa0\par\fi0\sb0 IMAP="OFF"\sa0\par\fi0\sb0 IMAP_IP="1.2.3.4 2.3.4.5 3.4.5.6"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # news usenet - indicare l'IP del server del vostro ISP\sa0\par\fi0\sb0 NNTP="ON"\sa0\par\fi0\sb0 # news.libero.it, shy.datawell.it, news.caspur.it, news.unina.it, news.ecs.net news.cu.mi.it\sa0\par\fi0\sb0 # NNTP_IP="192.106.1.6 213.26.160.219 193.204.5.75 192.132.34.81 194.21.74.41 193.43.96.1"\sa0\par\fi0\sb0 NNTP_IP="192.106.1.6 213.26.160.219 192.132.34.81 193.43.96.1"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # controlli vari di connessione - NON DISATTIVARE!\sa0\par\fi0\sb0 ICMP="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # server identd - SERVE PER ALCUNE CONNESSIONI IRC\sa0\par\fi0\sb0 AUTH="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chat irc\sa0\par\fi0\sb0 IRC="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chat icq\sa0\par\fi0\sb0 ICQ="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # connessione a server ssh\sa0\par\fi0\sb0 SSH="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # napster\sa0\par\fi0\sb0 NAP="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # realaudio\sa0\par\fi0\sb0 RAUD="OFF"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # client whois\sa0\par\fi0\sb0 WHS="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # fakebo - OGNI TANTO MI PRUDE! ;-)\sa0\par\fi0\sb0 FAKE="ON"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # altri ip personalizzati da aggiungere al firewall - inserite gli\sa0\par\fi0\sb0 # IP nel campo JERK_IP, usando uno spazio come separatore tra l'uno\sa0\par\fi0\sb0 # e l'altro. Se volete andare a capo, usate a fine riga il carattere\sa0\par\fi0\sb0 # "\\", SENZA lasciare spazi dopo di esso!!!\sa0\par\fi0\sb0 JERK="OFF"\sa0\par\fi0\sb0 JERK_IP="1.1.1.1 2.2.2.2 3.3.3.3"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 THIS IS THE END, MY ONLY FRIEND (by JIM). \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 10. DNS}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 10. DNS}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_DNS}{\*\bkmkend ID_DNS}\b\fs41\f1 Capitolo 10. DNS\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Come dal titolo dell'Howto, creiamo un DNS facilmente e velocemente. La trattazione si riferisce a BIND v8.X (in BIND v4.X non so dove mettere le mani e BIND v9.X \'e8 ancora troppo giovane per un uso su macchine da produttivit\'e0). Nella prima sezione vedremo come configurare Bind, nella seconda, per i pi\'f9 volenterosi e pi\'f9 attenti alla sicurezza, vedremo come spostare la configurazione gi\'e0 pronta per far girare Bind in un ambiente \b chroot\b0 , in modo che possibili aggressori che dovessero bucarlo si ritrovino ad avere a che fare con un filesystem ridotto ai minimi termini in cui possano fare pochissimi danni. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Ho provato ad usare, su segnalazione di varie persone che hanno fatto la stessa cosa, questi stessi file di configurazione con BIND v9.X, che la \b Mandrake 8.0\b0 installa di default. Ebbene, pare che vadano bene anche per questa versione del DNS, che pur introducendo varie novit\'e0 (specie per la sicurezza), mantiene la stessa sintassi della versione precedente. Vengono solo segnalati dei warning ("the default for the 'auth-nxdomain' option is now 'no'", "no IPv6 interfaces found", "unknown logging category 'cname' ignored"), ma poi il DNS funziona comunque regolarmente. Sta di fatto che non l'ho testato approfonditamente, e la trattazione del CHROOT si riferisce \b esclusivamente\b0 a BIND v8.X.\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONEBIND}{\*\bkmkend ID_CONFIGURAZIONEBIND}\b\fs34 10.1. Configurazione di Bind\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Io a casa ho 2 PC, \i Pingu\i0 e \i Pinga\i0 , collegati in rete locale. Su \i Pingu\i0 a volte gira \b VmWare\b0 , cui in rete virtuale \'e8 assegnato l'IP 192.168.0.3. Inoltre accedo a Internet via modem analogico. Senza entrare nei dettagli, scopiazzatevi 'sti file e andate in pace (per altri dettagli leggete il \b DNS-Howto\b0 o gli \i immarcescibili & insostituibili\i0 \b Appunti di Informatica Libera\b0 , gli ex \i Appunti Linux\i0 ). Potete cambiare i nomi (DOVETE anzi, se no \i Pingu\i0 e \i Pinga\i0 s'incavolano!) o aggiungerne altri, variando solo l'ultimo numero dell'IP, mentre per il resto lasciate tutto com'\'e8, a meno di sapere dove mettere le mani. Anche se non avete una rete locale, i file vanno bene ugualmente, vi ritroverete con qualcosa in pi\'f9 che non pregiudicher\'e0 alcunch\'e8, e vi spinger\'e0 al prossimo cambio di PC a tenervi quello attuale e collegarlo al nuovo, tanto pi\'f9 che non spendereste pi\'f9 di centomila lire tra schede di rete e cavi. Per prima cosa impostate il nome del vostro \i Linux-Box\i0 . 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 se proprio non avete fantasia...). Da utente \b root\b0 date il seguente comando: \par\pard\sb200\sl234 \fs18\lang1024\f2 hostname nome-macchina\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 ad esempio nel mio caso: \b hostname pingu\b0 (d'ora in poi ogni volta che vedete \i pingu.mrshark.home\i0 o simili, sostituiteli con i nomi scelti da voi). Impostate anche il file \fs18\f2 /etc/HOSTNAME\fs20\f0 come segue (alcune distribuzioni usano \fs18\f2 /etc/hostname\fs20\f0 ): \par\pard\sb100\sl260 \b === file: /etc/HOSTNAME ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 pingu\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 oppure: \par\pard\sb100\sl260 \b === file: /etc/hostname ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 pingu\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Nel caso abbiate una \b RedHat\b0 o derivate (\b Mandrake\b0 , \b Turbolinux\b0 ecc.), modificate il file \fs18\f2 /etc/sysconfig/network\fs20\f0 nella parte relativa a \b HOSTNAME\b0 e \b DOMAINNAME\b0 , altrimenti ad ogni riavvio l'hostname ritorner\'e0 \i localhost.localdomain\i0 : \par\pard\sb100\sl260 \b === file: /etc/sysconfig/network ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ...\sa0\par\fi0\sb0 HOSTNAME=pingu\sa0\par\fi0\sb0 DOMAINNAME=mrshark.home\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Segue il file \fs18\f2 /etc/hosts\fs20\f0 , in questa versione gi\'e0 pronto per il protocollo ipv6. Dovreste cambiare solo gli elementi della riga 192.168.0.1. Il primo campo \'e8 l'IP della macchina, il secondo il nome completo, il terzo degli alias. NON ELIMINATE la riga \b 127...\b0 : serve per l'interfaccia di \i loopback\i0 , ossia un'interfaccia di rete fittizia che vi permette di collegarvi al vostro stesso PC come se fosse un normale computer di rete. Segue il file: \par\pard\sb100\sl260 \b === file: /etc/hosts ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 127.0.0.1 localhost.localdomain localhost\sa0\par\fi0\sb0 192.168.0.1 pingu.mrshark.home pingu \sa0\par\fi0\sb0 ::1 ip6-localhost ip6-loopback\sa0\par\fi0\sb0 fe00::0 ip6-localnet\sa0\par\fi0\sb0 ff00::0 ip6-mcastprefix\sa0\par\fi0\sb0 ff02::1 ip6-allnodes\sa0\par\fi0\sb0 ff02::2 ip6-allrouters\sa0\par\fi0\sb0 ff02::3 ip6-allhosts\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Nel file \fs18\f2 /etc/host.conf\fs20\f0 inserite: \par\pard\sb100\sl260 \b === file: /etc/host.conf ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 order hosts,bind\sa0\par\fi0\sb0 multi on\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Nel file \fs18\f2 named.conf\fs20\f0 inserite quanto segue, cambiando i due \i mrshark.home\i0 alla fine con il vostro dominio, e inserendo nella sezione \i forwarders\i0 gli IP dei DNS del provider che usate. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Per conoscere in Windows gli IP dei DNS (in caso vengano assegnati in automatico), per poterli inserire in Linux, che invece li richiede obbligatoriamente, eseguite (tramite la voce \b Esegui...\b0 del Menu d'Avvio o Start) il comando \b winipcfg\b0 DOPO esservi collegati a internet, poi cliccate su \b Dettagli >>\b0 e guardate la seconda voce (DNS) della schermata che vi trovate davanti: quello che vedete \'e8 l'IP del DNS primario del provider che state usando, mentre premendo il tasto con i 2 punti ".." avrete l'IP del DNS secondario. Io ho messo 4 IP, visto che uso alternativamente 2 ISP diversi, ma dovrebbe funzionare anche con 2 soli IP, dato che di solito i DNS hanno libero accesso, e quindi potete contattare quelli di un ISP anche se ne usate un altro.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Commentate le 4 righe della direttiva \i forwarders\i0 e le 4 righe di zone "\b .\b0 "... se avete solo una rete locale e non accedete a internet (ci sono delle differenze per alcune directory nella distribuzione \b Debian\b0 , quindi seguono 2 file, usate quello che si addice alla vostra distribuzione; in particolare \b Debian\b0 tiene il file \fs18\f2 named.conf\fs20\f0 nella directory \fs18\f2 /etc/bind/\fs20\f0 , mentre quasi tutte le altre distribuzioni lo tengono in \fs18\f2 /etc/\fs20\f0 ): \par\pard\sb100\sl260 \b === file: /etc/named.conf REDHAT ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 options \{\sa0\par\fi0\sb0 directory "/var/named";\sa0\par\fi0\sb0 allow-transfer \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 allow-query \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 forward first;\sa0\par\fi0\sb0 forwarders \{\sa0\par\fi0\sb0 193.70.152.25;\sa0\par\fi0\sb0 193.70.192.25;\sa0\par\fi0\sb0 195.130.224.18;\sa0\par\fi0\sb0 195.130.225.129;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 logging \{\sa0\par\fi0\sb0 category lame-servers \{ null; \};\sa0\par\fi0\sb0 category cname \{ null; \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "." \{\sa0\par\fi0\sb0 type hint;\sa0\par\fi0\sb0 file "/var/named/db.root";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "localhost" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/db.local";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "127.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/db.127";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "0.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/db.0";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "255.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/db.255";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "mrshark.home" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/mrshark.home";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "0.168.192.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/var/named/mrshark.home.rev";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etc/bind/named.conf DEBIAN ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 options \{\sa0\par\fi0\sb0 directory "/var/cache/bind";\sa0\par\fi0\sb0 allow-transfer \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 allow-query \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 forward first;\sa0\par\fi0\sb0 forwarders \{\sa0\par\fi0\sb0 193.70.152.25;\sa0\par\fi0\sb0 193.70.192.25;\sa0\par\fi0\sb0 195.130.224.18;\sa0\par\fi0\sb0 195.130.225.129;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 logging \{\sa0\par\fi0\sb0 category lame-servers \{ null; \};\sa0\par\fi0\sb0 category cname \{ null; \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "." \{\sa0\par\fi0\sb0 type hint;\sa0\par\fi0\sb0 file "/etc/bind/db.root";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "localhost" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.local";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "127.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.127";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "0.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.0";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "255.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.255";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "mrshark.home" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/mrshark.home";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "0.168.192.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/mrshark.home.rev";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 TUTTI i file seguenti vanno inseriti in una stessa directory, che \'e8 \fs16\f2 /var/named/\fs18\f1 nel caso di \b RedHat\b0 , o \fs16\f2 /etc/bind/\fs18\f1 nel caso di \b Debian\b0 . Quindi riporto i file senza fare riferimento alle dir, sta a voi inserirli nel punto giusto in base alla vostra distribuzione. Naturalmente dovete cambiare, dovunque li vedete, il nome "\i mrshark.home\i0 " con quello del dominio che avete scelto di usare, e \i pingu\i0 , \i pinga\i0 e \i win\i0 con i nomi dei vostri pc.\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Dovrete ora creare il file \fs18\f2 db.root\fs20\f0 . Questo file contiene gli indirizzi IP dei server DNS principali di Internet. Copiate il seguente (NON cambiate niente): \par\pard\sb100\sl260 \b === file: db.root ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ; This file holds the information on root name servers needed to\sa0\par\fi0\sb0 ; initialize cache of Internet domain name servers\sa0\par\fi0\sb0 ; (e.g. reference this file in the "cache . "\sa0\par\fi0\sb0 ; configuration file of BIND domain name servers).\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; This file is made available by InterNIC registration services\sa0\par\fi0\sb0 ; under anonymous FTP as\sa0\par\fi0\sb0 ; file /domain/named.root\sa0\par\fi0\sb0 ; on server FTP.RS.INTERNIC.NET\sa0\par\fi0\sb0 ; -OR- under Gopher at RS.INTERNIC.NET\sa0\par\fi0\sb0 ; under menu InterNIC Registration Services (NSI)\sa0\par\fi0\sb0 ; submenu InterNIC Registration Archives\sa0\par\fi0\sb0 ; file named.root\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; last update: Aug 22, 1997\sa0\par\fi0\sb0 ; related version of root zone: 1997082200\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NS.INTERNIC.NET\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 IN NS A.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NS1.ISI.EDU\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS B.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly C.PSI.NET\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS C.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly TERP.UMD.EDU\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS D.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NS.NASA.GOV\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS E.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NS.ISC.ORG\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS F.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NS.NIC.DDN.MIL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS G.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly AOS.ARL.ARMY.MIL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS H.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; formerly NIC.NORDU.NET\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS I.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; temporarily housed at NSI (InterNIC)\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS J.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; housed in LINX, operated by RIPE NCC\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS K.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; temporarily housed at ISI (IANA)\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS L.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 ; housed in Japan, operated by WIDE\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 . 3600000 NS M.ROOT-SERVERS.NET.\sa0\par\fi0\sb0 M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33\sa0\par\fi0\sb0 ; End of File\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 I due file seguenti corrispondono all'interfaccia di loopback e suo reverse, non hanno bisogno di essere modificati: \par\pard\sb100\sl260 \b === file: db.local ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ;\sa0\par\fi0\sb0 ; BIND data file for local loopback interface\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 $TTL 604800\sa0\par\fi0\sb0 @ IN SOA localhost. root.localhost. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 604800 ; Refresh\sa0\par\fi0\sb0 86400 ; Retry\sa0\par\fi0\sb0 2419200 ; Expire\sa0\par\fi0\sb0 604800 ) ; Negative Cache TTL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 @ IN NS localhost.\sa0\par\fi0\sb0 @ IN A 127.0.0.1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: db.127 ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ;\sa0\par\fi0\sb0 ; BIND reverse data file for local loopback interface\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 $TTL 604800\sa0\par\fi0\sb0 @ IN SOA localhost. root.localhost. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 604800 ; Refresh\sa0\par\fi0\sb0 86400 ; Retry\sa0\par\fi0\sb0 2419200 ; Expire\sa0\par\fi0\sb0 604800 ) ; Negative Cache TTL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 @ IN NS localhost.\sa0\par\fi0\sb0 1.0.0 IN PTR localhost.\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 I due file seguenti corrispondono all'indirizzo di broadcast e suo reverse, non hanno bisogno di essere modificati: \par\pard\sb100\sl260 \b === file: db.0 ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ;\sa0\par\fi0\sb0 ; BIND data file for broadcast zone\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 $TTL 604800\sa0\par\fi0\sb0 @ IN SOA localhost. root.localhost. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 604800 ; Refresh\sa0\par\fi0\sb0 86400 ; Retry\sa0\par\fi0\sb0 2419200 ; Expire\sa0\par\fi0\sb0 604800 ) ; Negative Cache TTL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 @ IN NS localhost.\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: db.255 ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 ;\sa0\par\fi0\sb0 ; BIND reverse data file for broadcast zone\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 $TTL 604800\sa0\par\fi0\sb0 @ IN SOA localhost. root.localhost. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 604800 ; Refresh\sa0\par\fi0\sb0 86400 ; Retry\sa0\par\fi0\sb0 2419200 ; Expire\sa0\par\fi0\sb0 604800 ) ; Negative Cache TTL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 @ IN NS localhost.\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 I due file seguenti corrispondono alla zona su cui il vostro dns avr\'e0 autorit\'e0 e suo reverse, modificate ovunque vedete nomi riferiti ai miei pc: \par\pard\sb100\sl260 \b === file: mrshark.home ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 $ORIGIN mrshark.home.\sa0\par\fi0\sb0 $TTL 1D\sa0\par\fi0\sb0 @ IN SOA pingu.mrshark.home. root.pingu.mrshark.home. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 8H ; Refresh\sa0\par\fi0\sb0 2H ; Retry\sa0\par\fi0\sb0 4W ; Expire\sa0\par\fi0\sb0 1D ) ; Default TTL\sa0\par\fi0\sb0 ;\sa0\par\fi0\sb0 @ IN MX 10 pingu.mrshark.home.\sa0\par\fi0\sb0 @ IN NS pingu.mrshark.home.\sa0\par\fi0\sb0 @ IN A 192.168.0.1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 pingu IN A 192.168.0.1 \sa0\par\fi0\sb0 pinga IN A 192.168.0.2\sa0\par\fi0\sb0 win IN A 192.168.0.129\sa0\par\fi0\sb0 localhost IN A 127.0.0.1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 www IN CNAME pingu\sa0\par\fi0\sb0 ftp IN CNAME pingu\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: mrshark.home.rev ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 $ORIGIN 0.168.192.in-addr.arpa.\sa0\par\fi0\sb0 $TTL 1D\sa0\par\fi0\sb0 @ IN SOA pingu.mrshark.home. root.pingu.mrshark.home. (\sa0\par\fi0\sb0 1 ; Serial\sa0\par\fi0\sb0 8H ; Refresh\sa0\par\fi0\sb0 2H ; Retry\sa0\par\fi0\sb0 4W ; Expire\sa0\par\fi0\sb0 1D ) ; Default TTL\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 @ IN NS pingu.mrshark.home.\sa0\par\fi0\sb0 1 IN PTR pingu.mrshark.home.\sa0\par\fi0\sb0 2 IN PTR pinga.mrshark.home.\sa0\par\fi0\sb0 129 IN PTR win.mrshark.home.\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'ultimo file \'e8 quello che dice al sistema a quale dns rivolgersi, modificate i due domini indicati: \par\pard\sb100\sl260 \b === file: resolv.conf ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 search mrshark.home\sa0\par\fi0\sb0 domain mrshark.home\sa0\par\fi0\sb0 nameserver 127.0.0.1\sa0\par\fi0\sb0 nameserver 192.168.0.1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Salvate tutto, riavviate il sistema o riavviate \b BIND\b0 (da utente \b root\b0 : \b /etc/rc.d/init.d/named restart\b0 per \b RedHat\b0 , \b /etc/init.d/bind restart\b0 per \b Debian\b0 ). Ora incominciate a fare le vostre prove. Esempi di prove per il mio PC sono (dal prompt di \b nslookup\b0 "\b >\b0 "): \i 192.168.0.1\i0 , \i 192.168.0.2\i0 , \i www.mrshark.home\i0 , \i ftp.mrshark.home\i0 , \i pingu.mrshark.home\i0 , \i pinga.mrshark.home\i0 , \i pingu\i0 , \i pinga\i0 . 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. \i www.yahoo.it\i0 o \i www.mrshark.it\i0 ;-). \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Nota per l'uso di programmi che gestiscono in automatico il file \b /etc/resolv.conf\b0 , 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 \i VOSTRO\i0 dominio e come IP del DNS inserite \b 127.0.0.1\b0 , ricordando per\'f2 di inserire i VERI IP dei DNS del provider nella sezione \b forwarders\b0 del file \fs16\f2 named.conf\fs18\f1 , in modo che il vostro DNS possa interrogare quelli esterni nel caso non riesca a gestire in proprio la risoluzione dei nomi.\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CHROOTINGBIND}{\*\bkmkend ID_CHROOTINGBIND}\b\fs34 10.2. Chrooting Bind\keepn\hyphpar0\par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \fs28 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 La trattazione del CHROOT si riferisce \b esclusivamente\b0 a BIND v8.X! \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 Creare un ambiente \b chroot\b0 per un qualche servizio/demone significa creargli un mini filesystem, su cui si applicher\'e0 il comando \b chroot\b0 , che render\'e0 la directory che lo contiene la sua directory root \fs18\f2 /\fs20\f0 : se anche riuscissero a violare il servizio, si ritroverebbero un sistema minimo in cui potranno fare ben poco. Di solito si assegnano i file in questa directory a un utente creato appositamente e senza alcun privilegio. Per portare il vostro \b Bind\b0 in un ambiente chroot, dovrete ricompilare dai sorgenti... quindi dovrete avere tutti i tool e librerie necessarie, fate riferimento alla documentazione presente nei sorgenti di \b Bind\b0 , che potete e dovete scaricare da: http://www.isc.org/bind.html, cercate il file \fs18\f2 bind-src.tar.gz\fs20\f0 . Per prima cosa create la struttura delle directory che accoglier\'e0 il vostro nuovo e fiammante Dns. Io ho usato \fs18\f2 /chroot/named/\fs20\f0 , con la seguente struttura risultante: \par\pard\sb200\sl234 \fs18\lang1024\f2 /chroot\sa0\par\fi0\sb0 +-- /named\sa0\par\fi0\sb0 +-- /bin\sa0\par\fi0\sb0 +-- /dev\sa0\par\fi0\sb0 +-- /etc\sa0\par\fi0\sb0 +-- /bind \sa0\par\fi0\sb0 +-- /lib\sa0\par\fi0\sb0 +-- /var\sa0\par\fi0\sb0 +-- /run\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Quindi date i seguenti comandi: \par\pard\sb200\sl234 \fs18\lang1024\f2 mkdir /chroot\sa0\par\fi0\sb0 mkdir /chroot/named\sa0\par\fi0\sb0 mkdir /chroot/named/bin\sa0\par\fi0\sb0 mkdir /chroot/named/dev\sa0\par\fi0\sb0 mkdir /chroot/named/etc\sa0\par\fi0\sb0 mkdir /chroot/named/lib\sa0\par\fi0\sb0 mkdir /chroot/named/etc/bind\sa0\par\fi0\sb0 mkdir /chroot/named/var\sa0\par\fi0\sb0 mkdir /chroot/named/var/run\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora creiamo l'utente e il gruppo, io ho usato UID e GID 200, che sulla mia \b Debian\b0 erano liberi, voi controllate che effettivamente sul vostro sistema non siano gi\'e0 assegnati, e \b fate attenzione quando usate la redirezione!!! Se vi scappa un singolo > invece di >>, potete dire addio ai vostri utenti e gruppi!!!\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 echo 'named:x:200:200:Nameserver:/chroot/named:/bin/false' >> /etc/passwd\sa0\par\fi0\sb0 echo 'named:x:200:' >> /etc/group\sa0\par\fi0\sb0 echo 'named:x:200:' > /chroot/named/etc/group\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora copiate i file della precedente configurazione di bind nella nuova directory (se avete usato i miei file, vanno tutti in \fs18\f2 /chroot/named/etc/bind/\fs20\f0 , tranne \fs18\f2 named.conf\fs20\f0 che va in \fs18\f2 /chroot/named/etc/\fs20\f0 ). In seguito quest'ultimo file andr\'e0 modificato in minima parte per indicare i nuovi percorsi. \par\pard\sb100\sl260 Siccome vorrete dei bei log, se non avete una versione recente di syslogd che supporti l'opzione \i\f2 -a\i0\f0 (non dovreste avere problemi con le moderne distribuzioni, ma comunque controllate la manpage di syslogd per accertarvene) in modo da poter fare ascoltare il vostro demone syslog gi\'e0 presente anche su un altro socket, avete a questo punto due strade da seguire: installare holelogd, prelevabile presso: ftp://ftp.obtuse.com/pub/utils/utils-1.0.tar.gz (ftp://ftp.obtuse.com/pub/utils/utils-1.0.tar.gz), configurandolo seguendo le sue istruzioni e avviandolo dallo script con cui avviate bind, prima di questo naturalmente, con un comando simile al seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 daemon /usr/local/sbin/holelogd /chroot/named/dev/log\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 (guardate negli script alla fine, le righe sono commentate), oppure configurare bind per fare il log su file invece che via syslog. \par\pard\sb100\sl260 Facciamo appartenere i file all'utente creato in precedenza: \par\pard\sb200\sl234 \fs18\lang1024\f2 chown -R named:named /chroot/named/etc/bind\sa0\par\fi0\sb0 chown named:named /chroot/named/var/run\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e copiamo nelle directory di pertinenza alcuni file di supporto, come la libreria \b C\b0 , ricreando anche la sua cache: \par\pard\sb200\sl234 \fs18\lang1024\f2 cd /chroot/named/lib\sa0\par\fi0\sb0 cp -p /lib/libc-2.*.so .\sa0\par\fi0\sb0 ln -s libc-2.*.so libc.so.6\sa0\par\fi0\sb0 cp -p /lib/ld-2.*.so .\sa0\par\fi0\sb0 ln -s ld-2.*.so ld-linux.so.2\sa0\par\fi0\sb0 cp /sbin/ldconfig /chroot/named/bin/\sa0\par\fi0\sb0 chroot /chroot/named /bin/ldconfig -v\sa0\par\fi0\sb0 cp /etc/localtime /chroot/named/etc/\sa0\par\fi0\sb0 mknod /chroot/named/dev/null c 1 3\sa0\par\fi0\sb0 chmod 666 /chroot/named/dev/null\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Con questo avete finito di preparare il filesystem base, ora passiamo alla configurazione e compilazione dei sorgenti, nel momento in cui scrivo erano disponibili in versione 8.2.4: \par\pard\sb200\sl234 \fs18\lang1024\f2 mkdir /usr/local/src/bind\sa0\par\fi0\sb0 cd /usr/local/src/bind\sa0\par\fi0\sb0 tar xvzf /percorso/dei/sorgenti/bind-src.tar.gz\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 dovete modificare alcune opzioni nel file \fs18\f2 src/port/linux/Makefile.set\fs20\f0 , in particolare cambiare la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 DESTRUN=/var/run\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 in modo che diventi: \par\pard\sb200\sl234 \fs18\lang1024\f2 DESTRUN=/chroot/named/var/run\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e cambiare tutti i percorsi \fs18\f2 /usr/...\fs20\f0 in \fs18\f2 /usr/local/...\fs20\f0 , nello stesso file. Ora modificate il file \fs18\f2 src/bin/named/named.h\fs20\f0 , cercando la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 #include "pathnames.h"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e trasformandola come segue, commentandola e aggiungendo altre cose che serviranno durante la compilazione: \par\pard\sb200\sl234 \fs18\lang1024\f2 /*\sa0\par\fi0\sb0 #include "pathnames.h"\sa0\par\fi0\sb0 */\sa0\par\fi0\sb0 #define _PATH_NDCSOCK "/var/run/ndc"\sa0\par\fi0\sb0 #define _PATH_CONF "/etc/named.conf"\sa0\par\fi0\sb0 #define _PATH_DEBUG "named.run"\sa0\par\fi0\sb0 #define _PATH_XFERTRACE "xfer.trace"\sa0\par\fi0\sb0 #define _PATH_XFERDDT "xfer.ddt"\sa0\par\fi0\sb0 #define _PATH_XFER "/bin/named-xfer"\sa0\par\fi0\sb0 #define _PATH_DUMPFILE "named_dump.db"\sa0\par\fi0\sb0 #define _PATH_STATS "named.stats"\sa0\par\fi0\sb0 #define _PATH_MEMSTATS "named.memstats"\sa0\par\fi0\sb0 #define _PATH_PIDFILE "/var/run/named.pid"\sa0\par\fi0\sb0 #define _PATH_TMPXFER "xfer.ddt.XXXXXX"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 A questo punto potete compilare: \par\pard\sb200\sl234 \fs18\lang1024\f2 cd src\sa0\par\fi0\sb0 make clean\sa0\par\fi0\sb0 make depend\sa0\par\fi0\sb0 make\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b NON\b0 date il \b make install\b0 , in quanto a questo punto dovete rimuovere la vostra precedente installazione di bind! Provvedete, usando il metodo adatto alla vostra distribuzione, ma solo DOPO aver fatto una copia di backup dello script che viene usato per avviare il DNS, che dopo modificheremo per adattarlo alla nuova situazione. Di solito questo script \'e8 \fs18\f2 /etc/rc.d/init.d/named\fs20\f0 nelle distribuzioni tipo \b RedHat\b0 o \b Mandrake\b0 , o \fs18\f2 /etc/init.d/bind\fs20\f0 in \b Debian\b0 . Ora potete dare il \b make install\b0 per installare i tool accessori. Gli unici file binari che dovranno finire nell'ambiente chroot sono \fs18\f2 named\fs20\f0 e \fs18\f2 named-xfer\fs20\f0 , e per sicurezza facciamo in modo che il programma \fs18\f2 named\fs20\f0 appena installato in \fs18\f2 /usr/local/sbin/\fs20\f0 non possa essere avviato: \par\pard\sb200\sl234 \fs18\lang1024\f2 cp src/bin/named/named /chroot/named/bin\sa0\par\fi0\sb0 cp src/bin/named-xfer/named-xfer /chroot/named/bin\sa0\par\fi0\sb0 chmod 000 /usr/local/sbin/named\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora cercate lo script di avvio del demone syslogd (di solito nella directory \fs18\f2 /etc/init.d/\fs20\f0 o simile) e modificatelo nelle opzioni di avvio, in modo da aggiungere a quelle gi\'e8 presenti (di solito "-m 0") anche l'opzione: \par\pard\sb200\sl234 \fs18\lang1024\f2 -a /chroot/named/dev/log\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e riavviate syslogd. Dopo il suo riavvio, dovreste trovare il nuovo file \fs18\f2 /chroot/named/dev/log\fs20\f0 con caratteristiche simili alle seguenti: \par\pard\sb200\sl234 \fs18\lang1024\f2 srw-rw-rw- 1 root root 0 Mar 13 20:58 log\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ora modifichiamo lo script di avvio di bind di cui prima avete fatto una copia di riserva (perch\'e9 l'avete fatto, vero? ;-) ). Seguono 2 versioni di script, per \b RedHat\b0 e \b Debian\b0 , se usate altre distribuzioni, adattateli, tenendo presente che le opzioni da aggiungere sono: \i\f2 -t /chroot/named -u named -g named\i0\f0 . \par\pard\sb100\sl260 \b === Script di avvio per RedHat ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # named This shell script takes care of starting and stopping\sa0\par\fi0\sb0 # named (BIND DNS server).\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # chkconfig: 345 55 45\sa0\par\fi0\sb0 # description: named (BIND) is a Domain Name Server (DNS) \\\sa0\par\fi0\sb0 # that is used to resolve host names to IP addresses.\sa0\par\fi0\sb0 # probe: true\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Source function library.\sa0\par\fi0\sb0 . /etc/rc.d/init.d/functions\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Source networking configuration.\sa0\par\fi0\sb0 . /etc/sysconfig/network\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Check that networking is up.\sa0\par\fi0\sb0 [ $\{NETWORKING\} = "no" ] && exit 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [ -f /chroot/named/bin/named ] || exit 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 [ -f /chroot/named/etc/named.conf ] || exit 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #echo -n "Starting holelogd: "\sa0\par\fi0\sb0 #daemon /usr/local/sbin/holelogd /chroot/named/dev/log\sa0\par\fi0\sb0 #echo "."\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # See how we were called.\sa0\par\fi0\sb0 case "$1" in\sa0\par\fi0\sb0 start)\sa0\par\fi0\sb0 # Start daemons.\sa0\par\fi0\sb0 echo -n "Starting named: "\sa0\par\fi0\sb0 daemon /chroot/named/bin/named -u named -g named -t /chroot/named\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 touch /var/lock/subsys/named\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 stop)\sa0\par\fi0\sb0 # Stop daemons.\sa0\par\fi0\sb0 echo -n "Shutting down named: "\sa0\par\fi0\sb0 killproc named\sa0\par\fi0\sb0 rm -f /var/lock/subsys/named\sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 status)\sa0\par\fi0\sb0 /usr/local/sbin/ndc status\sa0\par\fi0\sb0 exit $?\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 restart)\sa0\par\fi0\sb0 /usr/local/sbin/ndc -n /chroot/named/bin/named "restart -u named -g named -t /chroot/named"\sa0\par\fi0\sb0 exit $?\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 reload)\sa0\par\fi0\sb0 /usr/local/sbin/ndc reload\sa0\par\fi0\sb0 exit $?\sa0\par\fi0\sb0 ;; \sa0\par\fi0\sb0 probe)\sa0\par\fi0\sb0 # named knows how to reload intelligently; we don't want linuxconf\sa0\par\fi0\sb0 # to offer to restart every time\sa0\par\fi0\sb0 /usr/local/sbin/ndc reload >/dev/null 2>&1 || echo start\sa0\par\fi0\sb0 exit 0\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 *)\sa0\par\fi0\sb0 echo "Usage: named \{start|stop|status|restart\}"\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 esac\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 exit 0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === Script di avvio per Debian ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 PATH=/sbin:/bin:/usr/sbin:/usr/bin\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 test -x /chroot/named/bin/named || exit 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #echo -n "Starting holelogd: "\sa0\par\fi0\sb0 #daemon /usr/local/sbin/holelogd /chroot/named/dev/log\sa0\par\fi0\sb0 #echo "."\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 case "$1" in\sa0\par\fi0\sb0 start)\sa0\par\fi0\sb0 echo -n "Starting domain name service: named"\sa0\par\fi0\sb0 start-stop-daemon --start --quiet \\\sa0\par\fi0\sb0 --exec /chroot/named/bin/named -- -g named -u named -t /chroot/named\sa0\par\fi0\sb0 echo "." \sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 stop)\sa0\par\fi0\sb0 echo -n "Stopping domain name service: named"\sa0\par\fi0\sb0 start-stop-daemon --stop --quiet --pidfile /chroot/named/var/run/named.pid \\\sa0\par\fi0\sb0 --exec /chroot/named/bin/named -- -g named -u named -t /chroot/named\sa0\par\fi0\sb0 echo "." \sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 restart)\sa0\par\fi0\sb0 /usr/local/sbin/ndc -n /chroot/named/bin/named "restart -u named -g named -t /chroot/named"\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 reload)\sa0\par\fi0\sb0 /usr/local/sbin/ndc reload\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 force-reload)\sa0\par\fi0\sb0 $0 restart\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 *)\sa0\par\fi0\sb0 echo "Usage: /etc/init.d/bind \{start|stop|reload|restart|force-reload\}" >&2\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 ;;\sa0\par\fi0\sb0 esac\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 exit 0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Le ultime modifiche riguardano il file \fs18\f2 /chroot/named/etc/named.conf\fs20\f0 , per indicare le nuove posizioni dei file. Ecco il file modificato: \par\pard\sb200\sl234 \fs18\lang1024\f2 options \{\sa0\par\fi0\sb0 directory "/etc/bind";\sa0\par\fi0\sb0 pid-file "/var/run/named.pid";\sa0\par\fi0\sb0 named-xfer "/bin/named-xfer";\sa0\par\fi0\sb0 #query-source address * port 53;\sa0\par\fi0\sb0 allow-transfer \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 allow-query \{\sa0\par\fi0\sb0 127.0.0.1;\sa0\par\fi0\sb0 192.168.0.0/24;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 forward first;\sa0\par\fi0\sb0 forwarders \{\sa0\par\fi0\sb0 193.70.152.25;\sa0\par\fi0\sb0 193.70.192.25;\sa0\par\fi0\sb0 195.130.224.18;\sa0\par\fi0\sb0 195.130.225.129;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 // extra block for ndc to work in chroot jail - maybe redundant\sa0\par\fi0\sb0 controls \{\sa0\par\fi0\sb0 unix "/var/run/ndc" perm 0600 owner 0 group 0;\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 // reduce log verbosity on issues outside our control\sa0\par\fi0\sb0 logging \{\sa0\par\fi0\sb0 category lame-servers \{ null; \};\sa0\par\fi0\sb0 category cname \{ null; \};\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 // prime the server with knowledge of the root servers\sa0\par\fi0\sb0 zone "." \{\sa0\par\fi0\sb0 type hint;\sa0\par\fi0\sb0 file "/etc/bind/db.root";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 // be authoritative for the localhost forward and reverse zones, and for\sa0\par\fi0\sb0 // broadcast zones as per RFC 1912\sa0\par\fi0\sb0 zone "localhost" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.local";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 zone "127.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.127";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 zone "0.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.0";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 zone "255.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/db.255";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 // local area network\sa0\par\fi0\sb0 zone "mrshark.home" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/mrshark.home";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 zone "0.168.192.in-addr.arpa" \{\sa0\par\fi0\sb0 type master;\sa0\par\fi0\sb0 file "/etc/bind/mrshark.home.rev";\sa0\par\fi0\sb0 \};\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Con questo, dopo aver riavviato, dovreste avere il vostro DNS funzionante in ambiente Chroot! Un ultimo consiglio: ogni tanto saltano fuori bug anche rilevanti in questo software, quindi vorrete sicuramente aggiornare all'ultima versione disponibile per risolverli. NON dovete rifare tutto da capo! Dovete seguire solo i passi per la modifica dei sorgenti di bind, la sua ricompilazione e la sua installazione/copia di file nell'ambiente Chroot. Il resto dei passaggi vanno fatti solo alla prima installazione! ;-) Per provare che tutto sia andato bene, controllate nei file di syslog ci siano le chiamate di avvio di named e dell'avvenuto chroot e cambio di UID/GID, e usate \b lsof\b0 per controllare che i socket relativi al DNS appartengono agli UID/GID del vostro named. Dovreste avere un output \i simile\i0 al seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 Aug 17 07:46:12 pingu named[1066]: starting (/etc/named.conf). named 8.2.4-REL Thu Jul 12 16:14:49 CEST 2001 ^Iroot@pingu:/usr/local/src/bind-8.2.4/src/bin/named\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: hint zone "" (IN) loaded (serial 0)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "localhost" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "127.in-addr.arpa" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "0.in-addr.arpa" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "255.in-addr.arpa" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "mrshark.home" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: master zone "0.168.192.in-addr.arpa" (IN) loaded (serial 1)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: listening on [127.0.0.1].53 (lo)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: listening on [192.168.0.1].53 (eth0)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: listening on [151.26.33.74].53 (ppp0)\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1066]: Forwarding source address is [0.0.0.0].1049\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1067]: chrooted to /chroot/named\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1067]: group = named\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1067]: user = named\sa0\par\fi0\sb0 Aug 17 07:46:12 pingu named[1067]: Ready to answer queries.\sa0\par\fi0\sb0 \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 11. Wwwoffle}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 11. Wwwoffle}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_WWWOFFLE}{\*\bkmkend ID_WWWOFFLE}\b\fs41\f1 Capitolo 11. Wwwoffle\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Wwwoffle \'e8 il demone che permette di implementare un \b cache proxy server\b0 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'\i interfaccia di gestione in html\i0 e alcuni \i script\i0 , dispone di un comodo \i motore di ricerca\i0 all'interno della cache, permette di richiedere pagine anche quando si \'e8 \i offline\i0 (verranno scaricate quando si sar\'e0 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: prego, prego, non c'\'e8 di che, non c'\'e8 bisogno che mi ringraziate per la traduzione... E non dite che non vi voglio bene! ;-) ). Fate in modo che parta in automatico ad ogni avvio del PC (aggiungetelo con \b ntsysv\b0 o con \b chkconfig --add wwwoffled\b0 ). Ricordate di impostare i vostri DNS e dominio in \fs18\f2 /etc/resolv.conf\fs20\f0 , 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 \b nslookup\b0 perch\'e9 non riesce a trovare un \i Non-Authoritative Host\i0 . Rimedio spiccio nel caso ci\'f2 accada: DOPO aver stabilito la connessione, riavviate wwwoffle con l'opzione \b -config\b0 , oppure con \b /etc/rc.d/init.d/wwwoffled restart\b0 , oppure settate il file \fs18\f2 resolv.conf\fs20\f0 con i DNS fissi. Un rimedio pi\'f9 corretto si trova alla fine della sezione relativa al DNS del \i Quick&Easy Configuration HOWTO\i0 . Un esempio di file \fs18\f2 /etc/resolv.conf\fs20\f0 : \par\pard\sb100\sl260 \b === file: /etc/resolv.conf ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 domain libero.it\sa0\par\fi0\sb0 nameserver 195.210.91.1\sa0\par\fi0\sb0 nameserver 195.210.91.2\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per default wwwoffle rimane in ascolto sulla porta \b 8080\b0 , 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 \b Edit\b0 --> \b Preferences\b0 --> \b Advanced\b0 --> \b Proxies\b0 --> \b Manual Proxy\b0 --> \b View\b0 e settate la voce \i HTTP Proxy\i0 su \b localhost\b0 e \b port 8080\b0 , mentre per Lynx inserite la riga seguente nel file \fs18\f2 .bash_profile\fs20\f0 nella vostra directory \b HOME\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 export http_proxy=http://localhost:8080\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'impostazione di base del file \fs18\f2 /etc/wwwoffle.conf\fs20\f0 va gi\'e0 bene, comunque potete cambiarla interattivamente puntando il vostro browser su \b http://localhost:8080\b0 , avrete una schermata in cui potrete settare i vari parametri e con le relative spiegazioni. Se avete una \i rete locale\i0 potete concedere l'accesso al proxy modificando la sezione \i AllowedConnectHosts\i0 , inserendo ad esempio per una rete di \i classe C\i0 : \b 192.168.0.*\b0 . \par\pard\sb100\sl260 Per usare wwwoffle, riavviate il pc o date da utente \b root\b0 il comando \b /etc/rc.d/init.d/wwwoffle start\b0 , o l'equivalente per la vostra distribuzione. Le opzioni base sono: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 \b -online\b0 : attiva wwwoffle in modo che le richieste vengano esaudite immediatamente (da attivare appena si \'e8 stabilita una connessione); \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -offline\b0 : mette wwwoffle in modalit\'e0 \i offline\i0 , e ogni nuova richiesta di connessione viene immagazzinata fino alla successiva connessione; \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -fetch\b0 : dopo che si \'e8 \i online\i0 , scarica le pagine che erano state richieste in assenza di connessione; \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -config\b0 : rilegge il file di configurazione; \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b -purge\b0 : svuota la cache. \hyphpar0\par\pard\sb100\sl260 \lang1040 Conviene inserire i comandi \b wwwoffle -online\b0 nel file \fs18\f2 /etc/ppp/ip-up\fs20\f0 , e \b wwwoffle -offline\b0 nel file \fs18\f2 /etc/ppp/ip-down\fs20\f0 , in modo da attivarlo e disattivarlo automaticamente non appena viene instaurata la connessione o la si conclude. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 12. Junkbuster}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 12. Junkbuster}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_JUNKBUSTER}{\*\bkmkend ID_JUNKBUSTER}\b\fs41\f1 Capitolo 12. Junkbuster\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Junkbuster \'e8 un \i proxy server\i0 che filtra le richieste del browser impedendo che venga scaricata spazzatura (\i spam\i0 o \i junk\i0 ), come \i banner\i0 e altre immagini inutili o \i cookie\i0 indesiderati (per entrambe le cose, banner e cookie, si pu\'f2 ampliare la lista a mano o scaricare periodicamente i file aggiornati - vedi pi\'f9 avanti). Una volta scaricato e installato da rpm o tar.gz, bisogna attivarlo con il comando: \b /etc/rc.d/init.d/junkbuster start\b0 (adattate alla vostra distribuzione), oltre che fare in modo che parta in automatico ad ogni avvio del PC (aggiungetelo con \b ntsysv\b0 o con \b chkconfig --add junkbuster\b0 ). Se non avete altri proxy, la configurazione \'e8 gi\'e0 buona: al massimo potete modificare nel file \fs18\f2 /etc/junkbuster/config\fs20\f0 la chiamata \i tinygif\i0 impostandola a \i 2\i0 , cosicch\'e8 abbiate un riferimento per le immagini che non vengono scaricate, altrimenti verr\'e0 usata un'immagine trasparente di 1x1 pixel allargata alle dimensioni dell'immagine sostituita (un'altra possibilit\'e0 \'e8 di avere una \i broken icon\i0 , cio\'e8 l'icona che il browser mette di default quando non trova un'immagine, impostando \i tinygif\i0 a \i 0\i0 ). Dovete solo modificare le impostazioni del browser affinch\'e8 usi un proxy sulla porta \b 8000\b0 di \b localhost\b0 Usate le istruzioni date nel capitolo di wwwoffle, sostituendo \b 8080\b0 con \b 8000\b0 . \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0\i Debian\i0 invece della \b 8000\b0 usa la porta \b 5865\b0 , quindi o modificate di conseguenza, o cambiate la direttiva \i listen-address\i0 nel file \fs16\f2 /etc/junkbuster/config\fs18\f1 .\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se invece avete un altro proxy (wwwoffle o squid), dovete impostare sempre il browser affinch\'e8 punti a junkbuster sulla porta \b 8000\b0 , e modificare il file \fs18\f2 /etc/junkbuster/config\fs20\f0 togliendo il segno di commento # dalla riga : \par\pard\sb200\sl234 \fs18\lang1024\f2 forwardfile /etc/junkbuster/forward\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e inserendo alla fine del file \fs18\f2 /etc/junkbuster/forward\fs20\f0 la riga (nel caso di wwwoffle): \par\pard\sb200\sl234 \fs18\lang1024\f2 * localhost:8080 . .\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 ATTENZIONE ai 2 punti finali - sostituite 8080 con 3128 per squid \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 Questo secondo me \'e8 il metodo migliore, cio\'e8 \b browser\b0 <--> \b junkbuster\b0 <--> \b proxy\b0 <--> \b internet\b0 , al posto di \b browser\b0 <--> \b proxy\b0 <--> \b junkbuster\b0 <--> \b internet\b0 , perch\'e9 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 \i fittizie\i0 generate da junkbuster, pur non scaricando ugualmente la spazzatura. \par\pard\sb100\sl260 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 nella directory \b /usr/doc/junkbuster/\b0 . Si tratta dei file \fs18\f2 junkbuster.monthly\fs20\f0 e \fs18\f2 junkbuster.weekly\fs20\f0 : per usarli, copiateli rispettivamente in \fs18\f2 /etc/cron.monthly\fs20\f0 e \fs18\f2 /etc/cron.weekly\fs20\f0 . In questo modo avrete sempre i file aggiornati. Potete anche lanciarli manualmente da shell, naturalmente. Ricordate che usano il programma 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 \fs18\f2 /etc/junkbuster/blocklist.local\fs20\f0 , \fs18\f2 /etc/junkbuster/cookiefile.local\fs20\f0 e \fs18\f2 /etc/junkbuster/imagelist.local\fs20\f0 , che verranno accodati dagli script di prima ai file appena scaricati. \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 13. Xinetd}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 13. Xinetd}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_XINETD}{\*\bkmkend ID_XINETD}\b\fs41\f1 Capitolo 13. Xinetd\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Xinetd \'e8 un sostituto "sicuro" di inetd, che unisce alle caratteristiche di "super-server" quest'ultimo anche quelle dei TCP-Wrappers, permettendo controlli sull'accesso, estese funzionalit\'e0 di log, la possibilit\'e0 di associare un servizio a specifiche interfacce di rete, limitazione di possibili attacchi DoS, redirezione di porte, e altro. Xinetd dopo aver letto il suo file di configurazione, si mette in ascolto sulle porte indicate, avviando il servizio richiesto, se vengono passati tutti i controlli e vi si ha diritto. L'unico suo difetto \'e8 che gestisce non (ancora) molto bene i servizi \b RPC\b0 come NFS, che dovranno quindi essere avviati col solito portmap o col vecchio inetd. Pu\'f2 essere compilato per l'uso dei TCP-Wrappers, ma visto che le stesse cose si possono fare direttamente con xinetd, non se ne sente il bisogno. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INFORMAZIONIBASEXINETD}{\*\bkmkend ID_INFORMAZIONIBASEXINETD}\b\fs34\lang1024\f1 13.1. Informazioni di base\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 xinetd fornisce uno script per fare la conversione in automatico dalla vecchia configurazione di inetd alla nuova versione di file: questo script \'e8 \b xconv.pl\b0 , presente nella stessa directory di xinetd (altre distribuzioni, come \b Mandrake\b0 , forniscono un altro script, con risultati medesimi, chiamato \b inetdconvert\b0 ). Si usano come segue: \par\pard\sb200\sl234 \fs18\lang1024\f2 /usr/sbin/xconv.pl < /etc/inetd.conf > /tmp/xinetd.conf\sa0\par\fi0\sb0 /usr/sbin/inetdconvert -c\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 La differenza principale tra i due script \'e8 che quello standard di xinetd riunisce tutte le impostazioni dei servizi nel file \fs18\f2 xinetd.conf\fs20\f0 prodotto, mentre quello di \b Mandrake\b0 crea script separati per i singoli servizi nella directory \fs18\f2 /etc/xinetd.d\fs20\f0 , cosa che io preferisco, in quanto tutti i file presenti in questa directory vengono inclusi da xinetd tramite la direttiva \i\f2 includedir /etc/xinetd.d\i0\f0 del file di configurazione \fs18\f2 xinetd.conf\fs20\f0 , e quindi per aggiungere nuovi servizi basta creare un nuovo file nella directory indicata e riavviare il super-demone, senza dover modificare sempre il suo file generale di configurazione. Se la pensate come me, ma non usate \b Mandrake\b0 , ecco qu\'ec di seguito lo script in questione: \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/usr/bin/perl\sa0\par\fi0\sb0 # -*- Mode: cperl -*-\sa0\par\fi0\sb0 #--------------------------------------------------------------------------------\sa0\par\fi0\sb0 # Copyright (C) 2000 by Chmouel Boudjnah , MandrakeSoft\sa0\par\fi0\sb0 # Redistribution of this file is permitted under the terms of the GNU \sa0\par\fi0\sb0 # Public License (GPL)\sa0\par\fi0\sb0 #--------------------------------------------------------------------------------\sa0\par\fi0\sb0 ## description: \sa0\par\fi0\sb0 # Update a system from inetd file to xinetd.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 use strict;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 my $inet_files = '/etc/inetd.conf';\sa0\par\fi0\sb0 my $dir = '/etc/xinetd.d/';\sa0\par\fi0\sb0 my $remain;\sa0\par\fi0\sb0 my $choose;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 parse_options(@ARGV);\sa0\par\fi0\sb0 $choose = shift;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 die "Need a service to convert\\n" if not $choose and not $remain;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 system("/bin/mkdir " . "-p " . "$dir") unless -d $dir;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 local *F;\sa0\par\fi0\sb0 open F, $inet_files;\sa0\par\fi0\sb0 while () \{\sa0\par\fi0\sb0 next if /^#/;\sa0\par\fi0\sb0 my @t = split;\sa0\par\fi0\sb0 my ($service, $socket_type, $protocol, $attente, $user, $server) = split;\sa0\par\fi0\sb0 my $programs; $programs .= "$t[$_] " for 6 .. $#t;\sa0\par\fi0\sb0 next if -f "$dir/$service";\sa0\par\fi0\sb0 next if $service !~ /^$choose$/ and not $remain;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 select W; open W, ">$dir/$service";\sa0\par\fi0\sb0 print "# Converted by Linux-Mandrake_inetdconvert\\n";\sa0\par\fi0\sb0 print "service $service\\n\{\\n";\sa0\par\fi0\sb0 print "\\tsocket_type\\t\\t= $socket_type\\n";\sa0\par\fi0\sb0 print "\\tprotocol\\t\\t= $protocol\\n";\sa0\par\fi0\sb0 print "\\twait\\t\\t\\t= ", $attente =~ /yes/ ? "no" : "yes", "\\n";\sa0\par\fi0\sb0 if ($user =~ /(\\w+)\\.(\\w+)/) \{\sa0\par\fi0\sb0 print "\\tuser\\t\\t\\t= $1\\n";\sa0\par\fi0\sb0 print "\\tgroup\\t\\t\\t= $2\\n";\sa0\par\fi0\sb0 \} else \{\sa0\par\fi0\sb0 print "\\tuser\\t\\t\\t= $user\\n";\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 print "\\tserver\\t\\t\\t= $server\\n";\sa0\par\fi0\sb0 print "\\tserver_args\\t\\t= ", $programs, "\\n" if $programs;\sa0\par\fi0\sb0 print "\\tdisable\\t\\t\\t= no\\n\}\\n";\sa0\par\fi0\sb0 close W;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 close F;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 sub usage \{\sa0\par\fi0\sb0 (my $n = $0) =~ s|.*/||g;\sa0\par\fi0\sb0 print < /etc/xinetd.conf\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Lo script prevede che la configurazione di base di xinetd sia nel file \fs18\f2 /etc/xinetd.base\fs20\f0 , con la stringa \b PUBLIC_ADDRESS\b0 al posto dell'IP che dovr\'e0 essere sostituito. Richiamando questo script con il nome dell'interfaccia di rete come suo argomento, per esempio nello script "ifup-..." dell'interfaccia di rete, questa stringa viene sostituita con l'indirizzo IP effettivo e viene creato il file \fs18\f2 /etc/xinetd.conf\fs20\f0 , per cui baster\'e0 riavviare xinetd per avere la configurazione con l'indirizzo IP corretto. Certo che il tutto \'e8 molto pi\'f9 pratico e veloce se invece degli indirizzi IP usate i nomi delle interfacce di rete... \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PORTREDIRECTXINETD}{\*\bkmkend ID_PORTREDIRECTXINETD}\b\fs28\lang1024\f1 13.3.2. Redirezione di porte\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 xinetd pu\'f2 agire da transparent proxy, tramite la redirezione delle porte, che permette di inviare le richieste per un dato servizio su determinati host e porta, su un'altra porta e anche su un altro host, se necessario. \par\pard\sb200\sl234 \fs18\lang1024\f2 service telnet\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 flags = REUSE\sa0\par\fi0\sb0 socket_type = stream\sa0\par\fi0\sb0 wait = no\sa0\par\fi0\sb0 user = root\sa0\par\fi0\sb0 server = /usr/sbin/in.telnetd\sa0\par\fi0\sb0 only_from = 192.168.1.0/24\sa0\par\fi0\sb0 redirect = 192.168.1.15 23\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Siccome il meccanismo pu\'f2 essere utile ma pericoloso, \'e8 consigliato fare il log su entrambi i lati della connessione, oltre che usare un firewall. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Suggerimento: \b0 Hint! Hint! Chiss\'e0 se si pu\'f2 redirezionare un possibile contatto di un possibile attacker su una porta qualsiasi (dove non sia in funzione gi\'e0 un server reale) aperta all'uopo, direttamente su una porta dello stesso attacker... (uno squalo bastardo... ;-) )\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_XINETDSERVIZIINTERNI}{\*\bkmkend ID_XINETDSERVIZIINTERNI}\b\fs28 13.3.3. Servizi interni\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 xinetd fornisce e gestisce internamente 5 servizi base UNIX: "echo, time, daytime, chargen e discard". Inoltre fornisce altri 3 servizi, che pur essendo interni, se usati vanno contrassegnati anche come UNLISTED, non essendo riportati n\'e9 in \fs18\f2 /etc/services\fs20\f0 n\'e9 in \fs18\f2 /etc/rpc\fs20\f0 : "servers, services e xadmin". Il primo fornisce informazioni sui server in funzione, il secondo sui servizi disponibili, con protocolli e porte, il terzo \'e8 un'interfaccia di amministrazione del super-demone. Poich\'e9 questi servizi rendono il vostro sistema vulnerabile, si consiglia di usarli solo in fase di configurazione, non essendo protetti in alcun modo, p.e. da password. Poi per sicurezza si consiglia di disabilitarli nella sezione "defaults": \par\pard\sb200\sl234 \fs18\lang1024\f2 defaults \{\sa0\par\fi0\sb0 ...\sa0\par\fi0\sb0 disabled = servers services xadmin\sa0\par\fi0\sb0 ...\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Non mi dilungo oltre, in quanto il mio consiglio \'e8 di dimenticare che questi 3 servizi esistono! ;-) Inserite la riga "disabled" nella sezione "defaults" e lasciateli perdere. \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_XINETDCHROOT}{\*\bkmkend ID_XINETDCHROOT}\b\fs28\lang1024\f1 13.3.4. Chroot di un servizio\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Se avete configurato un servizio (p.e. FTP) in ambiente \b chroot\b0 e volete continuare a usarlo in questo modo, dovrete usare una sintassi simile alla seguente, con il comando \b chroot\b0 come opzione "server" e il server effettivo nell'opzione "server_args": \par\pard\sb200\sl234 \fs18\lang1024\f2 service ftp\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 id = ftp\sa0\par\fi0\sb0 socket_type = stream\sa0\par\fi0\sb0 wait = no\sa0\par\fi0\sb0 user = root\sa0\par\fi0\sb0 server = /usr/sbin/chroot\sa0\par\fi0\sb0 server_args = /var/servers/ftp /usr/sbin/in.ftpd -l\sa0\par\fi0\sb0 \} \sa0\par\fi0\sb0 \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 14. Mutt}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 14. Mutt}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_MUTT}{\*\bkmkend ID_MUTT}\b\fs41\f1 Capitolo 14. Mutt\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 Mutt \'e8 uno tra i migliori client email per console. Gestisce \b POP3\b0 , \b IMAP\b0 e \b mailbox/maildir/mh\b0 locali. Qu\'ec trovate la configurazione di Mutt per uso locale (quindi dovrete scaricare le email dai server \i POP3\i0 usando fetchmail o simili). \'c8 fornito anche un elenco dei tasti principali. Ricordate di impostare la variabile d'ambiente EDITOR con quello che preferite (io uso vim, sezione \b Bash\b0 del \i Quick&Easy Configuration HOWTO\i0 ), o impostatelo direttamente nel file di configurazione di Mutt. Create le directory \b $HOME/Mail/\b0 , \b $HOME/Mail/Lists/\b0 , \b $HOME/Mail/Friends/\b0 e \b $HOME/Mail/.Mutt/\b0 . \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONEMUTT}{\*\bkmkend ID_CONFIGURAZIONEMUTT}\b\fs34\lang1024\f1 14.1. File di configurazione .muttrc\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI PERSONALI\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # elenco degli indirizzi personali (puo' essere un espressione regolare)\sa0\par\fi0\sb0 set alternates = pippo@libero.it,pippo@tiscalinet.it,pippo.pluto@tin.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva l'accodamento di @$hostname agli indirizzi locali\sa0\par\fi0\sb0 set use_domain = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # il from dei vostri messaggi (anche se verra' aggirato dai my_hdr...)\sa0\par\fi0\sb0 set from = mrshark@libero.it\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # dominio da accodare agli indirizzi locali\sa0\par\fi0\sb0 set hostname = "mrshark.home"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # vero nome personale da usare nelle email\sa0\par\fi0\sb0 set realname = "Antonio Fragola - MrShark"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # non generare il campo From: (usa invece i my_hdr)\sa0\par\fi0\sb0 set use_from = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # non generare il campo User_Agent: (usa invece i my_hdr)\sa0\par\fi0\sb0 set user_agent = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva l'uso degli header personali 'my_hdr'\sa0\par\fi0\sb0 set hdrs = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # header personali - potete crearne quanti ne volete - non esagerate!\sa0\par\fi0\sb0 my_hdr From: Antonio Fragola - MrShark \sa0\par\fi0\sb0 my_hdr Reply-To: mrshark@libero.it\sa0\par\fi0\sb0 my_hdr X-Operating-System: Debian GNU/Linux 2.2 Potato - Kernel 2.2.18 \sa0\par\fi0\sb0 my_hdr X-Disclaimer: Linux - The choice of a GNU generation!\sa0\par\fi0\sb0 my_hdr X-Mailer: Mutt/1.3.20i http://www.mutt.org\sa0\par\fi0\sb0 my_hdr X-Editor: Vim/5.7.19 http://www.vim.org\sa0\par\fi0\sb0 my_hdr X-URL: http://www.mrshark.it http://cslug.linux.it\sa0\par\fi0\sb0 #my_hdr X-Organization: Dark Half SoftWare\sa0\par\fi0\sb0 my_hdr X-GPG-Keyserver: http://www.keyserver.net\sa0\par\fi0\sb0 my_hdr X-GPG-Keynumber: 0x1503ADAB\sa0\par\fi0\sb0 my_hdr X-GPG-Fingerprint: E4E0 8B1A CDB1 09FA 692E 3E7F F82A 612B 1503 ADAB\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ordine di visualizzazione degli header\sa0\par\fi0\sb0 unhdr_order *\sa0\par\fi0\sb0 hdr_order Subject: From: Reply-To: Date: To: CC: BCC: Organization: \\\sa0\par\fi0\sb0 X-Organization: X-Operating-System: X-Mailer: User-Agent: \\\sa0\par\fi0\sb0 X-Disclaimer:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # header da visualizzare\sa0\par\fi0\sb0 ignore *\sa0\par\fi0\sb0 unignore Subject: From: Date: To: Reply-To: CC: BCC: Organization: \\\sa0\par\fi0\sb0 X-Organization: X-Operating-System: X-Mailer: User-Agent: \\\sa0\par\fi0\sb0 X-Disclaimer:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## DIRECTORY E MAILBOX\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # posizione della directory contenente le Mailbox. Un '+' o '=' all'inizio\sa0\par\fi0\sb0 # di un nome di percorso, in seguito, verra' sostituito con questo valore\sa0\par\fi0\sb0 set folder = $HOME/Mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # file principale dove arrivano le email\sa0\par\fi0\sb0 set spoolfile = $HOME/Mail/inbox\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # maschera per l'elenco dei file nel browser-file (.* = tutti)\sa0\par\fi0\sb0 set mask = ".*"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # directory in cui verranno spostati dallo spool principale i messaggi letti\sa0\par\fi0\sb0 # create la directory!\sa0\par\fi0\sb0 set mbox = "+Read/read-`date +%m-%Y`"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # non chiede conferma per creare una nuova mailbox\sa0\par\fi0\sb0 set confirmcreate = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede in uscita da una mailbox se si vogliono spostare i messaggi letti\sa0\par\fi0\sb0 set move = ask-no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # tipo di mailbox\sa0\par\fi0\sb0 set mbox_type = mbox\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI PER GLI ALIAS\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # visualizza il nome reale dell'autore dell'email preso dai propri alias\sa0\par\fi0\sb0 set reverse_alias = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # file contenente gli alias - si DEVE fare il source del file\sa0\par\fi0\sb0 # NdA: preferisco tenere i file accessori di configurazione nella maildir\sa0\par\fi0\sb0 set alias_file = +.Mutt/mutt_aliases\sa0\par\fi0\sb0 source +.Mutt/mutt_aliases\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato degli alias\sa0\par\fi0\sb0 set alias_format = "%2n %t %-10a %r"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ordina gli alias in base all'alias (oppure address)\sa0\par\fi0\sb0 set sort_alias = alias\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI GENERALI\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # indicazione del tipo di localizzazione\sa0\par\fi0\sb0 set locale = "it_IT.ISO-8859-1"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # insieme di caratteri ammessi\sa0\par\fi0\sb0 set charset = iso-8859-1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato della data\sa0\par\fi0\sb0 set date_format = "%d%m%y, %H:%M"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # hook di default\sa0\par\fi0\sb0 set default_hook = "~f %s !~P | (~P ~C %s)"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # imposta la directory per i file temporanei (consiglio per la privacy:\sa0\par\fi0\sb0 # impostare TMPDIR come indicato in .bash_profile nella sezione BASH del\sa0\par\fi0\sb0 # Quick&Easy Configuration Howto e creare la directory: $HOME/.tmp)\sa0\par\fi0\sb0 set tmpdir = $TMPDIR\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # disattiva il CTRL-Z per la sospensione di mutt\sa0\par\fi0\sb0 set suspend = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## MENU PRINCIPALE\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # usa caratteri ASCII per indicare le relazioni tra messaggi\sa0\par\fi0\sb0 set ascii_chars = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # emetti un suono in caso di errori\sa0\par\fi0\sb0 set beep = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # emetti un suono all'arrivo di nuovi messaggi\sa0\par\fi0\sb0 set beep_new = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva la visualizzazione della riga di aiuto\sa0\par\fi0\sb0 set help = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva la visualizzazione di una 'O' di fianco ai vecchi messaggi non letti\sa0\par\fi0\sb0 set mark_old = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato dell'indice\sa0\par\fi0\sb0 set index_format = "%3C %Z %\{%b %d\} %-25.25n (%3l) %s"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # numero di secondi tra i controlli di arrivo nuovi messaggi\sa0\par\fi0\sb0 set mail_check = 5\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede conferma prima di cancellare definitivamente i messaggi\sa0\par\fi0\sb0 set delete = ask-yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ordinamento primario in base ai thread\sa0\par\fi0\sb0 set sort = threads\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # ordinamento secondario in base alla data di invio\sa0\par\fi0\sb0 set sort_aux = date-sent\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # evita di dover premere ";" prima di applicare un comando a una serie di\sa0\par\fi0\sb0 # messaggi gia' marcati. Se sono marcati in piu' di uno, applica a tutti\sa0\par\fi0\sb0 set auto_tag = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # non collassare i thread se contengono messaggi non letti\sa0\par\fi0\sb0 set collapse_unread = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato della finestra dei folder\sa0\par\fi0\sb0 set folder_format = "%2C %t %N %-25.25f %8s %d"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI PER LA VISUALIZZAZIONE MESSAGGIO\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva il ritorno a capo delle righe piu' lunghe dello schermo\sa0\par\fi0\sb0 set smart_wrap = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva la visualizzazione di un '+' all'inizio delle righe mandate a capo\sa0\par\fi0\sb0 set markers = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva la visualizzazione di una o piu' '~' alla fine del messaggio\sa0\par\fi0\sb0 set tilde = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # impedisce che PageDown porti al messaggio successivo quando si raggiunge\sa0\par\fi0\sb0 # la fine di quello attuale\sa0\par\fi0\sb0 set pager_stop = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # numero di righe della pagina precedente da visualizzare durante lo scorrimento\sa0\par\fi0\sb0 set pager_context = 2\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # numero di voci di indice dei messaggi da visualizzare durante la lettura\sa0\par\fi0\sb0 set pager_index_lines = 4\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI DI COMPOSIZIONE\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se si vuole inserire un campo BCC per un nuovo messaggio\sa0\par\fi0\sb0 set askbcc = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se si vuole inserire un campo CC per un nuovo messaggio\sa0\par\fi0\sb0 set askcc = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # inizia a creare o modificare un messaggio e POI visualizza il menu\sa0\par\fi0\sb0 set autoedit = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # imposta l'uso di '-- ' prima della firma\sa0\par\fi0\sb0 set sig_dashes = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se si vuole posporre un messaggio che non si vuole inviare subito\sa0\par\fi0\sb0 set postpone = ask-yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se si vuole richiamare un messaggio posposto quando se ne crea uno\sa0\par\fi0\sb0 set recall = ask-yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # imposta l'editor da usare (in questo caso preso da .bash_profile)\sa0\par\fi0\sb0 #set editor=$EDITOR\sa0\par\fi0\sb0 # io invece uso vim in questo modo:\sa0\par\fi0\sb0 set editor = "vim -c 'set nobackup' -c '/^$/+1'"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # modifica gli headers insieme al messaggio\sa0\par\fi0\sb0 set edit_headers = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # se deve aggiungere un campo bcc agli header\sa0\par\fi0\sb0 set write_bcc = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # directory in cui conservare i messaggi posposti\sa0\par\fi0\sb0 set postponed = +outbox\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # file contenente la firma\sa0\par\fi0\sb0 set signature = $HOME/.signature\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI PER LE RISPOSTE\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato dell'attribuzione all'autore\sa0\par\fi0\sb0 #set attribution = "* %d, %n scrive:"\sa0\par\fi0\sb0 set attribution = "* %n <%a> [%d]:"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # stringa da preporre al testo quotato\sa0\par\fi0\sb0 set indent_string = "> "\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se includere il messaggio originale nelle risposte\sa0\par\fi0\sb0 set include = ask-yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede se si vuole usare il campo 'reply-to' del messaggio originale\sa0\par\fi0\sb0 set reply_to = ask-yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # espressione regolare per riconoscere le risposte ai messaggi\sa0\par\fi0\sb0 set reply_regexp = "^(([Rr]e?):[ \\t]*)+"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # espressione regolare per riconoscere il testo quotato nei messaggi\sa0\par\fi0\sb0 set quote_regexp = "^([ \\t]*[|>:\}#])+"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # attiva il list-reply (tasto "L") per rispondere a una mailing list\sa0\par\fi0\sb0 set ignore_list_reply_to = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # formato dei forward di messaggi\sa0\par\fi0\sb0 set forward_format = "[(fwd): %s]"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI PER L'INVIO\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # permette l'uso dell'insieme di caratteri a 8 bit\sa0\par\fi0\sb0 set allow_8bit\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # disattivare l'uso di 'Delivered-To' se si usa postfix\sa0\par\fi0\sb0 set bounce_delivered = no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # salva una copia dei messaggi in uscita\sa0\par\fi0\sb0 set copy = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # mailbox in cui salvare una copia dei messaggi in uscita. In questo caso\sa0\par\fi0\sb0 # sono file del tipo 'sent-aprile-2000' nella directory 'Sent' nella propria\sa0\par\fi0\sb0 # maildir. (create la directory!)\sa0\par\fi0\sb0 set record = "+Sent/sent-`date +%m-%Y`"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # posizione di sendmail\sa0\par\fi0\sb0 set sendmail = "/usr/sbin/sendmail -oem -oi"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #posizione di mutt_dotlock \sa0\par\fi0\sb0 set dotlock_program = "/usr/bin/mutt_dotlock"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## MAILCAP E MIME\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # percorso del file 'mailcap'\sa0\par\fi0\sb0 set mailcap_path = ~/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## MAILING-LIST E MAILBOX\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # elenco delle mailing-list cui si partecipa\sa0\par\fi0\sb0 # in questo caso sono contenute in $folder/Lists/\sa0\par\fi0\sb0 # L'elencare qui le ML frequentate permette di rispondere inviando\sa0\par\fi0\sb0 # il messaggio alla ML tramite il tasto "L" (maiuscola)\sa0\par\fi0\sb0 lists ML-vim ML-pluto-ildp ML-it-li-org\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # elenco delle mailbox che si vogliono controllare (gli apici sono inversi!).\sa0\par\fi0\sb0 # Sarete quindi avvisati da Mutt se arriva posta in queste mailbox.\sa0\par\fi0\sb0 # L'ultima e' una via breve per monitorare tutte le mailing-list\sa0\par\fi0\sb0 mailboxes ! +Friends/pippo +IN.admin\sa0\par\fi0\sb0 mailboxes `echo $HOME/Mail/Lists/*`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # queste sono quelle che frequento io, quelle sottoscritte (subscribe) si\sa0\par\fi0\sb0 # differenziano dalle altre dal fatto che permettono anche l'invio di\sa0\par\fi0\sb0 # messaggi (quelle che non lo permettono si chiamano newsletter, di solito)\sa0\par\fi0\sb0 lists cslug freshmeat html-it it-li-org softwarelibero\sa0\par\fi0\sb0 lists pluto-ildp tubero ziobudda circolo annunci\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 subscribe cslug it-li-org pluto-ildp tubero softwarelibero\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 mailboxes +admin +inbox +mrshark +spam +Lists/softwarelibero +Lists/annunci\sa0\par\fi0\sb0 mailboxes ! +Lists/cslug +Lists/freshmeat +Lists/html-it +Lists/it-li-org\sa0\par\fi0\sb0 mailboxes +Lists/pluto-ildp +Lists/tubero +Lists/ziobudda +Lists/circolo\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ##########################################################################\sa0\par\fi0\sb0 ## OPZIONI DI STAMPA\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # comando di stampa (io uso muttprint, presente su http://freshmeat.net)\sa0\par\fi0\sb0 set print_command = "muttprint"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # chiede conferma prima di stampare\sa0\par\fi0\sb0 set print = ask-no\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # invia i messaggi separatamente al filtro\sa0\par\fi0\sb0 set print_split = yes\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########################################################################\sa0\par\fi0\sb0 ## ASSOCIAZIONI DI TASTI\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 bind index previous-entry\sa0\par\fi0\sb0 bind index next-entry\sa0\par\fi0\sb0 bind pager previous-line\sa0\par\fi0\sb0 bind pager next-line\sa0\par\fi0\sb0 bind pager previous-entry\sa0\par\fi0\sb0 bind pager next-entry\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # macro personali\sa0\par\fi0\sb0 macro index \\ek "| formail -x From: | addysort >> ~/Mail/.Pm/black.lst\\n"\sa0\par\fi0\sb0 macro pager \\ek "| formail -x From: | addysort >> ~/Mail/.Pm/black.lst\\n"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########################################################################\sa0\par\fi0\sb0 ## CONFIGURAZIONE GnuPG \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # decommentare la riga seguente se si usa mutt con versione < 1.3.x\sa0\par\fi0\sb0 #set pgp_sign_micalg=pgp-sha1 # default for DSS keys\sa0\par\fi0\sb0 set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"\sa0\par\fi0\sb0 set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"\sa0\par\fi0\sb0 set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"\sa0\par\fi0\sb0 set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor \\\sa0\par\fi0\sb0 --detach-sign --textmode %?a?-u %a? %f"\sa0\par\fi0\sb0 set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 \\\sa0\par\fi0\sb0 --armor --textmode --clearsign %?a?-u %a? %f"\sa0\par\fi0\sb0 set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg -v --batch --output - \\\sa0\par\fi0\sb0 --encrypt --textmode --armor --always-trust -- -r %r -- %f"\sa0\par\fi0\sb0 set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 -v --batch \\\sa0\par\fi0\sb0 --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"\sa0\par\fi0\sb0 set pgp_import_command="gpg --no-verbose --import -v %f"\sa0\par\fi0\sb0 set pgp_export_command="gpg --no-verbose --export --armor %r"\sa0\par\fi0\sb0 set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"\sa0\par\fi0\sb0 set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"\sa0\par\fi0\sb0 set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"\sa0\par\fi0\sb0 set pgp_getkeys_command=""\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########################################################################\sa0\par\fi0\sb0 ## COMBINAZIONI DI COLORI\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # schermi in bianco e nero\sa0\par\fi0\sb0 mono normal none # testo normale\sa0\par\fi0\sb0 mono indicator reverse # messaggio attuale\sa0\par\fi0\sb0 mono tree none # frecce dei thread\sa0\par\fi0\sb0 mono status reverse # riga di stato\sa0\par\fi0\sb0 mono error bold # errori\sa0\par\fi0\sb0 mono message none # messaggi di informazione\sa0\par\fi0\sb0 mono quoted bold # testo quotato\sa0\par\fi0\sb0 mono signature none # firma\sa0\par\fi0\sb0 mono attachment underline # allegati MIME\sa0\par\fi0\sb0 mono search reverse # ricerche\sa0\par\fi0\sb0 mono tilde none # ~ alla fine dei messaggi\sa0\par\fi0\sb0 mono markers bold # + all'inizio delle righe mandate a capo\sa0\par\fi0\sb0 mono hdrdefault none # righe degli header\sa0\par\fi0\sb0 mono bold bold # evidenziazione in grassetto nei body\sa0\par\fi0\sb0 mono underline underline # evidenziazione sottolineato nei body\sa0\par\fi0\sb0 mono header bold "^(from|subject):"\sa0\par\fi0\sb0 mono body underline "((ftp|http|https)://|(file|mailto|news):|www\\\\.)[-a-zA-Z0-9_.:]\\\sa0\par\fi0\sb0 *[a-zA-Z0-9](/[^][\{\} \\t\\n\\r\\"<>()]*[^][\{\} \\t\\n\\r\\"<>().,:!])?/?"\sa0\par\fi0\sb0 mono body underline "[-a-zA-Z_0-9.]+@[-a-zA-Z_0-9.]+"\sa0\par\fi0\sb0 mono body bold "(^| )\\\\*[-a-zA-Z0-9\'e4\'f6\'fc\'df*]+\\\\*[,.?]?[ \\n]"\sa0\par\fi0\sb0 mono body underline "(^| )_[-a-zA-Z0-9\'e4\'f6\'fc\'df_]+_[,.?]?[ \\n]"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # schermi a colori\sa0\par\fi0\sb0 color normal brightwhite black # testo normale\sa0\par\fi0\sb0 color indicator brightcyan blue # messaggio attuale\sa0\par\fi0\sb0 color tree brightred black # frecce dei thread\sa0\par\fi0\sb0 color status brightyellow blue # riga di stato\sa0\par\fi0\sb0 color error brightred black # errori\sa0\par\fi0\sb0 color message brightyellow black # messaggi di informazione\sa0\par\fi0\sb0 color signature red black # firma\sa0\par\fi0\sb0 color attachment blue cyan # allegati MIME\sa0\par\fi0\sb0 color search brightyellow red # ricerche\sa0\par\fi0\sb0 color tilde blue black # ~ alla fine dei messaggi\sa0\par\fi0\sb0 color markers brightred black # + all'inizio delle righe mandate a capo\sa0\par\fi0\sb0 color hdrdefault blue black # righe degli header\sa0\par\fi0\sb0 color bold green black # evidenziazione in grassetto nei body\sa0\par\fi0\sb0 color underline yellow black # evidenziazione sottolineato nei body\sa0\par\fi0\sb0 color quoted cyan black # testo quotato\sa0\par\fi0\sb0 color quoted1 yellow black\sa0\par\fi0\sb0 color quoted2 magenta black\sa0\par\fi0\sb0 color quoted3 red black\sa0\par\fi0\sb0 color quoted4 red black\sa0\par\fi0\sb0 color quoted5 red black\sa0\par\fi0\sb0 color quoted6 red black\sa0\par\fi0\sb0 color quoted7 red black\sa0\par\fi0\sb0 color quoted8 red black\sa0\par\fi0\sb0 color quoted9 red black\sa0\par\fi0\sb0 color header brightyellow black "^(from|subject):"\sa0\par\fi0\sb0 color body brightgreen black "((ftp|http|https)://|(file|mailto|news):|www\\\\.)[-a-zA-Z0-9_.:]\\\sa0\par\fi0\sb0 *[a-zA-z0-9](/[^][\{\} \\t\\n\\r\\"<>()]*[^][\{\} \\t\\n\\r\\"<>().,:!])?/?"\sa0\par\fi0\sb0 color body brightred black "[-a-zA-Z_0-9.+]+@[-a-zA-Z_0-9.]+"\sa0\par\fi0\sb0 color body red black "(^| )\\\\*[-a-zA-Z0-9\'e4\'f6\'fc\'df*]+\\\\*[,.?]?[ \\n]"\sa0\par\fi0\sb0 color body green black "(^| )_[-a-zA-Z0-9\'e4\'f6\'fc\'df_]+_[,.?]?[ \\n]"\sa0\par\fi0\sb0 color index blue black ~F # impostato\sa0\par\fi0\sb0 color index brightgreen black ~N # nuovo\sa0\par\fi0\sb0 color index magenta black ~T # segnato\sa0\par\fi0\sb0 color index cyan black ~D # cancellato\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # URL\sa0\par\fi0\sb0 #color body cyan black "(finger|ftp|http|news|telnet)://[^ >]*" # generica\sa0\par\fi0\sb0 #color body cyan black "" # generica\sa0\par\fi0\sb0 #color body white blue "https://[^ >]*" # https\sa0\par\fi0\sb0 #color body cyan black "ftp://[^ ]*" # ftp\sa0\par\fi0\sb0 #color body green black "[[:alnum:]][-+.#_[:alnum:]]*@[-+.[:alnum:]]*[[:alnum:]]" # http\sa0\par\fi0\sb0 #color body brightred black "mailto: *[^ ]+\\(\\\\?subject=[^ ]+\\)?" # mailto\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Percorsi, nomi file e variabili\sa0\par\fi0\sb0 #color body brightgreen black "\\\\~?\\(/[-_.,a-zA-Z0-9\{\}]+\\)+" # nomi file\sa0\par\fi0\sb0 #color body brightgreen black "[a-z]:[-_.a-zA-Z0-9\\]+" # nomi file DOS/WIN\sa0\par\fi0\sb0 #color body brightred black "\\(/[-_.a-zA-Z0-9]+\\)+/" # percorsi\sa0\par\fi0\sb0 #color body brightmagenta black "\\\\$[a-zA-Z][-_a-zA-Z]+" # variabili\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Varie\sa0\par\fi0\sb0 #color body red black "^[*] .*:$" # riga attribution\sa0\par\fi0\sb0 #color body brightred black "[*/_]+ *[- &[:alnum:]]+ *[*/_]+" # testo enfatizzato\sa0\par\fi0\sb0 #color body yellow black "[;:8]-?[)/(|PpDO]" # smilies vari :-)\sa0\par\fi0\sb0 #color body blue red "<[Vv]?[Bb]?[Ee]?[Gg]>" # grin vari \sa0\par\fi0\sb0 #color body green black "\\( *[-+=#*~_]\\)\{4,\}" # righe di bordo\sa0\par\fi0\sb0 #color body red white "[!?]\{3,\}" # esclamazioni ripetute\sa0\par\fi0\sb0 #color body brightgreen black "[.0-9]+ ?%" # percentuali\sa0\par\fi0\sb0 #color body white blue "[0-9]\{0,3\}\\.[0-9]\{0,3\}\\.[0-9]\{0,3\}\\.[0-9]\{0,3\}" # indirizzi IP\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ########################################################################\sa0\par\fi0\sb0 ## ALTRO\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # aliases MUAs corrotti\sa0\par\fi0\sb0 charset-hook US-ASCII ISO-8859-1\sa0\par\fi0\sb0 charset-hook x-unknown ISO-8859-1\sa0\par\fi0\sb0 charset-hook windows-1250 CP1250\sa0\par\fi0\sb0 charset-hook windows-1251 CP1251\sa0\par\fi0\sb0 charset-hook windows-1252 CP1252\sa0\par\fi0\sb0 charset-hook windows-1253 CP1253\sa0\par\fi0\sb0 charset-hook windows-1254 CP1254\sa0\par\fi0\sb0 charset-hook windows-1255 CP1255\sa0\par\fi0\sb0 charset-hook windows-1256 CP1256\sa0\par\fi0\sb0 charset-hook windows-1257 CP1257\sa0\par\fi0\sb0 charset-hook windows-1258 CP1258\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # auto_view configuration\sa0\par\fi0\sb0 # richiede la configurazione del mailcap, guardare nell'howto!\sa0\par\fi0\sb0 auto_view text/html application/msword\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per quanto riguarda l'ultimissima parte, l'auto_view permette di vedere direttamente dentro mutt gli allegati per i quali esista un convertitore dal loro formato nativo in formato testo puro (anche in pi\'f9 passaggi, questo \'e8 il bello delle pipe! ;-) ). Io ho impostato solo HTML e WORD qu\'ec, ma voi potete aggiungerne quanti volete. Nella direttiva auto_view dovete specificare tutti i tipi MIME per i quali volete sia attiva la decodifica automatica degli allegati. Questi tipi MIME devono esistere nel vostro file \fs18\f2 /etc/mime.types\fs20\f0 , e se non presenti, create il file \fs18\f2 .mime.types\fs20\f0 seguendo il file principale come esempio e aggiungeteli voi (devono comunque essere tipi MIME accettabili, cio\'e8 standard!). Infine, create o modificate il file \fs18\f2 .mailcap\fs20\f0 , aggiungendo in fondo le righe seguenti (links e antiword devono essere installati nel sistema, lynx \'e8 analogo ma rende molto meno bene le tabelle - vecchie versioni di links non supportano il "-dump"!): \par\pard\sb200\sl234 \fs18\lang1024\f2 text/html; links -dump %s; copiousoutput\sa0\par\fi0\sb0 application/msword; antiword %s; copiousoutput\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Fatto questo, vedrete i file HTML e WORD direttamente come testo dentro mutt. Se non vi piace come li visualizza, potete sempre premere "v" per passare al menu degli allegati, salvarli e vederli con altri programmi. \par\pard\sb100\sl260 Per usare GnuPG (http://www.gnupg.org) da dentro mutt, dovete aver generato la vostra coppia di chiavi pubblica e privata con il comando: \b gpg --gen-key\b0 (seguite le istruzioni, e consultate qualche howto apposito, ma se volete usarlo, saprete gi\'e0 a cosa serve, spero...). Per accedere al semplice menu per l'uso di GPG sui vostri messaggi, premete \b p\b0 SUBITO PRIMA di premere \b y\b0 per inviarlo! Potrete quindi scegliere di codificare o firmare il messaggio (anche entrambe le cose), e altro. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_MUTTHOOKS}{\*\bkmkend ID_MUTTHOOKS}\b\fs34\lang1024\f1 14.2. Mutt e gli Hooks\keepn\hyphpar0\par\pard\sb200\li400\sl234 \fs18 Nota: \b0 Questa sezione nasce da una serie di scambi di email con \b Franco Vite\b0 (\b Caparossa\b0 , del LUG di Firenze), cui va il merito della parte della descrizione seguente relativa ai "send-hook", anche se rielaborata in alcuni punti. Grazie mille quindi a Caparossa! ;-)\hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Gli "hooks" (uncini) sono il metodo usato all'interno di mutt per impostare delle opzioni specifiche per un dato folder/header/email/altro, scavalcando le impostazioni predefinite nel file di configurazione. Ne esistono diversi tipi: \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 folder-hook [!]regexp comando [; altro-comando]\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 dove regexp \'e8 un'espressione regolare per identificare la mailbox o comunque l'oggetto su cui applicare il comando successivo (il \b !\b0 nega la regexp). \b folder-hook\b0 permette di definire impostazioni in base al singolo folder (ad esempio un diverso ordinamento per la mailbox \i mutt\i0 , ottenibile con \b folder-hook mutt set sort=threads\b0 ). Ricordate per\'f2 che non viene ripristinato il precedente valore quando si cambia mailbox, ma si continua ad usare l'ultimo valore assegnato, quindi si deve definire un comportamento di default, tramite un comando simile a: \b folder-hook . set sort=date-sent\b0 . Se dovete specificare pi\'f9 di un comando da eseguire su uno stesso folder, potete specificarli separandoli con \b ;\b0 . Se la vostra regexp contiene spazi, racchiudetela tra virgolette. \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 mbox-hook [!]regexp mailbox\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 \b mbox-hook\b0 permette di definire una mailbox in cui spostare i messaggi letti da una mailbox (che soddisfa la regexp) in un altra mailbox, automaticamente al cambio di folder o all'uscita del programma. Serve ad aggirare l'mbox predefinita, specificata nel file di configurazione. Infatti, viene usato il primo mbox-hook che si trova (in ordine di apparizione) e di cui viene soddisfatta la regexp, e se non ne pu\'f2 soddisfare nessuno, si usa l'mbox predefinita. Questo comando agisce su intere mailbox, non su singoli messaggi! Quindi TUTTI i messaggi della mailbox che soddisfa la regexp finiscono nella seconda mailbox, non \'e8 possibile spostare alcuni messaggi in una mailbox e altri in un'altra (ho chiesto sulla ML il perch\'e9 di questo comportamento e se \'e8 possibile fare qualcosa che funzioni sul SINGOLO messaggio invece dell'intera mailbox, appena ne so di pi\'f9, modificher\'f2 questa parte...). Se la vostra regexp contiene spazi, racchiudetela tra virgolette. \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 save-hook [!]regexp nomefile \sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 \b save-hook\b0 serve a specificare il nome del file predefinito in cui salvare i messaggi che soddisfano la regexp. Il salvataggio, a differenza degli altri hook, \'e8 un'azione da fare esplicitamente: mentre un mbox-hook avviene ad esempio in automatico, voi dovete specificare esplicitamente che volete salvare un messaggio in un file (per backup o per altro motivo), e ci\'f2 non influenza comunque lo stato della mailbox, i cui messaggi non vengono alterati. Per default, l'hook si attiva se il campo From: di un messaggio soddisfa la regexp, o se il messaggio ha voi come mittente e il destinatario soddisfa la regexp in uno dei campi To: o Cc:. Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione. \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 fcc-hook [!]regexp mailbox\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 \b fcc-hook\b0 permette di specificare una mailbox alternativa a quella definita nel file di configurazione, nella direttiva \b $record\b0 , in cui salvare in automatico una copia dei messaggi in uscita. Vengono controllati in ordine i vari fcc-hook, e se non se ne trovano di soddisfacenti, viene usata la mailbox definita in \b $record\b0 . Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione. \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 send-hook [!]regexp comando [; altro-comando]\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 \b send-hook\b0 permette di rispondere ad un dato indirizzo email (spesso mailing List) impostando comandi di configurazione specifici per quell'indirizzo (di solito si personalizza il campo From: e la firma da apporre in coda). Per esempio: \par\pard\sb100\li560\sl260\fi-360 \tqr\tx510\tx560\tab \lang1024 1.\tab Di default sono \i paperino@paperino.it\i0 , con la firma: ~/.signature \hyphpar0\par\pard\sb100\li560\sl260\fi-360 \tqr\tx510\tx560\tab 2.\tab ma sono anche \i pippo@pippo.it\i0 e con questo indirizzo uso la firma ~/.signature.pippo \hyphpar0\par\pard\sb100\li560\sl260\fi-360 \tqr\tx510\tx560\tab 3.\tab ma ho anche \i pluto@pluto.it\i0 , a cui vi associo la firma: ~/.signature.pluto \hyphpar0\par\pard\sb100\li200\sl260 \lang1040 Poniamo che nel secondo caso sia iscritto alla ML \i linux@linux.it\i0 , mentre nel terzo caso sia iscritto alla ML \i linux@siena.it\i0 . Mutt permette di usare l'indirizzo e la firma del secondo esempio per \i linux@linux.it\i0 , e quelli del terzo esempio per \i linux@siena.it\i0 , e le impostazioni di default per tutti gli altri casi, impostando i seguenti send-hook: \par\pard\sb100\li200\sl234 \fs18\lang1024\f2 send-hook . "set signature=~/.signature ; \\\sa0\par\fi0\sb0 my_hdr From: Paperino "\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 send-hook linux@linux.it "set signature=~/.signature.pippo ; \\\sa0\par\fi0\sb0 my_hdr From: Pippo "\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 send-hook linux@siena.it "set signature=~/.signature.pluto ; \\\sa0\par\fi0\sb0 my_hdr From: Pluto "\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 La prima riga, fondamentale, dice a mutt di tornare alle impostazioni di default tutte le volte che non \'e8 stata usata una regola send-hook. Altrimenti viene usata sempre l'ultima regola applicata. Nel secondo caso, tutte le volte che facciamo un reply o un post alla lista \i linux@linux.it\i0 , alla quale, come abbiamo detto prima, siamo iscritti con l'indirizzo \i pippo@pippo.it\i0 , viene usato quest'ultimo indirizzo e come firma quella inerente all'utente pippo. Nel caso scrivessimo alla lista \i bsd@bsd.it\i0 , verrebbero usati indirizzo e firma di default (paperino, nel nostro esempio). Nel terzo caso, per concludere, essendo iscritti alla lista \i linux@siena.it\i0 con l'indirizzo \i pluto@pluto.it\i0 , facciamo s\'ec che mutt usi indirizzo e firma adeguati per post e reply. Come sempre, se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione. \par\pard\sb100\li200\sl234\fi-200 \tx200 \fs16\lang1024\f2 \'95\tab \fs18 message-hook [!]regexp comando [; altro-comando]\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260 \fs20\lang1040\f0 \b message-hook\b0 permette di impostare dei comandi specifici prima di visualizzare o formattare un messaggio. Se la vostra regexp contiene spazi, racchiudetela tra virgolette. Gli specificatori ~X sono spiegati di seguito in questa sezione. \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 e altri meno usati, come \b pgp-hook\b0 , \b charset-hook\b0 , \b iconv-hook\b0 , \b account-hook\b0 , \b fcc-save-hook\b0 . L'ultimo \'e8 una forma breve per unire un fcc-hook e un save-hook. \hyphpar0\par\pard\sb100\sl260 \lang1040 Tutte le regexp sottintendono un hook di default (appunto default_hook, impostato col comando \b set default_hook = "..."\b0 del file di configurazione e che ha come valore predefinito "~f %s !~P | (~P ~C %s)", che "matcha" messaggi con mittente %s ma non creati da te oppure messaggi creati da te e inviati a %s in To: o Cc:). \par\pard\sb100\sl260 Dovunque si possa specificare un pattern (dove lecito e logico...) si possono usare i seguenti specificatori per restringere la ricerca a ci\'f2 che si vuole: \par\pard\sb200\sl234 \fs18\lang1024\f2 ~A tutti i messaggi\sa0\par\fi0\sb0 ~b EXPR messaggi contenenti EXPR nel corpo del messaggio\sa0\par\fi0\sb0 ~B EXPR messaggi contenenti EXPR nell'intero messaggio\sa0\par\fi0\sb0 ~c USER messaggi inviati in Cc all'USER\sa0\par\fi0\sb0 ~C EXPR messaggi inviati a EXPR in To: o Cc:\sa0\par\fi0\sb0 ~D messaggi cancellati\sa0\par\fi0\sb0 ~d [MIN]-[MAX] messaggi con ``date-sent'' nell'intervallo indicato\sa0\par\fi0\sb0 ~E messaggi scaduti (spirati...)\sa0\par\fi0\sb0 ~e EXPR messaggi contenenti EXPR nel campo ``Sender''\sa0\par\fi0\sb0 ~F messaggi con il FLAG impostato\sa0\par\fi0\sb0 ~f USER messaggi con mittente USER\sa0\par\fi0\sb0 ~g messaggi segnati con PGP\sa0\par\fi0\sb0 ~G messaggi codificati con PGP\sa0\par\fi0\sb0 ~h EXPR messages contenenti EXPR negli header del messaggio\sa0\par\fi0\sb0 ~k messaggi contenenti una chiave PGP\sa0\par\fi0\sb0 ~i ID messaggi con ID nel campo ``Message-ID''\sa0\par\fi0\sb0 ~L EXPR messaggi originato o ricevuto da EXPR\sa0\par\fi0\sb0 ~l messaggi indirizzati a una mailing list conosciuta\sa0\par\fi0\sb0 ~m [MIN]-[MAX] messaggi nell'intervallo MIN-MAX *)\sa0\par\fi0\sb0 ~n [MIN]-[MAX] messages con un punteggio nell'intervallo MIN-MAX *)\sa0\par\fi0\sb0 ~N messaggi nuovi\sa0\par\fi0\sb0 ~O messaggi vecchi\sa0\par\fi0\sb0 ~p messaggi indirizzati a te (consulta $alternates)\sa0\par\fi0\sb0 ~P messaggi creati da te (consulta $alternates)\sa0\par\fi0\sb0 ~Q messaggi cui si \'e8 risposto\sa0\par\fi0\sb0 ~R messaggi letti\sa0\par\fi0\sb0 ~r [MIN]-[MAX] messaggi con ``date-received'' nell'intervallo indicato\sa0\par\fi0\sb0 ~S messaggi supersede (eliminati dal server...)\sa0\par\fi0\sb0 ~s SUBJECT messaggi con SUBJECT nel campo ``Subject''\sa0\par\fi0\sb0 ~T messaggi con un tag\sa0\par\fi0\sb0 ~t USER messaggi indirizzati all'USER\sa0\par\fi0\sb0 ~U messaggi non letti\sa0\par\fi0\sb0 ~v messaggio parte di un thread collassato\sa0\par\fi0\sb0 ~x EXPR messaggi contenenti EXPR nel campo ``References''\sa0\par\fi0\sb0 ~y EXPR messaggi contenenti EXPR nel campo ``X-Label''\sa0\par\fi0\sb0 ~z [MIN]-[MAX] messaggi con dimensione nell'intervallo MIN-MAX *)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 *) Sono permesse anche le forme <[MAX], >[MIN], [MIN]- e -[MAX].\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Si possono concatenare pi\'f9 pattern in successione, che funzioneranno in \b AND\b0 logico ("\i ~t mutt ~f elkins\i0 " selezioner\'e0 i messaggi inviati a "mutt" da "elkins"). Gli altri operatori logici sono: \b ! (NOT)\b0 , \b | (OR)\b0 , e le parentesi tonde \b ()\b0 per raggruppare ("\i !(~t mutt|~c mutt) ~f elkins\i0 " selezioner\'e0 i messaggi che non hanno "mutt" nei campi To: o Cc: e creati da "elkins"). \par\pard\sb100\sl260 Le ricerche per data DEVONO essere nel formato GG/MM/AA (mese e anno sono opzionali, e assumono come valori predefiniti quelli del mese e anno correnti). Ad esempio: "~d 20/1/95-31/10". Se ometti la prima data (MIN), indicando solo ``-GG/MM/AA'', verranno selezionati tutti i messaggi prima di quella data. Se ometti la seconda data (MAX), e specifichi solo ``DD/MM/YY-'', verranno selezionati tutti i messaggi dopo quella data. Se indichi solo una singola data senza il trattino (``-''), verranno selezionati solo i messaggi di quella specifica data. Altre info nel manuale ufficiale. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_TASTIMUTT}{\*\bkmkend ID_TASTIMUTT}\b\fs34\lang1024\f1 14.3. Tasti principali\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 Note:\sa0\par\fi0\sb0 1. I cursori funzionano in maniera diversa dal default, modificato per\sa0\par\fi0\sb0 consentire di scorrere la lista dei messaggi anche durante la lettura.\sa0\par\fi0\sb0 2. ^ sta per CTRL, sta per il tasto indicato\sa0\par\fi0\sb0 3. I comandi sono case-sensitive, maiuscole e minuscole sono diverse.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Movimenti:\sa0\par\fi0\sb0 (NELL'INDICE) spostati alla voce precedente\sa0\par\fi0\sb0 (NELL'INDICE) spostati alla voce successiva\sa0\par\fi0\sb0 (DURANTE LA LETTURA MESSAGGI) spostati alla voce precedente\sa0\par\fi0\sb0 (DURANTE LA LETTURA MESSAGGI) spostati alla voce successiva\sa0\par\fi0\sb0 (DURANTE LA LETTURA MESSAGGI) spostati al messaggio precedente\sa0\par\fi0\sb0 (DURANTE LA LETTURA MESSAGGI) spostati al messaggio successivo\sa0\par\fi0\sb0 spostati alla pagina precedente\sa0\par\fi0\sb0 spostati alla pagina successiva\sa0\par\fi0\sb0 salta al successivo messaggio nuovo\sa0\par\fi0\sb0 salta al precedente messaggio nuovo\sa0\par\fi0\sb0 ^N salta al thread successivo\sa0\par\fi0\sb0 ^P salta al thread precedente\sa0\par\fi0\sb0 = spostati alla prima voce\sa0\par\fi0\sb0 * spostati all'ultima voce\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Modifiche:\sa0\par\fi0\sb0 o ordina i messaggi\sa0\par\fi0\sb0 O ordina i messaggi in ordine inverso\sa0\par\fi0\sb0 c apri un altro folder\sa0\par\fi0\sb0 d cancella la voce corrente\sa0\par\fi0\sb0 u de-cancella la voce corrente\sa0\par\fi0\sb0 D cancella i messaggi corrispondenti al modello\sa0\par\fi0\sb0 U de-cancella i messaggi corrispondenti al modello\sa0\par\fi0\sb0 ^D cancella tutti i messaggi nel thread\sa0\par\fi0\sb0 ^U de-cancella tutti i messaggi nel thread\sa0\par\fi0\sb0 w imposta un flag di stato su un messaggio\sa0\par\fi0\sb0 W cancella il flag di stato da un messaggio\sa0\par\fi0\sb0 t (de)segna la voce corrente\sa0\par\fi0\sb0 T segna i messaggi corrispondenti al modello\sa0\par\fi0\sb0 ^T togli il segno ai messaggi corrispondenti al modello\sa0\par\fi0\sb0 l mostra solo i messaggi corrispondenti al modello\sa0\par\fi0\sb0 ^R segna il thread corrente come gia` letto\sa0\par\fi0\sb0 t segna il thread corrente\sa0\par\fi0\sb0 F (dis)attiva il flag 'importante' del messaggio\sa0\par\fi0\sb0 N (dis)attiva il flag 'nuovo' di un messaggio\sa0\par\fi0\sb0 ; applica la prossima funzione ai messaggi segnati\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Ricerche:\sa0\par\fi0\sb0 b cerca all'interno dei Body dei messaggi\sa0\par\fi0\sb0 b (ELIMINANDO ~b ) cerca nei subject dei messaggi\sa0\par\fi0\sb0 / cerca una espressione regolare\sa0\par\fi0\sb0 / cerca all'indietro una espressione regolare\sa0\par\fi0\sb0 n cerca la prossima corrispondenza\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Messaggi:\sa0\par\fi0\sb0 visualizza un messaggio\sa0\par\fi0\sb0 visualizza un messaggio\sa0\par\fi0\sb0 @ visualizza l'indirizzo completo del mittente\sa0\par\fi0\sb0 h visualizza il messaggio con gli header completi\sa0\par\fi0\sb0 m componi un nuovo messaggio\sa0\par\fi0\sb0 r rispondi a un messaggio\sa0\par\fi0\sb0 L rispondi alla mailing list indicata\sa0\par\fi0\sb0 g rispondi a tutti i destinatari\sa0\par\fi0\sb0 b rispedisci un messaggio a un altro utente\sa0\par\fi0\sb0 f inoltra un messaggio con i commenti\sa0\par\fi0\sb0 R richiama un messaggio rimandato\sa0\par\fi0\sb0 e modifica il messaggio corrente per rispedirlo\sa0\par\fi0\sb0 v mostra gli allegati MIME\sa0\par\fi0\sb0 C fai una copia decodificata (text/plain)\sa0\par\fi0\sb0 C copia un messaggio in un file/mailbox\sa0\par\fi0\sb0 s salva in un file un messaggio/allegato\sa0\par\fi0\sb0 a crea un alias dal mittente del messaggio\sa0\par\fi0\sb0 permette di accedere all'elenco degli alias durante la composizione\sa0\par\fi0\sb0 quando viene richiesto di inserire il destinatario, il cc o il bcc\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Varie:\sa0\par\fi0\sb0 mostra la documentazione di Mutt\sa0\par\fi0\sb0 ? aiuto sui tasti\sa0\par\fi0\sb0 salta a un al messaggio NUM\sa0\par\fi0\sb0 p stampa la voce corrente\sa0\par\fi0\sb0 $ salva i cambiamenti alla mailbox\sa0\par\fi0\sb0 q salva i cambiamenti alla mailbox ed esci\sa0\par\fi0\sb0 x esci da questo menu\sa0\par\fi0\sb0 ^L cancella e ridisegna lo schermo\sa0\par\fi0\sb0 : inserisci un comando di muttrc\sa0\par\fi0\sb0 | manda un messaggio/allegato a un comando della shell con una pipe\sa0\par\fi0\sb0 ^B richiama URLVIEW per estrarre le URL dal messaggio\sa0\par\fi0\sb0 V mostra il numero di versione e la data di Mutt\sa0\par\fi0\sb0 k inserisce il mittente nella Black List (per procmail)\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 E ora divertitevi ad usarlo! \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_GREPMAIL}{\*\bkmkend ID_GREPMAIL}\b\fs34\lang1024\f1 14.4. Grepmail e Mutt\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Grepmail \'e8 uno script in \i perl\i0 che permette di fare ricerche molto velocemente nelle vostre mailbox. Ne parlo qu\'ec perch\'e9 esiste uno script di shell ("grepm", in coda a questa sezione), che fa da wrapper ad esso, richiamando direttamente mutt sul risultato. Le sue particolarit\'e0 sono le seguenti: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 ritorna come risultato delle mailbox contenenti tutti i messaggi che soddisfano i criteri di ricerca, non solo le righe che contengono ci\'f2 che cercate \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 pu\'f2 cercare nel corpo o tra gli header dei messaggi \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 pu\'f2 eseguire ricerche anche su mailbox compresse in vari formati, tra cui bzip2 e gzip \hyphpar0\par\pard\sb100\sl260 \lang1040 Se non trovate il pacchetto gi\'e0 pronto per la vostra distribuzione preferita, scaricate i sorgenti di grepmail dal sito: http://grepmail.sourceforge.net. Per prima cosa, se non li avete gi\'e0 nel vostro sistema, installate i due moduli \i perl\i0 \b Date::Parse\b0 e \b Date::Manip\b0 con i comandi seguenti: \par\pard\sb200\sl234 \fs18\lang1024\f2 perl -MCPAN -e 'install Date::Parse'\sa0\par\fi0\sb0 perl -MCPAN -e 'install Date::Manip'\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 quindi compilate come segue (rispondendo eventualmente \b y\b0 alla domanda sull'installazione del modulo \b Mail::Folder::FastReader\b0 , per velocizzare di un 10/20% le ricerche), X.YZ \'e8 la versione del programma: \par\pard\sb200\sl234 \fs18\lang1024\f2 cd /usr/local/src\sa0\par\fi0\sb0 tar xvzf /percorso/verso/file/coi/sorgenti/grepmail-X.YZ.tar.gz\sa0\par\fi0\sb0 cd grepmail-X.YZ\sa0\par\fi0\sb0 perl Makefile.PL\sa0\par\fi0\sb0 make\sa0\par\fi0\sb0 make test\sa0\par\fi0\sb0 make install\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se \b make test\b0 segnala qualche errore, usate \b make testfunc\b0 per vedere nello specifico l'errore (a me ne dava uno sulle mailbox tzipped, ma visto che non le uso, non me ne sono preoccupato). Per default la ricerca avviene sia sugli header che nel corpo del messaggio. L'output pu\'f2 essere inviato su un file (otterrete una mailbox standard), o direttamente in pipe di nuovo a grepmail per un ulteriore raffinamento della ricerca. Queste le opzioni per l'uso di grepmail da shell: \par\pard\sb200\sl234 \fs18\lang1024\f2 grepmail [-abDhilmrRuv] [-s size] [-d "datespec"] [[-e] ] \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -b cerca nel corpo dei messaggi\sa0\par\fi0\sb0 -d specifica un intervallo di date (*)\sa0\par\fi0\sb0 -a usa la data di ricezione invece di quella di invio per le ricerche -d\sa0\par\fi0\sb0 -D modo debug\sa0\par\fi0\sb0 -e dichiara esplicitamente che la seguente \'e8 l'espressione da\sa0\par\fi0\sb0 cercare (utile per ricerche su stringhe che iniziano con "-")\sa0\par\fi0\sb0 -h cerca negli header dei messaggi\sa0\par\fi0\sb0 -H stampa solo gli header ma non i corpi delle email trovate\sa0\par\fi0\sb0 -i ignora maiuscole e minuscole nell'espressione\sa0\par\fi0\sb0 -l visualizza un elenco dei file che contengono l'espressione cercata\sa0\par\fi0\sb0 -M non cercare negli allegati MIME non testuali\sa0\par\fi0\sb0 -m appende "X-Mailfolder: " agli header per indicare in\sa0\par\fi0\sb0 quale folder \'e8 avvenuto il match con l'espressione cercata\sa0\par\fi0\sb0 -n visualizza i numeri di riga (e il nome del file se necessario)\sa0\par\fi0\sb0 delle email (lo script "grepm" non funzioner\'e0...)\sa0\par\fi0\sb0 -q modo silenzioso -- non visualizza gli avvertimenti\sa0\par\fi0\sb0 -r visualizza i nomi dei file e il numero di email che soddisfano\sa0\par\fi0\sb0 l'espressione\sa0\par\fi0\sb0 -R ridiscende un albero di directory ricorsivamente\sa0\par\fi0\sb0 -s restringe il risultato alle email inferiori ad una certa dimensione\sa0\par\fi0\sb0 (in bytes)\sa0\par\fi0\sb0 -u assicura che non ci siano email diplicate nell'output\sa0\par\fi0\sb0 -v visualizza le email che NON soddisfano l'espressione\sa0\par\fi0\sb0 -V visualizza il numero di versione\sa0\par\fi0\sb0 -Z non usare Mail::Folder::FastReader anche se presente nel sistema\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 (*) Le date devono essere in uno dei formati seguenti:\sa0\par\fi0\sb0 una data come "today", "1st thursday in June 1992" (richiede\sa0\par\fi0\sb0 Date::Manip), "05/18/93", "12:30 Dec 12th 1880", "8:00pm\sa0\par\fi0\sb0 december tenth", oppure "before", "after", o "since", seguito\sa0\par\fi0\sb0 da una data come specificata sopra, oppure "between \sa0\par\fi0\sb0 and ", dove \'e8 definita come sopra.\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Seguono alcuni esempi, presi dalla manpage: \par\pard\sb200\sl234 \fs18\lang1024\f2 # conta il numero di email ("." "matcha" tutte le email.)\sa0\par\fi0\sb0 grepmail -r . sent-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email maggiori a 2000 byte sui "books"\sa0\par\fi0\sb0 grepmail books -s 2000 sent-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email inviate ieri\sa0\par\fi0\sb0 grepmail -d yesterday sent-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email contenenti "research" inviate prima del primo\sa0\par\fi0\sb0 # gioved\'ec di giugno 1998 (richiede il modulo Date::Manip)\sa0\par\fi0\sb0 grepmail research -d "before 1st thursday in June 1992" sent-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email contenenti "research" inviate prima del\sa0\par\fi0\sb0 # primo giugno 1998\sa0\par\fi0\sb0 grepmail research -d "before 6/1/92" sent-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email ricevute dal 8/20/98 che non riguardano\sa0\par\fi0\sb0 # "research" o "job", ignorando maiuscole e minuscole\sa0\par\fi0\sb0 grepmail -iv "(research|job)" -d "since 8/20/98" saved-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email su "mime" ma non su "Netscape". Limita la\sa0\par\fi0\sb0 # ricerca al solo corpo (molte email contengono "mime" negli header)\sa0\par\fi0\sb0 grepmail -b mime saved-mail | grepmail Netscape -v\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # visualizza un elenco delle mailbox contenenti messaggi da "Rodney".\sa0\par\fi0\sb0 # Limita la ricerca ai soli header, poich\'e9 il testo quotato\sa0\par\fi0\sb0 # delle email potrebbe contenere il pattern\sa0\par\fi0\sb0 grepmail -hl "^From.*Rodney" saved-mail*\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # trova tutte le email con il testo "Pilot" sia negli header\sa0\par\fi0\sb0 # che nel corpo del messaggio\sa0\par\fi0\sb0 grepmail -hb "Pilot" saved-mail*\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # conta il numero di messaggi su "grepmail" in tutte le mailbox\sa0\par\fi0\sb0 # "saved-mail"\sa0\par\fi0\sb0 grepmail -br grepmail saved-mail*\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # rimuove qualsiasi duplicato in una mailbox\sa0\par\fi0\sb0 grepmail -u saved-mail\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # converte una mailbox Gnus in formato mbox\sa0\par\fi0\sb0 grepmail . gnus-mailbox-dir/* > mbox\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 grepm \'e8 un wrapper per grepmail che invia l'output direttamente a mutt (si usa esternamente ad esso, direttamente da riga di comando, e lo richiama in automatico sul risultato). Si usa esattamente come il tool originale, con le stesse opzioni (visto che \'e8 un wrapper, e quindi passa tutto a grepmail). Segue lo script (gli eventuali aggiornamenti su http://privat.schlund.de/barsnick), copiatelo in qualche directory contenuta nel vostro PATH e rendetelo eseguibile con \b chmod 755 grepm\b0 . \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # grepm - a wrapper for grepmail utilizing mutt\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # grepm-0.6\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # written 1998-11-xx by Moritz Barsnick \sa0\par\fi0\sb0 # updated 1998-12-22: added "-m" option for grepmail\sa0\par\fi0\sb0 # added "exit 1" to trap\sa0\par\fi0\sb0 # updated 1999-01-04: added check for empty "mailbox" (don't open mutt)\sa0\par\fi0\sb0 # added messages\sa0\par\fi0\sb0 # added umask (to keep others from reading your messages)\sa0\par\fi0\sb0 # updated 1999-01-19: added trap for SIGPIPE (any other suggestions?)\sa0\par\fi0\sb0 # updated 1999-07-05: added $TMPDIR; we're still subject to races ($TMPFILE\sa0\par\fi0\sb0 # might exist)\sa0\par\fi0\sb0 # updated 1999-11-29: have mutt open the temporary mailbox read-only -\sa0\par\fi0\sb0 # there's no use in editing it anyway\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 PROGNAME=`basename "$0"`\sa0\par\fi0\sb0 TMPDIR=$\{TMPDIR-/tmp\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 umask 077\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if [ $# -lt 1 ]; then\sa0\par\fi0\sb0 echo 1>&2 "Usage: $\{PROGNAME\} arguments"\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 TMPFILE="$\{TMPDIR\}/grepmail-output.$$"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # I _would_ check this with "-e", but not all /bin/sh's understand it\sa0\par\fi0\sb0 # so this is just a kludge\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if [ -f $\{TMPFILE\} -o -d $\{TMPFILE\} -o -w $\{TMPFILE\} ]; then\sa0\par\fi0\sb0 echo 1>&2 "Temporary file $\{TMPFILE\} exists for some reason! Aborting."\sa0\par\fi0\sb0 exit 1\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 trap "rm -f $\{TMPFILE\}; exit 1" 1 2 3 13 15\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 grepmail -m "$@" > "$\{TMPFILE\}"\sa0\par\fi0\sb0 if [ `wc -c "$\{TMPFILE\}" | awk '\{print $1\}'` -gt 0 ]; then\sa0\par\fi0\sb0 echo 1>&2 "Calling mutt on results file ($\{TMPFILE\})."\sa0\par\fi0\sb0 mutt -R -f "$\{TMPFILE\}"\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 echo 1>&2 "No matches."\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 rm -f "$\{TMPFILE\}" && echo 1>&2 "Deleted results file ($\{TMPFILE\})."\sa0\par\fi0\sb0 \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 15. Slrn}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 15. Slrn}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_SLRN}{\*\bkmkend ID_SLRN}\b\fs41\f1 Capitolo 15. Slrn\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INTRODUZIONESLRN}{\*\bkmkend ID_INTRODUZIONESLRN}\fs34 15.1. Introduzione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 In questa sezione trovate il file di configurazione, ampiamente commentato, e i tasti principali di \b Slrn\b0 (ATTENZIONE, l'HOWTO \'e8 stato aggiornato alla versione 0.9.7.1! Quindi se avete qualche problema ad usarlo con versioni precedenti, controllate che non stiate usando opzioni troppo recenti o con una sintassi cambiata, tipo un "set..." davanti). Slrn \'e8 un news-reader (un programma capace di collegarsi ad un news-server) che permette di leggere \i ONLINE\i0 i newsgroup. Per questo motivo dovete avere installato un news-server locale (guardate la sezione \b Leafnode\b0 del \i Quick&Easy Configuration HOWTO\i0 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\'e0 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 nel file \fs18\f2 $HOME/.bash_profile\fs20\f0 le seguenti righe (sezione \b Bash\b0 del \i Quick&Easy Configuration HOWTO\i0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 NNTPSERVER='127.0.0.1'\sa0\par\fi0\sb0 SLANG_EDITOR='mcedit %s'\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Slrn ha tre modalit\'e0 di funzionamento: \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 1.\tab \b selezione newsgroup\b0 - permette di vedere la lista dei newsgroup presenti sul server (magari visualizzandone solo una parte, tramite \i wildcard\i0 ), sottoscrivere o annullare la sottoscrizione ad essi e selezionare quello da consultare \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 2.\tab \b selezione articolo/thread\b0 - selezionando un newsgroup entrerete in questa modalit\'e0, che permette di scegliere gli articoli da salvare, marcarli come letti o meno, inviare un nuovo articolo, oppure rispondere ad uno gi\'e0 presente con un \i followup\i0 (sul newsgroup) o un \i reply\i0 (per email) \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 3.\tab \b lettura articolo\b0 - selezionando un articolo per la lettura, \'e8 poi possibile leggerlo, rispondere per email (tasto \b r\b0 ) o sul newsgroup (tasto \b f\b0 ), salvarlo (tasto \b o\b0 ) o inviarne uno nuovo (tasto \b P\b0 ), o ancora stamparlo (tasto \b y\b0 ). \hyphpar0\par\pard\sb100\sl260 \lang1040 Il tasto \b ?\b0 permette di avere sempre un aiuto, qualunque sia la modalit\'e0 selezionata. \b q\b0 permette di ritornare alla modalit\'e0 precedente o di uscire se si \'e8 in quella di selezione newsgroup. La prima volta che userete slrn, dovrete farlo con l'opzione \b -create\b0 , 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\'f2 non avvenga, create le directory \b $HOME/News/\b0 , \b $HOME/News/decoded/\b0 , \b $HOME/News/other/\b0 e \b $HOME/News/postponed/\b0 , oltre a \b $HOME/News/.Slrn/\b0 ). In seguito baster\'e0 lanciare in comando \b slrn\b0 da solo, senza opzioni. In genere al primo avvio vi ritroverete con gi\'e0 sottoscritti alcuni newsgroup cui forse non siete interessati, e avete due possibilit\'e0: o scorrere la lista a mano e deselezionare i newsgroup uno ad uno con il tasto \b u\b0 , oppure uscire e dare i seguenti comandi nella directory \b $HOME/News/\b0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 tr \\: \\! < .newsrc > .newsrc.new\sa0\par\fi0\sb0 rm .newsrc\sa0\par\fi0\sb0 mv .newsrc.new .newsrc\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Per effettuare le sottoscrizioni, premere \b L\b0 e inserire una parte del nome del newsgroup, tipo: \b *.comp.os.*\b0 , poi spostatevi sui newsgroup da sottoscrivere e premere \b s\b0 , infine premete ancora \b L\b0 per visualizzare solo i newsgroup sottoscritti. \par\pard\sb100\sl260 A volte pu\'f2 capitare di voler rileggere un articolo o un \i thread\i0 gi\'e0 letto e per questo non pi\'f9 visualizzato da slrn: si pu\'f2 farlo con la sequenza \b 1\b0 o con \b 1p\b0 . La prima riscarica dal server tutti gli articoli gi\'e0 letti (riconoscibili da una \b D\b0 all'inizio della riga), mentre la seconda riconstruisce solo il thread corrente. Per applicare uno stesso comando a pi\'f9 articoli (ad esempio per salvare un intero thread), selezionateli prima con \b ;\b0 o \b #\b0 , e poi applicate il comando normalmente. I file generati da slrn quando si salva un articolo o un thread sono in formato \i standard mailbox\i0 , quindi per aprirli usate l'opzione adatta del vostro mail-reader (per esempio per Mutt usate: \b mutt -f /path/del/file/salvato\b0 ). \par\pard\sb100\sl260 Una caratteristica molto utile di slrn \'e8 il cosiddetto \b scoring\b0 : esso permette di assegnare un \i punteggio\i0 agli articoli in base ad alcuni criteri. Questo permette ad esempio di marcare come gi\'e0 letti gli articoli con subject che non vi interessano (\b killing\b0 , da cui \i killfile\i0 , sinonimo di \i scorefile\i0 ), oppure di assegnare punteggi alti ad articoli contenenti determinati subject o provenienti da determinate persone, cos\'ec come di assegnarne di bassi ad altri, facendo in modo da avere nell'elenco degli articoli per primi quelli pi\'f9 interessanti, e via di seguito gli altri. Premendo il tasto \b K\b0 su un articolo e rispondendo ad alcune semplici domande, si genera una voce all'interno dello scorefile, che \'e8 possibile visionare o modificare con la sequenza di tasti \b 1 K\b0 . In genere dovrete usare delle espressioni regolari, potete vederne la sintassi nella sezione di \b Procmail\b0 del \i Quick&Easy Configuration HOWTO\i0 . \par\pard\sb100\sl260 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 del \i Quick&Easy Configuration HOWTO\i0 ). \par\pard\sb100\sl260 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 \b Slrn-Slrnpull-HOWTO\b0 di Alessandro Airaghi (http://web.tiscalinet.it/airaghi), oppure nel manuale ufficiale di \b Slrn\b0 , che mi sono smadonnato a tradurre in italiano per voi! ;-) Lo trovate in vare versioni nell'area "Download" del mio sito: http://www.mrshark.it. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_CONFIGURAZIONESLRN}{\*\bkmkend ID_CONFIGURAZIONESLRN}\b\fs34\lang1024\f1 15.2. File di configurazione .slrnrc\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 % server da cui scaricare le News e file apposito\sa0\par\fi0\sb0 % NdA: preferisco tenere i file accessori di configurazione nella newsdir\sa0\par\fi0\sb0 server "127.0.0.1" "News/.Slrn/jnewrc"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome utente (parte a sinistra di '@') del proprio indirizzo email\sa0\par\fi0\sb0 set username "mrshark"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome dell'host (parte a destra di '@') del proprio indirizzo email\sa0\par\fi0\sb0 set hostname "ELIMINAMI.libero.it"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome reale\sa0\par\fi0\sb0 set realname "MrShark - Antonio Fragola"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % indirizzo per le risposte (viene usato anche un banale antispam)\sa0\par\fi0\sb0 set replyto "mrshark@ELIMINAMI.libero.it"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % file contenente la firma da usare\sa0\par\fi0\sb0 set signature ".signature"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % stringa da preporre al testo quotato\sa0\par\fi0\sb0 set quote_string ">"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Se non zero, viene aggiunto uno spazio tra la quote_string e le\sa0\par\fi0\sb0 % righe che non sono gia' quotate, rendendole piu' leggibili\sa0\par\fi0\sb0 set smart_quote 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se diverso da 0, la firma non verra' inclusa nel testo quotato dei followup\sa0\par\fi0\sb0 set followup_strip_signature 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se impostato ad 1, slrn non permette di inviare articoli con righe non\sa0\par\fi0\sb0 % quotate pi\'f9 lunghe di 80 caratteri. Se impostato a 2 verr\'e0 solo mostrato\sa0\par\fi0\sb0 % un avvertimento\sa0\par\fi0\sb0 set reject_long_lines 2\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % espressione regolare per riconoscere il testo quotato\sa0\par\fi0\sb0 % questa e' quella che uso io (ne seguono altre di altre persone):\sa0\par\fi0\sb0 ignore_quotes "^ ? ?[><:=|\\-]"\sa0\par\fi0\sb0 % ignore_quotes "^[>|#:][>|#: ]"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Sven Guckes :\sa0\par\fi0\sb0 % Extensive setup allowing quoting with "names":\sa0\par\fi0\sb0 % ignore_quotes "^ ? ?[A-Za-z0-9]*[]-|>#:)\}=+%>]"\sa0\par\fi0\sb0 % Not so extensive quoting:\sa0\par\fi0\sb0 % ignore_quotes "^ ? ?[]-|>#:)\}=+%>]"\sa0\par\fi0\sb0 % Some other things I have tried - but did not like. ;-)\sa0\par\fi0\sb0 % ignore_quotes "^ ? ?[>#:%|)\}\}=+-]" "^[ \\t]*[A-Za-z]+>"\sa0\par\fi0\sb0 % ignore_quotes "^[ \\t]+[a-zA-Z]+>" "^ ? ?[]>#:|)\}\}=+-]+"\sa0\par\fi0\sb0 % ignore_quotes "^[ \\t]*[a-zA-Z]+>"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % John E. Davis :\sa0\par\fi0\sb0 % Yes, he is the author of SLRN! :-)\sa0\par\fi0\sb0 % ignore_quotes "^\\t? \\\\\{0,5\\\\\}[]\{\}><:=|+\\xBB!]" "^[\\t ]*[A-Za-z]+>"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Heikki "Hezu" Kantola :\sa0\par\fi0\sb0 % ignore_quotes "^[ ]*[>^<:|&;%]" "^[ ]*[a-zA-Z-]*>" "^()" "^[-=]+>" "^\\+\\+"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Felix von Leitner \sa0\par\fi0\sb0 % ignore_quotes "^ ? ?[>:)=-]"\sa0\par\fi0\sb0 % ignore_quotes "^ ? ?[-=]?[>:]"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % stringhe da preporre in follow-up e reply\sa0\par\fi0\sb0 set followup_date_format "%d%m%y %H:%M"\sa0\par\fi0\sb0 set followup_string "* %r <%f> [%D]:"\sa0\par\fi0\sb0 set reply_string "In '%n', nell'articolo '%s', hai scritto:"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Header personalizzati da inserire nei nuovi articoli\sa0\par\fi0\sb0 % consiglio di eliminare l'ultima '\\' dalle righe seguenti\sa0\par\fi0\sb0 % e di inserire le direttive su un'unica riga\sa0\par\fi0\sb0 set custom_headers "X-Operating-System: Debian GNU/Linux 2.2 Potato \\\sa0\par\fi0\sb0 - Kernel 2.2.18\\nX-Disclaimer: Linux - The choice of a GNU generation!\\nX-Editor: \\\sa0\par\fi0\sb0 Vim/5.7.19 http://www.vim.org\\nX-URL: http://www.mrshark.it \\\sa0\par\fi0\sb0 http://cslug.linux.it\\nX-GPG-Keyserver: http://www.keyserver.net\\nX-GPG-Keynumber: \\\sa0\par\fi0\sb0 0x1503ADAB\\nX-GPG-Fingerprint: E4E0 8B1A CDB1 09FA 692E 3E7F F82A 612B 1503 ADAB"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 set followup_custom_headers "X-Operating-System: Debian GNU/Linux 2.2 Potato \\\sa0\par\fi0\sb0 - Kernel 2.2.18\\nX-Disclaimer: Linux - The choice of a GNU generation!\\nX-Editor: \\\sa0\par\fi0\sb0 Vim/5.7.19 http://www.vim.org\\nX-URL: http://www.mrshark.it \\\sa0\par\fi0\sb0 http://cslug.linux.it\\nX-GPG-Keyserver: http://www.keyserver.net\\nX-GPG-Keynumber: \\\sa0\par\fi0\sb0 0x1503ADAB\\nX-GPG-Fingerprint: E4E0 8B1A CDB1 09FA 692E 3E7F F82A 612B 1503 ADAB"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 set reply_custom_headers "X-Operating-System: Debian GNU/Linux 2.2 Potato \\\sa0\par\fi0\sb0 - Kernel 2.2.18\\nX-Disclaimer: Linux - The choice of a GNU generation!\\nX-Editor: \\\sa0\par\fi0\sb0 Vim/5.7.19 http://www.vim.org\\nX-URL: http://www.mrshark.it \\\sa0\par\fi0\sb0 http://cslug.linux.it\\nX-GPG-Keyserver: http://www.keyserver.net\\nX-GPG-Keynumber: \\\sa0\par\fi0\sb0 0x1503ADAB\\nX-GPG-Fingerprint: E4E0 8B1A CDB1 09FA 692E 3E7F F82A 612B 1503 ADAB"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Header da mostrare quando si legge un articolo\sa0\par\fi0\sb0 % consiglio di eliminare l'ultima '\\' dalle righe seguenti\sa0\par\fi0\sb0 % e di inserire la direttiva visible_headers su un'unica riga\sa0\par\fi0\sb0 visible_headers "From,Subject:,Newsgroups:,Date:,Followup-To:,Mail-Copies-To:,\\\sa0\par\fi0\sb0 Reply-To:,X-Operating-System:,X-Disclaimer:,Organization:,X-Organization:,\\\sa0\par\fi0\sb0 User-Agent:,X-Mailer,X-Newsreader:,X-Posting-Agent:,X-Http-User-Agent:"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % WWW browser da usare se si e' o no in X, in seguito alla pressione di 'U'\sa0\par\fi0\sb0 set non_Xbrowser "lynx '%s'"\sa0\par\fi0\sb0 %set non_Xbrowser "links '%s'"\sa0\par\fi0\sb0 %set non_Xbrowser "links file://'%s'"\sa0\par\fi0\sb0 set Xbrowser "netscape -remote 'openURL (%s)' &"\sa0\par\fi0\sb0 %set Xbrowser "netscape '%s' &"\sa0\par\fi0\sb0 %set Xbrowser "~/.bin/url_handler.sh"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se diverso da 0, mostra il primo articolo quando si passa alla modalit\'e0 articolo\sa0\par\fi0\sb0 set show_article 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se diverso da 0, non vengono effettuati backup del file newsrc\sa0\par\fi0\sb0 set no_backups 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % segnala sia con un beep che visivamente\sa0\par\fi0\sb0 set beep 2\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se diverso da 0, annulla automaticamente le sottoscrizioni ai nuovi gruppi\sa0\par\fi0\sb0 set unsubscribe_new_groups 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se posto a 0, previene la ricerca di nuovi newsgroup\sa0\par\fi0\sb0 set check_new_groups 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se 0, visualizza il titolo solo nel primo articolo di un thread\sa0\par\fi0\sb0 set show_thread_subject 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % usa caratteri ASCII per indicare le relazioni tra messaggi\sa0\par\fi0\sb0 set simulate_graphic_chars 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % abilita supporto per il mouse in xterm\sa0\par\fi0\sb0 set mouse 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % usa barra colorata come cursore invece di '->'\sa0\par\fi0\sb0 set display_cursor_bar 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se impostato ad 1, un articolo viene segnato come letto se visualizzato\sa0\par\fi0\sb0 % se imposatato a 0, deve essere l'utente a segnarlo esplicitamente come letto\sa0\par\fi0\sb0 set auto_mark_article_as_read 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se impostati a 0, ci si sposta al prossimo articolo/gruppo automaticamente\sa0\par\fi0\sb0 set query_next_article 1\sa0\par\fi0\sb0 set query_next_group 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se impostato a 0, non viene chiesta conferma per follow-up, reply, quit, ecc...\sa0\par\fi0\sb0 set confirm_actions 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % se 0, salva tutti i gruppi durante il salvataggio del file newsrc\sa0\par\fi0\sb0 % se 1, non salva i gruppi non sottoscritti\sa0\par\fi0\sb0 % se 2, non salva i gruppi non sottoscritti o non letti\sa0\par\fi0\sb0 set write_newsrc_flags 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % visualizza '~' alla fine di un articolo\sa0\par\fi0\sb0 set use_tilde 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome dei file che conterranno i propri Post e Reply\sa0\par\fi0\sb0 % (N.B.: la propria HOME e' sottintesa)\sa0\par\fi0\sb0 set save_posts "News/My_Posts"\sa0\par\fi0\sb0 set save_replies "News/My_Replies"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % file che conterra' i Post falliti. "" per disabilitare\sa0\par\fi0\sb0 set failed_posts_file "News/Failed_Posts"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome del file dei punteggi (score). (N.B.: la propria HOME e' sottintesa)\sa0\par\fi0\sb0 % l'ho chiamato con estensione .score cosi' VIM colora la sintassi ;-)\sa0\par\fi0\sb0 set scorefile "News/killfile.score"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % articoli con punteggi superiori a min_high_score vengono posti in cima\sa0\par\fi0\sb0 % articoli con punteggi inferiori a max_low_score vengono posti alla fine\sa0\par\fi0\sb0 % articoli con punteggi inferiori a below kill_score vengono eliminati\sa0\par\fi0\sb0 set min_high_score 1\sa0\par\fi0\sb0 set max_low_score 0\sa0\par\fi0\sb0 set kill_score -666\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % nome della directory in cui vengono posti i file decodificati\sa0\par\fi0\sb0 % (N.B.: la propria HOME e' sottintesa - assicurarsi che esista)\sa0\par\fi0\sb0 set decode_directory "News/decoded"\sa0\par\fi0\sb0 % directory dove vengono salvati tutti gli altri file\sa0\par\fi0\sb0 % (N.B.: la propria HOME e' sottintesa - assicurarsi che esista)\sa0\par\fi0\sb0 set save_directory "News/other"\sa0\par\fi0\sb0 % directory dove verranno posti gli articoli posposti\sa0\par\fi0\sb0 % (N.B.: la propria HOME e' sottintesa - assicurarsi che esista)\sa0\par\fi0\sb0 set postpone_directory "News/postponed"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % usa la directory TMPDIR per i file temporanei (consiglio per la privacy:\sa0\par\fi0\sb0 % impostare TMPDIR come indicato in .bash_profile nella sezione BASH del\sa0\par\fi0\sb0 % Quick&Easy Configuration Howto e creare la directory: $HOME/.tmp)\sa0\par\fi0\sb0 set use_tmpdir 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % ordina per thread, poi per data con i piu' recenti prima\sa0\par\fi0\sb0 set sorting_method 9\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % un header con un nuovo subject inizia un nuovo thread\sa0\par\fi0\sb0 set new_subject_breaks_threads 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % espandi i thread\sa0\par\fi0\sb0 set uncollapse_threads 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % legge l'active file in avvio\sa0\par\fi0\sb0 set read_active 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % manda a capo solo il body, non gli header o il testo quotato\sa0\par\fi0\sb0 set wrap_flags 4\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % stampante\sa0\par\fi0\sb0 set printer_name "muttprint"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % editor\sa0\par\fi0\sb0 set editor_command "vim -c 'set nobackup' +%d '%s'"\sa0\par\fi0\sb0 set mail_editor_command "mutt -H '%s'"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % evidenziazioni\sa0\par\fi0\sb0 set emphasized_text_mode 3\sa0\par\fi0\sb0 set emphasized_text_mask 3\sa0\par\fi0\sb0 set process_verbatim_marks 1\sa0\par\fi0\sb0 set hide_verbatim_marks 0\sa0\par\fi0\sb0 set hide_signature 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % non postare articoli non modificati\sa0\par\fi0\sb0 set abort_unmodified_edits 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Impostazioni per il formato della finestra degli header\sa0\par\fi0\sb0 set overview_date_format " %d%m%y %H:%M"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 header_display_format 0 "%F%-5S%-5l:[%25r%D] %T%s"\sa0\par\fi0\sb0 header_display_format 1 "%F%-5S%G%-5l:[%12r]%t%s"\sa0\par\fi0\sb0 header_display_format 2 "%F%G%-5l:[%12r]%t%s"\sa0\par\fi0\sb0 header_display_format 3 "%F%-5l:%t%s"\sa0\par\fi0\sb0 header_display_format 4 "%F%-5S%-5l:%t%50s %r"\sa0\par\fi0\sb0 header_display_format 5 "%F%-5S [%10r]:%t%49s %-19g[%17d]"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 group_display_format 0 "\~\~%F\~[%-5u|%-6t]\~%n%45g%d"\sa0\par\fi0\sb0 group_display_format 1 "\~\~%F%-5u\~\~%n%45g%d"\sa0\par\fi0\sb0 group_display_format 2 "\~\~%F%-5u\~\~%n%50g%-8l-%h"\sa0\par\fi0\sb0 group_display_format 3 "\~\~%F%-5u\~[%-6t]\~\~%n"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % avvisa se non si rispettano alcune regole di netiquette\sa0\par\fi0\sb0 set netiquette_warnings 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 %---------------------------------------------------------------------------\sa0\par\fi0\sb0 % Supporto Mime\sa0\par\fi0\sb0 %---------------------------------------------------------------------------\sa0\par\fi0\sb0 set use_mime 1\sa0\par\fi0\sb0 set mime_charset "iso-8859-1"\sa0\par\fi0\sb0 set use_metamail 0\sa0\par\fi0\sb0 set metamail_command "metamail"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % visualizza i numeri di fianco agli articoli, per selezioni veloci\sa0\par\fi0\sb0 set use_header_numbers 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % carattere per nascondere il testo spoiler:\sa0\par\fi0\sb0 set spoiler_char '*'\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % quando viene svelato uno spoiler, inizia una nuova pagina\sa0\par\fi0\sb0 set spoiler_display_mode 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % non controllare gli articoli in base agli overview files\sa0\par\fi0\sb0 set spool_check_up_on_nov 0\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % macro utili\sa0\par\fi0\sb0 interpret "News/.Slrn/color.sl"\sa0\par\fi0\sb0 setkey article edit_colors "\\eec"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 interpret "News/.Slrn/new-search.sl"\sa0\par\fi0\sb0 setkey article NewSearch->search_first "$"\sa0\par\fi0\sb0 setkey article NewSearch->search_next "&"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 interpret "News/.Slrn/onekey-score.sl"\sa0\par\fi0\sb0 setkey article OneKeyScore->ignore_subthread "^K"\sa0\par\fi0\sb0 setkey article OneKeyScore->watch_subthread "^W"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 interpret "News/.Slrn/preferences.sl"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 interpret "News/.Slrn/screen-resize.sl"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 set warn_followup_to 2\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 %---------------------------------------------------------------------------\sa0\par\fi0\sb0 % Colors\sa0\par\fi0\sb0 %---------------------------------------------------------------------------\sa0\par\fi0\sb0 set highlight_unread_subjects 1\sa0\par\fi0\sb0 set color_by_score 3\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 color article "white" "black"\sa0\par\fi0\sb0 color author "yellow" "black"\sa0\par\fi0\sb0 color boldtext "brightblue" "black"\sa0\par\fi0\sb0 color box "black" "white"\sa0\par\fi0\sb0 color cursor "brightcyan" "blue"\sa0\par\fi0\sb0 color date "lightgray" "black"\sa0\par\fi0\sb0 color description "brightred" "black"\sa0\par\fi0\sb0 color error "brightred" "black"\sa0\par\fi0\sb0 color frame "yellow" "blue"\sa0\par\fi0\sb0 color from_myself "brightmagenta" "black"\sa0\par\fi0\sb0 color group "brightgreen" "black"\sa0\par\fi0\sb0 color grouplens_display "lightgray" "black"\sa0\par\fi0\sb0 color header_name "brightgreen" "black"\sa0\par\fi0\sb0 color header_number "brightgreen" "black"\sa0\par\fi0\sb0 color headers "yellow" "black"\sa0\par\fi0\sb0 color high_score "brightred" "black"\sa0\par\fi0\sb0 color italicstext "magenta" "black"\sa0\par\fi0\sb0 color menu_press "blue" "yellow"\sa0\par\fi0\sb0 color menu "yellow" "blue"\sa0\par\fi0\sb0 color neg_score "green" "black"\sa0\par\fi0\sb0 color normal "white" "black"\sa0\par\fi0\sb0 color pgpsignature "lightgray" "black"\sa0\par\fi0\sb0 color pos_score "blue" "black"\sa0\par\fi0\sb0 color quotes1 "yellow" "black"\sa0\par\fi0\sb0 color quotes2 "magenta" "black"\sa0\par\fi0\sb0 color quotes3 "red" "black"\sa0\par\fi0\sb0 color quotes4 "blue" "black"\sa0\par\fi0\sb0 color quotes5 "green" "black"\sa0\par\fi0\sb0 color quotes6 "white" "black"\sa0\par\fi0\sb0 color quotes7 "cyan" "black"\sa0\par\fi0\sb0 color quotes "cyan" "black"\sa0\par\fi0\sb0 color response_char "cyan" "black"\sa0\par\fi0\sb0 color selection "yellow" "blue"\sa0\par\fi0\sb0 color signature "red" "black"\sa0\par\fi0\sb0 color status "yellow" "blue"\sa0\par\fi0\sb0 color subject "brightgreen" "black"\sa0\par\fi0\sb0 color thread_number "brightblue" "black"\sa0\par\fi0\sb0 color tilde "brightgreen" "black"\sa0\par\fi0\sb0 color tree "brightred" "black"\sa0\par\fi0\sb0 color underlinetext "cyan" "black"\sa0\par\fi0\sb0 color verbatim "green" "black"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 %-----------------------------------------------------\sa0\par\fi0\sb0 % Monochrome attributes for monochrom terminals. One or more attributes\sa0\par\fi0\sb0 % may be specified.\sa0\par\fi0\sb0 %-----------------------------------------------------\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 mono article "none"\sa0\par\fi0\sb0 mono author "none"\sa0\par\fi0\sb0 mono boldtext "bold"\sa0\par\fi0\sb0 mono cursor "bold" "reverse"\sa0\par\fi0\sb0 mono date "none"\sa0\par\fi0\sb0 mono description "none"\sa0\par\fi0\sb0 mono error "blink" "bold"\sa0\par\fi0\sb0 mono frame "reverse"\sa0\par\fi0\sb0 mono from_myself "bold"\sa0\par\fi0\sb0 mono group "bold"\sa0\par\fi0\sb0 mono grouplens_display "none"\sa0\par\fi0\sb0 mono header_number "none"\sa0\par\fi0\sb0 mono headers "bold"\sa0\par\fi0\sb0 mono high_score "bold"\sa0\par\fi0\sb0 mono italicstext "bold"\sa0\par\fi0\sb0 mono menu_press "none"\sa0\par\fi0\sb0 mono menu "reverse"\sa0\par\fi0\sb0 mono normal "none"\sa0\par\fi0\sb0 mono pgpsignature "none"\sa0\par\fi0\sb0 mono quotes1 "underline"\sa0\par\fi0\sb0 mono quotes2 "underline"\sa0\par\fi0\sb0 mono quotes3 "underline"\sa0\par\fi0\sb0 mono quotes4 "underline"\sa0\par\fi0\sb0 mono quotes5 "underline"\sa0\par\fi0\sb0 mono quotes6 "underline"\sa0\par\fi0\sb0 mono quotes7 "underline"\sa0\par\fi0\sb0 mono quotes "underline"\sa0\par\fi0\sb0 mono response_char "bold"\sa0\par\fi0\sb0 mono selection "bold"\sa0\par\fi0\sb0 mono signature "none"\sa0\par\fi0\sb0 mono status "reverse"\sa0\par\fi0\sb0 mono subject "none"\sa0\par\fi0\sb0 mono thread_number "bold"\sa0\par\fi0\sb0 mono tree "bold"\sa0\par\fi0\sb0 mono underlinetext "underline"\sa0\par\fi0\sb0 mono verbatim "none"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_TASTISLRN}{\*\bkmkend ID_TASTISLRN}\b\fs34\f1 15.3. Tasti principali\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 Note:\sa0\par\fi0\sb0 1. ^ sta per CTRL, sta per il tasto indicato\sa0\par\fi0\sb0 2. I comandi sono case-sensitive, maiuscole e minuscole sono diverse.\sa0\par\fi0\sb0 3. Per attivare i tasti '$' e '&' per fare le ricerche all'interno\sa0\par\fi0\sb0 dei messaggi, dovete inserire nel vostro .slrnrc una riga tipo:\sa0\par\fi0\sb0 interpret "News/.Slrn/new-search.sl"\sa0\par\fi0\sb0 dove 'new-search.sl' \'e8 presente alla fine di questa sezione dell'Howto\sa0\par\fi0\sb0 4. I tasti ^K e ^W (Kill e Watch) fanno parte della macro 'onekey-score.sl',\sa0\par\fi0\sb0 e permettono di imitare gli "occhialini" di Agent, applicando un punteggio\sa0\par\fi0\sb0 temporaneo (dovrete poi rimuoverlo a mano dal killfile... finch\'e9 non\sa0\par\fi0\sb0 aggiungo un'altra macro che lo fa in automatico, cercatela per ora sul sito\sa0\par\fi0\sb0 di SLRN) che vi permette di tenere sott'occhio o ignorare un thread con una\sa0\par\fi0\sb0 sola combinazione di tasti.\sa0\par\fi0\sb0 5. e c vi permette di configurare i colori in modo interattivo ;-)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Comandi attivi sui gruppi:\sa0\par\fi0\sb0 P invia un articolo nel newsgroup corrente\sa0\par\fi0\sb0 P invia o modifica un articolo posposto\sa0\par\fi0\sb0 seleziona il newsgroup corrente\sa0\par\fi0\sb0 seleziona il newsgroup corrente\sa0\par\fi0\sb0 s sottoscrivi il newsgroup corrente\sa0\par\fi0\sb0 1 s sottoscrivi i newsgroup che corrispondono al pattern...\sa0\par\fi0\sb0 u annulla la sottoscrizione al newsgroup\sa0\par\fi0\sb0 1 u annulla la sottoscrizione ai newsgroup corrispondondenti al pattern...\sa0\par\fi0\sb0 c segna tutti gli articoli come letti (catchup)\sa0\par\fi0\sb0 u segna tutti gli articoli come non letti\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Movimenti:\sa0\par\fi0\sb0 < spostati in cima all'elenco\sa0\par\fi0\sb0 > spostati in coda all'elenco\sa0\par\fi0\sb0 spostati alla pagina precedente\sa0\par\fi0\sb0 spostati alla pagina successiva\sa0\par\fi0\sb0 spostati al gruppo precedente\sa0\par\fi0\sb0 spostati al gruppo successivo\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Varie:\sa0\par\fi0\sb0 a aggiungi un nuovo newsgroup\sa0\par\fi0\sb0 ^L cancella e ridisegna lo schermo\sa0\par\fi0\sb0 l (dis)attiva la visualizzazione dei gruppi che non hanno articoli non letti\sa0\par\fi0\sb0 L (dis)attiva l'elenco dei gruppi non sottoscritti\sa0\par\fi0\sb0 1 L nasconde i gruppi non sottoscritti\sa0\par\fi0\sb0 / ricerca una parola nei gruppi ('l' per visualizzare quelli non sottoscritti)\sa0\par\fi0\sb0 q esci dal newsreader\sa0\par\fi0\sb0 G preleva i nuovi articoli\sa0\par\fi0\sb0 K (dis)attiva la modalit\'e0 punteggi (score)\sa0\par\fi0\sb0 X forza il salvataggio del file newsrc\sa0\par\fi0\sb0 a (dis)attiva la visualizzazione della descrizione del newsgroup\sa0\par\fi0\sb0 . ripeti l'ultima sequenza di tasti\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Comandi attivi sugli articoli:\sa0\par\fi0\sb0 Movimenti:\sa0\par\fi0\sb0 seleziona l'articolo o scorri di una pagina\sa0\par\fi0\sb0 scorri l'articolo indietro di una pagina\sa0\par\fi0\sb0 b scorri l'articolo indietro di una pagina\sa0\par\fi0\sb0 scorri l'articolo indietro di una riga\sa0\par\fi0\sb0 scorri l'articolo avanti di una riga\sa0\par\fi0\sb0 sposta la visualizzazione articolo a sinistra\sa0\par\fi0\sb0 sposta la visualizzazione articolo a destra\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Articoli:\sa0\par\fi0\sb0 P componi un nuovo articolo (NON un follow-up)\sa0\par\fi0\sb0 f componi un follow-up all'articolo corrente\sa0\par\fi0\sb0 1 f componi un follow-up all'articolo corrente inserendo tutti gli header\sa0\par\fi0\sb0 2 f componi un follow-up all'articolo corrente non quotando l'originale\sa0\par\fi0\sb0 P invia o modifica un articolo posposto\sa0\par\fi0\sb0 F reinvia (forward) l'articolo a qualcuno\sa0\par\fi0\sb0 r rispondi via email all'autore\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Ricerche:\sa0\par\fi0\sb0 / cerca in avanti nell'articolo\sa0\par\fi0\sb0 a cerca in avanti un autore\sa0\par\fi0\sb0 A cerca all'indietro un autore\sa0\par\fi0\sb0 s cerca in avanti un Subject\sa0\par\fi0\sb0 S cerca all'indietro un Subject\sa0\par\fi0\sb0 $ cerca negli articoli (guarda nota N.3)\sa0\par\fi0\sb0 = salta al prossimo articolo con il Subject indicato\sa0\par\fi0\sb0 ! salta al prossimo articolo con il punteggio pi\'f9 alto\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Varie:\sa0\par\fi0\sb0 W (dis)attiva ritorno a capo\sa0\par\fi0\sb0 t (dis)attiva la visualizione completa degli header\sa0\par\fi0\sb0 T (dis)attiva la visualizione delle righe quotate\sa0\par\fi0\sb0 h nascondi la finestra dell'articolo\sa0\par\fi0\sb0 salta il testo quotato\sa0\par\fi0\sb0 ^C cancella l'articolo (solo se si \'e8 l'autore)\sa0\par\fi0\sb0 y stampa l'articolo\sa0\par\fi0\sb0 o accoda l'articolo, il thread, o gli articoli segnati ad un file\sa0\par\fi0\sb0 | manda un articolo a un comando della shell con una pipe\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Comandi attivi nella finestra degli header:\sa0\par\fi0\sb0 Movimenti:\sa0\par\fi0\sb0 < spostati in cima all'elenco degli header\sa0\par\fi0\sb0 > spostati in coda all'elenco degli header\sa0\par\fi0\sb0 p spostati al precedente articolo non letto\sa0\par\fi0\sb0 n spostati al successivo articolo non letto o gruppo se \'e8 raggiunta la fine\sa0\par\fi0\sb0 L torna all'ultimo articolo letto\sa0\par\fi0\sb0 N salta al newsgroup successivo\sa0\par\fi0\sb0 spostati all'articolo precedente\sa0\par\fi0\sb0 spostati all'articolo successivo\sa0\par\fi0\sb0 , torna al precedente articolo segnato\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Gestione:\sa0\par\fi0\sb0 d segna un articolo come letto e spostati al successivo non letto\sa0\par\fi0\sb0 d segna un thread come letto e spostati al successivo non letto\sa0\par\fi0\sb0 u segna un articolo come non letto\sa0\par\fi0\sb0 ; segna l'articolo nella posizione corrente\sa0\par\fi0\sb0 c segna tutti gli articoli come letti (catchup)\sa0\par\fi0\sb0 u segna tutti gli articoli come non letti\sa0\par\fi0\sb0 C segna tutti gli articoli fino alla posizione corrente come letti\sa0\par\fi0\sb0 U segna tutti gli articoli fino alla posizione corrente come non letti\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Varie:\sa0\par\fi0\sb0 t (dis)attiva il raggruppamento del thread\sa0\par\fi0\sb0 a modifica il formato di visualizzazione degli header\sa0\par\fi0\sb0 s seleziona il tipo di ordinamento\sa0\par\fi0\sb0 p cerca l'header genitore, scaricandolo dal server se necessario\sa0\par\fi0\sb0 1p ricostruisci il thread, scaricandolo dal server se necessario\sa0\par\fi0\sb0 ^P cerca tutti gli header figli di quello corrente (chiedendo al server)\sa0\par\fi0\sb0 K crea una nuova voce di punteggio (score) in base all'header corrente\sa0\par\fi0\sb0 1 K modifica il file dei punteggi (score)\sa0\par\fi0\sb0 * segna l'articolo affinch\'e8 non sia affetto dai comandi di catchup\sa0\par\fi0\sb0 1 * elimina i segni '*' da tutti gli articoli marcati\sa0\par\fi0\sb0 x rimuovi tutti gli articoli letti dall'elenco\sa0\par\fi0\sb0 . ripeti l'ultima sequenza di tasti\sa0\par\fi0\sb0 ^W marca con punteggio positivo un thread o articolo\sa0\par\fi0\sb0 ^K marca con punteggio negativo un thread o articolo\sa0\par\fi0\sb0 e c modifica interattiva dei colori di SLRN\sa0\par\fi0\sb0 U cerca l'URL e seguila\sa0\par\fi0\sb0 q esci dalla modalit\'e0 gruppo\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_MACROSLRN}{\*\bkmkend ID_MACROSLRN}\b\fs34\f1 15.4. Varie macro per SLRN\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_COLORSLRN}{\*\bkmkend ID_COLORSLRN}\fs28 15.4.1. macro: "color.sl"\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 % This file implements a function called 'edit_colors' that may be used for\sa0\par\fi0\sb0 % designing a color scheme interactively. You can define a keybinding for it\sa0\par\fi0\sb0 % (e.g. "ESC e c") by putting a line like this in your slrnrc file:\sa0\par\fi0\sb0 %\sa0\par\fi0\sb0 % setkey article edit_colors "\\eec"\sa0\par\fi0\sb0 %\sa0\par\fi0\sb0 % The macro illustrates several things:\sa0\par\fi0\sb0 %\sa0\par\fi0\sb0 % * How to create and use a linked list in the S-Lang language\sa0\par\fi0\sb0 % * Interaction with files\sa0\par\fi0\sb0 % * The slrn select_list_box function\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 variable Color_List_Root = NULL;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 define color_save_colors_to_file ()\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable file;\sa0\par\fi0\sb0 variable fp;\sa0\par\fi0\sb0 variable x;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (Color_List_Root == NULL)\sa0\par\fi0\sb0 return;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #ifdef UNIX\sa0\par\fi0\sb0 file = ".slrnrc";\sa0\par\fi0\sb0 #else\sa0\par\fi0\sb0 file = "slrn.rc";\sa0\par\fi0\sb0 #endif\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (1 != get_yes_no_cancel ("Save colors"))\sa0\par\fi0\sb0 return;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 file = make_home_filename (file);\sa0\par\fi0\sb0 file = read_mini ("Save colors to", "", file);\sa0\par\fi0\sb0 !if (strlen (file))\sa0\par\fi0\sb0 return;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 fp = fopen (file, "a");\sa0\par\fi0\sb0 if (fp == NULL)\sa0\par\fi0\sb0 verror ("Unable to open %s", file);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 x = Color_List_Root;\sa0\par\fi0\sb0 while (x != NULL)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if ((x.fg != NULL) and (x.bg != NULL))\sa0\par\fi0\sb0 () = fputs (sprintf ("color\\t%s\\t%s\\t%s\\n", x.obj, x.fg, x.bg), fp);\sa0\par\fi0\sb0 x = x.next;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 () = fclose (fp);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 define color_store_color (obj, fg, bg)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable x;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 x = Color_List_Root;\sa0\par\fi0\sb0 while (x != NULL)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (x.obj == obj)\sa0\par\fi0\sb0 break;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 x = x.next;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 if (x == NULL) \sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 x = struct \{ obj, fg, bg, next \};\sa0\par\fi0\sb0 x.next = Color_List_Root;\sa0\par\fi0\sb0 Color_List_Root = x;\sa0\par\fi0\sb0 x.obj = obj;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 x.fg = fg;\sa0\par\fi0\sb0 x.bg = bg;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 define color_get_color_for_object (title)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable n;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 n = _stkdepth ();\sa0\par\fi0\sb0 return select_list_box (title,\sa0\par\fi0\sb0 "black",\sa0\par\fi0\sb0 "red",\sa0\par\fi0\sb0 "green",\sa0\par\fi0\sb0 "brown",\sa0\par\fi0\sb0 "blue",\sa0\par\fi0\sb0 "magenta",\sa0\par\fi0\sb0 "cyan",\sa0\par\fi0\sb0 "lightgray",\sa0\par\fi0\sb0 "gray",\sa0\par\fi0\sb0 "brightred",\sa0\par\fi0\sb0 "brightgreen",\sa0\par\fi0\sb0 "yellow",\sa0\par\fi0\sb0 "brightblue",\sa0\par\fi0\sb0 "brightmagenta",\sa0\par\fi0\sb0 "brightcyan",\sa0\par\fi0\sb0 "white",\sa0\par\fi0\sb0 "default",\sa0\par\fi0\sb0 _stkdepth () - n - 1,\sa0\par\fi0\sb0 0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 define edit_colors ()\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable n, fg, bg;\sa0\par\fi0\sb0 variable obj;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 forever \sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 n = _stkdepth ();\sa0\par\fi0\sb0 obj = select_list_box ("Object", % title\sa0\par\fi0\sb0 "EXIT",\sa0\par\fi0\sb0 "article",\sa0\par\fi0\sb0 "author",\sa0\par\fi0\sb0 "boldtext",\sa0\par\fi0\sb0 "box",\sa0\par\fi0\sb0 "cursor",\sa0\par\fi0\sb0 "date",\sa0\par\fi0\sb0 "description",\sa0\par\fi0\sb0 "error",\sa0\par\fi0\sb0 "frame",\sa0\par\fi0\sb0 "from_myself",\sa0\par\fi0\sb0 "group",\sa0\par\fi0\sb0 "grouplens_display",\sa0\par\fi0\sb0 "header_name",\sa0\par\fi0\sb0 "header_number",\sa0\par\fi0\sb0 "headers",\sa0\par\fi0\sb0 "high_score",\sa0\par\fi0\sb0 "italicstext",\sa0\par\fi0\sb0 "menu",\sa0\par\fi0\sb0 "menu_press",\sa0\par\fi0\sb0 "neg_score",\sa0\par\fi0\sb0 "normal",\sa0\par\fi0\sb0 "pgpsignature",\sa0\par\fi0\sb0 "pos_score",\sa0\par\fi0\sb0 "quotes",\sa0\par\fi0\sb0 "quotes1",\sa0\par\fi0\sb0 "quotes2",\sa0\par\fi0\sb0 "quotes3",\sa0\par\fi0\sb0 "quotes4",\sa0\par\fi0\sb0 "quotes5",\sa0\par\fi0\sb0 "quotes6",\sa0\par\fi0\sb0 "quotes7",\sa0\par\fi0\sb0 "response_char",\sa0\par\fi0\sb0 "selection",\sa0\par\fi0\sb0 "signature",\sa0\par\fi0\sb0 "status",\sa0\par\fi0\sb0 "subject",\sa0\par\fi0\sb0 "thread_number",\sa0\par\fi0\sb0 "tilde",\sa0\par\fi0\sb0 "tree",\sa0\par\fi0\sb0 "underlinetext",\sa0\par\fi0\sb0 "unread_subject",\sa0\par\fi0\sb0 "url",\sa0\par\fi0\sb0 "verbatim",\sa0\par\fi0\sb0 _stkdepth () - n - 1,\sa0\par\fi0\sb0 0);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if ((obj == "EXIT") or (obj == ""))\sa0\par\fi0\sb0 break;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 fg = color_get_color_for_object ("Foreground color for " + obj);\sa0\par\fi0\sb0 if (fg == "") break;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 bg = color_get_color_for_object ("Background color for " + obj);\sa0\par\fi0\sb0 if (bg == "") break;\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 set_color (obj, fg, bg);\sa0\par\fi0\sb0 color_store_color (obj, fg, bg);\sa0\par\fi0\sb0 call ("redraw");\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 color_save_colors_to_file ();\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_NEWSEARCHSLRN}{\*\bkmkend ID_NEWSEARCHSLRN}\b\fs28\f1 15.4.2. macro: "new-search.sl"\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 % -*- mode: slang; mode: fold -*-\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % new-search.sl - a replacement for search.sl that comes with slrn\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Copyright (C) 2000, 2001 Thomas Schultz \sa0\par\fi0\sb0 % set_preference() mechanism borrowed from J.B. Nicholson-Owens\sa0\par\fi0\sb0 % \sa0\par\fi0\sb0 % This file may be redistributed and / or modified under the terms of the\sa0\par\fi0\sb0 % GNU General Public License, version 2, as published by the Free Software\sa0\par\fi0\sb0 % Foundation.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #iffalse % Documentation %\{\{\{\sa0\par\fi0\sb0 Description:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 This file is meant as a replacement for the file search.sl that comes with\sa0\par\fi0\sb0 slrn. It also searches through the articles in the current newsgroup, but\sa0\par\fi0\sb0 has nicer features: It leaves threads in their collapsed / uncollapsed\sa0\par\fi0\sb0 status, optionally starts the search at the beginning of the buffer or\sa0\par\fi0\sb0 wraps around the end of the article list.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Installation:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 The interface consists of two functions: search_first() starts a new\sa0\par\fi0\sb0 search, search_next() finds subsequent matches of the same regexp. You can\sa0\par\fi0\sb0 bind them in your slrnrc like this:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 setkey article NewSearch->search_first "$"\sa0\par\fi0\sb0 setkey article NewSearch->search_next "&"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Preferences:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 You can use the set_preference() function to customize the behaviour of\sa0\par\fi0\sb0 the macro. To do this, put calls to this function in a file and load it\sa0\par\fi0\sb0 after this file is loaded. The following examples show the default values:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 NewSearch->set_preference("start_at_bob", 0);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 If set to a non-zero value, start the search at the beginning of the\sa0\par\fi0\sb0 buffer, not at the current article.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 NewSearch->set_preference("wrap_search", 0);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 If set to a non-zero value, the search will wrap around the end of the\sa0\par\fi0\sb0 article list.\sa0\par\fi0\sb0 #endif %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 implements ("NewSearch");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private variable\sa0\par\fi0\sb0 Prev_Search_Str = "",\sa0\par\fi0\sb0 Starting_Point = "",\sa0\par\fi0\sb0 Prefs = Assoc_Type [];\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Set preferences %\{\{\{\sa0\par\fi0\sb0 Prefs["start_at_bob"] = 0;\sa0\par\fi0\sb0 Prefs["wrap_search"] = 0;\sa0\par\fi0\sb0 %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define set_preference (preference, value) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 !if (assoc_key_exists (Prefs, preference))\sa0\par\fi0\sb0 error ("Preference does not exist: " + string (preference));\sa0\par\fi0\sb0 variable desired_type = typeof (Prefs[preference]);\sa0\par\fi0\sb0 if (typeof (value) != desired_type)\sa0\par\fi0\sb0 verror ("Wrong type for %s: This preference wants %s not %s",\sa0\par\fi0\sb0 string (preference),\sa0\par\fi0\sb0 string (desired_type),\sa0\par\fi0\sb0 string (typeof (value)));\sa0\par\fi0\sb0 Prefs[preference] = value;\sa0\par\fi0\sb0 \} %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private define search_here(search_str, wrapped) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (wrapped)\sa0\par\fi0\sb0 if (Starting_Point == extract_article_header("Message-Id"))\sa0\par\fi0\sb0 error ("Not found.");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 variable flags = get_header_flags ();\sa0\par\fi0\sb0 if (re_search_article(search_str))\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 pop ();\sa0\par\fi0\sb0 return 1;\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 set_header_flags(flags);\sa0\par\fi0\sb0 call ("hide_article");\sa0\par\fi0\sb0 return 0;\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private define is_at_end_of_thread ()%\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable starting_point = extract_article_header ("Message-Id");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 EXIT_BLOCK\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 () = locate_header_by_msgid (starting_point, 0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 collapse_thread (); % goes to the first article in the thread\sa0\par\fi0\sb0 uncollapse_thread ();\sa0\par\fi0\sb0 () = header_down (thread_size () - 1);\sa0\par\fi0\sb0 return (extract_article_header ("Message-ID") == starting_point);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private define search_articles(search_str, wrapped) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable\sa0\par\fi0\sb0 was_thread_collapsed = is_thread_collapsed(),\sa0\par\fi0\sb0 was_metamail = get_variable_value("use_metamail");\sa0\par\fi0\sb0 set_integer_variable("use_metamail", 0); % Turn off metamail while searching\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 ERROR_BLOCK\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 () = locate_header_by_msgid(Starting_Point, 0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 EXIT_BLOCK\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 set_integer_variable("use_metamail", was_metamail);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (search_here(search_str, wrapped)) % Is the next match right here?\sa0\par\fi0\sb0 return(0);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 !if (_is_article_visible() & 2)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 call ("article_line_up");\sa0\par\fi0\sb0 if (search_here(search_str, wrapped))\sa0\par\fi0\sb0 return(0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 forever % loop through articles\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 loop (thread_size () - 1)\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 () = header_down(1);\sa0\par\fi0\sb0 if (search_here(search_str, wrapped)) return(0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (is_at_end_of_thread())\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (was_thread_collapsed) collapse_thread();\sa0\par\fi0\sb0 !if (header_down(1)) break;\sa0\par\fi0\sb0 was_thread_collapsed = is_thread_collapsed ();\sa0\par\fi0\sb0 if (search_here(search_str, wrapped)) return(0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 !if (header_down(1)) break;\sa0\par\fi0\sb0 if (search_here(search_str, wrapped)) return(0);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 EXECUTE_ERROR_BLOCK;\sa0\par\fi0\sb0 return(-1);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private define perform_search(search_str) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 Starting_Point = extract_article_header("Message-Id");\sa0\par\fi0\sb0 if (search_articles(search_str, 0) == -1) \sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (Prefs["wrap_search"])\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 call("header_bob");\sa0\par\fi0\sb0 if (search_articles(search_str, 1) == -1)\sa0\par\fi0\sb0 error("Not found.");\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 error("Not found.");\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define search_first() %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (is_group_mode ())\sa0\par\fi0\sb0 error (_function_name () + " doesn\\'t work in group mode!");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 variable search_str = read_mini ("Search for regexp", Prev_Search_Str, "");\sa0\par\fi0\sb0 if (search_str == "")\sa0\par\fi0\sb0 return;\sa0\par\fi0\sb0 Prev_Search_Str = search_str;\sa0\par\fi0\sb0 if (Prefs["start_at_bob"])\sa0\par\fi0\sb0 call("header_bob");\sa0\par\fi0\sb0 perform_search(search_str);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define search_next() %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (is_group_mode ())\sa0\par\fi0\sb0 error (_function_name () + " doesn\\'t work in group mode!");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (Prev_Search_Str == "")\sa0\par\fi0\sb0 search_first();\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 perform_search(Prev_Search_Str);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_ONEKEYSLRN}{\*\bkmkend ID_ONEKEYSLRN}\b\fs28\f1 15.4.3. macro: "onekey-score.sl"\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 % -*- mode: slang; mode: fold -*-\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % onekey-score.sl - create scorefile entries by pressing one single key\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Copyright (C) 1999-2000 Thomas Schultz \sa0\par\fi0\sb0 % set_preference() mechanism borrowed from J.B. Nicholson-Owens\sa0\par\fi0\sb0 % \sa0\par\fi0\sb0 % This file may be redistributed and / or modified under the terms of the\sa0\par\fi0\sb0 % GNU General Public License, version 2, as published by the Free Software\sa0\par\fi0\sb0 % Foundation.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 #iffalse % Documentation %\{\{\{\sa0\par\fi0\sb0 Description:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 This file contains macros that allow you to create scorefile entries based\sa0\par\fi0\sb0 one the current article via a single function call / keystroke. Two\sa0\par\fi0\sb0 interfaces are available - the first is very simple and can be used to\sa0\par\fi0\sb0 watch or ignore subthreads. The second is more complex, but also more\sa0\par\fi0\sb0 versatile: It can put a score on subjects, "From:" lines or references.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 If you regularly use these functions, your scorefile will become quite\sa0\par\fi0\sb0 large, so I recommend the perl-script cleanscore that can automatically\sa0\par\fi0\sb0 remove expired entries. You may also want to use the patch that makes slrn\sa0\par\fi0\sb0 generate scorefile marks, so cleanscore can tell easier which comments\sa0\par\fi0\sb0 belong to which entry.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Installation:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 To use the simple interface, bind the functions watch_subthread() and/or\sa0\par\fi0\sb0 ignore_subthread() to whatever keys you prefer. The corresponding lines in\sa0\par\fi0\sb0 your slrnrc file should look like this:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 setkey article OneKeyScore->ignore_subthread "^K"\sa0\par\fi0\sb0 setkey article OneKeyScore->watch_subthread "^W"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 If you do not only want to watch or ignore a subthread, you can use the\sa0\par\fi0\sb0 more complex interface by calling create_score() directly (the two simpler\sa0\par\fi0\sb0 functions are really wrappers around it). An example would be:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 setkey article "OneKeyScore->create_score('f', -100, 't', 30, 1);" "^X"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Please note that it is important to quote the second argument of setkey in\sa0\par\fi0\sb0 this case. You can pass the following options to create_score():\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 1. score type - can be 's' for "Subject", 'f' for "From" or 'r' for\sa0\par\fi0\sb0 "References"\sa0\par\fi0\sb0 2. score value - the score for the entry\sa0\par\fi0\sb0 3. scope - 't' if the entry should apply to the current ("This") group,\sa0\par\fi0\sb0 'a' if it should have an effect in all groups.\sa0\par\fi0\sb0 4. date of expiry - can either be a date string (in format MM/DD/YYYY or\sa0\par\fi0\sb0 DD-MM-YYYY) or an integer. If it is an integer, it will be\sa0\par\fi0\sb0 interpreted as how long from now (in days) the entry should remain\sa0\par\fi0\sb0 valid; if it is zero (or negative), the entry will never expire.\sa0\par\fi0\sb0 5. apply immediately - if non-zero, the scorefile is reloaded, so the\sa0\par\fi0\sb0 new entry is applied immediately.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Thus, the example above would put a score of -100 on the author of the\sa0\par\fi0\sb0 current article for 30 days from now, but only in the current group; the\sa0\par\fi0\sb0 new entry would be applied immediately.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Preferences:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 You can use the set_preference() function to customize the behaviour of\sa0\par\fi0\sb0 the simple interface. To do this, put calls to this function in a file and\sa0\par\fi0\sb0 load it after this file is loaded. The following examples show the default\sa0\par\fi0\sb0 values:\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_value", -1000);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_value", 250);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 The score ignore_subthread() and watch_subthread() will assign to the\sa0\par\fi0\sb0 current subthread when they are called.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_expiry", 14);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_expiry", 21);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 How long (in days from date of creation) the new scorefile entries will\sa0\par\fi0\sb0 be active.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_immediately", 0);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_immediately", 0);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 If set to a non-zero value, the scorefile will be applied immediately\sa0\par\fi0\sb0 when a new entry was created.\sa0\par\fi0\sb0 #endif %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 implements ("OneKeyScore");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 private variable\sa0\par\fi0\sb0 Prefs = Assoc_Type [];\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Set preferences %\{\{\{\sa0\par\fi0\sb0 Prefs["ignore_value"] = -1000;\sa0\par\fi0\sb0 Prefs["watch_value"] = 250;\sa0\par\fi0\sb0 Prefs["ignore_expiry"] = 14;\sa0\par\fi0\sb0 Prefs["watch_expiry"] = 21;\sa0\par\fi0\sb0 Prefs["ignore_immediately"] = 0;\sa0\par\fi0\sb0 Prefs["watch_immediately"] = 0;\sa0\par\fi0\sb0 %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define set_preference (preference, value) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 !if (assoc_key_exists (Prefs, preference))\sa0\par\fi0\sb0 error ("Preference does not exist: " + string (preference));\sa0\par\fi0\sb0 variable desired_type = typeof (Prefs[preference]);\sa0\par\fi0\sb0 if (typeof (value) != desired_type)\sa0\par\fi0\sb0 verror ("Wrong type for %s: This preference wants %s not %s",\sa0\par\fi0\sb0 string (preference),\sa0\par\fi0\sb0 string (desired_type),\sa0\par\fi0\sb0 string (typeof (value)));\sa0\par\fi0\sb0 Prefs[preference] = value;\sa0\par\fi0\sb0 \} %\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define create_score (type, score, scope, expiry, apply) %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (is_group_mode ())\sa0\par\fi0\sb0 error (_function_name () + " doesn\\'t work in group mode!");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 % Some basic sanity checks...\sa0\par\fi0\sb0 if (typeof(type) == UChar_Type)\sa0\par\fi0\sb0 type = sprintf("%c", type);\sa0\par\fi0\sb0 if (typeof(scope) == UChar_Type)\sa0\par\fi0\sb0 scope = sprintf("%c", scope);\sa0\par\fi0\sb0 type = typecast(type, String_Type);\sa0\par\fi0\sb0 !if (is_substr("sfr",strlow(type)))\sa0\par\fi0\sb0 error ("Unknown score type: " + type);\sa0\par\fi0\sb0 !if (is_substr("ta",scope))\sa0\par\fi0\sb0 error ("Unknown score scope: " + scope);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (apply)\sa0\par\fi0\sb0 apply = "y";\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 apply = "n";\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 if (typeof(expiry) == Integer_Type) \sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 if (expiry > 0) \sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 variable expiry_date = localtime(_time() + expiry * 24 * 3600);\sa0\par\fi0\sb0 expiry = string(expiry_date.tm_mon+1)+"/"+\sa0\par\fi0\sb0 string(expiry_date.tm_mday)+"/"+\sa0\par\fi0\sb0 string(expiry_date.tm_year+1900);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 expiry = "";\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 set_input_string (string(score) + "\\n" + expiry);\sa0\par\fi0\sb0 set_input_chars (type + scope + apply);\sa0\par\fi0\sb0 call ("create_score");\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 message_now("");\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define ignore_subthread () %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 create_score("r", Prefs["ignore_value"], "t", Prefs["ignore_expiry"],\sa0\par\fi0\sb0 Prefs["ignore_immediately"]);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 static define watch_subthread () %\{\{\{\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 create_score("r", Prefs["watch_value"], "t", Prefs["watch_expiry"],\sa0\par\fi0\sb0 Prefs["watch_immediately"]);\sa0\par\fi0\sb0 \}%\}\}\}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_PREFERENCESSLRN}{\*\bkmkend ID_PREFERENCESSLRN}\b\fs28\f1 15.4.4. macro: "preferences.sl"\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 NewSearch->set_preference("start_at_bob", 1);\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_value", -100);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_value", 100);\sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_expiry", 30);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_expiry", 45);\sa0\par\fi0\sb0 OneKeyScore->set_preference("ignore_immediately", 1);\sa0\par\fi0\sb0 OneKeyScore->set_preference("watch_immediately", 1);\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SCREENRESIZESLRN}{\*\bkmkend ID_SCREENRESIZESLRN}\b\fs28\f1 15.4.5. macro: "screen-resize.sl"\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 % Redefines header_window size.\sa0\par\fi0\sb0 % Change int number for better suiting your needs.\sa0\par\fi0\sb0 define resize_screen_hook ()\sa0\par\fi0\sb0 \{\sa0\par\fi0\sb0 set_article_window_size (SCREEN_HEIGHT - 20);\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Siete pronti per il mondo di \i Usenet\i0 , ma prima leggetevi qualche documento sulla Netiquette! \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 16. Masterizzazione}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 16. Masterizzazione}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_MASTERIZZAZIONE}{\*\bkmkend ID_MASTERIZZAZIONE}\b\fs41\f1 Capitolo 16. Masterizzazione\keepn\hyphpar0\par\pard\sb207\li400\sl234 \fs18 Nota: \b0 Sezione a cura di Roberto Vallone (mailto:rjval@libero.it)\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INTRODUZIONEMASTERIZZAZIONE}{\*\bkmkend ID_INTRODUZIONEMASTERIZZAZIONE}\b\fs34 16.1. Introduzione\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 In Linux il processo di masterizzazione di CD-R/RW avviene attraverso due fasi ben distinte che spesso su altri sistemi operativi avvengono con l'uso di un unico software. Le due fasi sono: la creazione dell'immagine \b ISO9660\b0 (il filesystem con il quale i normali cd dati sono organizzati), pi\'f9 le eventuali estensioni, ed il processo di scrittura vera e propria sul cd. Per la realizzazione delle immagini ci si avvale quasi universalmente di \b mkisofs\b0 , mentre per il \i burning\i0 i programmi sono \b cdrecord\b0 e \b cdrdao\b0 . Sono tutti e tre programmi sotto licenza GPL che lavorano a linea di comando e contemplano una quantit\'e0 di opzioni che ne fa degli strumenti di una difficolt\'e0 (solo iniziale per\'f2) ed una versatilit\'e0 veramente notevoli. Ci\'f2 non vuol dire che non si possano usare interfacce grafiche varie, ma queste sono _sempre_ front-ends di questi tre programmi (a volte anche di altri meno usati). In questo capitolo tratter\'f2 dell'uso di \b cdrecord\b0 +\b mkisofs\b0 . \b cdrdao\b0 \'e8, a detta di molti, un programma altrettanto valido (se non di pi\'f9 per alcuni aspetti, tipo la copia al volo di cd-audio), ma non lo conosco (verr\'e0 aggiunto in una prossima revisione del \i Quick&Easy Configuration HOWTO\i0 ). Spero di colmare questa lacuna il pi\'f9 presto possibile, e, se nel frattempo, qualcuno vuole contribuire all'howto aggiungendo una sezione su \b cdrdao\b0 eviter\'f2 in tutti i modi di offendermi... ;-) \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 Tutti i comandi che citer\'f2 in cui \'e8 incluso \b cdrecord\b0 dovranno essere dati come utente \b root\b0 , dato che \b cdrecord\b0 manda comandi privilegiati attraverso l'interfaccia SCSI. Impostare il \i setuid\i0 per \b cdrecord\b0 in modo da poter masterizzare come utente qualunque non \'e8 una buona idea per la sicurezza del sistema. Personalmente preferisco "essere root", poi ognuno pu\'f2 fare come vuole, quindi quelli che seguono sono i comandi per "setuidare" cdrecord. \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl234 \lang1024\f2 # chown root.root /usr/bin/cdrecord\sa0\par\fi0\sb0 # chmod 4111 /usr/bin/cdrecord\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Il processo di cd-burning in Linux consta di solito di tre fasi: \par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab \lang1024 1.\tab facciamo riconoscere al nostro pinguino il masterizzatore \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 2.\tab spappoliamo alcuni cd tanto per gradire (ottimi sottobicchieri, ma devono essere di un numero multiplo di 6) \hyphpar0\par\pard\sb100\li360\sl260\fi-360 \tqr\tx310\tx360\tab 3.\tab una volta capito bene il funzionamento delle cose ci dimenticheremo di cosa sia un buffer underrun (a meno di non cercarcelo proprio) \hyphpar0\par\pard\sb100\sl260 \lang1040 Alcune precisazioni a quanto detto: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 con un po' di attenzione la fase 3 pu\'f2 essere saltata \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 la necessit\'e0 di creare precedentemente un'immagine dei dati presume che si abbia sull'hard-disk uno spazio libero equivalente all'immagine che deve essere creata (650-700 Mbyte) \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 con una macchina abbastanza potente (diciamo un PII 350 o superiore, ed equivalenti) possiamo anche "saltare" la fase di creazione dell'immagine su hard-disk e passare i dati di \b mkisofs\b0 direttamente a \b cdrecord\b0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 coi cd bruciati nella fase 2, oltre a dei sottobicchieri, si possono ricavare dei simpatici ed originali orologi a muro ;-) \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_KERNELMASTER}{\*\bkmkend ID_KERNELMASTER}\b\fs34\f1 16.2. Compilazione del kernel per il riconoscimento del masterizzatore\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Questa sezione non vuole essere esaustiva. Per maggiori informazioni rimando all'ottimo \i CD-Writing HOWTO\i0 di Winfried Tr\'fcmper. Sotto Linux sono supportati masterizzatori SCSI, EIDE e per porta parallela (PP nel seguito). Non sono ancora supportati gli USB, per questi si comincer\'e0 a vedere qualcosa *forse* con i kernel 2.4.*. La prossima tabella la copio sfacciatamente dall'howto sopra-citato: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 con \b Y\b0 si intende che l'abilitazione deve far parte integrante del kernel \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 con \b M\b0 si intende che l'abilitazione deve avvenire come modulo \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 con \b Y/M\b0 si intende che si pu\'f2 scegliere indifferentemente un modo o l'altro \hyphpar0\par\pard\sb200\sl234 \fs18\f2 Sez. Descrizione Modulo SCSI IDE PP\sa0\par\fi0\sb0 ------------------------------------------------------------\sa0\par\fi0\sb0 BLOCK Enhanced IDE/MFM/RLL... Y\sa0\par\fi0\sb0 BLOCK IDE/ATAPI CDROM ide-cd M *** NOTA\sa0\par\fi0\sb0 BLOCK SCSI hostadaptor emulation ide-scsi M *** NOTA\sa0\par\fi0\sb0 BLOCK Loopback device loop M M M\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 PARIDE Parallel port IDE device paride Y/M\sa0\par\fi0\sb0 PARIDE Parallel port ATAPI CD-ROMs M\sa0\par\fi0\sb0 PARIDE Parallel port generic ATAPI M\sa0\par\fi0\sb0 PARIDE (select a low-level driver) Y\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 SCSI SCSI support scsi_mod Y/M Y/M *** NOTA\sa0\par\fi0\sb0 SCSI SCSI CD-ROM support sr_mod Y/M Y/M *** NOTA\sa0\par\fi0\sb0 SCSI Enable vendor-specific Y Y\sa0\par\fi0\sb0 SCSI SCSI generic support sg Y/M Y/M *** NOTA\sa0\par\fi0\sb0 SCSI (select a low-level driver) Y\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 FS ISO 9660 CDROM filesystem iso9660 Y/M Y/M Y/M\sa0\par\fi0\sb0 FS Microsoft Joliet cdrom... joliet Y Y Y\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se tutto va bene, al successivo riavvio, con un \b dmesg | less\b0 potrete vedere che il kernel ha riconosciuto la periferica... e comincia l'avventura! \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Per chi usa un masterizzatore EIDE:\hyphpar0\par\pard\sb100\li760\sl234\fi-360 \tqr\tx715\tx760\tab 1.\tab se si opta per l'uso dei moduli \'e8 importante aggiungere i seguenti parametri nel vostro \fs16\f2 /etc/lilo.conf\fs18\f1 \hyphpar0\par\pard\sb100\li760\sl211 \fs16\f2 ...\sa0\par\fi0\sb0 image=/boot/vmlinuz-2.2.18\sa0\par\fi0\sb0 label=2.2.18\sa0\par\fi0\sb0 read-only\sa0\par\fi0\sb0 root=/dev/hda3\sa0\par\fi0\sb0 append="hdc=ide-scsi hdd=ide-scsi" <--------questo\sa0\par\fi0\sb0 ...\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li760\sl234 \fs18\lang1040\f1 in modo da indicare a linux che quelle periferiche devono essere "viste" attraverso il modulo ide-scsi. Naturalmente, adattate il codice al vostro caso. Ricordatevi poi di reinstallare lilo, con: \par\pard\sb100\li760\sl211 \fs16\lang1024\f2 # /sbin/lilo\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li760\sl234\fi-360 \tqr\tx715\tx760\tab \fs18\f1 2.\tab se qualcosa non funziona usando i moduli provate ad accorpare nel kernel le voci una per una, a cominciare dalla voce IDE/SCSI, altrimenti detta "Emulazione SCSI". L'emulazione SCSI con i kernel della serie 2.2.* e superiori impone necessariamente che anche gli eventuali lettori cd rom eide presenti sulla macchina siano visti come periferiche SCSI, \'e8 quindi inutile (e talvolta produce errori) abilitare nel kernel il modulo ide-cd. \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Generalmente le periferiche SCSI, oltre alla maggiore affidabilit\'e0 caratteristica di questa tecnologia, danno minori problemi di riconoscimento/compatibilit\'e0 col pinguino, se quindi potete permettervelo, un masterizzatore SCSI \'e8 la scelta migliore. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Ultima precisazione: qualche volta (\'e8 successo a me) un masterizzatore EIDE non ne vuole sapere di andare se non \'e8 il master del suo canale, ergo, se non funziona come slave provate ad impostarlo come master. L'impostazione migliore pare essere quella di lasciare i drive sorgenti (hard-disk che ospiter\'e0 le immagini ISO9660 e lettore cd-rom) come unit\'e0 rispettivamente master e slave sul canale primario EIDE, e il masterizzatore come unit\'e0 master sul canale secondario EIDE, cui nel caso affiancare un eventuale secondo hard-disk. Questo garantisce che le unit\'e0 funzionino al massimo delle loro possibilit\'e0. Utile anche attivare sugli hard-disk e cdrom/cdr/cdrw EIDE (NON gli SCSI!), le funzionalit\'e0 avanzate permesse, tipo accesso al disco a 32 bit, DMA e altro, tramite il comando \b hdparm\b0 .\hyphpar0\par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 L'uso di \b hdparm\b0 pu\'f2 essere PERICOLOSO! Fate SEMPRE le prove prima e dopo ogni comando \b hdparm\b0 che date, con: \b hdparm -tT /dev/hdX\b0 , sostituendo a X le varie unit\'e0. Questo vi fornir\'e0 dei test per valutare l'aumento o meno delle prestazioni con le varie opzioni impostate. In genere le opzioni da impostare sono: \b -d1\b0 (usa DMA) e \b -c3\b0 (usa accesso al disco a 32bit, con sync sequence). Altre possono essere \b -u1\b0 e \b -m...\b0 (leggete la man-page di \b hdparm\b0 , per calcolare il valore di m). Tenete inoltre presente che se il supporto ide-scsi \'e8 compilato come modulo, quando questo viene scaricato dalla memoria, si perdono le impostazioni di hdparm. Per aggirare l'ostacolo, potete aggiungere al vostro file \fs16\f2 /etc/modules.conf\fs18\f1 una riga tipo: \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl211 \fs16\lang1024\f2 post-install ide-scsi /sbin/hdparm ...\sa0\par\fi0\sb0 \keepn\hyphpar0\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-200\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\lang1040\f0 Per vedere come vengono riconosciute le nostre periferiche dal kernel si pu\'f2 dare, come utente root, il comando: \b cdrecord -scanbus\b0 . Io ho un masterizzatore come master ed un lettore come slave nel secondo canale EIDE, ed ecco il mio output: \par\pard\sb200\sl234 \fs18\lang1024\f2 [tty5][root@gondor /home/rjval]# cdrecord -scanbus\sa0\par\fi0\sb0 Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000 J\'f6rg Schilling\sa0\par\fi0\sb0 Linux sg driver version: 2.1.39\sa0\par\fi0\sb0 Using libscg version 'schily-0.1'\sa0\par\fi0\sb0 scsibus0:\sa0\par\fi0\sb0 0,0,0 0) 'SAMSUNG ' 'CD-R/RW SW-208B ' 'BS01' Removable CD-ROM\sa0\par\fi0\sb0 0,1,0 1) 'GoldStar' 'CD-ROM CRD-8322B' '1.02' Removable CD-ROM\sa0\par\fi0\sb0 0,2,0 2) *\sa0\par\fi0\sb0 0,3,0 3) *\sa0\par\fi0\sb0 0,4,0 4) *\sa0\par\fi0\sb0 0,5,0 5) *\sa0\par\fi0\sb0 0,6,0 6) *\sa0\par\fi0\sb0 0,7,0 7) *\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Come si pu\'f2 vedere il masterizzatore ha le "coordinate" (non mi dilungo sulla loro descrizione) \b 0,0,0\b0 , mentre il lettore ha \b 0,1,0\b0 . Dal momento in cui le periferiche sono riconosciute dal kernel come SCSI, il loro posizionamente in \b /dev\b0 sar\'e0 (nel mio caso): \par\pard\sb200\sl234 \fs18\lang1024\f2 /dev/scd0 per il master\sa0\par\fi0\sb0 /dev/scd1 per lo slave\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 se, quindi, nella nostra \b /dev\b0 ci sono di link di nome \b cdrom\b0 , \b cdrom1\b0 che puntano rispettivamente a \b /dev/hdc\b0 (secondary master), \b /dev/hdd\b0 (secondary slave) questi vanno rimossi e rimpiazzati da link che puntano a queste altre periferiche (aggiustate il tutto alla vostra situazione!), come utente root: \par\pard\sb200\sl234 \fs18\lang1024\f2 # cd /dev\sa0\par\fi0\sb0 # rm cdrom\sa0\par\fi0\sb0 # rm cdrom1\sa0\par\fi0\sb0 # ln -s scd0 cdrom\sa0\par\fi0\sb0 # ln -s scd1 cdrom1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se invece la vostra distro non usa questi links ricordati di cambiare il vostro \fs18\f2 /etc/fstab\fs20\f0 , altrimenti non riuscirete pi\'f9 a montare i cdrom. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_MASTERIZZARECDR}{\*\bkmkend ID_MASTERIZZARECDR}\b\fs34\lang1024\f1 16.3. Procedura di masterizzazione CDR\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_IMMAGINEMKISOFS}{\*\bkmkend ID_IMMAGINEMKISOFS}\fs28 16.3.1. Creazione dell'immagine iso con mkisofs\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Il comando generale da usare \'e8: \par\pard\sb200\sl234 \fs18\lang1024\f2 mkisofs [opzioni] -o nome_file_immagine.iso /directory/da/esportare\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Opzioni possibili: \par\pard\sb200\sl234 \fs18\lang1024\f2 -A "Etichetta cd"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -b boot.img \sa0\par\fi0\sb0 --- Per rendere il cd bootabile (El Torito extensions). Il\sa0\par\fi0\sb0 file file boot.img viene creato tramite il comando:\sa0\par\fi0\sb0 dd if=/dev/fd0 of=boot.img bs=18k con un floppy di boot\sa0\par\fi0\sb0 nel device /dev/fd0 (un floppy di boot di qualsiasi OS...\sa0\par\fi0\sb0 perfino winbug!)\sa0\par\fi0\sb0 va aggiunta necessariamente anche l'opzione successiva.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -c boot.catalog \sa0\par\fi0\sb0 --- Per questo non c'\'e8 problema, il boot.catalog lo crea\sa0\par\fi0\sb0 automaticamente mkisofs\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -C #inizio ultima sessione,#inizio prossima sessione\sa0\par\fi0\sb0 --- Necessario - insieme all'opzione -M per le sessioni\sa0\par\fi0\sb0 successive alla prima (vedi la sezione "multisessione")\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -D \sa0\par\fi0\sb0 --- Viola le regole standard dell'ISO9660 permettendo di\sa0\par\fi0\sb0 abbattere il limite degli 8 livelli di subdir massimi.\sa0\par\fi0\sb0 Normalmente il cd lavora ugualmente bene su parecchi\sa0\par\fi0\sb0 sistemi.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -l\sa0\par\fi0\sb0 --- Abbatte il limite del formato 8.3 MS-DOS permettendo\sa0\par\fi0\sb0 nomi di files di 30 caratteri. I sistemi DOS potrebbero\sa0\par\fi0\sb0 non leggere pi\'f9 il cd.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -J\sa0\par\fi0\sb0 --- Estensioni MS Joliet per rendere il cd compatibile col\sa0\par\fi0\sb0 set di caratteri dei vari Winbug.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -L\sa0\par\fi0\sb0 --- Copia nel file iso anche i files che iniziano con "."\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -M path\sa0\par\fi0\sb0 oppure\sa0\par\fi0\sb0 -M device\sa0\par\fi0\sb0 --- Specifica il percorso alla immagine ISO9660 precedente\sa0\par\fi0\sb0 esistente che deve essere "fusa" (va bene anche\sa0\par\fi0\sb0 indicare il nome della periferica). Necessario insieme \sa0\par\fi0\sb0 all'opzione -C per le sessioni successive alla prima \sa0\par\fi0\sb0 (vedi sotto).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -P "Editore"\sa0\par\fi0\sb0 e\sa0\par\fi0\sb0 -p "Preparatore"\sa0\par\fi0\sb0 --- Sono stringhe: se proprio volete metterle scriveteci \sa0\par\fi0\sb0 quello che pi\'f9 vi aggrada\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -o /percorso/nomefile.iso\sa0\par\fi0\sb0 --- Indica dove piazzare il file iso da creare e come\sa0\par\fi0\sb0 chiamarlo\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -R\sa0\par\fi0\sb0 --- Attiva le esensioni RockRidge (propriet\'e0 e\sa0\par\fi0\sb0 permessi)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -r\sa0\par\fi0\sb0 --- Come il precedente ma propriet\'e0 e permessi vengono\sa0\par\fi0\sb0 settati con i valori usabili da tutti (555).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -T\sa0\par\fi0\sb0 --- Genera un file TRANS.TBL per i sistemi che non\sa0\par\fi0\sb0 supportano le estensioni RockRidge.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -v\sa0\par\fi0\sb0 --- Aumenta la prolissit\'e0 del comando.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -V "Id del volume"\sa0\par\fi0\sb0 --- Come per -P e -p\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -x path\sa0\par\fi0\sb0 --- Esclude ci\'f2 che viene indicato nel path (anche\sa0\par\fi0\sb0 pi\'f9 di uno, ognuno anticipato da un "-x").\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ad esempio: \par\pard\sb200\sl234 \fs18\lang1024\f2 mkisofs -v -l -T -r -D -J -o /ISO-IMG/image_1.iso /dir/da/esportare\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \'c8 utile testare l'immagine iso appena creata montando - tramite il \i loopback device\i0 - come se fosse un vero e proprio cdrom, col comando seguente: \par\pard\sb200\sl234 \fs18\lang1024\f2 mount -t iso9660 -o ro,loop=/dev/loop0 /ISO-IMG/file_immagine.iso /mnt/cdrom\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Ricordati poi di smontarla con: \b umount /mnt/cdrom\b0 \par\pard\sb216\s3\sl374 {\*\bkmkstart ID_SCRIVERECDRECORD}{\*\bkmkend ID_SCRIVERECDRECORD}\b\fs28\lang1024\f1 16.3.2. Scrivere il cd con cdrecord\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Sintassi del comando: \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord [opzioni generali] dev=device [opzioni traccia] traccia1 traccia2...\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Opzioni generali possibili: \par\pard\sb200\sl234 \fs18\lang1024\f2 -v\sa0\par\fi0\sb0 --- Aumenta la prolissit\'e0 del comando.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -force\sa0\par\fi0\sb0 --- Forza la continuazione del processo anche se ci sono errori\sa0\par\fi0\sb0 non fatali (utile col blanking su CD-RW "capricciosi")\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -dummy\sa0\par\fi0\sb0 --- Fa tutto quello che deve fare ma _col laser spento_!!!\sa0\par\fi0\sb0 Chiaramente utile per testare le nostre configurazioni\sa0\par\fi0\sb0 senza destinare un cd all'uso come orologio... ;-)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -dao\sa0\par\fi0\sb0 --- Disk at Once mode. Evita scricchiolii e schifezze varie\sa0\par\fi0\sb0 dopo le tracce audio (se il vostro masterizzatore lo\sa0\par\fi0\sb0 supporta).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -multi\sa0\par\fi0\sb0 --- Per la scrittura multi sessione. Va messo per la prima\sa0\par\fi0\sb0 sessione, per le successive e _NON_ per l'ultima (vedi\sa0\par\fi0\sb0 pi\'f9 in basso).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -msinfo\sa0\par\fi0\sb0 --- Importante anch'esso per la multisessione (vedi sempre\sa0\par\fi0\sb0 dopo).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -fix\sa0\par\fi0\sb0 --- Il disco viene solamente fissato.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -nofix\sa0\par\fi0\sb0 --- Il disco non viene fissato.\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -eject\sa0\par\fi0\sb0 --- Espelle il disco dopo la sessione (alcuni tipi di\sa0\par\fi0\sb0 periferiche ne hanno bisogno).\sa0\par\fi0\sb0 blank=type\sa0\par\fi0\sb0 --- Per i CD-RW (vedi dopo).\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Opzioni traccia possibili: \par\pard\sb200\sl234 \fs18\lang1024\f2 -audio /path/nome_traccia.wav/au\sa0\par\fi0\sb0 --- Specifica la natura audio della traccia (va messo per\sa0\par\fi0\sb0 ogni traccia audio che si vuole incidere).\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 -data /path/file_immagine.iso\sa0\par\fi0\sb0 --- Specifica la natura dati della traccia\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Comando tipico in dummy mode per tracce dati: \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord -v -dummy -eject speed=8 dev=0,0,0 -data /ISO-IMG/file_iso.iso\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_TRACCEAUDIO}{\*\bkmkend ID_TRACCEAUDIO}\b\fs28\f1 16.3.3. Scrivere sul cd tracce audio\keepn\hyphpar0\par\pard\sb200\sl234 \b0\fs18\f2 cdrecord -v speed=n dev=0,0,0 -audio /path/traccia_1.wav -audio \\\sa0\par\fi0\sb0 /path/traccia_2.au -audio /path/traccia_3.wav ...\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CDMIXEDMODE}{\*\bkmkend ID_CDMIXEDMODE}\b\fs28\f1 16.3.4. Scrivere sul cd in "mixed mode" (audio e dati)\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 I comuni lettori hi fi sono capaci di leggere solo la prima sessione, e, se c'\'e8 una traccia dati cercano spesso di "leggerla" rischiando di spaccare i woofer: la soluzione \'e8 quella di scrivere una prima sessione solo audio e la eventuale seconda con dati. \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord -v speed=8 dev=0,0,0 -audio /path/traccia_1.wav -data file_iso.iso\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_CDMULTISESSIONE}{\*\bkmkend ID_CDMULTISESSIONE}\b\fs28\f1 16.3.5. Multisessione\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Bisogna passare a mkisofs le "coordinate" della sessione precedente (se ce n'\'e8 una). Queste le pu\'f2 rilevare \b cdrecord\b0 con l'opzione \b -msinfo\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord -msinfo dev=0,0,0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Sono due numeri separati da una virgola (n,N) e vanno passati cos\'ec come sono a \b mkisofs\b0 tramite l'opzione \b -C\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 mkisofs -v -l -T -r -D -J -o /ISO-IMG/nome_immagine.iso -C n,N \\\sa0\par\fi0\sb0 -M /dev/scd0 /dir/da/esportare\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 L'opzione \b -M\b0 specifica la periferica da interrogare ed \'e8 altrettanto necessaria. Invece che il nome della periferica, \b -M\b0 potrebbe essere anche seguito dal nome dell'immagine precedente. A \b cdrecord\b0 bisogna passare l'opzione \b -multi\b0 a tutte le sessioni tranne che all'ultima. Il comando tipico (in dummy mode) potrebbe essere: \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord -v -dummy -multi -eject speed=8 dev=0,0,0 -data /ISO-IMG/file_iso.iso\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_MASTERIZZARECDRW}{\*\bkmkend ID_MASTERIZZARECDRW}\b\fs34\f1 16.4. Procedura di masterizzazione CDRW\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Per poter cancellare il contenuto di un disco cdrw su cui sono gi\'e0 state scritte sessioni precedenti possiamo utilizzare l'opzione \b blank=type\b0 di \b cdrecord\b0 : dove \b type\b0 \'e8 in genere "\b all\b0 " per cancellare l'intero disco (pi\'f9 lento ma pi\'f9 approfondito) oppure \b fast\b0 con cui si fa una cancellazione minimale ma veloce. Spesso \'e8 utile, per alcuni cdrw difettosi usare, insieme all'opzione \b blank=all\b0 anche l'opzione \b -force\b0 per forzare \b cdrecord\b0 a continuare il blanking anche in presenza di errore non fatali. Altri blanking type sono documentati nella pagina man di \b cdrecord\b0 . Ricordo solo \b blank=track\b0 per cancellare una singola traccia. Il tipico comando per il blanking \'e8: \par\pard\sb200\sl234 \fs18\lang1024\f2 cdrecord -v blank=all -force -eject speed=4 dev=0,0,0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li400\sl234 \b\f1 Nota: \b0 Note sui cd riscrivibili: \hyphpar0\par\pard\sb100\li600\sl234\fi-200 \tx600 \fs16 \'95\tab \fs18 Spesso i normali lettori cdrom hanno difficolt\'e0 a leggere questo tipo di cd. Ci\'f2 \'e8 dovuto al diverso coefficiente di riflessione del laser che caratterizza questo tipo di supporti. Lo stesso problema \'e8 frequentissimo sui lettori hi-fi o car audio. Per poter ascoltare la vostra musica preferita da un cd audio da voi masterizzato come copia di sicurezza di quello originale (a buon intenditor...), conviene che usiate normali cdr. \hyphpar0\par\pard\sb100\li600\sl234\fi-200 \tx600 \fs16 \'95\tab \fs18 Dopo molte cancellazioni/riscritture i vostri cdrw diventeranno inutilizzabili. E' il normale ciclo di vita di questi supporti che non sono eterni. \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_ONTHEFLY}{\*\bkmkend ID_ONTHEFLY}\b\fs34 16.5. Procedura di masterizzazione On The Fly\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Con una macchina abbastanza potente (almeno un PII 350 o equivalente; ma c'\'e8 chi ci riesce anche con processori meno performanti) \'e8 possibile saltare la fase di creazione dell'immagine iso, passando l'output di \b mkisofs\b0 direttamente in pasto a \b cdrecord\b0 . \par\pard\sb200\sl234 \fs18\lang1024\f2 IMG_SIZE=`mkisofs -R -q -print-size dir_da_esportare/ \\\sa0\par\fi0\sb0 2>&1 | sed -e "s/.* = //"`\sa0\par\fi0\sb0 echo $IMG_SIZE\sa0\par\fi0\sb0 [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r dir_da_esportare/ \\\sa0\par\fi0\sb0 | cdrecord speed=4 dev=0,0,0 tsize=$\{IMG_SIZE\}s -data -\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Il trattino finale non \'e8 un errore, indica di prendere i dati dallo standard input. L'impostazione della variabile \fs18\f2 IMG_SIZE\fs20\f0 serve per verificare la dimensione dell'immagine che \b mkisofs\b0 andr\'e0 a creare. Questo parametro verr\'e0 passato a \b cdrecord\b0 con l'opzione "\b tsize\b0 ". Perch\'e9 questo casino? Perch\'e9 alcuni masterizzatori non ne vogliono sapere di cominciare questa operazione senza prima conoscere la dimensione del file immagine. Se il vostro non \'e8 uno di questi potete anche saltare ed usare una banale pipe \par\pard\sb200\sl234 \fs18\lang1024\f2 mkisofs -v -l -T -r -D -J /dir/da/esportare | \\\sa0\par\fi0\sb0 cdrecord -v -eject speed=8 dev=0,0,0 -data -\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Se volete semplicemente fare una copia di un cd distinguiamo 2 casi: \par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\lang1024 \'95\tab \fs20 Avete un lettore cdrom (\b /dev/scd1\b0 ) ed un masterizzatore (\b /dev/scd0\b0 ): \hyphpar0\par\pard\sb100\li200\sl234 \fs18\f2 cdrecord -v dev=0,0,0 speed=8 -isosize /dev/scd1\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16\f0 \'95\tab \fs20 Non avete anche un lettore, ma solo un masterizzatore, per cui sarete costretti a crearvi un'immagine sull'hard-disk del cd che volete copiare: \hyphpar0\par\pard\sb100\li200\sl234 \fs18\f2 dd if=/dev/scd1 of=immagine.iso\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\li600\sl234 \b\f1 Nota: \b0 Al posto di dd potete usare anche \b dd_rescue\b0 , un tool pi\'f9 avanzato, che in caso di errori nel cd originale (reali o da psx ;-) ) continua comunque a generare il file immagine.\hyphpar0\par\pard\sb200\li200\sl260 \fs20\lang1040\f0 Ovviamente immagine.iso \'e8 il file che passerete come argomento a cdrecord per la successiva masterizzazione: \par\pard\sb100\li200\sl234 \fs18\lang1024\f2 cdrecord -v -eject speed=8 dev=0,0,0 -data immagine.iso\sa0\par\fi0\sb0 \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 17. Servizi}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 17. Servizi}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_SERVIZI}{\*\bkmkend ID_SERVIZI}\b\fs41\f1 Capitolo 17. Servizi\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 In questa sezione vediamo un elenco di buona parte dei possibili \i demoni\i0 di sistema di un sistema Linux. In Linux, e negli Unix in generale, i \i demoni\i0 sono dei processi che vengono avviati di solito durante l'avvio del sistema e continuano a girare in background senza richiedere intervento da parte dell'utente, in attesa che qualche altro programma o processo ne richieda i servizi. L'elenco seguente pu\'f2 esservi utile per vedere quanti di essi vi sono realmente necessari, e se non sia il caso di disabilitare o disinstallare del tutto il pacchetto relativo al servizio. \par\pard\sb200\sl260 \lang1024 \b acpid\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : demone per la gestione dell'alimentazione elettrica \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /usr/share/doc/acpid-[versione] \par\pard\sb200\sl260 \lang1024 \b anacron\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : una versione particolare del demone \i cron\i0 . \i cron\i0 avvia delle elaborazioni a orari programmati, ma li salta se il sistema non \'e8 in funzione all'orario prestabilito. \i anacron\i0 invece controlla in fase di avvio tutte le elaborazioni che sarebbero dovute essere eseguite da \i cron\i0 e le esegue. Pu\'f2 essere utile in caso di macchine che non rimangono accese perennemente. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man anacron \par\pard\sb200\sl260 \lang1024 \b apmd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : controlla l'\i Advanced Power Management\i0 del BIOS. Utile solo se avete un portatile o un computer che supporti lo standrad ATX di alimentazione elettrica, permettendo di spegnerlo via software. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man apmd \par\pard\sb200\sl260 \lang1024 \b arpwatch\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : tiene traccia delle coppie di indirizzi \i ethernet/IP\i0 . Di solito non \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man arpsnmp \par\pard\sb200\sl260 \lang1024 \b atd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : il demone \i at\i0 , gestisce alcune elaborazioni a orari programmati. Correlato a \i cron\i0 . \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man atd, man at \par\pard\sb200\sl260 \lang1024 \b autofs\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : gestisce il demone \i automount\i0 (che non ha niente a che fare con \i supermount\i0 !). Di solito \'e8 disabilitato. Utile se si vogliono montare in automatico dei volumi condivisi in rete. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man autofs, man automount \par\pard\sb200\sl260 \lang1024 \b bootparamd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : serve a fornire le informazioni di boot a client senza disco. Di solito disabilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man bootparamd \par\pard\sb200\sl260 \lang1024 \b crond\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : il demone \i cron\i0 gestisce compiti ripetitivi. Correlato a \i atd\i0 \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man crond, man cron \par\pard\sb200\sl260 \lang1024 \b cups\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : \'e8 un moderno sistema di stampa, essenziale se lo usate al posto di \i lpd\i0 \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man cups \par\pard\sb200\sl260 \lang1024 \b drakfont\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : permette la gestione automatica dei font True-Type da parte del sistema, nei sistemi \i Linux-Mandrake\i0 . \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man drakfont \par\pard\sb200\sl260 \lang1024 \b gpm\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : il demone \i General Purpose Mouse\i0 . Necessario solo se volete usare il mouse in console (non negli xterm). Se lavorate quasi sempre in X, \'e8 meglio disattivarlo, in quanto sono note incompatibilit\'e0 con il sistema X-window. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man gpm \par\pard\sb200\sl260 \lang1024 \b harddrake\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : riconosce e configura hardware nuovo/cambiato, nei sistemi \i Linux-Mandrake\i0 . \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /usr/share/doc/harddrake-[versione] \par\pard\sb200\sl260 \lang1024 \b httpd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : questo demone \'e8 necessario per il funzionamento del server web \i Apache\i0 . Se non intendete tenere in funzione un server web, disattivatelo: usa infatti una considerevole quantit\'e0 di risorse di sistema e rende il sistema vulnerabile a possibili attacchi esterni se non configurato adeguatamente. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man httpd \par\pard\sb200\sl260 \lang1024 \b identd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : fornisce informazioni su utenti/processi (di solito \'e8 avviato da inetd - \'e8 il processo \i auth\i0 ). \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man identd \par\pard\sb200\sl260 \lang1024 \b inetd - xinetd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : gestiscono i servizi \i dial-in\i0 , tipo imap, nntp, finger, ftp, pop3 e telnet (gli ultimi tre di solito sono attivi). \i inetd\i0 \'e8 la versione precedente del demone, ultimamente in via di sostituzione con \i inetd\i0 , che gestisce in modo migliore il controllo delle connessioni (anche se ha ancora qualche difficolt\'e0 con \i UDP\i0 e \i RPC\i0 ), rispetto all'accoppiata \i inetd+tcpd\i0 . Se non dovete offrire questo tipi di servizi, o usate solo collegamenti in \i dial-out\i0 , disattivateli! Con le impostazioni di default, infatti, permettono a chiunque conosca il vostro IP di sferrare attacchi ai vostri danni. Se volete comunque usarli, controllate e impostate i file: \fs18\f2 /etc/inetd.conf\fs20\f0 , \fs18\f2 /etc/hosts.allow\fs20\f0 , \fs18\f2 /etc/hosts.deny\fs20\f0 e installate i \i tcp-wrappers\i0 (\i tcpd\i0 ). \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man inetd, man xinetd, man hosts_access and man tcpd \par\pard\sb200\sl260 \lang1024 \b ipchains\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : gestisce il \i firewall-masquerading\i0 di sistema. Pu\'f2 essere sostituito con uno script apposito. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man ipchains \par\pard\sb200\sl260 \lang1024 \b keytable\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : carica la mappa di tastiera selezionata, in base all'impostazione del file \fs18\f2 /etc/sysconfig/keyboard\fs20\f0 . Di solito \'e8 abilitato. Essenziale per tastiere diverse da quelle americane. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man loadkeys \par\pard\sb200\sl260 \lang1024 \b kheader\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : rigenera il file \fs18\f2 /boot/kernel.h\fs20\f0 \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /etc/rc.d/init.d/kheader \par\pard\sb200\sl260 \lang1024 \b kudzu\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : rileva e configura in fase di avvio l'hardware nuovo o che \'e8 cambiato. Conviene disattivarlo per velocizzare il processo d'avvio e nel caso usarlo direttamente da linea di comando. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man kudzu \par\pard\sb200\sl260 \lang1024 \b ldap\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : usato per accedere a servizi gateway X.500. In genere non \'e8 necessario. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man ldapd \par\pard\sb200\sl260 \lang1024 \b linuxconf\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : serve al programma di configurazione \i LinuxConf\i0 . Di solito \'e8 abilitato. Utile se non si vogliono modificare a mano i vari file di configurazione di sistema. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /usr/lib/linuxconf/help \par\pard\sb200\sl260 \lang1024 \b lpd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : il demone \i Line Printer Spooler\i0 . Necessario per la stampa (al suo posto potete usare \i cups\i0 ). Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man lpd \par\pard\sb200\sl260 \lang1024 \b mysql\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : sistema di database relazionale avanzato \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man mysql \par\pard\sb200\sl260 \lang1024 \b netfs\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : \i Network Filesystem Mounter\i0 . Serve solo se in fase d'avvio si vogliono montare condivisioni di tipo \i NFS\i0 , \i SMB\i0 e \i NCP\i0 . \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man mount \par\pard\sb200\sl260 \lang1024 \b network\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : attiva le interfacce di rete durante la fare di avvio, richiamando gli script presenti in \i /etc/sysconfig/network-scripts\i0 . Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man ifconfig e la documentazione relativa a ciascun tipo di interfaccia usata. \par\pard\sb200\sl260 \lang1024 \b nfslock\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : avvia e arresta il servizio di blocco dei file NFS. Se non sapete cosa sia, disabilitatelo. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man nfs \par\pard\sb200\sl260 \lang1024 \b numlock\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : attiva il tasto \i NumLock\i0 al cambio di runlevel. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : boh! \par\pard\sb200\sl260 \lang1024 \b pcmcia\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : attiva l'interfaccia \i PCMCIA\i0 . Utile solo agli utenti di sistemi portatili. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : lo script stesso \par\pard\sb200\sl260 \lang1024 \b portmap\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : necessario per le \i Remote Procedure Calls\i0 . Lasciatelo abilitato se usate \i GNOME\i0 o avete bisogno di \i RPC\i0 per qualche altro motivo. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man portmap \par\pard\sb200\sl260 \lang1024 \b postfix\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : \'e8 un \i MTA\i0 (\i Mail Transport Agent\i0 ), simile a sendmail ma molto pi\'f9 sicuro. Se usate \i Netscape Mail\i0 o \i Kmail\i0 o altri programmi che contattano direttamente un SMTP esterno, non ne avete bisogno. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man postfix, '/usr/doc/postfix-[version]/html/index.html' \par\pard\sb200\sl260 \lang1024 \b random\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : genera numeri casuali, fornendoli a vari programmi. Necessario per la sicurezza. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man 4 random \par\pard\sb200\sl260 \lang1024 \b rawdevices\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : permette accesso diretto ai dischi (usato da oracle) \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /etc/rc.d/init.d/rawdevices \par\pard\sb200\sl260 \lang1024 \b routed\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : si occupa degli instradamenti di rete. Non ne avete bisogno se usate connessioni dial-up. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man routed \par\pard\sb200\sl260 \lang1024 \b rstatd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : genera statistiche sul kernel (utile per gestioni avanzate di rete). Di solito non \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man rpc.rstatd \par\pard\sb200\sl260 \lang1024 \b rusersd - rwalld - rwhod\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : fornisce diversi servizi utili quando si gestisce un server. Di solito non \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : le loro man-pages \par\pard\sb200\sl260 \lang1024 \b smb\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : necessario per far furnzionare \i SAMBA\i0 , il server per il \i Server Message Block Protocol\i0 . Permette di fornire servizi di rete a client Windows e di accedere ad essi da GNU/Linux. Di solito non \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man samba, il libro "Using Samba" della O'Reilly, disponibile in rete \par\pard\sb200\sl260 \lang1024 \b sshd\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : \'e8 un demone che permette di gestire connessioni protette verso il server, da usare preferibilmente al posto di \i telnet\i0 . Pu\'f2 essere disabilitato se si usano solo connessioni dial-up. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man sshd \par\pard\sb200\sl260 \lang1024 \b syslog\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : si occupa dei log si sistema. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man sysklogd \par\pard\sb200\sl260 \lang1024 \b usb\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : serve per le periferiche su \i Universal Serial Bus\i0 . Se non avete periferiche di questo tipo, potete disabilitarlo. Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /usr/src/linux/drivers/usb \par\pard\sb200\sl260 \lang1024 \b xfs\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : \'e8 l'\i X Font Server\i0 . Se non lo caricate, dovrete impostare a mano i percorsi dei font nel file \fs18\f2 /etc/X11/XF86Config\fs20\f0 e usare un font server esterno, come \i xfstt\i0 . Di solito \'e8 abilitato. \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : essenziale su usate X \par\pard\sb100\li400\sl260 \b Documentazione\b0 : man xfs \par\pard\sb200\sl260 \lang1024 \b zope\b0 \keepn\hyphpar0\par\pard\sb100\li400\sl260\fi-400 \tx400 \~\tab \b Descrizione\b0 : un linguaggio di programmazione object oriented per creare siti web dinamici \hyphpar0\par\pard\sb100\li400\sl260 \lang1040 \b Stato\b0 : opzionale \par\pard\sb100\li400\sl260 \b Documentazione\b0 : /home/httpd/html/zopedocs \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 18. Wheel Mouse}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 18. Wheel Mouse}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_WHEELMOUSE}{\*\bkmkend ID_WHEELMOUSE}\b\fs41\f1 Capitolo 18. Wheel Mouse\keepn\hyphpar0\par\pard\sb207\sl260 \b0\fs20\lang1040\f0 A grande richiesta, vediamo come configurare un wheel-mouse in Linux, in modo che funzioni col maggior numero di applicazioni. Un mio consiglio personale \'e8 di lasciar perdere Imwheel, un programma che serve proprio a questo, ma che crea a volte incompatibilit\'e0 con alcuni programmi: io ho configurato tutto senza di esso, e il wheel-mouse mi funziona in X-Window, Kde, Gnome, Wmaker, Emacs, Netscape, Vim, Rxvt e compagnia. A me l'uso contemporaneo di Gpm (per il mouse in console pura) e X-Window creava dei problemi, funzionava "random". Ho risolto facendo leggere in console su \fs18\f2 /dev/gpmdata\fs20\f0 , e in X-Window direttamente da \fs18\f2 /dev/psaux\fs20\f0 . Queste \'e8 la situazione dei device in \fs18\f2 /dev/\fs20\f0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 mrshark@pingu:~$ ls -l /dev/mouse /dev/gpmdata /dev/psaux\sa0\par\fi0\sb0 prw-r--r-- 1 root root 0 feb 5 14:16 /dev/gpmdata\sa0\par\fi0\sb0 lrwxrwxrwx 1 root root 5 feb 5 14:26 /dev/mouse -> psaux\sa0\par\fi0\sb0 crw------- 1 root root 10, 1 feb 12 07:48 /dev/psaux \sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Io uso wheel-mouse con porta PS/2, se avete info per altri tipi di mouse, fatemi sapere! I mouse Logitech in versione OEM (bianchi con logo nero), pare non funzionino. Seguono le sezioni relative al mouse delle configurazioni per Xfree86 versioni 3 e 4 rispettivamente: \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 Il resto dei file \'e8 stato eliminato! C'\'e8 molta altra roba all'interno di questi file! Non copiateli semplicemente al posto di quelli che avete, altrimenti X non vi partir\'e0 pi\'f9! Siete avvisati! ;-) ) \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \b === file: /etx/X11/XF86Config ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 Section "Pointer"\sa0\par\fi0\sb0 Protocol "imps/2" # mouse ps/2\sa0\par\fi0\sb0 # Protocol "intellimouse" # mouse seriale\sa0\par\fi0\sb0 Device "/dev/psaux"\sa0\par\fi0\sb0 buttons 5\sa0\par\fi0\sb0 ZAxisMapping 4 5\sa0\par\fi0\sb0 EndSection\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: /etx/X11/XF86Config-4 ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # questa e' la sezione originale del mio file, che uso ancora a volte\sa0\par\fi0\sb0 # quando non ho voglia di attaccare il wheel-mouse al portatile\sa0\par\fi0\sb0 Section "InputDevice"\sa0\par\fi0\sb0 Identifier "Mouse1"\sa0\par\fi0\sb0 Driver "mouse"\sa0\par\fi0\sb0 Option "Protocol" "PS/2"\sa0\par\fi0\sb0 Option "Device" "/dev/psaux"\sa0\par\fi0\sb0 Option "Emulate3Buttons" "on"\sa0\par\fi0\sb0 Option "Emulate3Timeout" "50"\sa0\par\fi0\sb0 EndSection\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # questa invece e' la nuova sezione che ho aggiunto per il wheel-mouse\sa0\par\fi0\sb0 Section "InputDevice"\sa0\par\fi0\sb0 Identifier "Mouse2"\sa0\par\fi0\sb0 Driver "mouse"\sa0\par\fi0\sb0 Option "Protocol" "IMPS/2" # mouse ps/2\sa0\par\fi0\sb0 # Option "Protocol" "INTELLIMOUSE" # mouse seriale\sa0\par\fi0\sb0 Option "Device" "/dev/psaux"\sa0\par\fi0\sb0 Option "Emulate3Buttons" "off"\sa0\par\fi0\sb0 Option "ZAxisMapping" "4 5"\sa0\par\fi0\sb0 EndSection\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # in questa sezione dovete specificare quale dei 2 mouse impostati\sa0\par\fi0\sb0 # precedentemente volete usare nelle vostre sessioni X-Window; la\sa0\par\fi0\sb0 # riga che vi interessa e' la InputDevice... \sa0\par\fi0\sb0 Section "ServerLayout"\sa0\par\fi0\sb0 Identifier "layout1"\sa0\par\fi0\sb0 Screen "screen1"\sa0\par\fi0\sb0 # InputDevice "Mouse1" "CorePointer"\sa0\par\fi0\sb0 InputDevice "Mouse2" "CorePointer"\sa0\par\fi0\sb0 InputDevice "Keyboard1" "CoreKeyboard"\sa0\par\fi0\sb0 EndSection\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Con queste dovreste essere a posto per X-Window, e quindi il mouse dovrebbe gi\'e0 funzionare anche nei vari Window manager (a me gi\'e0 cos\'ec funziona in tutti i programmi Kde 1 e 2, Gnome e i suoi WM, e con Wmaker). Provate, riavviando X. \par\pard\sb100\sl260 Ora passiamo a Gpm. Quella che segue \'e8 la configurazione di \b Pingu\b0 , la mia Linuxbox \b Debian\b0 , che ha un file apposito per le opzioni di Gpm, quindi se usate altre distribuzioni dovrete inserire nello script che lo avvia le opzioni indicate di seguito ( -m /dev/psaux -t imps2 ): \par\pard\sb100\sl260 \b === file: /etc/gpm.conf ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 device=/dev/psaux\sa0\par\fi0\sb0 responsiveness=\sa0\par\fi0\sb0 repeat_type=\sa0\par\fi0\sb0 type=imps2\sa0\par\fi0\sb0 append=""\sa0\par\fi0\sb0 # eventualmente mettili sulla riga di comando di gpm se non usi debian\sa0\par\fi0\sb0 # le uniche 2 opzioni che uso sono m e t, come segue da "ps aux | grep gpm":\sa0\par\fi0\sb0 # /usr/sbin/gpm -m /dev/psaux -t imps2\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Seguono ora le righe da \b aggiungere\b0 al vostro file \fs18\f2 ~/.Xdefaults\fs20\f0 per abilitare lo scroll in Netscape, 5 : \par\pard\sb200\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl374\qc \b\fs28\lang1024\f1 Attenzione\keepn\hyphpar0\par\pard\sb100\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl234 \b0\fs18\lang1040 Il mouse in Netscape funziona solo se avete il \b NumLock\b0 del tastierino numerico disattivato! Ma con questo disattivato, Rxvt fa casini... a voi la palla... \keepn\par\pard\brdrt\brdrs\brdrw40\brsp100\li640\ri200\brdrl\brdrs\brdrw40\brsp200\li640\ri200\brdrb\brdrs\brdrw40\brsp0\li640\ri200\brdrr\brdrs\brdrw40\brsp200\li640\ri200\sl-100\keepn\par\pard\sl-1\par\pard\sb200\sl260 \fs20\f0 \b === file: ~/.Xdefaults ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 Netscape*drawingArea.translations: #replace \\\sa0\par\fi0\sb0 : ArmLink() \\n\\\sa0\par\fi0\sb0 : ArmLink() \\n\\\sa0\par\fi0\sb0 ~Shift: ActivateLink() \\n\\\sa0\par\fi0\sb0 ~Shift: ActivateLink(new-window) \\\sa0\par\fi0\sb0 DisarmLink() \\n\\\sa0\par\fi0\sb0 Shift: ActivateLink(save-only) \\\sa0\par\fi0\sb0 DisarmLink() \\n\\\sa0\par\fi0\sb0 Shift: ActivateLink(save-only) \\\sa0\par\fi0\sb0 DisarmLink() \\n\\\sa0\par\fi0\sb0 : DisarmLinkIfMoved() \\n\\\sa0\par\fi0\sb0 : DisarmLinkIfMoved() \\n\\\sa0\par\fi0\sb0 : DisarmLinkIfMoved() \\n\\\sa0\par\fi0\sb0 : DescribeLink() \\n\\\sa0\par\fi0\sb0 : xfeDoPopup() \\n\\\sa0\par\fi0\sb0 : ActivatePopup() \\n\\\sa0\par\fi0\sb0 Ctrl: PageUp()\\n\\\sa0\par\fi0\sb0 Ctrl: PageDown()\\n\\\sa0\par\fi0\sb0 Shift: LineUp()\\n\\\sa0\par\fi0\sb0 Shift: LineDown()\\n\\\sa0\par\fi0\sb0 None: LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\\n\\\sa0\par\fi0\sb0 None: \sa0\par\fi0\sb0 LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\\n\\\sa0\par\fi0\sb0 Alt: xfeDoCommand(forward)\\n\\\sa0\par\fi0\sb0 Alt: xfeDoCommand(back)\\n\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 Netscape*globalNonTextTranslations: #override\\n\\\sa0\par\fi0\sb0 Shift: LineUp()\\n\\\sa0\par\fi0\sb0 Shift: LineDown()\\n\\\sa0\par\fi0\sb0 None:LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\\n\\\sa0\par\fi0\sb0 None:LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\\n\\\sa0\par\fi0\sb0 Alt: xfeDoCommand(forward)\\n\\\sa0\par\fi0\sb0 Alt: xfeDoCommand(back)\\n\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Con le righe seguenti, da \b aggiungere\b0 in \fs18\f2 ~/.emacs\fs20\f0 , abiliterete la rotella anche per Emacs: \par\pard\sb100\sl260 \b === file: ~/.emacs ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 (defun up-slightly () (interactive) (scroll-up 5))\sa0\par\fi0\sb0 (defun down-slightly () (interactive) (scroll-down 5))\sa0\par\fi0\sb0 (global-set-key [mouse-4] 'down-slightly)\sa0\par\fi0\sb0 (global-set-key [mouse-5] 'up-slightly)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 (defun up-one () (interactive) (scroll-up 1))\sa0\par\fi0\sb0 (defun down-one () (interactive) (scroll-down 1))\sa0\par\fi0\sb0 (global-set-key [S-mouse-4] 'down-one)\sa0\par\fi0\sb0 (global-set-key [S-mouse-5] 'up-one)\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 (defun up-a-lot () (interactive) (scroll-up))\sa0\par\fi0\sb0 (defun down-a-lot () (interactive) (scroll-down))\sa0\par\fi0\sb0 (global-set-key [C-mouse-4] 'down-a-lot)\sa0\par\fi0\sb0 (global-set-key [C-mouse-5] 'up-a-lot)\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Con le righe seguenti, sempre da \b aggiungere\b0 in \fs18\f2 ~/.emacs\fs20\f0 , abiliterete invece la rotella anche per XEmacs: \par\pard\sb100\sl260 \b === file: ~/.emacs ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 (define-key global-map 'button4\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-down 5)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 (define-key global-map [(shift button4)]\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-down 1)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 (define-key global-map [(control button4)]\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-down)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 (define-key global-map 'button5\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-up 5)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 (define-key global-map [(shift button5)]\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-up 1)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 (define-key global-map [(control button5)]\sa0\par\fi0\sb0 '(lambda (&rest args)\sa0\par\fi0\sb0 (interactive) \sa0\par\fi0\sb0 (let ((curwin (selected-window)))\sa0\par\fi0\sb0 (select-window (car (mouse-pixel-position)))\sa0\par\fi0\sb0 (scroll-up)\sa0\par\fi0\sb0 (select-window curwin)\sa0\par\fi0\sb0 )))\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Altre informazioni nel documento indicato nella sezione "Links" \par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 19. Varie}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 19. Varie}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_VARIE}{\*\bkmkend ID_VARIE}\b\fs41\f1 Capitolo 19. Varie\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_TRUETYPE}{\*\bkmkend ID_TRUETYPE}\fs34 19.1. TrueType\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 In questa sezione spiego come impostare \b X-Window\b0 per l'uso dei caratteri \i True-Type\i0 . Non uso n\'e9 xfstt n\'e9 xftft, ma solo xfs \i patchato\i0 con l'aggiunta delle librerie freetype (il tutto \'e8 di serie dalla \b Redhat 6.0\b0 in poi e derivate - se xfs della \b Mandrake 7\b0 vi da problemi, recuperate quello della \b RedHat 6.1\b0 e sostituitelo). Vi servono anche i file contenuti in \b ttmkfdir-QUALCOSA.rpm\b0 o \i .tgz\i0 o \i .tar.gz\i0 , quindi cercatelo in rete (potrebbe anche chiamasi \i ttmkdir...\i0 ). Quindi dopo aver installato quanto appena detto, create una directory \b /usr/share/fonts/truetype/\b0 e copiateci dentro i file dei \i font .ttf\i0 dalla partizione Windows o da qualche altra parte dove avete \i font .ttf\i0 . Quando copio cose da Win in Linux, solitamente mi ritrovo i file con l'attributo di esecuzione settato, quindi nel caso date: \b chmod a-x /usr/share/fonts/truetype\b0 . Questo dipende da come avete impostato la riga nel vostro file \fs18\f2 /etc/fstab\fs20\f0 relativa alla partizione Windows, con \i exec\i0 o \i noexec\i0 . 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 \b Tips-HOWTO\b0 - ATTENZIONE: i due caratteri intorno ad \i ls\i0 e il primo e ultimo della riga \i lc=...\i0 sono apici inversi, non apici normali, e si ottengono sulle tastiere italiane con \b ALT_GR-APICE_NORMALE\b0 ): \par\pard\sb200\sl234 \fs18\lang1024\f2 #!/bin/sh\sa0\par\fi0\sb0 # lowerit\sa0\par\fi0\sb0 # convert all file names in the current directory to\sa0\par\fi0\sb0 # lower case only operates on plain files - does not\sa0\par\fi0\sb0 # change the name of directories will ask for\sa0\par\fi0\sb0 # verification before overwriting an existing file\sa0\par\fi0\sb0 for x in `ls`\sa0\par\fi0\sb0 do\sa0\par\fi0\sb0 if [ ! -f $x ]; then\sa0\par\fi0\sb0 continue\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 lc=`echo $x | tr '[A-Z]' '[a-z]'`\sa0\par\fi0\sb0 if [ $lc != $x ]; then\sa0\par\fi0\sb0 mv -i $x $lc\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 done\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Riguardo \i X-Window\i0 , 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 \i 640x480\i0 o \i 800x600\i0 , quelli da 100 dpi sono pi\'f9 adatti alle risoluzioni da \i 1024x768\i0 in su, oppure a quelle pi\'f9 basse se siete parenti di Mr Magoo ;-) ). Entrate nella directory \b /usr/share/fonts/truetype/\b0 e date il comando: \b ttmkfdir -o fonts.scale\b0 e poi \b mkfontdir\b0 . Avrete cos\'ec creato i file \fs18\f2 fonts.scale\fs20\f0 e \fs18\f2 fonts.dir\fs20\f0 , che saranno letti da xfs tramite la direttiva \i FontPath\i0 . Ogni volta che inserirete nuovi font nella directory dovrete rilanciare questi 2 comandi per ricreare l'elenco dei font. Ora modificate il file: \fs18\f2 /etc/X11/fs/config\fs20\f0 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): \par\pard\sb200\sl234 \fs18\lang1024\f2 catalogue = /usr/share/fonts/truetype,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/misc:unscaled,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/100dpi:unscaled,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/75dpi:unscaled,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/misc,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/Type1,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/Speedo,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/mdk,\sa0\par\fi0\sb0 /usr/share/fonts/default/Type1,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/100dpi,\sa0\par\fi0\sb0 /usr/X11R6/lib/X11/fonts/75dpi\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 Infine modificate il file \fs18\f2 /etc/X11/XF86Config\fs20\f0 , commentando nella sezione \i Files\i0 tutte le righe di FontPath, ora diventate inutili in quanto richiamate da xfs, lasciando la riga di \i RgbPath\i0 e aggiungendo la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 FontPath "unix/:7101"\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 La RedHat sembra non avviare bene xfs, quindi assicuratevi che xfs NON parta ogni volta che il sistema si avvia (eliminatelo con \b ntsysv\b0 o con \b chkconfig --del xfs\b0 ) e date il comando: \b /etc/rc.d/init.d/xfs stop\b0 per abbatterlo nel caso sia in funzione. Aggiungete la seguante riga al file \fs18\f2 /etc/rc.d/rc.local\fs20\f0 : \par\pard\sb200\sl234 \fs18\lang1024\f2 /usr/X11R6/bin/xfs -config /etc/X11/fs/config -port 7101 > /dev/null &\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 uscite da \i X-Window\i0 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 \b startx\b0 per vedere se tutto va bene, provando a dare \b xfontsel\b0 (\'e8 contenuto in \b X11R6-contrib\b0 ): cliccando su \i fmly\i0 dovreste vedere i vostri font (in \i KDE\i0 potete usare anche \b kfontmanager\b0 )! Per la questione dei 75/100 dpi, se avete messo prima quelli da 100, ricordate anche di cambiare, sempre nel file \fs18\f2 /etc/X11/fs/config\fs20\f0 , la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 default-resolutions = 75,75,100,100\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 in \par\pard\sb200\sl234 \fs18\lang1024\f2 default-resolutions = 100,100,75,75\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 e modificate nel file \fs18\f2 /etc/X11/xdm/Xserver\fs20\f0 (o comunque cercate il file Xserver) la riga: \par\pard\sb200\sl234 \fs18\lang1024\f2 :0 local /usr/X11R6/bin/X\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 in \par\pard\sb200\sl234 \fs18\lang1024\f2 :0 local /usr/X11R6/bin/X -dpi 100\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 In una prossima revisione del \i Quick&Easy Configuration HOWTO\i0 sar\'e0 aggiunta la configurazione dei font TrueType anche con \i Xfstt\i0 e per l'uso con Staroffice. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_BASH}{\*\bkmkend ID_BASH}\b\fs34\lang1024\f1 19.2. Bash\keepn\hyphpar0\par\pard\sb173\sl260 \b0\fs20\lang1040\f0 Alcuni file che possono tornare utili per configurare bash (altri pi\'f9 dettagliati sono presenti nel \b Config-HOWTO\b0 ) \par\pard\sb100\sl260 \b === file: .bash_profile ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # .bash_profile\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Get the aliases and functions\sa0\par\fi0\sb0 if [ -f ~/.bashrc ]; then\sa0\par\fi0\sb0 . ~/.bashrc\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # varie\sa0\par\fi0\sb0 export BASH_ENV="$HOME/.bashrc"\sa0\par\fi0\sb0 export MAIL="$HOME/Mail/$USER"\sa0\par\fi0\sb0 export USER=`whoami` #oppure export USER=`id -un\sa0\par\fi0\sb0 export TMPDIR="$HOME/.tmp"\sa0\par\fi0\sb0 export BROWSER="netscape -raise -remote \\"openURL(%s,new-window)\\":lynx"\sa0\par\fi0\sb0 export DATE=`date +%B-%Y`\sa0\par\fi0\sb0 export HISTSIZE=1000\sa0\par\fi0\sb0 export HISTFILESIZE=1000\sa0\par\fi0\sb0 export HISTIGNORE="[ ]*:&:bg:fg"\sa0\par\fi0\sb0 export PAGER=less\sa0\par\fi0\sb0 export LESS="-M -Q"\sa0\par\fi0\sb0 export LESSEDIT="%E ?lt+%lt. %f"\sa0\par\fi0\sb0 #export LESSOPEN="| lesspipe.sh %s"\sa0\par\fi0\sb0 export LESSOPEN="| lesspipe %s"\sa0\par\fi0\sb0 export LESSCHARSET=latin1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # editor\sa0\par\fi0\sb0 export VISUAL="gvim"\sa0\par\fi0\sb0 export EDITOR="vim"\sa0\par\fi0\sb0 export SLANG_EDITOR="vim %s"\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # rete\sa0\par\fi0\sb0 export NNTPSERVER="127.0.0.1"\sa0\par\fi0\sb0 export http_proxy="http://localhost:5865"\sa0\par\fi0\sb0 export HOSTNAME=`hostname`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # lingua\sa0\par\fi0\sb0 LINGUA="it_IT.ISO-8859-1"\sa0\par\fi0\sb0 export LANG=$LINGUA\sa0\par\fi0\sb0 export LC_COLLATE=$LINGUA\sa0\par\fi0\sb0 export LC_CTYPE=$LINGUA\sa0\par\fi0\sb0 export LC_NUMERIC=$LINGUA\sa0\par\fi0\sb0 export LC_MONETARY=$LINGUA\sa0\par\fi0\sb0 export LC_MESSAGES=$LINGUA\sa0\par\fi0\sb0 export LC_TIME=$LINGUA\sa0\par\fi0\sb0 export LC_ALL=\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # path\sa0\par\fi0\sb0 export PATH=$PATH:$HOME/.bin:/usr/local/j2sdk1.3.0/bin\sa0\par\fi0\sb0 export JAVA_HOME=/usr/local/j2sdk1.3.0\sa0\par\fi0\sb0 export JAVA_PATH=/usr/local/j2sdk1.3.0\sa0\par\fi0\sb0 export SGML_CATALOG_FILES=/etc/sgml/catalog\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 echo\sa0\par\fi0\sb0 fortune\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: .bashrc ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # .bashrc\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Source global definitions\sa0\par\fi0\sb0 if [ -f /etc/bashrc ]; then\sa0\par\fi0\sb0 . /etc/bashrc\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # User specific aliases and functions\sa0\par\fi0\sb0 alias rm='rm -i'\sa0\par\fi0\sb0 alias mv='mv -i'\sa0\par\fi0\sb0 alias cp='cp -i'\sa0\par\fi0\sb0 alias s='cd ..'\sa0\par\fi0\sb0 alias d='ls'\sa0\par\fi0\sb0 alias p='cd -'\sa0\par\fi0\sb0 #alias ls='ls -sh1C --color=tty'\sa0\par\fi0\sb0 alias ls="ls -s -F -T 0 -b -H -1 -C --color=auto"\sa0\par\fi0\sb0 alias df="df -Th"\sa0\par\fi0\sb0 alias cdin='mount /mnt/cdrom ; cd /mnt/cdrom ; ls'\sa0\par\fi0\sb0 alias cdout='cd ; umount /mnt/cdrom ; eject'\sa0\par\fi0\sb0 alias du='du -h --max-depth=1'\sa0\par\fi0\sb0 alias startx='startx -- -nolisten tcp'\sa0\par\fi0\sb0 alias netstat='netstat -nap --inet'\sa0\par\fi0\sb0 alias ps='ps auxfwww'\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 eval `dircolors ~/.dircolors`\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # prompt\sa0\par\fi0\sb0 if [ $USER = 'root' ] ; then\sa0\par\fi0\sb0 COLOUR=41 # red\sa0\par\fi0\sb0 else\sa0\par\fi0\sb0 COLOUR=44 # blue\sa0\par\fi0\sb0 fi\sa0\par\fi0\sb0 ESC="\\033"\sa0\par\fi0\sb0 PROMPT="\\u@\\h" # username@hostname\sa0\par\fi0\sb0 #STYLE=";1m" # bold\sa0\par\fi0\sb0 STYLE="m" # plain\sa0\par\fi0\sb0 PS1="\\[$ESC[$COLOUR;37$STYLE\\]$PROMPT:\\[$ESC[37;40$STYLE\\]\\w\\\\$ "\sa0\par\fi0\sb0 PS2="> "\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Need for a xterm & co if we don't make a -ls\sa0\par\fi0\sb0 [ -n $DISPLAY ] && \{\sa0\par\fi0\sb0 [ -f /etc/profile.d/color_ls.sh ] && source /etc/profile.d/color_ls.sh\sa0\par\fi0\sb0 export XAUTHORITY=$HOME/.Xauthority\sa0\par\fi0\sb0 \}\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Read first /etc/inputrc if the variable is not defined, and after the /etc/inputrc \sa0\par\fi0\sb0 # include the ~/.inputrc\sa0\par\fi0\sb0 [ -z $INPUTRC ] && export INPUTRC=/etc/inputrc\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 umask=022\sa0\par\fi0\sb0 ulimit -c 0\sa0\par\fi0\sb0 \hyphpar0\par\pard\sb200\sl260 \fs20\lang1040\f0 \b === file: .dircolors ===\b0 \par\pard\sb200\sl234 \fs18\lang1024\f2 # EvilGNU's ~/.dircolors for GNU ls. Colours based off of screen shots by\sa0\par\fi0\sb0 # The Rasterman.\sa0\par\fi0\sb0 # in your .bashrc put the lines:\sa0\par\fi0\sb0 # eval `dircolors ~/.dircolors` and\sa0\par\fi0\sb0 # alias ls='ls --color=auto'\sa0\par\fi0\sb0 # you may also want options like -F or somthing.\sa0\par\fi0\sb0 #\sa0\par\fi0\sb0 # EvilGNU\sa0\par\fi0\sb0 # dfree@inna.net\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 COLOR tty\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Extra command line options for ls go here.\sa0\par\fi0\sb0 # Basically these ones are:\sa0\par\fi0\sb0 # -F = show '/' for dirs, '*' for executables, etc.\sa0\par\fi0\sb0 # -T 0 = don't trust tab spacing when formatting ls output.\sa0\par\fi0\sb0 # -b = better support for special characters\sa0\par\fi0\sb0 OPTIONS -F -b -T 0\sa0\par\fi0\sb0 -s -H -1 -C\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Below, there should be one TERM entry for each termtype that is colorizable\sa0\par\fi0\sb0 TERM linux\sa0\par\fi0\sb0 TERM console\sa0\par\fi0\sb0 TERM con132x25\sa0\par\fi0\sb0 TERM con132x30\sa0\par\fi0\sb0 TERM con132x43\sa0\par\fi0\sb0 TERM con132x60\sa0\par\fi0\sb0 TERM con80x25\sa0\par\fi0\sb0 TERM con80x28\sa0\par\fi0\sb0 TERM con80x30\sa0\par\fi0\sb0 TERM con80x43\sa0\par\fi0\sb0 TERM con80x50\sa0\par\fi0\sb0 TERM con80x60\sa0\par\fi0\sb0 TERM xterm\sa0\par\fi0\sb0 TERM vt100\sa0\par\fi0\sb0 TERM vt220\sa0\par\fi0\sb0 TERM ansi\sa0\par\fi0\sb0 TERM rxvt\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)\sa0\par\fi0\sb0 EIGHTBIT 1\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # Below are the color init strings for the basic file types. A color init\sa0\par\fi0\sb0 # string consists of one or more of the following numeric codes:\sa0\par\fi0\sb0 # Attribute codes: \sa0\par\fi0\sb0 # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed\sa0\par\fi0\sb0 # Text color codes:\sa0\par\fi0\sb0 # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white\sa0\par\fi0\sb0 # Background color codes:\sa0\par\fi0\sb0 # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white\sa0\par\fi0\sb0 NORMAL 00 # global default, although everything should be something.\sa0\par\fi0\sb0 FILE 00 # normal file\sa0\par\fi0\sb0 DIR 00;32 # directory\sa0\par\fi0\sb0 LINK 01;36 # symbolic link\sa0\par\fi0\sb0 FIFO 40;33 # pipe\sa0\par\fi0\sb0 SOCK 01;35 # socket\sa0\par\fi0\sb0 BLK 40;33;01 # block device driver\sa0\par\fi0\sb0 CHR 40;33;01 # character device driver\sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # This is for files with execute permission:\sa0\par\fi0\sb0 EXEC 01;33 \sa0\par\fi0\sb0 \sa0\par\fi0\sb0 # List any file extensions like '.gz' or '.tar' that you would like ls\sa0\par\fi0\sb0 # to colorize below. Put the extension, a space, and the color init string.\sa0\par\fi0\sb0 # (and any comments you want to add after a '#')\sa0\par\fi0\sb0 *~ 05;31 # stuff we hate to find laying around (flashing red)\sa0\par\fi0\sb0 .mtxt 05;31 # crap\sa0\par\fi0\sb0 .ndx 05;31\sa0\par\fi0\sb0 .cmd 00;33 # executables\sa0\par\fi0\sb0 .exe 00;33\sa0\par\fi0\sb0 .com 00;33\sa0\par\fi0\sb0 .btm 00;33\sa0\par\fi0\sb0 .bat 00;33\sa0\par\fi0\sb0 .c 00;35 # source code\sa0\par\fi0\sb0 .h 00;36\sa0\par\fi0\sb0 .pl 00;35\sa0\par\fi0\sb0 .pm 00;35\sa0\par\fi0\sb0 .cgi 00;35\sa0\par\fi0\sb0 .java 00;35\sa0\par\fi0\sb0 .html 00;35\sa0\par\fi0\sb0 .tar 00;31 # archives or compressed (bright red)\sa0\par\fi0\sb0 .tgz 00;31\sa0\par\fi0\sb0 .arj 00;31\sa0\par\fi0\sb0 .taz 00;31\sa0\par\fi0\sb0 .lzh 00;31\sa0\par\fi0\sb0 .zip 00;31\sa0\par\fi0\sb0 .z 00;31\sa0\par\fi0\sb0 .Z 00;31\sa0\par\fi0\sb0 .gz 00;31\sa0\par\fi0\sb0 .jpg 00;34 # image formats\sa0\par\fi0\sb0 .jpeg 00;34\sa0\par\fi0\sb0 .JPG 00;34\sa0\par\fi0\sb0 .gif 00;34\sa0\par\fi0\sb0 .GIF 00;34\sa0\par\fi0\sb0 .bmp 00;34\sa0\par\fi0\sb0 .BMP 00;34\sa0\par\fi0\sb0 .xbm 00;34\sa0\par\fi0\sb0 .ppm 00;34\sa0\par\fi0\sb0 .xpm 00;34\sa0\par\fi0\sb0 .tif 00;34\sa0\par\fi0\sb0 .png 00;34\sa0\par\fi0\sb0 \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 20. Links}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Capitolo 20. Links}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_LINKS}{\*\bkmkend ID_LINKS}\b\fs41\f1 Capitolo 20. Links\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_DOCSVARILINKS}{\*\bkmkend ID_DOCSVARILINKS}\fs34 20.1. Documenti vari\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b ethernet howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Ethernet-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b net howto\b0 : http://www.linuxdoc.org/HOWTO/Net-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b net 3-4 howto\b0 : http://www.linuxdoc.org/HOWTO/NET3-4-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b networking overview howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Networking-Overview-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b cd writing howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/CD-Writing-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b mp3 howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/MP3-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b security howto\b0 : http://www.linuxdoc.org/HOWTO/Security-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b linux administrator security guide\b0 : http://www.securityportal.com/lasg/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ildp\b0 : http://www.pluto.linux.it/ildp/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b appunti di informatica libera\b0 : http://www.pluto.linux.it/ildp/AppuntiLinux/index.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PARTIZIONILINKS}{\*\bkmkend ID_PARTIZIONILINKS}\b\fs34\f1 20.2. Partizioni\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b parted\b0 : http://www.gnu.org/software/parted/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b partition resizer\b0 : http://members.xoom.com/zeleps \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b partition manager\b0 : http://members.xoom.com/ranish/part/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b fips\b0 : ftp://ftp.debian.org/pub/debian/tools/fips20.zip \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b fsresize\b0 : http://www.alphalink.com.au/~clausen/fsresize/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ext2resize\b0 : http://ext2resize.sourceforge.net/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b filesystem howto\b0 : http://www.linuxdoc.org/HOWTO/Filesystems-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b partitioning primer\b0 : http://members.xoom.com/ranish/part/primer.htm \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b large disk howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Large-Disk-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b partition rescue howto\b0 : http://www.linuxdoc.org/HOWTO/mini/Partition-Rescue-mini-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b partition howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/mini/Partition.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b FSSTND\b0 : http://www.pathname.com/fhs \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_LOADLINLINKS}{\*\bkmkend ID_LOADLINLINKS}\b\fs34\f1 20.3. Loadlin\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b loadlin\b0 : http://elserv.ffm.fgan.de/~lermen/HOME.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b loadlin+win95 howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/mini/Loadlin+Win95.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_KERNELLINKS}{\*\bkmkend ID_KERNELLINKS}\b\fs34\f1 20.4. Kernel\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b kernel\b0 : http://www.it.kernel.org/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b kernel howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Kernel-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b lilo howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/mini/LILO.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_INTERNETLINKS}{\*\bkmkend ID_INTERNETLINKS}\b\fs34\f1 20.5. Internet\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b ppp howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/PPP-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b serial howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Serial-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b winmodem howto\b0 : http://www.linuxdoc.org/HOWTO/Winmodems-and-Linux-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b modem howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Modem-HOWTO.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_POSTFIXLINKS}{\*\bkmkend ID_POSTFIXLINKS}\b\fs34\f1 20.6. Postfix\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b postfix\b0 : http://postfix.linux.it/start.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b postfix faq\b0 : http://postfix.linux.it/faq.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b postfix configurazion\b0 : http://postfix.linux.it/basic.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b AGX tutorial\b0 : http://www.linux.it/~agx/info/mini-postfix-howto.txt \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FETCHMAILLINKS}{\*\bkmkend ID_FETCHMAILLINKS}\b\fs34\f1 20.7. Fetchmail\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b fetchmail\b0 : http://www.tuxedo.org/~esr/fetchmail/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b mail administrator howto\b0 : http://www.linuxdoc.org/HOWTO/Mail-Administrator-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b mail user howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Mail-User-HOWTO.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_PROCMAILLINKS}{\*\bkmkend ID_PROCMAILLINKS}\b\fs34\f1 20.8. Procmail\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b procmail\b0 : http://www.procmail.org/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b mini faq\b0 : http://www.iki.fi/era/procmail/mini-faq.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b pm-tips\b0 : http://www.procmail.org/jari/pm-tips.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b quick start\b0 : http://www.ii.com/internet/robots/procmail/qs/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b proctips\b0 : http://www.uwasa.fi/~ts/info/proctips.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_LEAFNODELINKS}{\*\bkmkend ID_LEAFNODELINKS}\b\fs34\f1 20.9. Leafnode\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b leafnode\b0 : http://www.leafnode.org \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b news leafsite howto\b0 : http://www.linuxdoc.org/HOWTO/mini/News-Leafsite.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FIREWALLLINKS}{\*\bkmkend ID_FIREWALLLINKS}\b\fs34\f1 20.10. Firewall\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b firewall howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Firewall-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ip masquerade howto\b0 : http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ipchains howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ip masquerade+ napster\b0 : http://www.linuxdoc.org/HOWTO/mini/IPMasquerading+Napster.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b generazione firewall online\b0 : http://www.linux-firewall-tools.com/linux/firewall/index.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_DNSLINKS}{\*\bkmkend ID_DNSLINKS}\b\fs34\f1 20.11. DNS\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b bind\b0 : http://www.isc.org/products/BIND/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b dns howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/DNS-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b dns resource directory\b0 : http://www.dns.net/dnsrd/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b bind operation guide\b0 : (tra i documenti di bind, in /usr/doc/bind...)\hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b bind faq\b0 : http://www.nominum.com/resources/bind-faq.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b Chroot-BIND8 HOWTO\b0 : http://www.losurs.org/docs/howto/Chroot-BIND8.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_WWWOFFLELINKS}{\*\bkmkend ID_WWWOFFLELINKS}\b\fs34\f1 20.12. Wwwoffle\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b wwwoffle\b0 : http://www.gedanken.demon.co.uk/wwwoffle/ \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_JUNKBUSTERLINKS}{\*\bkmkend ID_JUNKBUSTERLINKS}\b\fs34\f1 20.13. Junkbuster\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b junkbuster\b0 : http://www.junkbuster.com/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b aggiornamenti file\b0 : http://www.waldherr.org/junkbuster/update.shtml \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_MUTTLINKS}{\*\bkmkend ID_MUTTLINKS}\b\fs34\f1 20.14. Mutt\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b mutt\b0 : http://www.mutt.org \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b muttrc builder\b0 : http://mutt.netliberte.org/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b mutt gpg pgp howto\b0 : http://www.linuxdoc.org/HOWTO/Mutt-GnuPG-PGP-HOWTO.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_SLRNLINKS}{\*\bkmkend ID_SLRNLINKS}\b\fs34\f1 20.15. Slrn\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b slrn\b0 : http://space.mit.edu/~davis/slrn.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b slrn+slrnpull howto\b0 : http://www.pluto.linux.it/ildp/altri/SLRN+SLRNPULL-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b altra pagina di slrn\b0 : http://www.slrn.org \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b ancora slrn\b0 : http://slrn.sourceforge.net \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b introduzione a slrn\b0 : http://alcor.concordia.ca/topics/netnews/slrn/intro/ \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b Manuale UFFICIALE in Italiano di SLRN\b0 : http://www.mrshark.it/downloads.html \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_WHEELLINKS}{\*\bkmkend ID_WHEELLINKS}\b\fs34\f1 20.16. Wheel Mouse\keepn\hyphpar0\par\pard\sb173\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b mouse-wheel-scroll\b0 : http://www-sop.inria.fr/koala/colas/mouse-wheel-scroll \hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_VARIELINKS}{\*\bkmkend ID_VARIELINKS}\b\fs34\f1 20.17. Varie\keepn\hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_TRUETYPELINKS}{\*\bkmkend ID_TRUETYPELINKS}\fs28 20.17.1. True Type\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b font howto\b0 : http://www.linuxdoc.org/HOWTO/Font-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b font deuglification howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/mini/FDU.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b tt debian howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/mini/TT-Debian.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b staroffice fonts\b0 : http://www.mindspring.com/~john_mcl/adding_fonts.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b staroffice fonts 2\b0 : http://private.addcom.de/alien8/Fonts.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b staroffice faq\b0 : http://www.wernerroth.de/en/staroffice/faq/faq.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b redhat ttf\b0 : http://www.kegel.com/linux/tt.html \hyphpar0\par\pard\sb216\s3\sl374 {\*\bkmkstart ID_BASHLINKS}{\*\bkmkend ID_BASHLINKS}\b\fs28\f1 20.17.2. Bash\keepn\hyphpar0\par\pard\sb144\li200\sl260\fi-200 \tx200 \b0\fs16\f0 \'95\tab \fs20 \b bash prompt howto\b0 : http://www.linuxdoc.org/HOWTO/Bash-Prompt-HOWTO.html \hyphpar0\par\pard\sb100\li200\sl260\fi-200 \tx200 \fs16 \'95\tab \fs20 \b config howto\b0 : http://www.pluto.linux.it/ildp/HOWTO/Config-HOWTO.html \hyphpar0\par\sect\sectd\plain\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1920\headery0\footery0\pgndec\titlepg{\headerf\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {}\par}{\footerf\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerl\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Appendice A. GNU Free Documentation License}\par}{\footerl\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}{\headerr\pard\sl-240\sb770\sa430\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 Appendice A. GNU Free Documentation License}\par}{\footerr\pard\sl-240\sb770\sa910\plain\tqc\tx4680\tqr\tx9360 {}\tab {}\tab {\i\fs20 \chpgn }\par}\pard\sb311\s1\sl539 {\*\bkmkstart ID_LICENZA}{\*\bkmkend ID_LICENZA}\b\fs41\f1 Appendice A. GNU Free Documentation License\keepn\hyphpar0\par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FDLINGLESE}{\*\bkmkend ID_FDLINGLESE}\fs34 A.1. Versione originale in Inglese\keepn\hyphpar0\par\pard\sb216\s3\sl374 \fs28 A.1.1. GNU Free Documentation License\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Version 1.1, March 2000 \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.2. 0. PREAMBLE\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.3. 1. APPLICABILITY AND DEFINITIONS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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". \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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". \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.4. 2. VERBATIM COPYING\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb100\sl260 You may also lend copies, under the same conditions stated above, and you may publicly display copies. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.5. 3. COPYING IN QUANTITY\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.6. 4. MODIFICATIONS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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: \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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). \par\pard\sb100\sl260 C. State on the Title page the name of the publisher of the Modified Version, as the publisher. \par\pard\sb100\sl260 D. Preserve all the copyright notices of the Document. \par\pard\sb100\sl260 E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. \par\pard\sb100\sl260 H. Include an unaltered copy of this License. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. \par\pard\sb100\sl260 N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.7. 5. COMBINING DOCUMENTS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 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." \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.8. 6. COLLECTIONS OF DOCUMENTS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.9. 7. AGGREGATION WITH INDEPENDENT WORKS\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.10. 8. TRANSLATION\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.11. 9. TERMINATION\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.1.12. 10. FUTURE REVISIONS OF THIS LICENSE\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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/. \par\pard\sb100\sl260 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. \par\pard\sb259\s2\sl449 {\*\bkmkstart ID_FDLITALIANO}{\*\bkmkend ID_FDLITALIANO}\b\fs34\lang1024\f1 A.2. Versione tradotta in Italiano\keepn\hyphpar0\par\pard\sb216\s3\sl374 \fs28 A.2.1. GNU Free Documentation License\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Versione 1.1, Marzo 2000 \par\pard\sb100\sl260 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Chiunque pu\'f2 copiare e distribuire copie letterali di questo documento di licenza, ma non ne \'e8 permessa la modifica. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.2. 0. PREAMBOLO\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Lo scopo di questa licenza \'e8 di rendere un manuale, un testo o altri documenti scritti "liberi" nel senso di assicurare a tutti la libert\'e0 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. \par\pard\sb100\sl260 Questa licenza \'e8 un "copyleft": ci\'f2 vuol dire che i lavori che derivano dal documento originale devono essere ugualmente liberi. \'c8 il complemento alla GNU General Public License, che \'e8 una licenza di tipo "copyleft" pensata per il software libero. \par\pard\sb100\sl260 Abbiamo progettato questa licenza al fine di applicarla alla documentazione del software libero, perch\'e9 il software libero ha bisogno di documentazione libera: un programma libero dovrebbe accompagnarsi a manuali che forniscano la stessa libert\'e0 del software. Ma questa licenza non \'e8 limitata alla documentazione del software; pu\'f2 essere utilizzata per ogni testo che tratti un qualsiasi argomento e al di l\'e0 dell'avvenuta pubblicazione cartacea. Raccomandiamo principalmente questa licenza per opere che abbiano fini didattici o per manuali di consultazione. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.3. 1. APPLICABILIT\'c0 E DEFINIZIONI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Questa licenza si applica a qualsiasi manuale o altra opera che contenga una nota messa dal detentore del copyright che dica che si pu\'f2 distribuire nei termini di questa licenza. Con "Documento", in seguito ci si riferisce a qualsiasi manuale o opera. Ogni fruitore \'e8 un destinatario della licenza e viene indicato con "voi". \par\pard\sb100\sl260 Una "versione modificata" di un documento \'e8 ogni opera contenente il documento stesso o parte di esso, sia riprodotto alla lettera che con modifiche, oppure traduzioni in un'altra lingua. \par\pard\sb100\sl260 Una "sezione secondaria" \'e8 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 \'e8 in parte un manuale di matematica, una sezione secondaria non pu\'f2 contenere spiegazioni di matematica). Il rapporto con l'argomento pu\'f2 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. \par\pard\sb100\sl260 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 \'e8 realizzato sotto questa licenza. \par\pard\sb100\sl260 I "testi copertina" sono dei brevi brani di testo che sono elencati nella nota che indica che il documento \'e8 realizzato sotto questa licenza. \par\pard\sb100\sl260 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\'e0 di formati atti alla successiva formattazione. Una copia fatta in un altro formato di file trasparente il cui markup \'e8 stato progettato per intralciare o scoraggiare modifiche future da parte dei lettori non \'e8 trasparente. Una copia che non \'e8 trasparente \'e8 "opaca". \par\pard\sb100\sl260 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 \'e8 in genere disponibile la DTD o gli strumenti per il trattamento, e HTML generato automaticamente da qualche word processor per il solo output. \par\pard\sb100\sl260 La "pagina del titolo" di un libro stampato indica la pagina del titolo stessa, pi\'f9 qualche pagina seguente per quanto necessario a contenere in modo leggibile, il materiale che la licenza prevede che compaia nella pagina del titolo. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.4. 2. COPIE ALLA LETTERA\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Si pu\'f2 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\'f2 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. \par\pard\sb100\sl260 Si possono anche prestare copie e con le stesse condizioni sopra menzionate possono essere utilizzate in pubblico. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.5. 3. COPIARE IN NOTEVOLI QUANTIT\'c0\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Se si pubblicano a mezzo stampa pi\'f9 di 100 copie del documento, e la nota della licenza indica che esistono uno o pi\'f9 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\'f2 aggiungere altro materiale alle copertine. Il copiare con modifiche limitate alle sole copertine, purch\'e9 si preservino il titolo e le altre condizioni viste in precedenza, \'e8 considerato alla stregua di copiare alla lettera. \par\pard\sb100\sl260 Se il testo richiesto per le copertine \'e8 troppo voluminoso per essere riprodotto in modo leggibile, se ne pu\'f2 mettere una prima parte per quanto ragionevolmente pu\'f2 stare in copertina, e continuare nelle pagine immediatamente seguenti. \par\pard\sb100\sl260 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\'e0 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. \par\pard\sb100\sl260 \'c8 caldamente consigliato, bench\'e9 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.6. 4. MODIFICHE\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Si possono copiare e distribuire versioni modificate del documento rispettando le condizioni delle precedenti sezioni 2 e 3, purch\'e9 la versione modificata sia realizzata seguendo scrupolosamente questa stessa licenza, con la versione modificata che svolga il ruolo del "documento", cos\'ec da estendere la licenza sulla distribuzione e la modifica a chiunque ne possieda una copia. Inoltre nelle versioni modificate si deve: \par\pard\sb100\sl260 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\'f2 usare lo stesso titolo di una versione precedente se l'editore di quella versione originale ne ha dato il permesso. \par\pard\sb100\sl260 B. Elencare nella pagina del titolo, come autori, una o pi\'f9 persone o gruppi responsabili in qualit\'e0 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). \par\pard\sb100\sl260 C. Dichiarare nella pagina del titolo il nome dell'editore della versione modificata in qualit\'e0 di editore. \par\pard\sb100\sl260 D. Conservare tutte le note sul copyright del documento originale. \par\pard\sb100\sl260 E. Aggiungere un'appropriata licenza per le modifiche di seguito alle altre licenze sui copyright. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 G. Preservare in questo avviso di licenza l'intera lista di sezioni non modificabili e testi copertina richieste come previsto dalla licenza del documento. \par\pard\sb100\sl260 H. Includere una copia non modificata di questa licenza. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 J. Conservare l'indirizzo in rete riportato nel documento, se c'\'e8, al fine del pubblico accesso ad una copia trasparente, e possibilmente l'indirizzo in rete per le precedenti versioni su cui ci si \'e8 basati. Questi possono essere collocati nella sezione "Storia". Si pu\'f2 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\'e0 il permesso. \par\pard\sb100\sl260 K. In ogni sezione di "Ringraziamenti" o "Dediche", si conservino il titolo, il senso, il tono della sezione stessa. \par\pard\sb100\sl260 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. \par\pard\sb100\sl260 M. Si cancelli ogni sezione intitolata "Riconoscimenti". Solo questa sezione pu\'f2 non essere inclusa nella versione modificata. \par\pard\sb100\sl260 N. Non si modifichi il titolo di sezioni esistenti come "miglioria" o per creare confusione con i titoli di sezioni non modificabili. \par\pard\sb100\sl260 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\'e0 di rendere non modificabili quante sezioni si voglia. Per fare ci\'f2 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. \par\pard\sb100\sl260 Si pu\'f2 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 \'e8 stato approvato da una organizzazione come la definizione normativa di uno standard. \par\pard\sb100\sl260 Si pu\'f2 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\'e0 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\'f2 aggiungere un altro, ma si pu\'f2 rimpiazzare il vecchio ottenendo l'esplicita autorizzazione dall'editore precedente che aveva aggiunto il testo copertina. \par\pard\sb100\sl260 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.7. 5. UNIONE DI DOCUMENTI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Si pu\'f2 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. \par\pard\sb100\sl260 Nella sintesi \'e8 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. \par\pard\sb100\sl260 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". \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.8. 6. RACCOLTE DI DOCUMENTI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Si pu\'f2 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. \par\pard\sb100\sl260 Si pu\'f2 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.9. 7. RACCOGLIERE INSIEME A LAVORI INDIPENDENTI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 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 \'e8 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\'f2 loro stessi lavori derivati dal documento. \par\pard\sb100\sl260 Se le esigenze del Testo Copertina della sezione 3 sono applicabili a queste copie del documento allora, se il documento \'e8 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.10. 8. TRADUZIONI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 La traduzione \'e8 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\'f9 sezioni non modificabili in aggiunta alle versioni originali di queste sezioni immutabili. Si pu\'f2 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.11. 9. TERMINI\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 Non si pu\'f2 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 \'e8 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. \par\pard\sb216\s3\sl374 \b\fs28\lang1024\f1 A.2.12. 10. REVISIONI FUTURE DI QUESTA LICENZA\keepn\hyphpar0\par\pard\sb144\sl260 \b0\fs20\lang1040\f0 La Free Software Foundation pu\'f2 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. \par\pard\sb100\sl260 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\'e0 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\'f2 scegliere ogni versione pubblicata (non come bozza) dalla Free Software Foundation. \par\pard\sb200\li400\sl234 \b\fs18\lang1024\f1 Nota: \b0 Traduzione in italiano a cura di Andrea Ferro, Leandro Noferini e Franco Vite.\hyphpar0\par}