[bglug] Il mio INN mini HOWTO

Manuel bglug@lists.linux.it
Fri, 23 May 2003 15:54:42 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_000E_01C32143.9FFA91F0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Ciao a tutti

ho messo a punto questo piccolo howto per uso e promemoria personale...
Se qualcuno ha voglia/tempo/capacita' di dargli una sistemata potrebbe
tornare utile per la (purtroppo) scarna sezione della documentazione...

Ciao a tutti
Manuel

PS se interessa ho anche preso (e modificato) un html per vedere le news
via web visibile (e' una prova!) all'indirizzo
http://relay.orobiacom.it/~manuel/news_from_web/

------=_NextPart_000_000E_01C32143.9FFA91F0
Content-Type: text/plain;
	name="INN_HowTo.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="INN_HowTo.txt"


Innanzi tutto alcuni link MOLTO utili

www.isc.org                    				  la 'casa' di INN
http://www.eyrie.org/~eagle/software/inn/		  la seconda casa di INN =
(homepage di Russ Allbery)
www.blank.org/innfaq      				  le faq di INN
http://web.tiscali.it/kalem/howto/Inn2+Newsx-HOWTO.sgml   buona base di =
partenza (datato)
http://www.linux.it/~md/inn+suck-HOWTO.gz                 idem come =
sopra (datato)
http://a2.swlibero.org/a2209.html


NOTA [1]:

INN non fa tutto da solo (a meno di avere un feed diretto),=20
ha bisogno o di newsx o di suck per scaricare le news dal server news a =
cui ci si collega


NOTA [2]:

i file di configurazione stanno in /etc/news/ ma anche in /var/lib/news =
(rpm di red hat 7.2)
se installato dai sorgenti, il tutto viene invece messo in =
/usr/local/news/


NOTA [3]:

TUTTE le operazioni successive all'installazione vanno TASSATIVAMENTE =
eseguite=20
con l'utente NEWS (pena il non funzionamento di INN)
da root digitate su - news=20


NOTA[4]:

attenzione perche' i file eseguibili di INN hanno permessi strani !
ad esempio:

-r-sr-x---    1 root     news   inndstart
-r-x------    1 news     news   rnews
-r-sr-x---    1 root     news   startinnfeed=20

se modificate i permessi di inndstart e startinnfeed il check non =
riporta alcun problema
ma INN non funzionera'.






		--=3D=3D=3D  in /etc/news o /usr/local/news/etc/ =3D=3D=3D--


-=3D- expire.ctl -=3D-

indica il tempo di permanenza degli articoli nello spool
le regole piu' generali vanno all'inizio, quelle piu' restrittive dopo

questo serve per fare in modo di non occupare troppo spazio su HD: i =
post dei ng piu'
affollati vengono eliminati prima

la sintassi e' del tipo:

<nome ng>:A:x:y:z

come nome di ng si puo' anche usare la wildcard *
x e y si possono fissare rispettivamente a 1 e 30 (leggere la manpage x =
saperne di +)
z indica il numero di giorni per cui conservare gli articoli (spesso =
settato a never)
io ho:

*:A:1:30:never=20

si utilizza il carattere A quando in inn.conf si setta groupbaseexpiry a =
true
altrimenti la sintassi diviene:
0:1:30:never


la stringa
/remember/:7   ricorda gli articoli per ancora 7 giorni dopo che sono =
stati cancellati



-=3D- hosts.nntp -=3D-=20
e' il server da cui leggete le news (deve essere FQDN):
miohost.miodominio:
localhost:

Attenzione: le versioni recenti di INN non utilizzano piu' questo file.




-=3D- inn.conf -=3D-=20

le cose importanti sono queste:

fromhost: miohost.miodominio
pathhost: miohost
organization: <quel che si vuole>
server: miohost.miodominio
moderatormailer: %s@moderators.isc.org




-=3D- readers.conf -=3D-=20

e' il file che gestisce le politiche di accesso ai newsgroup locali

auth "nome-policy" {
    hosts: "nome_del_computer, localhost, 127.0.0.1, stdin, =
ip_della_tua_rete/subnet_mask"
#  hosts: "*"
    default: "<nome_del_computer>"
}

access "nome-policy" {
    users: "<nome_del_computer>"
    newsgroups: "it.*"
    access: RPA
}

qualche commento:
nome-policy e' arbitrario (nome descrittivo per legare le direttive auth =
e access)
hosts "*" significa che al server news possono accedere tutti, =
altrimenti specifichi chi puo'
accedere. (come ho fatto io)
nome_del_computer deve essere quello contenuto nel file hosts (che deve =
corrispondere all'output del
comando $hostname)
newsgroups: "it.*" indica a quali newsgroups possono accedere i pc che =
rientrano nella policy

occore ricordarsi di non mostrare i newsgroups di controllo, e dare un =
commento a quelli che creano
in locale (se vengono creati)
questo file sostituisce il nnrp.access usato in versioni precedenti



-=3D- newsfeeds -=3D-=20

serve per sapere da chi accettare il feed.
se si utilizza INN come utente finale (non avendo il feed dal provider)
immagino che la configurazione sia la seguente:

ME:*,!junk,!control*,!local*::


ME e' in INN l'equivalente di localhost
quindi accetta TUTTO (*) da se stesso TRANNE (!) i gruppi di controllo
io ho escluso anche i NG locali, immaginando che non debba scaricarli da =
se stesso..
funziona... probabilmente va anche con un semplice
ME:*::


il formato e'=20
sito:inclusi/esclusi:pattern:flag:parametri



se si utilizza il feed diretto:

<nick-provider>:!junk,!control,!test,!local*:Tm:innfeed!
innfeed!:!*:Tc,Wnm*:/usr/local/news/bin/startinnfeed



-=3D- moderators -=3D-=20

e' gia' in parte compilato...
occorre aggiungere la riga

it.*:%s@moderators.news.nic.it

per i gruppi moderati della gerarchia it.*



-=3D- storage.conf -=3D-=20

In questo file si imposta il metodo di archiviazione degli articoli.=20
io utilizzo il metodo timecaf (abbastanza semplice ma efficiente)

method timecaf {
newsgroups: *
class: 1
size: 0,1000000
}



Per utilizzare invece il metodo di archiviazione CNFS bisogna indicare
il nome del meta-buffer da usare tramite la voce options:

method cnfs {
newsgroups: *
class: 2
size: 0,1000000
options: NOME
}

NOME =E8 il nome del meta-buffer, specificato nel file cycbuff.conf.=20
class deve indentificare in maniera univoca il gruppo, quindi va =
adattato di conseguenza.

Ovviamente si possono suddividere i newsgroups su vari buffer in modo =
che quelli a traffico elevato
non sovrascrivano quelli con meno traffico. =C8 anche possibile =
utilizzare una soluzione ibrida,
mescolado i vari tipi di memorizzazione dei messaggi.

Se si suddividono i newsgroups su vari buffer, o se si utilizzano =
diversi metodi di archiviazione, =E8
consigliabile lasciare alla fine del fine queste linee:

method timecaf {
newsgroups: *
class: 3
}

Questo assicura che vengano memorizzati anche gruppi che sono stati =
tralasciati oppure che sono
appena stati aggiunti.



-=3D- incoming.conf -=3D-=20

regola da quali server accettare i post.=20
e' collegato a newsfeeds, in cui dichiaravo da chi accettare il feed
e in cui specificavo quali gruppi scaricare dal <nick-provider>

e' diverso dal readers.conf perche' li mi riferisco agli utenti finali,
qui siamo a livello di colloquio tra NEWS-SERVERS


streaming:              true   # streaming allowed by default
max-connections:        8      # per feed

peer ME {
  hostname:         "localhost, 127.0.0.1, <nomehost.nomedominio>, =
<IP_della_macchina>"
}

peer <nick-provider> {
  hostname:         "<FQDN-news-server (oppure anche l'IP)>"
}


in peer ME e' meglio specificare anche il FQDN della macchina =
(<nomehost.nomedominio>)=20
l'IP e' facoltativo...



			=3D=3D=3D in /var/lib/news oppure /usr/local/news/db =3D=3D=3D

-=3D- newsgroups -=3D-=20

contiene la descrizione dei ng che verranno mostrate dai newsreader=20
(occorre settarle a mano, non conosco altro metodo)
ad esempio io ho:


control                 Various control messages (no posting).
control.cancel          Cancel messages (no posting).
control.checkgroups     Hierarchy check control messages (no posting).
control.newgroup        Newsgroup creation control messages (no =
posting).
control.rmgroup         Newsgroup removal control messages (no posting).
junk                    Unfiled articles (no posting).
it.test                         Test
it.test.moderato                Test moderazione
it.sport.calcio.inter           Il NG dell'inter (moderato)
local.test                      Test locali
it.comp.os.linux.iniziare       Per i newbie di linux
it.comp.os.linux.software       discussioni sul software per linux
it.comp.os.linux.sys            i sistemisti di linux





				=3D=3D=3D=3D creazione dei NG =3D=3D=3D=3D

i NG che si vorranno scaricare vanno creati a mano (dall'utente NEWS) =
con il comando ctlinnd

$ ctlinnd newgroup it.comp.os.linux.iniziare
$ ctlinnd newgroup it.comp.os.linux.annunci m

(m perche' icola e' moderato)

il sistema risponde con un OK
se non sono stati creati in fase di setup, occorre creare anche tutti i =
NG di controllo=20

per eliminare i gruppi:

$ctlinnd rmgroup it.comp.os.linux.iniziare

per altre info:=20

$ctlinnd -h


				=3D=3D=3D=3D script quotidiano =3D=3D=3D=3D

ogni giorno occorre lanciare lo script news.daily con i diritti =
dell'utente news

io ho fatto cosi' e funziona:

in /etc/cron.daily ho creato il file news.daily.crontab che contiene:

#!/bin/sh
su news -c "/usr/local/news/bin/news.daily"


non e' il massimo della linearita' (un crontab specifico per l'utente =
news e' meglio)
ma cosi' sono sicuro che funziona



				=3D=3D=3D=3D controllo di tutto =3D=3D=3D=3D


i comandi sono testati su rh 7.2, spero siano ok anche x le altre.
tramite utente NEWS:

$inncheck
$inncheck -pedantic
$inncheck -perms

e si sistema quel che non va.
attenzione che potrebbe dare cose assurde, tipo che usr/lib e usr/bin=20
devono essere dell'utente news, oppure compare la scritta
/usr/local/news/etc/newsfeeds:0: warning you accept all incoming article =
distributions
non preoccupatevi...

poi:

$makehistory
$makedbz -io

avviare il servizio innd e dare una lettura a quel che c'e' in =
/var/log/news

#service innd start

oppure=20

$inndstart


attenzione a non cancellare *mai* il contenuto dei file in /var/log/news =
perche' altrimenti non
logga piu' nulla fino al reboot della macchina

[manuel@relay manuel]$ telnet localhost 119
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200 <FQDN> InterNetNews server INN 2.3.4 ready



se tutto e' ok inn funziona, ora non rimane che settare newsx o suck =
secondo gli howto che ho
indicato. io non l'ho mai fatto (non mi e' mai servito fino ad ora), i =
programmi si equivalgono.



------=_NextPart_000_000E_01C32143.9FFA91F0--