INN + UUCP HOWTO

Come configurare un news server usando INN e UUCP.
di Marco d'Itri
Ti è piaciuto veramente questo HOWTO?
Allora comprami un libro! :-)

Questo documento contiene le spiegazioni necessarie per configurare un news server locale usando INN e UUCP.

Prima di tutto è necessario installare INN e UUCP. Questo documento suppone che la distribuzione usata sia Debian, altrimenti ci saranno piccole differenze nei path e negli script di sistema.

Attenzione: questo documento si riferisce a INN 1.x, che è la versione più adatta a piccoli server. Se non usate Debian vi consiglio di scaricare e compilare manualmente i sorgenti del pacchetto inn, visto che contiene molti bug fix e nuove feature rispetto alla versione ufficiale, che non è più sviluppata. Si puo scaricarli da http://ftp.it.debian.org/debian/pool/main/i/inn/ (.orig.gz e .diff.gz). In alternativa è possibile usare INN 2.x, la cui configurazione però è più complessa e non sarà trattata qui.

INN

Tutti i file di configurazione di INN sono in /etc/news/. Sono brevemente descritti quelli che è necessario modificare, in ogni caso per ulteriori informazioni si possono consultare le rispettive man page.

control.ctl

control.ctl definisce quali messaggi di controllo devono essere onorati automaticamente. Per un server privato probabilmente conviene ignorarli, altrimenti è possibile ricevere degli avvisi per posta o anche gestirli automaticamente dopo averli verificati con PGP:

all:*:*:drop

#checkgroups:gcn@news.nic.it:it.*:doit=mail
#newgroup:gcn@news.nic.it:it.*:mail
#rmgroup:gcn@news.nic.it:it.*:mail

#checkgroups:gcn@news.nic.it:it.*:verify-gcn@news.nic.it
#newgroup:gcn@news.nic.it:it.*:verify-gcn@news.nic.it
#rmgroup:gcn@news.nic.it:it.*:verify-gcn@news.nic.it

expire.ctl

expire.ctl definisce le modalità con cui gli articoli sono eliminati dallo spool. Bisogna elencare per prime le definizioni più generali e man mano quelle più restrittive.

Per ulteriori dettagli su cosa mettere negli ultimi tre campi leggete la man page, se siete pigri invece mettete nel secondo campo il numero di giorni per cui volete conservare gli articoli e nel primo e terzo rispettivamente 1 e 30. Per esempio:

# ricorda i Message-ID degli articoli ricevuti per 14 giorni dopo che
# sono stati cancellati
/remember/:14

## Default is 7 days
*:A:1:7:30

it.news.annunci:A:1:45:60       # default: 45 giorni
it.faq:A:1:30:60                # default: 30 giorni
it.comp.os.linux*:A:1:10:30

*.test:A:1:1:1

control:A:1:30:60
control.cancel:A:1:1:1

inn.conf

inn.conf è la configurazione di innd e inews. Le voci importanti sono:

Per esempio:

fromhost:         linux.it
moderatormailer:  %s@moderators.isc.org
pathhost:         wonderland.linux.it
organization:     Italian Linux Society - http://www.linux.it/
server:           wonderland.linux.it

moderators

moderators indica a inews dove inviare gli articoli per i gruppi moderati:

it.*:%s@moderators.news.nic.it
italia.*:%s@moderators.news.cineca.it
linux.*:%s@moderators.bofh.it
*:%s@moderators.isc.org

I messaggi diretti ai moderatori sono inviati dall'utente news, quindi è indispensabile che il dominio locale esista nel DNS oppure che l'indirizzo sia riscritto dal MTA.

newsfeeds

newsfeeds è il file più complesso, dove si definisce in che modo gli articoli usciranno dal sistema. È composto da voci dalla forma:

sito[/alias,alias2,alias3...]\
        :pattern\
        :flag,flag...:

Il primo campo contiene il nome, eventualmente abbreviato, del sito a cui manderete le news (che sarà anche il nome del batchfile in /var/spool/news/out.going/ ed eventualmente uno o più alias (se diversi dal valore precedente). Questi saranno confrontati con i siti nel Path degli articoli per evitare di reinviarli al server da cui sono stati ricevuti. Per esempio:

tin/news.tin.it

Il secondo campo è un pattern wildmat (consultate wildmat(3) per i dettagli) che descrive i newsgroup da mandare al sito, per esempio !*,it.*,comp.*".

Il terzo campo contiene i flag che specificano in quale formato scrivere il batchfile nella directory out.going, e nel caso di UUCP devono essere Tf,Wfb.

Questa è una configurazione completa per inviare gli articoli a bofh.it usando UUCP:

ME:!*::

bofh/bofh.it\
        :!*,it.*,linux.*\
        :Tf,Wfb:

Bisogna sempre includere la voce per ME, il server locale. I vari campi sono separati dai due punti e il backslash permette di andare a capo.

nnrp.access

nnrp.access contiene gli host che possono leggere le news collegandosi con NNTP. Oltre a stdin e localhost deve contenere il vostro hostname ed eventualmente username e password per utenti esterni:

stdin:Read Post:::*
localhost:Read Post:::*
wonderland.linux.it:Read Post:::*

#*:Read Post:username:password:it.*

send-uucp.cf

send-uucp.cf indica per quali siti UUCP impacchettare articoli e come. Basta questa riga:

bofh            gzip

/etc/cron.d/inn

È necessario eseguire tutti i giorni news.daily per cancellare i vecchi articoli e periodicamente send-uucp.pl (che normalmente è commentato) per impacchettare gli articoli da inviare con UUCP.

Gestione del server

In /var/lib/news/ ci sono alcuni file di dati di INN:

Se non si onorano automaticamente i messaggi di controllo è necessario creare a mano i newsgroup con il comando ctlinnd(8):

ctlinnd newgroup it.news.annunci m
ctlinnd newgroup it.comp.os.linux.sys

È necessario impostare il flag m per it.news.annunci perché è moderato.

I newsgroup control e junk devono esistere obbligatoriamente, ed è consigliabile creare anche control.cancel per archiviare separatamente i messaggi di cancellazione.

È importante che tutti i file in /var/{spool,lib}/news/ siano posseduti dall'utente news. Per sicurezza è consigliabile eseguire su news prima di modificarli.

UUCP

UUCP si configura mediante i file in /etc/uucp/. Per chiamare il sistema remoto si può usare uux seguito dal nome del sito e un punto esclamativo finale:

uux bofh!

Gli articoli saranno inviati solo se già impacchettati da send-uucp.pl.

config

Come prima cosa è necessario configurare il proprio nome UUCP, da concordare con il sito remoto:

nodename wonderland

sys

E quindi definire il sito con cui si comunica, sostituendo username e password:

protocol et

protocol-parameter i timeout 5
protocol-parameter i packet-size 4095
protocol-parameter i remote-packet-size 4095
protocol-parameter t packet-size 4095
protocol-parameter t remote-packet-size 4095

commands /usr/bin/rnews

time any 1
chat-timeout 60

system bofh
 address attila.bofh.it
 port TCP
 call-login LOGIN
 call-password PASSWORD