Jedním z nejoblíbenějších softwarových balíků pro Síťové news je balík C News. Byl navržen pro systémy, které přenášejí news prostřednictvím protokolu UUCP. Tato kapitola se zabývá základními vlastnostmi C News a základny instalace a údržby tohoto balíku.
Program C News ukládá své konfigurační soubory do adresáře /usr/lib/news a většina jeho binárních souborů je umístěna v adresáři /usr/lib/news/bin. Články jsou uchovávány pod adresářem /var/spool/news. Měli byste se ujistit, že všechny soubory v těchto adresářích jsou vlastněny uživatelem news ze skupiny news. Většina následujících problémů totiž souvisí s tím, že systém C News nemá přístup k příslušným souborům. Zvykněte si, že dříve než se čehokoliv v tomto adresáři dotknete se musíte přihlásit jako uživatel news prostřednictvím su. Jedinou výjimkou je program setnewsids, který slouží k nastavování skutečných uživatelských id některých programů news. Vlastníkem těchto programů musí být uživatel root a musí mít nastaven setuid bit.
V následujících statích si podrobně popíšeme všechny konfigurační soubory systému C News a řekneme si, co je třeba udělat pro to, aby váš systém správně fungoval.
Články lze do systému C News dodávat několika způsoby. Když pošle článek místní uživatel, program pro čtení news (newsreader) ho obvykle předá příkazu inews, který doplní hlavičkové informace. Články ze vzdálených systémů, aš už se jedná o jediný článek nebo o celou dávku článků, jsou předány příkazu rnews, který je uloží do adresáře /var/spool/ news/in.coming, odkud si ho později vyzvedne program newsrun. Při použití obou výše zmíněných postupů však bude článek nakonec předán programu relaynews.
U každého článku příkaz relaynews nejprve vyhledá id zprávy v souboru history, čímž zjistí, zda již místní systém daný článek zná. Duplicitní články zruší. Potom se program relaynews podívá do hlavičky na řádek Newsgroups:, aby zjistil, zda daný systém přijímá články z některé z těchto skupin. Pokud ano a příslušná diskusní skupina je uvedena v souboru active, pokusí se program příslušný článek uložit do odpovídajícího adresáře v adresáři spool. Pokud takový adresář neexistuje, pak ho vytvoří. Id zprávy následně zaznamená do souboru history. V opačném případě program relaynews článek smaže.
Pokud se programu relaynews nepodaří uložit příchozí článek, protože skupina, do které byl zaslán, není uvedena v souboru active, umístí článek do skupiny junk.
Program relaynews také vyhledá staré články nebo články se ipatným datem a zruší je. Příchozí dávky článků, jejichž zpracování z nějakého důvodu selže, umístí do adresáře /var/spool/news/in.coming/bad a do log-souboru zapíše chybu.
Poté je článek přesměrován na všechny ostatní systémy, které požadovaly news z těchto skupin, přičemž se využije přenos specifikovaný pro konkrétní místo. Aby nebyl článek posílán serveru, který ho již viděl, je každé místo určení porovnáno s hlavičkovým polem Path:, které obsahuje seznam míst (zapsaný v bang path style), přes která článek zatím prošel. Příslušný článek mu bude poslán pouze v případě, že se název cílového místa nevyskytuje v tomto seznamu.
Systém C News je běžně používán k předávání news mezi systémy, které využívají protokol UUCP. Lze ho však používat i v prostředí NNTP. Pro doručování news (buď jednotlivých článků, nebo celých dávek) na vzdálený UUCP-systém se za pomoci uux spustí na vzdáleném systému program rnews a pošle článek nebo dávku na jeho standardní vstup.
Je-li pro daný systém povoleno dávkování, nepošle systém C News příchozí článek okamžitě, ale připojí název jeho cesty do souboru, který se většinou nazývá out.going/system/togo. Periodicky je ze záznamu crontab spouštěn program pro vytváření dávek,který umístí články do jednoho nebo více souborů, případně je i zkomprimuje a pošle je programu rnews na vzdáleném systému.
Tok news zprostředkovaný programem relaynews ukazuje obrázek 17.1. Články mohou být přenášeny do lokálního systému (označeného jako ME) a prostřednictvím elektronické pošty do systému nazvaného panderosa nebo místa nazvaného moria, pro které je zapnuto dávkování.
Při instalaci systému C News rozbalte soubory do příslušných adresářů (pokud jste tak již neučinili) a upravte níže uvedené konfigurační soubory. Všechny je najdete v adresáři /usr/lib/news. Jejich formáty si nyní popíšeme.
Počáteční hierarchii vytvoříte tak, že si ze systému, který vás zásobuje novými news, obstaráte soubory active a newsgroups a nainstalujete je do adresáře /usr/lib/news. Také se ujistěte, že je jejich vlastníkem uživatel news a mají nastavena přístupová práva 644. Ze souboru active odstraňte všechny skupiny to.*, to.mysite a to.feedsite, stejně jako junk a control. Skupiny to.* slouží k výměně zpráv protokolu ihave/sendme, ale měli byste je vytvořit bez ohledu na to, zda s použitím tohoto protokolu počítáte, či nikoli. Dále nahraďte pomocí následujícího příkazu všechna čísla článků ve druhém a třetím poli v souboru active.
# cp active active.old
# sed 's/ [0-9]* [0-9]* / 0000000000 00001 /' active.old > active
# rm active.old
Druhý příkaz, který je mým oblíbeným, spouští program sed(1). Nahradí dva řetězce číslic řetězcem nul a řetězcem 000001.
Nakonec vytvoříme adresář spool a jeho podadresáře používané pro ukládání příchozích a odchozích news:
# cd /var/spool
# mkdir news news/in.coming news/out.going
# chown -R news.news news
# chmod -R 755 news
Používáte-li pozdější verzi systému C news, bude možná ještě nutné vytvořit v adresáři spool podadresář out.master.
Jestliže používáte pro čtení news jiný program, než jaký je dodáván se systémem C News, zjistíte, že váš adresář spool je místo v adresáři /var/spool/news vytvořen v adresáři /usr/spool/news. Nepodaří-li se vašemu programu pro čtení news najít příslušné články, vytvořte symbolický odkaz jménem /usr/spool/news, který bude ukazovat na adresář /var/spool/news.
Nyní jste připraveni na příjem news. Všimněte si, že už nemusíte vytvářet žádné jiné adresáře, ale pokaždé, když systém C News obdrží článek patřící do skupiny, pro kterou ještě neexistuje příslušný adresář, tento vytvoří.
Konkrétně to platí pro skupiny alt. Takže po nějaké době zjistíte, že váš adresář spool bude přeplněn adresáři s názvy skupin, které jste si nikdy nezapsali, například alt.lang.teco. Tomu zabráníte tak, že buď odstraníte ze souboru active všechny nechtěné skupiny, nebo budete pravidelně spouštět skript příkazového interpretu, který odstraní všechny prázdné adresáře pod adresářem /var/spool/news (vyjma out.going a in.coming samozřejmě).
Systém C News potřebuje účet, na který by mohl posílat chybové a stavové zprávy. Implicitně se tento účet nazývá usenet. Využijete-li toto implicitní nastavení, musíte nastavit alias, který by veškerou poštu došlou na tento účet přesměroval na odpovědné osoby. (Jak to provést u programů smail a sendmail popisujeme v 14. a 15. kapitole.) Toto chování lze také potlačit pomocí proměnné prostředí NEWMASTER, které přiřadíte příslušný název. Proměnnou je třeba nastavit v souboru crontab systému news, stejně jako při každém manuálním spuštění nějakého administrativního nástroje, takže zřízení aliasu je zřejmě jednodušší.
Při úpravě souboru /etc/passwd se ujistěte, že každý uživatel má v poli pw_gecos (jde o čtvrté pole) zapsáno svoje skutečné jméno. Patří k etiketě sítě (netiquette), že se v poli From: příslušného článku objeví skutečné jméno odesílatele. Stejně to musíte udělat, když budete používat elektronickou poštu.
Soubor sys, umístěný v adresáři /usr/lib/news, řídí hierarchie skupin, které dostáváte, a jejich další směrování. I když existují speciální nástroje pro práci s tímto souborem, jmenovitě to jsou addfeed a delfeed, myslím, že je lepší upravovat tento soubor ručně.
Soubor sys obsahuje záznam pro každý systém, kterému předáváte news, stejně jako popis skupin, které přijímáte. Každý záznam má následující formát:
site[/exclusions]:grouplist[/distlist][:flags[:cmds]]
Jako pokračovací znak na novém řádku se používá znak zpětné lomítko. Znak (#) znamená komentář.
site Toto je název systému, kterého se záznam týká. Zpravidla se použije UUCPnázev příslušného místa. V souboru sys musí mít záznam i váš systém, jinak byste nedostávali žádné články. Speciální název ME označuje váš systém. Tento záznam definuje všechny skupiny, které chcete mít uloženy lokálně. Články, které nevyhovují řádku se záznamem ME, putují do skupiny junk. Protože systém C News porovnává pole site s názvy systémů v hlavičkovém poli Path:, musí si tyto přesně odpovídat. Některé systémy předávají v tomto poli plně kvalifikované názvy domén nebo alias typu news.systém.doména. Aby nebyly těmto systémům vráceny žádné články, je třeba přidat tyto názvy do seznamu výjimek, ve kterém jsou jednotlivé položky odděleny čárkami. V záznamu týkajícím se systému moria by mohlo příslušné pole obsahovat například řetězec moria/moria.ocnet.org.
grouplist Toto je seznam skupin a hierarchší oddělených čárkami, které si zapsal konkrétní systém. Hierarchii je možné specifikovat prostřednictvím předpony (například comp.os pro všechny skupiny, jejichž název začíná touto předponou), za níž může volitelně následovat klíčové slovo all (tj. comp.os.all).
Předání příslušné hierarchie nebo skupiny zabráníte tak, že před její název přidáte vykřičník. Při porovnávání názvu diskusní skupiny s tímto seznamem má nejvyšší prioritu nejdelší shoda. Když například pole grouplist obsahuje !comp,comp.os.linux,comp.folklore.computers nebudou příslušnému systému předány žádné skupiny z comp s výjimkou podskupin skupiny comp.folklore.computers a comp.os.linux.
Pokud daný systém požaduje všechny news, které jste sami obdrželi, zadejte do pole grouplist položku all.distlist je offset oddělený od pole grouplist lomítkem a obsahující seznam distribucí, který se má předávat dále. I v tomto případě můžete některé distribuce vyřadit tím, že před ně umístíte znak vykřičník. Všechny distribuce označuje řetězec all. Pokud toto pole vynecháte, znamená to, že jste zvolili all.
Můžete například použít seznam distribucí all,!local, čímž zabráníte šíření news, které jsou určeny jen pro lokální použití. Toto pole většinou obsahuje minimálně dvě distribuce: world, což je vždy implicitní distribuce, která se použije, když uživatel žádnou distribuci neuvede, a local. Existují také další distribuce, které se týkají určité oblasti, státu, země atd. Nakonec zde máme dvě distribuce, které používá pouze systém C News.
Jsou to sendme a ihave a využívá je protokol ihave/sendme.
Využití distribucí je předmětem stálých sporů. Podle někoho vytváří některé programy pro čtení news falešné distribuce podle nejvyšší hierarchie, například comp při posílání news do skupiny comp.os.linux. Distribuce, které se týkají regionů, jsou také sporné, protože news, pokud je pošlete po Internetu, mohou cestovat mimo váš region.
Distribuce aplikované na organizace mají na druhé straně velký význam, zabraňují například šíření tajných informací mimo příslušnou organizaci. Tohoto cíle se však dosáhne lépe vytvořením samostatné diskusní skupiny nebo hierarchie.
Implicitní příkaz má formát
uux - -r -z system!rnews a spustí na vzdáleném systému program rnews, jemuž předá na standardní vstup příslušný článek.
Implicitní vyhledávací cesta pro příkazy předané v tomto poli je /bin:/usr/bin:/usr/lib/news/bin/batch. Poslední z těchto adresářů obsahuje několik skriptů příkazového interpretu, jejichž názvy začínají slovem via. Podrobněji si je popíšeme dále v kapitole.
Je-li povoleno dávkování jedním z parametrů F nebo f, I nebo n, bude systém C News očekávat, že najde v tomto poli název souboru a ne příkaz. Pokud název souboru nezačíná lomítkem (/), předpokládá se, že jde o relativní cestu k adresáři /var/spool/news/out.going. Je-li toto pole prázdné, vezme se implicitní cesta systém/togo.
Při nastavování systému C News budete zřejmě muset vytvořit svůj vlastní soubor sys. Abychom vám to ulehčili, nabízíme vám vzorový soubor serveru vbrew.com, ze kterého si můžete zkopírovat, co potřebujete.
# Bereme vše, co nám ostatní poskytnou.
ME:all/all::
# Vše co dostaneme posíláme na moria kromě lokálních článků.
# Používáme dávkování.
moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f:
# Skupinu comp.risks posíláme na adresu jack@ponderosa.uucp
ponderosa:comp.risks/all::rmail jack@ponderosa.uucp.
# Hostitel swim dostává několik skupin.
swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f:
# Zaznamenávej poštovní mapy pro pozdější zpracování.
usenet-maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch
Soubor active najdete v adresáři /usr/lib/news. Obsahuje seznam všech skupin, které zná váš systém, a všech článků, které jsou zde v současné době uloženy. Jen výjimečně ho budete přímo upravovat, ale kvůli úplnosti si ho zde probereme. Záznamy v tomto souboru mají následující formát:
newsgroup high low perm
Pole newsgroup je samozřejmě název skupiny. Pole low a high udávají nejnižší a nejvyšší čísla článků, které jsou právě dostupné. Není-li dostupný žádný článek, je pole low rovno high+1.
Přinejmenším to objasňuje účel pole low. Nicméně systém C News kvůli efektivitě toto pole neaktualizuje. To by nebyla tak velká ztráta, kdyby na něm nezávisely některé programy pro prohlížení news. Například program trn se na základě tohoto pole rozhoduje, zda může odstranit nějaké články ze své databáze vláken. Kvůli aktualizaci pole low je proto nutné pravidelně spouštět program updatemin (nebo v dřívějších verzích systému C News skript upact).
Parametr perm řídí přístup uživatelů, kteří mají povolen přístup k dané skupině. Může nabývat jedné z následujících hodnot:
V systému C News ve skutečnosti nebudete muset přímo pracovat s tímto souborem. Skupiny lze mazat lokálně i globálně pomocí nástrojů addgroup a delgroup (viz dále popis ve stati Nástroje pro údržbu a úlohy). Je-li do Usenetu přidána nebo z něj naopak odstraněna nějaká skupina, dozví se o tom všechny systémy na základě řídicí zprávy newgroup nebo rmgroup. Nikdy však neposílejte tuto zprávu sami! Máte-li zájem o podrobnosti týkající se vytváření diskusních skupin, pak si přečtěte měsíční příspěvky do konference news.anounce.newusers.
Se souborem active je úzce spjat soubor active.times. Kdykoliv je vytvořena nová skupina, zaznamená systém C News do tohoto souboru zprávu, která obsahuje název vytvořené skupiny, datum vytvoření, zda se tak stalo na základě zprávy newgroup nebo lokálně a kdo tak učinil. To kvůli programům pro čtení news, které tak mohou informovat uživatele o každé nově vytvořené skupině. Tuto informaci využívá také příkaz NEWGROUPS protokolu NNTP.
Dávky news dodržují konkrétní formát, který je stejný pro Bnews, C News a INN. Každému článku předchází následující řádek:
#! rnews count
kde count je počet bajtů článku. Použije-li se dávková komprese, je výsledný soubor zkomprimován jako celek a na začátek je umístěn další řádek, který udává příkaz, jež se použije pro rozbalení. Standardním kompresním nástrojem je compress, který je označen zprávou
#! cunbatch
Někdy, když je potřeba poslat dávky za pomocí poštovního programu, který ze všech dat odstraňuje osmý bit, je možné zkomprimovanou dávku chránit prostřednictvím tzv. c7-kódování. Takovéto dávky budou označeny c7unbatch.
Když je dávka na vzdáleném systému předána programu rnews, vyhledá tyto značky a dávku příslušným způsobem zpracuje. Některé systémy používají ještě jiné kompresní nástroje, například gzip, a před takto zkomprimované soubory předřazují zprávu zunbatch. Systém C News těmto nestandardním hlavičkám nerozumí. Má-li je podporovat, je třeba upravit zdrojový kód.
V systému C News je dávkování článků prováděno programem /usr/lib/news /bin/batch/sendbatches, který vezme seznam článků ze souboru system/togo a umístí je do několika dávek. Měl by být spouštěn jednou za hodinu případně ještě častěji, v závislosti na objemu provozu.
Jeho práci řídí soubor batchparams umístěný v adresáři /usr/lib/news. Tento soubor popisuje maximální velikost dávky pro každý systém, dávkovací a volitelně i komprimační program, který se má použít, a přenos, který zajistí doručení příslušné dávky vzdálenému systému. Dávkovací parametry je možné zadat pro každý systém jednotlivě nebo jako sadu implicitních parametrů, kde není explicitně zmiňován žádný systém.
Dávkování pro specifický systém spustíte následujícím příkazem
# su news -c "/usr/lib/news/bin/batch/sendbatches site"
Spustíte-li program sendbatches bez argumentů, bude obsluhovat veškeré dávkovací dotazy.
Interpretace slova "allip závisí na přítomnosti implicitního záznamu v souboru batchparams.
Pokud existuje, budou se kontrolovat všechny adresáře uvedené v adresáři /var/spool/news/out.going. V opačném případě bude program procházet všechny záznamy uvedené v souboru batchparams. Všimněte si, že program sendbatches bere při procházení adresáře out.batches v úvahu pouze adresáře, které nemají v názvu tečku nebo znak at (@).
Při instalaci systému C News pravděpodobně zjistíte, že součástí distribuce je i soubor batchparams, který obsahuje rozumné implicitní záznamy, takže zřejmě tento soubor nebudete muset upravovat. Jeho formát si zde popíšeme jen pro úplnost. Každý řádek je složen ze šesti polí, které jsou navzájem odděleny mezerami nebo tabulátory:
site size max batcher muncher transport
Následuje popis významu těchto polí:
Pole site udává název systému, kterého se daný záznam týká. Soubor togo musí být v tomto systému umístěn v adresáři spool jako out.going/togo. Název místa /default/ označuje implicitní záznam.
Pole size udává maximální velikost vytvořených dávek článků (před kompresí). Je-li velikost jednoho článku větší než tento údaj, povolí systém C News výjimku a umístí ho do samostatné dávky.
Pole max udává maximální počet dávek vytvořených a naplánovaných pro přenos, než je dávkování pro tento konkrétní systém zrušeno. To je užitečné v případě, že vzdálený systém dlouhou dobu nefunguje, protože se tak vyhnete zahlcení UUCP-adresářů spool miliony dávek news.
Systém C News určuje velikost čekajících dávek za pomoci skriptu queulen, který najdete v adresáři /usr/lib/news/bin. Balík newspak, jehož autorem je Vince Skahan, by měl obsahovat skript pro UUCP kompatibilní s BNU. Používáte-li jiné uspořádání adresáře spool, například Taylor UUCP, budete si možná muset napsat svůj vlastní skript.
Pole batcher obsahuje příkaz, který slouží k vytváření dávky ze seznamu článků v souboru togo. Pro účely normálního přenosu je jím zpravidla program batcher. Pro jiné účely mohou být poskytovány jiné dávkovací programy. Například protokol ihave/sendme vyžaduje, aby byl seznam článků převeden do řídicích zpráv protokolu ihave nebo sendme, které jsou pak odeslány do skupiny to.site. To mají na starosti programy batchih a batchsm.
Pole muncher specifikuje příkaz, který se použije při kompresi. Zpravidla to bývá skript compcun, který vytvoří komprimovanou dávku.
Pro stejné účely je možné využít také programy gzip, řekněme gzipcun (aby bylo jasno, musíte si ho sami napsat). Je třeba se ujistit, že program uncompress na vzdáleném systému je příslušným způsobem upraven, aby rozpoznal soubory komprimované programem gzip.
Pakliže vzdálený systém nedisponuje příkazem uncompress, stačí použít volbu ncomp, která kompresi zakáže.
Poslední pole transport popisuje přenos, který se má použít. K dispozici je několik příkazů, jejichž názvy začínají řetězcem via a slouží pro různé druhy přenosů. Program sendbatches jim předá na příkazové řádce název cílového systému. Pokud jste nenastavili hodnotu batchparams na /default/, odvodí název systému z pole site, přičemž odstraní veškeré znaky za první tečkou nebo lomítkem včetně. V případě položky /default/ se použijí názvy podadresářů adresáře out.going.
Program uux používá ke spouštění rnews dva příkazy: viauux a vaiuuxz. Druhý z nich nastavuje příznak -z pro (starší verzi) programu uux, který způsobí, že tento program nebude vracet zprávy o úspěšném doručení každého článku. Jiný příkaz, viamail, posílá dávky článků uživateli rnews na vzdáleném systému prostřednictvím elektronické pošty. Samozřejmě, že tento vzdálený systém musí veškerou poštu pro uživatele rnews přesměrovat do svého lokálního systému news. Úplný seznam všech přenosů naleznete v manuálových stránkách příkazu newsbatch(8).
Všechny příkazy z posledních tří polí musí být umístěny v adresáři out.going/systém nebo /usr/lib/news/bin/batch. Většina z nich jsou skripty, takže si můžete nové nástroje snadno přizpůsobit svým potřebám. Jsou spouštěny jako roura. Seznam článků je předáván na standardní vstup dávkovacího programu, jehož výstupem je příslušná dávka. Ta je předána programu na zpracování dávek atd.
Následuje ukázkový soubor:
# soubor batchparms
# site | size |max |batcher |muncher |transport
#-------------+--------+-------+---------+-----------+----------
/default/ 100000 22 batcher compcun viauux
swim 10000 10 batcher nocomp viauux
V systému Bnews se o aktuálnost news stará program nazvaný expire, kterému předáte jako argumenty seznam diskusních skupin a časový údaj, po jehož uplynutí vyprší platnost článků. Pokud chcete, aby různým hierarchším vypršela platnost v jinou dobu, potřebujete skript, který by pro každou skupinu spouštěl program expire samostatně. Systém C News nabízí pohodlnější řešení: v souboru explist stačí uvést diskusní skupiny a příslušné časové intervaly. Jednou denně je z cron spouštěn příkaz doexpire, který podle tohoto seznamu zpracuje všechny skupiny.
Někdy si možná budete chtít ponechat články z určitých skupin i po uplynutí doby jejich platnosti; například si budete chtít archivovat programy zaslané do skupiny comp.sources.unix.
Soubor explist umožňuje označit skupiny, které chcete takto archivovat.
Záznam v souboru explist vypadá následovně:
grouplist perm times archive
Pole grouplist je čárkami oddělený seznam diskusních skupin, kterých se daný záznam týká.
Hierarchii skupin zadáte celým názvem skupiny, za nímž může nepovinně následovat řetězec all. Například záznam týkající se všech podskupin skupiny comp.os můžete v poli grouplist uvést jako comp.so nebo comp.os.all.
Při zjišťování vypršení platnosti news z nějaké skupiny je její název v příslušném pořadí porovnán se všemi záznamy v souboru explist. Použije se první vyhovující záznam. Chceteli například po čtyřech dnech zrušit většinu obsahu diskusní skupiny comp s výjimkou skupiny comp.os.linux.announce, jejíž obsah si chcete ponechat týden, vytvoříte záznam pro druhou skupinu, který bude udávat sedmidenní platnost článků v ní, a za ním bude následovat záznam pro skupinu comp, který bude udávat platnost pouze čtyři dny.
Pole perm popisuje, zda se příslušný záznam týká moderovaných, nemoderovaných nebo všech skupin. Může nabývat hodnot m, u nebo x, které označují moderované, nemoderované a všechny skupiny.
Třetí pole, times, většinou obsahuje pouze jediné číslo. To je počet dnů, po jejichž uplynutí vyprší doba platnosti článků, které ji neměly explicitně nastavenu v poli Expires: v hlavičce článku. Všimněte si, že se jedná o počet dnů od data, kdy článek dorazil do vašeho systému, nikoliv od data jeho odeslání.
Pole times ovšem může být i složitější. Může obsahovat kombinaci až tří čísel, navzájem oddělených pomlčkou. První určuje počet dnů, které musí uplynout, aby se článek stal kandidátem na vyřazení. Jen zřídka se používá jiná hodnota než nulová. Druhé pole je Výše zmiňovaný implicitní počet dnů, po kterém vyprší platnost souboru. Třetí číslo specifikuje počet dnů, po kterých bude článek bezpodmínečně smazán, bez ohledu na to, zda má v hlavičce uvedeno pole Expires:. Uvedete-li pouze prostřední číslo, použijí se pro zbylé dvě pole implicitní hodnoty. Ty je možné specifikovat prostřednictvím speciálního záznamu /bounds/, který bude popsán dále.
Čtvrté pole, archive, určuje, zda má být příslušná diskusní skupina archivována, či nikoli. Pokud si archivaci nepřejete, pak zde uveďte pomlčku. V opačném případě zadejte buď úplnou cestu (odkazující na adresář), nebo znak at (@). Ten zastupuje implicitní archivní adresář, který pak musíte programu doexpire předat pomocí argumentu -a v příkazové řádce. Archivní adresář by měl vlastnit uživatel news. Když program doexpire archivuje článek řekněme ze skupiny comp.sources.unix, uloží ho do adresáře comp/sources/unix pod archivním adresářem a pokud neexistuje, vytvoří nový. Vlastní archivní adresář ovšem nevytvoří.
Program doexpire spoléhá na dva speciální záznamy ze souboru explist. Místo názvů diskusních skupin používají klíčová slova /bounds/ a /expired/. Záznam /bounds/ obsahuje implicitní hodnoty tří položek pole times, které jsme si před chvílí popsali.
Pole /expired/ určuje, jak dlouho bude systém C News uchovávat řádky v souboru history. Tato položka je nutná z toho důvodu, že systém C News neodstraní řádek s názvem příslušného článku ze souboru history ihned po jeho smazání, ale ponechá ho tam pro případ, že by po tomto datu přišel duplicitní článek. Pokud dostáváte články pouze z jediného systému, může být tato hodnota malá. V ostatních případech se pro sítě založené na protokolu UUCP doporučují použít hodnotu odpovídající dvěma týdnům, v závislosti na zkušenostech s prodlevami článků z těchto systémů.
Vzorový soubor explist s krátkými intervaly vypršení platnosti zde reprodukujeme:
# keep history lines for two weeks. Nobody gets more than three month.
/expired/ x 14 /bounds/ 0-1-90 # groups we want to keep longer than the rest
comp.os.linux.announce m 10 comp.os.linux x 5 alt.folklore.computers u 10 rec.humor.oracle m 10 soc.feminism m 10 # Archive *.sources groups
comp.sources,alt.sources x 5 @
# defaults for tech groups
comp,sci x 7 # enough for a long weekend
misc,talk x 4 # throw away junk quickly
junk x 1 # Archive *.sources groups
comp.sources,alt.sources x 5 @
# defaults for tech groups
comp,sci x 7 # enough for a long weekend
misc,talk x 4 # throw away junk quickly
junk x 1 # control messages are of scant interest, too
control x 1 # catch-all entry for the rest of it all x 2
V souvislosti s vypršením vyvstává několik potenciálních problémů. Váš program pro čtení news může například spoléhat na třetí pole aktivního souboru, které obsahuje číslo nejnižšího článku, který je k dispozici. Při vyřazování článků systém C News toto pole neaktualizuje. Pokud potřebujete (nebo chcete), aby toto pole odráželo aktuální stav, pak musíte po každém spuštění programu doexpire spustit i program updatemin.
Systém C News dále neprovádí kontrolu platnosti souborů procházením adresáře příslušné diskusní skupiny, ale pouze na základě souboru history.
Budou-li v souboru history nesprávné údaje, mohou články zůstat na vašem systému navždy, protože C News na ně prostě zapomenou.
Tento problém lze opravit pomocí skriptu addmissing, který najdete v adresáři /usr/lib/news/bin/maint a který přidá do souboru history chybějící články. Jiný skript, mkhistory, znovu vytvoří celý soubor history. Dříve než tento skript spustíte se nezapomeňte přihlásit jako uživatel news, jinak získáte soubor history, který bude pro systém C News nečitelný.
Chování systému C News řídí více souborů, ale jejich existence není pro jeho fungování životně důležitá. Všechny sídlí v adresáři /usr/lib/news. Nyní si je krátce popíšeme.
Každý řádek obsahuje název skupiny následovaný poštovní adresou moderátora (odsazenou tabulátorem).
Implicitní jsou dva speciální záznamy - backbone a internet. Oba označují (v notaci bang-path) cestu k nejbližšímu páteřnímu místu a systému, který rozumí adrese podle standardu RFC 822 (uživatel@hostitel). Implicitními záznamy jsou internet backbone.Máte-li nainstalován jeden z programů smail nebo sendmail, pak nemusíte záznam internet měnit, protože tyto programy rozumí adresování podle standardu RFC.
Záznam backbone se využije, když uživatel přispívá do moderované skupiny, jejíž moderátor není explicitně uveden. Je-li například název skupiny alt.sewer a záznam backbone obsahuje řetězec path!%s, pošle systém C News tento článek na adresu path!alt-sewer doufaje, že počítač backbone bude schopen článek předat dál. Jakou máte použít cestu zjistíte od správců news systému, který vás jimi zásobuje. Jako poslední útočiště můžete také použít adresu uunet.uu.net!%s.
distributions Tento soubor ve skutečnosti nepatří systému C News, ale používají ho některé programy pro čtení news a nntpd. Obsahuje seznam distribucí, které rozpozná váš systém, a popis jejich (zamýšleného) efektu. Například společnost Virtual Brewery používá soubor, který obsahuje následující záznamy:
world everywhere in the world
local Only local to this site
nl Netherlands only
mugnet MUGNET only
fr France only
de Germany only
brewery Virtual Brewery only
Protokol usenetových news rozeznává speciální kategoriš článků, které ze strany systému news evokují jisté odpovědi nebo akce. Takovýmto článkům říkáme řídicí zprávy. Poznáte je podle přítomnosti pole Control: v hlavičce článku, které obsahuje název řídicí operace, která se má provést. Existuje jich několik typů a všechny jsou obsluhovány skripty umístěnými v adresáři /usr/lib/news/ctl.
Většina z nich provede příslušnou akci automaticky v době, kdy je článek zpracován systémem C News, aniž by o tom informovaly správce news. Implicitně jsou správci předány pouze zprávy checkgroups, ale toto chování lze úpravou příslušných skriptů změnit.
Nejznámějším typem zprávy je zpráva cancel, s jejíž pomocí může uživatel zrušit článek, který dříve poslal. Pakliže tento článek dosud existuje, zajistí tato zpráva jeho efektivní odstranění z adresářů spool. Zpráva cancel je předána všem systémům, které dostávají news z příslušné skupiny, bez ohledu na to, zda příslušný článek již viděli či nikoli. To pro případ, že by se původní článek opozdil za rušící zprávou. Některé systémy news dovolují uživatelům rušit zprávy jiných osob; to je samozřejmě definitivní ne-ne.
Tyto dvě zprávy se týkají vytváření a rušení diskusních skupin. Nová skupina může být v "obvykléia hierarchiš vytvořena až poté, co to odsouhlasí uživatelé Usenetu. Pravidla týkající se hierarchie skupiny alt dovolují vzniknout něčemu, co se hodně podobá anarchiš. Více podrobností najdete ve skupinách news.announce.newusers a news.announce.newgroups. Nikdy neposílejte zprávu newgroup nebo rmgroup, pokud bezpodmínečně nevíte, že k tomu máte oprávnění.
Zprávy checkgroups posílají správci news, aby všechny systémy v síti provedly vzájemnou synchronizaci svých souborů active s realitou Usenetu. Komerční poskytovatelé internetových služeb by mohli například poslat tuto zprávu svým zákazníkům. Jednou měsíčně pošle moderátor skupiny comp.announce.newgroup "oficiálníic zprávu checkgroups pro hlavní hierarchie. Tato zpráva je ovšem poslána jako běžný článek, nikoliv jako řídicí zpráva. Chceteli provést operaci checkgroup, uložte tento článek do souboru, řekněme /tmp/check, odstraňte z něj vše kromě vlastní řídicí zprávy a předejte ho následujícím způsobem skriptu
checkgroups:
# su news -c "/usr/lib/news/bin/ctl/checkgroups" < /tmp/check
Tento příkaz aktualizuje váš soubor newsgroups, do kterého přidá skupiny uvedené v souboru localgroups. Původní soubor newsgroups bude přejmenován na newsgroups.bac. Všimněte si, že pošlete-li tuto zprávu lokálně, bude jen zřídka fungovat, protože program inews odmítne tak velký článek přijmout.
Když systém C News zjistí rozpory mezi seznamem checkgroups a souborem active, vytvoří seznam příkazů, které zajistí aktualizaci vašeho systému, a pošle ho správci news. Výstup má zpravidla následující podobu:
From news Sun Jan 30 16:18:11 1994
Date: Sun, 30 Jan 94 16:18 MET
From: news (News Subsystem)
To: usenet
Subject: Problems with your active file
The following newsgroups are not valid and should be removed.
alt.ASCII-art
bionet.molbio.gene-org
comp.windows.x.intrisics
de.answers
You can do this by executing the commands:
/usr/lib/news/bin/maint/delgroup alt.ASCII-art
/usr/lib/news/bin/maint/delgroup bionet.molbio.gene-org
/usr/lib/news/bin/maint/delgroup comp.windows.x.intrisics
/usr/lib/news/bin/maint/delgroup de.answers
The following newsgroups were missing.
comp.binaries.cbm
comp.databases.rdb
comp.os.geos
comp.os.qnx
comp.unix.user-friendly
misc.legal.moderated
news.newsites
soc.culture.scientists
talk.politics.crypto
talk.politics.tibet
Pokud od systému news obdržíte zprávu tohoto typu, pak jí slepě nevěřte. V závislosti na tom, kdo poslal zprávy checkgroups, může postrádat několik skupin až celé hierarchie. Skupiny byste tedy měli odstraňovat jen opatrně. Pokud zjistíte, že některé skupiny, jež chcete vést ve vašem systému, chybí, pak je musíte doplnit pomocí skriptu addgroup. Uložte seznam chybějících skupin do souboru a předejte ho následujícímu malému skriptu:
#!/bin/sh
cd /usr/lib/news
while read group; do
if grep -si "^$group[[:space:]].*moderated" newsgroup; then
mod=m
else
mod=y
fi
/usr/lib/news/bin/maint/addgroup $group $mod
done
Nakonec zde máme tři zprávy, které lze využít k získávání informací o Síťové topologiš. Jsou to zprávy sendsys, version a senduuname. Systém C News pošle po jejich obdržení odesílateli buď soubor sys, řetězec s verzí softwaru nebo výstup programu uuname(1). C News jsou při poskytování zpráv ohledně verzí velmi skoupé; vrátí pouze písmeno "C".
I zde platí, že tento typ zpráv byste neměli posílat, pokud si nejste absolutně jistí, že nemohou opustit vaši (regionální) Síť. Odpovědi na zprávy sendsys mohou snadno shodit Síť UUCP.
Jednoduchý způsob, jak šířit news v rámci lokální počítačové sítě, je uchovávat všechny news na ústředním hostiteli a relevantní soubory exportovat prostřednictvím souborového systému NFS, kdy programy pro čtení news mohou přímo procházet články. Výhodou této metody oproti využití protokolu NNTP je mnohem nižší režie spojená se získáváním a řazením článků. Protokol NNTP na druhé straně vítězí v heterogenní síti, kde se vybavení jednotlivých hostitelů výrazně liší nebo kde uživatelé nemají ekvivalentní účty na serveru.
Při použití souborového systému NFS musí být články zaslané lokálnímu hostiteli přesměrovány na centrální počítač, protože přístup k administrativním souborům by v opačném případě mohl vystavit systém nebezpečným podmínkám, které by způsobily nekonzistenci souborů. Nebo se můžete rozhodnout chránit vaši oblast spool tím, že ji exportujete jen pro čtení, což také vyžaduje přesměrování na centrální počítač.
Systém C News provádí tyto úkoly transparentně. Jakmile pošlete nějaký článek, váš program pro čtení news zpravidla spustí program inews, který vloží daný článek do systému news.
Tento příkaz podrobí článek několika kontrolám, doplní hlavičku a projde soubor server v adresáři /usr/lib/news. Pokud tento soubor existuje a obsahuje jiný název hostitele, než je název lokálního hostitele, spustí na tomto serveru prostřednictvím rsh program inews.
Protože tento skript používá několik binárních příkazů a podporuje soubory systému C News, musíte mít buď lokálně nainstalován C News, nebo si připojit software news ze serveru.
Aby spojení rsh správně fungovalo, musí mít každý uživatel na serveru ekvivalentní účet, tj. takový, na který se může přihlásit bez hesla.
Ujistěte se, že název hostitele v souboru server přesně odpovídá výstupu příkazu hostname(1) na serveru. Jinak by se totiž systém C News při doručování článku navždy zacyklil.
Navzdory složitosti systému C News může být život jeho správce poměrně snadný, protože tento systém nabízí širokou paletu nástrojů pro údržbu. Některé z nich jsou určeny pro pravidelné spouštění z cron, například newsdaily. Používání těchto skriptů významně snižuje nároky na denní péči o vaši instalaci C News.
Nebude-li uvedeno jinak, jsou následující příkazy umístěny v adresáři /usr/lib/news /bin/maint. Nezapomeňte, že před spuštěním těchto příkazů, se musíte přihlásit jako uživatel news. Pokud byste tyto příkazy spustili jako superuživatel, mohlo by dojít k tomu, že se tyto soubory stanou pro systém C News nepřístupnými.
Druhý argument má stejný význam, jako příznak v souboru active a může znamenat, že do dané skupiny může přispívat kdokoliv (g), nikdo (n), že je moderovaná (m) nebo že se jedná o alias pro jinou skupinu (=realgroup).
Tento příkaz možná využijete také v případě, kdy první články nově vytvořené skupiny dorazí dříve, než řídicí příkaz newgroup, který má vyvolat její vytvoření.
Rozbalování dávek vypnete následujícím způsobem /usr/lib/news/bin/input/newsrunning off
Rozbalování znovu zapnete, když místo řetězce off použijete on.