Copyright © 1996 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux: Wegweiser durch das Netzwerk" dann klicken Sie hier.


Kapitel 17
C News

Eines der bekanntesten Softwarepakete für Netnews ist C News. Es wurde für Sites entwickelt, die News über UUCP-Links verteilen. Dieses Kapitel behandelt die zentralen Konzepte von C News und bespricht die grundlegenden Installations- und Verwaltungsaufgaben.

C News speichert die meisten seiner Konfigurations-Dateien im Verzeichnis /usr /lib/news und die meisten seiner Binaries im Verzeichnis /usr/lib/news/bin. Artikel werden unter /var/spool/news gehalten. Sie sollten sicherstellen, daß praktisch alle Dateien in diesem Verzeichnis dem Benutzer news und der Gruppe news angehören. Die meisten Probleme entstehen durch Dateien, auf die C News nicht zugreifen kann. Machen Sie es sich zur Regel, über den Befehl su der Benutzer news zu werden, bevor Sie irgendetwas in diesem Verzeichnis anfassen. Die einzige Ausnahme ist setnewsids, mit dem einige News-Programme Ihre echte Benutzer-ID einstellen. Dieses Programm muß root gehören und das Setuid-Bit gesetzt haben.

In diesem Kapitel beschreiben wir ausführlich die Konfigurations-Dateien von C News und zeigen Ihnen, was Sie tun müssen, um Ihre Site am Laufen zu halten.

News ausliefern

Artikel können an C News auf verschiedene Arten übergeben werden. Postet ein lokaler Benutzer einen Artikel, übergibt der Newsreader ihn üblicherweise an den Befehl inews, der die Header-Informationen dann vervollständigt. News von anderen Sites, gleichgültig, ob ein einziger Artikel oder ein ganzer Stapel (Batch), werden an den Befehl rnews übergeben, der sie im Verzeichnis /var/spool/news/in. coming ablegt. Von dort werden sie zu einem späteren Zeitpunkt von newsrun übernommen. Bei beiden Techniken landet der Artikel aber schließlich beim Befehl relaynews.

Bei jedem Artikel überprüft der relaynews-Befehl zuerst, ob der Artikel bereits auf der lokalen Site gesehen wurde, indem er die Message-ID in der Datei history nachschaut. Doppelte Artikel werden aussortiert. Danach sieht sich relaynews die Header-Zeile Newsgroups: an, um herauszufinden, ob die lokale Site Artikel aus einer dieser Gruppen angefordert hat. Wenn ja, und wenn die News-Gruppe in der Datei active aufgeführt ist, versucht relaynews den Artikel im entsprechenden Verzeichnis des News-Spoolbereichs zu speichern. Wenn das Verzeichnis nicht existiert, wird es angelegt. Der Message-ID des Artikels wird dann in die history-Datei aufgenommen. Anderenfalls sortiert relaynews den Artikel aus.

Ist relaynews nicht in der Lage, einen eingehenden Artikel zu speichern, weil dieser in eine Gruppe gepostet wurde, die nicht in Ihrer active-Datei aufgeführt ist, wird der Artikel in der Gruppe junk untergebracht.(1) relaynews prüft auch, ob die Artikel veraltet sind bzw. ob ein fehlerhaftes Datum vorliegt, und sortiert sie entsprechend aus. Eingehende Batches, die aus irgendeinem anderen Grund nicht bearbeitet werden können, werden nach /var/spool/news/in.coming/bad verschoben, und eine entsprechende Fehlermeldung wird in die Log-Datei geschrieben.

Danach werden die Artikel an alle anderen Sites verteilt, die News aus diesen Gruppen anfordern. Dabei wird das für jede Site spezifizierte Transportverfahren benutzt. Um sicherzustellen, daß die Artikel nicht an eine Site übertragen werden, die diese bereits gesehen hat, wird jede Ziel-Site mit dem Header-Feld Path: des Artikels verglichen. Dieses enthält eine Liste der Sites in Bang-Pfad-Notation, die der Artikel bislang passiert hat. Nur wenn der Name der Ziel-Site nicht in dieser Liste erscheint, wird der Artikel dorthin gesendet.

C News wird üblicherweise verwendet, um News zwischen UUCP-Sites zu verteilen, obwohl es auch möglich ist, es in einer NNTP-Umgebung einzusetzen. Um News an eine andere Site auszuliefern -- gleichgültig, ob es sich dabei um einzelne Artikel oder komplette Batches handelt -- wird uux verwendet, das rnews auf dem anderen Rechner ausführt, wobei die Artikel oder der Batch über die Standardeingabe eingespeist werden.

Ist der Batch-Betrieb für eine bestimmte Site aktiviert, überträgt C News die eingehenden Artikel nicht direkt, sondern hängt den Pfadnamen an eine Datei (üblicherweise out.going/site/togo) an. Ein Batch-Programm wird regelmäßig über die crontab gestartet(2), das die Artikel in einer oder mehreren Dateien unterbringt, diese optional komprimiert und sie dann an rnews auf der anderen Site übergibt.

Abbildung 17--1 zeigt den Fluß von News durch relaynews. Artikel können an die lokale Site (bezeichnet durch ME), über E-Mail zu einer Site namens ponderosa und zu einer Site namens moria übertragen werden, für die der Batch-Betrieb aktiviert ist.

Abbildung 17-1. Flußvon News durch relaynews

Installation

Zur Installation von C News entpacken Sie zunächst das tar-Archiv mit allen Programmen und Konfigurationsdateien, wenn Sie dies nicht bereits getan haben. Dann müssen Sie die nachfolgend aufgeführten Konfigurations-Dateien editieren, die alle in /usr/lib/news zu finden sind. Die einzelnen Dateiformate werden in den folgenden Abschnitten behandelt.
sys
Sie müssen wahrscheinlich die Zeile ME modifizieren, die Ihr System beschreibt, obwohl die Eingabe all/all immer eine sichere Sache ist. Sie müssen auch eine Zeile für jede Site hinzufügen, die Sie mit News versorgen.

Wenn Sie keine anderen Sites mit News versorgen, benötigen Sie nur eine Zeile, die alle lokal generierten Artikel an die Site übergibt, die Sie mit News versorgt (an Ihren sog. Feed). Nehmen wir an, daß moria Ihr Feed ist, dann sollte Ihre sys-Datei wie folgt aussehen:

  ME:all/all::
  moria/moria.orcnet.org:all/all,!local:f:
organization
Der Name Ihrer Organisation, beispielsweise »Virtuelle Brauerei GmbH«. Auf Ihrem Rechner zu Hause sollten Sie »private Site,« oder etwas ähnliches angeben. Für die meisten Leute ist Ihr Rechner nicht richtig konfiguriert, solange diese Datei nicht angepaßt wurde.

newsgroups
Eine Liste mit allen News-Gruppen sowie einer einzeiligen Beschreibung der jeweiligen Funktion. Die Beschreibungen werden häufig von Ihrem Newsreader verwendet, wenn eine Liste aller von Ihnen abonnierten Gruppen ausgegeben wird.

mailname
Der Mailname Ihrer Site, z. B. vbrew.com.

whoami
Der Name Ihrer Site für News-Zwecke. Häufig wird der UUCP-Sitename, z. B. vbrew, verwendet.

explist
Diese Datei sollte die von Ihnen gewünschten Zeiten enthalten, nach denen Artikel bestimmter News-Gruppen ungültig werden. Festplattenplatz spielt hier wahrscheinlich eine entscheidende Rolle.

Um eine erste Hierarchie von News-Gruppen zu erzeugen, besorgen Sie sich die active- und newsgroups-Datei von der Site, die Sie mit News versorgt und installieren Sie diese in /usr/lib/news. Sorgen Sie dafür, daß die Dateien newsgehören und den Modus 644 haben. Entfernen Sie alle to.*-Gruppen aus der active-Datei und fügen Sie to.my-site und to.feed-site ein. Auch junk und control müssen enthalten sein. Die Gruppen to.* werden normalerweise verwendet, um ihave/sendme-Nachrichten auszutauschen, Sie sollten sie aber auf jeden Fall einrichten, gleichgültig, ob Sie ihave/sendme verwenden wollen oder nicht. Ersetzen Sie nun mit den folgenden Befehlen alle Artikelnummern im zweiten und dritten Feld von active:

# cp active active.old
# sed 's/ [0-9]* [0-9]* / 0000000000 00001 /' active.old > active
# rm active.old
Der zweite Befehl startet sed, einen meiner bevorzugten UNIX-Befehle. Der Aufruf ersetzt zwei Strings von Ziffern durch einen String mit Nullen bzw. den String 000001.

Zum Schluß müssen Sie das News-Spoolverzeichnis und die für die ein- und ausgehenden News benötigten Unterverzeichnisse erzeugen:

# cd /var/spool
# mkdir news news/in.coming news/out.going
# chown -R news.news news
# chmod -R 755 news
Wenn Sie mit einer älteren Release von C News arbeiten, müssen Sie möglicherweise auch das Verzeichnis out.master in Ihrem News-Spoolverzeichnis anlegen.

Wenn Sie einen Newsreader verwenden, der nicht aus C News, sondern aus einer anderen Distribution stammt, als der, aus der Sie Ihr C News haben, ist es möglich, daß einige die News in /usr/spool/news und nicht in /var/spool/news spoolen. Falls Ihr Newsreader also keine Artikel finden kann, erzeugen Sie einen symbolischen Link von /usr/spool/news auf /var/spool/news.

Nun sind Sie in der Lage, News zu empfangen. Sie müssen übrigens keine anderen als die oben angegebenen Verzeichnisse erzeugen, weil C News jedesmal, wenn es einen Artikel von einer Gruppe empfängt, für die noch kein Verzeichnis existiert, eines anlegt.

Tatsächlich passiert das mit allen Gruppen, in die ein Artikel gepostet wurde. Nach einer Weile werden Sie sehen, daß Ihr News-Spoolverzeichnis mit Verzeichnissen für Gruppen wie beispielsweise alt.lang.teco vollgepflastert ist, die Sie nie abonniert haben. Sie können dies verhindern, indem Sie alle ungewollten Gruppen aus active entfernen oder regelmäßig ein Shell-Script starten, das alle leeren Verzeichnisse unter /var/spool/news löscht (natürlich mit Ausnahme von out.going und in.coming).

C News benötigt einen Benutzer, an den Fehlermeldungen und Statusberichte geschickt werden können. Standardmäßig ist dies der Benutzer usenet. Wenn Sie diese Voreinstellung beibehalten, müssen Sie ein oder mehrere Aliases einrichten, damit alle Nachrichten an die entsprechende(n) Person(en) weitergeleitet werden. Sie können aber auch alle Mails an einen anderen Benutzer schicken, indem Sie die Umgebungsvariable NEWSMASTER auf den entsprechenden Namen setzen. Dies müssen Sie in der news-crontab und jedesmal, wenn Sie ein Administrations-Tool von Hand aufrufen, tun. Das Einrichten eines Alias ist also wahrscheinlich einfacher. Lesen Sie dazu Kapitel 14 und Kapitel 15.

Während Sie die Datei /etc/passwd editieren, sollten Sie sicherstellen, daß für alle Benutzerinnen der echte Name im Feld pw_gecos der Paßwort-Datei eingetragen ist (dies ist das vierte Feld). Es ist eine Frage der Usenet-Netiquette, daß der echte Name des Absenders im From:-Feld des Artikels erscheint. Wenn Sie einen Mailer eingerichtet haben, haben Sie das wahrscheinlich sowieso schon getan.

Die Datei sys

Die Datei sys ist in /usr/lib/news beheimatet und kontrolliert, welche Hierarchien Sie empfangen und weiterleiten. Obwohl es Verwaltungswerkzeuge wie addfeed und delfeed gibt, denke ich doch, daß es besser ist, diese Datei von Hand zu verwalten.

Die sys-Datei enthält Einträge für jede Site, an die Sie News weiterleiten sowie eine Beschreibung der Gruppen, die Sie akzeptieren. Ein Eintrag sieht folgendermaßen aus:

site[/ausschlüsse]:gruppenliste[/distliste][:optionen[:befehle]]
Einträge können durch einen Backslash (\) über mehrere Zeilen verteilt werden. Das Doppelkreuz (#) leitet einen Kommentar ein.
site
Der Name der Site, auf die der Eintrag zutrifft. Normalerweise wird der UUCP-Name der Site gewählt. Es muß auch ein Eintrag für Ihre Site in sys stehen, weil Sie sonst selbst keine Artikel empfangen können.

Der spezielle Sitename ME steht für Ihre Site. Der ME-Eintrag definiert alle Gruppen, die Sie lokal speichern wollen. Artikel, die über die ME-Zeile nicht zugeordnet werden können, wandern in die junk-Gruppe.

Weil C News site mit den Sitenamen im Path:-Headerfeld vergleicht, müssen Sie sicherstellen, daß sie auch stimmen. Manche Sites verwenden den voll qualifizierten Domainnamen oder ein Alias wie news.site.domain. Um zu verhindern, daß Artikel an diese Sites zurückgeliefert werden, müssen Sie eine durch Kommata getrennte Liste erstellen, in der diese Sites ausgeschlossen werden.

Beispielsweise würde der Eintrag für die Site moria im site-Feld den String moria/moria.orcnet.org enthalten.

gruppenliste
Eine durch Kommata getrennte Abonnement-Liste aller Gruppen und Hierarchien für diese bestimmte Site. Eine Hierarchie wird durch Angabe des Hierarchie-Präfixes spezifiziert (beispielsweise comp.os für alle Gruppen, die mit diesem Präfix beginnen), dem optional das Schlüsselwort all folgen kann (z. B. comp.os.all).

Hierarchien oder Gruppen können von der Weiterleitung ausgeschlossen werden, indem ihnen ein Ausrufezeichen vorangestellt wird. Wird eine News-Gruppe mit dieser Liste verglichen, wird immer die größte Übereinstimmung verwendet. Wenn beispielsweise gruppenliste die folgende Liste enthalten würde:

!comp,comp.os.linux,comp.folklore.computers
würden keine Gruppen der comp-Hierarchie außer comp.folklore.computers und alle Gruppen unter comp.os.linux an diese Site weitergegeben werden.

Wenn die Site alle News weitergeleitet haben möchte, die auch Sie selbst empfangen, geben Sie einfach all als gruppenliste an.

distliste
Dieser Wert ist von der gruppenliste durch einen Slash abgetrennt und enthält eine Liste von weiterzuleitenden Distributionen. Auch hier können Sie wieder verschiedene Distributionen durch Voranstellen eines Ausrufezeichens unterbinden. Durch das Schlüsselwort all sind alle Distributionen gemeint. Wird keine distliste angegeben, wird automatisch all angenommen.

Beispielsweise könnten Sie die Distributionsliste all,!local benutzen, um zu verhindern, daß News, die nur zur lokalen Verwendung bestimmt sind, an andere Sites übertragen werden.

Es gibt normalerweise wenigstens zwei Distributionen: world, der Standardverteiler, wenn keiner vom Benutzer spezifiziert wurde, und local. Es kann weitere Distributionen geben, die für eine bestimmte Region, Land, Staat etc. gelten. Außerdem gibt es noch zwei Distributionen, die nur von C News verwendet werden. Diese sind sendme und ihave, die für das sendme/ihave-Protokoll Anwendung finden.

Die Verwendung von Distributionen ist Thema zahlreicher Debatten. Zum einen erzeugen manche Newsreader wirre Distributionen, indem sie einfach Top-Level-Hierarchien wie beispielsweise comp verwenden, wenn sie in comp.os.linux posten. Auch Distributionen für bestimmte Regionen sind häufig fragwürdig, weil News auch außerhalb Ihrer Region wandern können, wenn sie über das Internet geschickt werden.(3) Distributionen, die sich dagegen an eine Organisation wenden, sind durchaus sinnvoll; so gilt es beispielsweise zu verhindern, daß vertrauliche Informationen ein Unternehmens-Netzwerk verlassen. Dieses Ziel wird allerdings besser erreicht, indem eine separate News-Gruppe oder Hierarchie angelegt wird.

optionen
Hiermit beschreiben Sie verschiedene Parameter für den Feed. Dieses Feld kann leer sein oder eine Kombination der folgenden Schlüsselwörter enthalten:

F
Diese Option aktiviert den Batch-Betrieb.

f
Diese Option ist nahezu identisch mit F, erlaubt es C News aber, die Größe der ausgehenden Batches präziser zu berechnen.

I
Mit dieser Option erzeugt C News eine Artikelliste, die von ihave/sendme verwendet werden kann. Weitere Modifikationen werden in den Dateien sys und batchparms benötigt, um ihave/sendme zu aktivieren.

n
Dies erzeugt Batch-Dateien für die aktive NNTP-Übertragung wie z. B. mit nntpxmit (siehe Kapitel 18, Eine Einführung in NNTP). Die Batch-Dateien enthalten den Dateinamen des Artikels zusammen mit der Message-ID.

L
Damit weisen Sie C News an, nur Dateien zu übertragen, die auf Ihrer Site gepostet wurden. Dieser Option kann eine Dezimalzahl n folgen, die dafür sorgt, daß C News Artikel nur dann überträgt, wenn diese innerhalb von n Hops von Ihrer Site entfernt gepostet wurden. C News ermittelt die Anzahl der Hops aus dem Path:-Feld.

u
Weist C News an, Batches nur von Artikeln aus nicht moderierten Gruppen zu erstellen.

m
Weist C News an, Batches nur von Artikeln aus moderierten Gruppen zu erstellen.

Sie dürfen maximal eine der Optionen F, f, I oder n benutzen.

befehle
Dieses Feld enthält einen Befehl, der bei jedem Artikel ausgeführt wird, solange der Batch-Betrieb nicht aktiviert ist. Der Artikel wird über die Standardeingabe übergeben. Diese Möglichkeit sollte nur bei sehr kleinen Feeds verwendet werden, weil sonst die Last auf beiden Systemen zu hoch wird.

Der Standardbefehl lautet:

uux -- -r -z remote-system!rnews
Damit wird rnews auf dem entfernten System gestartet und der Artikel über die Standardeingabe übergeben.

Der für in diesem Feld angegebene Befehle verwendete Standard-Suchpfad ist /bin:/usr/bin:-/usr/lib/news/bin/batch. Das letzte Verzeichnis enthält eine Reihe von Shell-Scripten, deren Namen mit via beginnen. Diese werden später in diesem Kapitel noch kurz besprochen.

Ist der Batch-Betrieb über eine der Optionen F, f, I oder n aktiviert worden, erwartet C News in diesem Feld einen Dateinamen anstelle eines Befehls. Beginnt der Dateiname nicht mit einem Slash (/), wird angenommen, daß er relativ zu /var/spool/news/out.going ist. Ist das Feld leer, wird standardmäßig auf remote-system/togo zurückgegriffen.

Wenn Sie C News einrichten, müssen Sie höchstwahrscheinlich Ihre eigene sys-Datei schreiben. Um Ihnen die Sache zu erleichtern, finden Sie nachfolgend eine Beispieldatei für vbrew.com, von der Sie übernehmen können, was Sie benötigen.

# Wir nehmen alles, was man uns gibt.
ME:all/all::
# Wir senden alles, was wir empfangen, an moria, außer lokalen und
# Brauerei-internen Artikeln. Wir arbeiten im Batch-Betrieb.
moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f:
# Wir übertragen comp.risks über Mail an jack@ponderosa.uucp.
ponderosa:comp.risks/all::rmail jack@ponderosa.uucp
# swim bekommt einen kleinen Feed.
swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f:
# Mail-Map-Artikel werden für spätere Bearbeitung gespeichert.
usenet-maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch

Die Datei active

Die Datei active ist unter /usr/lib/news zu finden und enthält eine Liste aller Ihrer Site bekannten Gruppen sowie aller Artikel, die momentan online sind. Sie werden diese Datei nur selten bearbeiten müssen, aber wir erklären sie an dieser Stelle der Vollständigkeit halber. Einträge haben die folgende Form:
newsgruppe Obergrenze Untergrenze rechte
newsgruppe ist der Gruppenname. Untergrenze und Obergrenze stehen für die niedrigste bzw. höchste Nummer von Artikeln, die gerade verfügbar sind. Sind gerade keine Artikel vorhanden, ist Untergrenze gleich Obergrenze+1.

Zumindest ist das so vorgesehen. Allerdings wird dieses Feld aus Effizienzgründen von C News nicht aktualisiert. Das wäre wiederum kein so großer Verlust, wenn nicht einige Newsreader von diesem Wert abhängig wären. Beispielsweise überprüft trn dieses Feld, um zu sehen, ob es irgendwelche Artikel aus der Thread-Datenbank löschen kann. Um das Untergrenze-Feld zu aktualisieren, müssen Sie daher regelmäßig den Befehl updatemin (bei älteren Versionen von C News das upact-Script) ausführen.

rechte ist ein Parameter, der detailliert beschreibt, welche Zugriffsrechte Benutzern bei dieser Gruppe zustehen. Er hat einen der folgenden Werte:

y
Benutzer dürfen in diese Gruppe posten.

n
Benutzer dürfen nicht in diese Gruppe posten. Die Artikel dieser Gruppe dürfen aber trotzdem gelesen werden.

x
Diese Gruppe ist lokal deaktiviert worden. Dies kommt manchmal vor, wenn News-Administratoren (oder deren Vorgesetzte) weltanschauliche Vorbehalte gegen bestimmten Gruppen haben.

Artikel, die für diese Gruppe empfangen werden, werden nicht lokal gespeichert, obwohl sie an die Sites weitergegeben werden, die sie angefordert haben.

m
Bezeichnet eine moderierte Gruppe. Versucht ein Benutzer, eine Nachricht in diese Gruppe zu posten, wird ein intelligenter Newsreader ihm einen Hinweis geben und den Artikel statt dessen an den Moderator schicken. Die Adresse des Moderators wird aus der Datei moderators in /usr/lib/news gelesen.

=reale-gruppe
Kennzeichnet newsgruppe als lokales Alias für die Gruppe reale-gruppe. Alle Artikel, die in newsgruppe gepostet werden, werden in diese Gruppe umgeleitet.

Bei C News müssen Sie auf diese Datei in der Regel nicht direkt zugreifen. Gruppen können über die Befehle addgroup und delgroup lokal erzeugt und gelöscht werden (siehe den nachfolgenden Abschnitt, »Verwaltungsaufgaben und -Tools«). Die Control-Message newgroup erzeugt eine Gruppe im gesamten Usenet, während die Control-Message rmgroup eine Gruppe löscht. Senden Sie eine solche Nachricht niemals selbst! Anweisungen zum Anlegen einer neuen News-Gruppe finden Sie in den monatlichen Postings in news.announce.newusers.

Eine sehr eng mit active verknüpfte Datei ist active.times. Jedesmal wenn eine Gruppe angelegt wird, speichert C News eine Notiz in dieser Datei, die das Datum der Erzeugung enthält, ob dies über eine newgroup-Control-Message oder lokal erfolgte, und wer sie erzeugte. Diese Informationen können dann von Newsreadern verwendet werden, die die Benutzer über neu erzeugte Gruppen informieren wollen. Außerdem wird sie vom NNTP-Befehl NEWGROUPS genutzt.

Stapelverarbeitung von Artikeln (Batching)

News-Batches verwenden ein bestimmtes Format, das für B News, C News und INN identisch ist. Jedem Artikel wird eine Zeile wie die folgende vorangestellt:
#! rnews größe
größe bezeichnet die Anzahl Bytes in diesem Artikel. Bei Batch-Kompression wird die Datei als Ganzes komprimiert und eine weitere Zeile vorangestellt, die angibt, welches Programm zum Entpacken verwendet werden soll. Das Standard-Kompressionstool ist compress, was durch folgende Zeile gekennzeichnet wird:
#! cunbatch
Manchmal, wenn Batches über E-Mail-Software übertragen werden, die das achte Bit von allen Daten entfernt, wird ein komprimierter Batch durch die sogenannte c7-Kodierung; geschützt. Diese Batches sind durch c7unbatch markiert.

Wird ein Batch an rnews auf einer anderen Site übergeben, werden diese Markierungen geprüft und der Stapel wird entsprechend korrekt verarbeitet. Manche Sites verwenden auch andere Kompressions-Tools wie gzip und stellen den so komprimierten Daten zunbatch voran. C News kann mit solchen Headern nicht umgehen, da diese dem Standard nicht entsprechen. Sie müssen die Quelltexte entsprechend modifizieren, um sie zu unterstützen.

Bei C News wird der Batch-Betrieb über /usr/lib/news/bin/batch/sendbatches abgewickelt. Dabei wird eine Liste von Artikeln aus der Datei site/togo gelesen, aus denen dann mehrere News-Batches erzeugt werden. Der Befehl sollte einmal in der Stunde oder sogar noch häufiger ausgeführt werden, wenn Sie ein hohes Datenaufkommen haben. Kontrolliert wird der Batch-Betrieb über die Datei batchparms in /usr/lib/news. Diese Datei beschreibt die maximal erlaubte Batch-Größe für jede Site, das zur Stapelverarbeitung und optional zur Komprimierung zu verwendende Programm sowie die zur Auslieferung zu benutzende Transportart. Sie können Batch-Parameter für jede einzelne Site einstellen, aber auch Standardwerte für Sites vorgeben, die nicht explizit aufgeführt sind.

Um die Stapelverarbeitung für eine bestimmte Site durchzuführen, müssen Sie den folgenden Befehl verwenden:

# su news -c "/usr/lib/news/bin/batch/sendbatches site"
Ohne Angabe von Argumenten verarbeitet sendbatches alle Batch-Queues. Wie das Wort »alle« interpretiert wird, hängt von der Präsenz eines Standardeintrags in batchparms ab. Ist einer vorhanden, werden alle Verzeichnisse in /var/spool/news /out.going geprüft. Andernfalls arbeitet es sich durch alle Einträge der batchparms hindurch. Sucht sendbatches das Verzeichnis out.going ab, werden nur solche Verzeichnisse als Sitenamen interpretiert, die keine Punkte oder »at«-Zeichen (@) enthalten.

Wenn Sie C News installieren, finden Sie höchstwahrscheinlich eine Version von batchparms in Ihrer Distribution, die einen sinnvollen Standardeintrag enthält, so daß gute Aussichten bestehen, daß Sie diese Datei gar nicht anfassen müssen. Falls Sie es doch tun müssen, beschreiben wir das Format dieser Datei. Jede Zeile besteht aus sechs Feldern, die durch Leerzeichen oder Tabulatoren voneinander getrennt sind:

site größe max batcher muncher transport
site ist der Name der Site, für die dieser Eintrag gilt. Die Datei togo für diese Site muß in out.going/togo im Spool-Verzeichnis zu finden sein. Der Site-Name /default/ bezeichnet den Standardeintrag.

größe ist die maximale Größe von erzeugten Artikel-Batches (vor der Komprimierung). Bei einzelnen Artikeln, die größer als dieser Wert sind, macht C News eine Ausnahme und erzeugt einen einzelnen Batch.

max enthält die maximale Zahl der erzeugten und zum Transfer angewiesenen Batches, bevor der Batch-Betrieb für diese Site vorübergehend eingestellt wird. Das ist dann sinnvoll, wenn eine andere Site für lange Zeit heruntergefahren sein sollte, weil auf diese Weise verhindert wird, daß C News Ihre UUCP-Spoolverzeichnisse mit Abermillionen von News-Batches übersät.

C News ermittelt die Anzahl wartender Batches über das queulen-Script in /usr/lib /news/bin. Vince Skahans newspak-Release sollte ein Script für BNU-kompatible UUCP-Versionen enthalten. Wenn Sie mit einer anderen Art von Spool-Verzeichnissen arbeiten, beispielsweise bei Taylor-UUCP, müssen Sie Ihr eigenes Script schreiben.(4)

Das Feld batcher enthält den Befehl, der verwendet wird, um aus der Liste von Artikeln in der togo-Datei einen Batch zu erzeugen. Bei normalen Feeds ist dies üblicherweise batcher. Für andere Zwecke können alternative Batcher verwendet werden. Beispielsweise verlangt das ihave/sendme-Protokoll, daß die Artikelliste in ihave- oder sendme-Control-Messages umgewandelt wird, die in die News-Gruppe to.site gepostet werden. Dies wird durch batchih und batchsm erledigt.

Das Feld muncher enthält den Befehl, der zur Komprimierung verwendet wird. Üblicherweise ist dies compcun, ein Script, das einen komprimierten Batch erzeugt.(5) Alternativ könnten Sie auch ein Script verwenden, das gzip verwendet, beispielsweise gzipcun (um es deutlich zu sagen: Sie müssen es selbst schreiben). Sie müssen sicherstellen, daß uncompress auf dem anderen Rechner so gepatcht ist, daß es mit gzip komprimierte Dateien erkennt.

Falls die andere Site nicht über einen uncompress-Befehl verfügt, können Sie nocomp angeben. In diesem Fall wird keine Komprimierung durchgeführt.

Das letzte Feld, transport, beschreibt die zu verwendende Transportart. Eine Reihe von Standardbefehlen, deren Namen mit via beginnen, stehen für verschiedene Transportarten bereit. sendbatches übergibt ihnen den Namen der Ziel-Site in der Kommandozeile. Beim /default/-Eintrag generiert es den Site-Namen aus dem site-Feld, indem es alle Zeichen ab dem ersten Punkt oder Slash abschneidet. Beim Eintrag /default/ werden statt dessen die Verzeichnisnamen aus out.going verwendet.

Die beiden Befehle viauux und viauuxz nutzen uux, um rnews auf dem anderen System auszuführen Der zweite setzt dabei die Option -z (für ältere Versionen) von uux. Damit wird verhindert, daß für jeden übertragenen Artikel Erfolgsmeldungen zurückgeliefert werden. Ein anderer Befehl, viamail, verschickt Artikel-Batches per Mail an den Benutzer rnews des entfernten Systems. Natürlich ist es bei dieser Methode notwendig, daß das entfernte System die gesamte Post für rnews an das lokale News-System weitergibt. Eine komplette Liste der möglichen Transportarten finden Sie in der newsbatch-Manpage.

Alle Befehle in den letzten drei Feldern müssen entweder in out.going/site oder in /usr/lib/news/bin/batch zu finden sein. Bei den meisten handelt es sich um Scripten, die Sie einfach um neue Tools für Ihre persönlichen Bedürfnisse erweitern können. Aufgerufen werden sie über eine Pipe. Die Liste der Artikel wird dem Batcher über die Standardeingabe übergeben, der daraus den Batch erzeugt und an die Standardausgabe weiterleitet. Diese wird über eine Pipe an den Muncher weitergeleitet und so weiter.

Eine Beispieldatei ist nachfolgend aufgeführt.

# batchparms-Datei für die Brauerei
# site        | größe  |max    |batcher  |muncher    |transport
#-------------+--------+-------+---------+-----------+-----------
/default/       100000  22      batcher   compcun     viauux
swim             10000  10      batcher   nocomp      viauux

News und Expiring

Bei B News wurden alte Artikel mit Hilfe des Programms expire entfernt. Als Argumente wurden eine Liste von News-Gruppen sowie eine Zeitspanne übergeben, nach denen Artikel gelöscht werden sollten. Um verschiedene Hierarchien unterschiedlich lange vorzuhalten, mußte man ein Script schreiben, das expire für jede Hierarchie einzeln aufrief. C News bietet Ihnen hierfür eine bequemere Lösung. In einer Datei namens explist können Sie News-Gruppen zusammen mit den Zeitintervallen, nach denen jeweils gelöscht werden soll, festhalten. Ein Befehl namens doexpire wird dann üblicherweise einmal pro Tag von cron aus gestartet, der dann alle Gruppen entsprechend der Liste bereinigt. Gelegentlich möchten Sie Artikel aus verschiedenen Gruppen behalten, selbst wenn die Ablaufzeit bereits überschritten wurde. Beispielsweise könnten Sie alle Programme aus comp.sources.unix aufheben wollen. Dies wird als Archivierung bezeichnet. explist erlaubt Ihnen die Markierung von zur Archivierung bestimmten Gruppen.

Ein Eintrag in explist hat das folgende Format:

gruppenliste rechte zeiten archiv
gruppenliste ist eine durch Kommata unterteilte Liste der News-Gruppen, für die dieser Eintrag gilt. Hierarchien können durch das Gruppenpräfix spezifiziert werden, dem optional das Schlüsselwort all folgen kann. So können Sie etwa für einen Eintrag, der für alle Gruppen unter comp.os gilt, sowohl comp.os als auch comp.os.all angeben.

Werden Artikel aus einer Gruppe gelöscht, wird der Name nacheinander mit allen Einträgen in explist verglichen. Der erste passende Eintrag wird dann verwendet. Um beispielsweise den größten Teil von comp nach vier Tagen zu löschen, mit Ausnahme von comp.os.linux.announce, die erst nach einer Woche entfernt werden sollen, müssen Sie einfach einen Eintrag mit einer Frist von sieben Tagen für letztere definieren, dem der Eintrag von comp folgt, bei dem nur vier Tage angegeben werden.

Das Feld rechte legt fest, ob der Eintrag für moderierte, unmoderierte oder beliebige Gruppen gilt. Dieses Feld kann einen der Werte m, u oder x annehmen, was entsprechend moderiert, unmoderiert oder beliebig bedeutet.

Das dritte Feld, zeiten, enthält üblicherweise nur eine Zahl. Die Zahl bestimmt die Anzahl von Tagen, nach denen ein Artikel für ungültig erklärt wird. Diese Ablaufzeit kann durch eine explizite Ablaufzeit im Feld Expires: des Artikel-Headers überschrieben werden. Beachten Sie, daß diese Zahl die Ablaufzeit nach dem Eintreffen auf Ihrer Site bestimmt und sich nicht an der Zeit des Postings orientiert.

Das zeiten-Feld kann aber auch komplexer sein. Es kann eine Kombination von bis zu drei Zahlen enthalten, die voneinander durch einen Bindestrich getrennt sind. Die erste Zahl bestimmt die Anzahl von Tagen, die ein Artikel mindestens erhalten bleibt. Es ist kaum sinnvoll, diesen Wert auf etwas anderes all null zu setzen. Das zweite Feld enthält die bereits oben beschriebene Zahl von Tagen, nach denen ein Artikel gelöscht wird. Der dritte Wert bestimmt die bedingungslose Ablaufzeit eines Artikels, gleichgültig, ob ein Expires:-Feld existiert oder nicht. Wird nur der mittlere Wert angegeben, werden für die beiden anderen Standardwerte eingesetzt. Diese können mit dem Spezialeintrag /bounds/ bestimmt werden, der später noch beschrieben wird.

Im vierten Feld, archiv, wird festgelegt, ob die News-Gruppe archiviert wird und wenn ja, wo. Wird keine Archivierung gewünscht, sollte an dieser Stelle ein Bindestrich stehen. Wird die Archivierung gewünscht, steht an dieser Stelle der volle Pfadname (der auf ein Verzeichnis zeigt) oder ein at-Symbol (@). Das at-Symbol steht für ein Standard-Archivierungsverzeichnis, das dann an doexpire über die Option -a in der Kommandozeile übergeben werden muß. Ein Archiv-Verzeichnis sollte news gehören. Archiviert doexpire etwa einen Artikel aus comp.sources.unix, speichert es diesen im Verzeichnis comp/sources/unix unter dem Archiv-Verzeichnis. Wenn dieses noch nicht existiert, wird es automatisch erzeugt. Das Archiv-Verzeichnis selbst wird allerdings nicht automatisch erzeugt.

In der Datei explist gibt es zwei spezielle Einträge, auf die sich doexpire verläßt. Anstelle einer Liste mit News-Gruppen verwenden sie die Schlüsselwörter /bounds/ und /expired/. Der /bounds/-Eintrag enthält die Standardwerte der drei oben beschriebenen Einträge für das zeiten-Feld.

Im /expired/-Feld wird festgelegt, wie lange C News an Zeilen aus der history-Datei festhält. Dies ist notwendig, weil C News Zeilen aus der history-Datei nicht automatisch entfernt, wenn der oder die entsprechenden Artikel gelöscht wurden. Statt dessen wird die Zeile behalten, falls noch eine Kopie des Artikels nach diesem Datum eintreffen sollte. Falls Sie von nur einer Site mit News versorgt werden, können Sie diesen Wert klein halten. In UUCP-Netzen ist es ratsam, ihn auf ein paar Wochen zu setzen, abhängig von den Verzögerungen, mit denen News von diesen Sites bei Ihnen eintreffen.

Ein Beispiel einer solchen explist-Datei mit ziemlich kurzen Zeitintervallen ist nachfolgend aufgeführt.

# history-Zeilen zwei Wochen halten. Niemand bekommt mehr als drei Monate.
/expired/                       x       14      -
/bounds/                        x       0-1-90  -
# Gruppen, die wir länger halten wollen als den 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      -
# Archiviere die *.sources-Gruppen
comp.sources,alt.sources        x       5       @
# Standardwerte für technische Gruppen
comp,sci                        x       7       -
# Genug für ein langes Wochenende
misc,talk                       x       4       -
# Schnell weg mit überflüssigem Ballast
junk                            x       1       -
# Steuernachrichten sind auch nicht von besonderem Interesse
control                         x       1       -
# Eintrag, der den ganzen Rest abfängt
all                             x       2       -
Das Löschen von Artikeln zieht einige mögliche Probleme nach sich. Eines dieser Probleme ist, daß Ihr Newsreader sich möglicherweise auf das dritte Feld der active-Datei verläßt, das die kleinste Nummer des online verfügbaren Artikels enthält. Werden Artikel gelöscht, aktualisiert C News dieses Feld nicht. Wenn dieses Feld die wirkliche Situation widerspiegeln muß (oder soll), muß jedesmal ein Programm names updatemin ausgeführt werden, nachdem doexpireaufgerufen wurde. (Bei älteren C News-Versionen wurde ein Script namens upact verwendet.)

Sollen unter C News Artikel gelöscht werden, werden nicht die Verzeichnisse der News-Gruppen durchsucht, sondern es wird einfach anhand der history-Datei überprüft, ob ein Artikel das Ablaufdatum überschritten hat.(6) Ist Ihre history-Datei aus irgendeinem Grund nicht auf dem neuesten Stand, könnten Artikel für immer auf Ihrer Festplatte schmoren, weil C News sie einfach vergessen hat.(7) Sie können die Synchronisation durch das Script addmissing wiederherstellen, das in /usr/lib /news/bin/maint zu finden ist und fehlende Artikel in die history aufnimmt. Eine andere Möglichkeit bietet mkhistory, das die gesamte Datei neu erstellt. Denken Sie daran, diese Operationen als news durchzuführen, weil Sie ansonsten eine history-Datei erzeugen, die von C News nicht gelesen werden kann.

Weitere Dateien

Es gibt eine Reihe von Dateien, die das Verhalten von C News kontrollieren, für den Betrieb aber nicht von grundlegender Bedeutung sind. Alle diese Dateien sind in /usr/lib/news zu finden und werden nachfolgend kurz beschrieben.

newsgroups
Eine mit active verwandte Datei, die eine Liste mit dem Namen jeder News-Gruppe zusammen mit einer einzeiligen Beschreibung des Hauptthemas enthält. Diese Datei wird automatisch aktualisiert, wenn C News die Steuernachricht checknews empfängt.

localgroups
Wenn Sie eine Reihe lokaler Gruppen besitzen, über die sich C News nicht jedesmal beschweren soll, wenn Sie eine checknews-Nachricht empfangen, dann tragen Sie ihre Namen und die Beschreibungen in diese Datei ein. Das Format entspricht dem von newsgroups.

mailpaths
Diese Datei enthält die Adresse des Moderators jeder moderierten Gruppe. Jede Zeile besteht aus dem Namen der Gruppe, dem, durch einen Tabulator getrennt, die E-Mail-Adresse des Moderators folgt.

Zwei spezielle Einträge sind standardmäßig bereits enthalten: backbone und internet. Beide enthalten jeweils in Bang Path-Notation den Pfad zur nächsten Backbone-Site bzw. zur nächsten Site, die die RFC822-Adressierung (benutzer@host) versteht. Die Standardeinträge lauten:

internet    %S       
backbone    %S
Sie müssen den Eintrag internet nicht ändern, wenn Sie smail oder sendmail installiert haben, weil diese die RFC822-Adressierung verstehen.

Der backbone-Eintrag wird immer verwendet, wenn ein Benutzer an eine moderierte Gruppe postet, die nicht explizit aufgeführt ist. Ist beispielsweise der Name der News-Gruppe alt.sewer und enthält der backbone-Eintrag den Wert path!%s, schickt C News den Artikel per E-Mail an path!alt-sewer in der Hoffnung, daß die Backbone-Maschine in der Lage ist, den Artikel weiterzuleiten. Um herauszufinden, welchen Pfad Sie benutzen müssen, wenden Sie sich an den News-Administrator der Site, die Sie mit News versorgt. Als letzte Möglichkeit können Sie auch uunet.uu.net!%s verwenden.

distributions
Diese Datei ist eigentlich keine C News-Datei, sondern wird von einigen Newsreadern und nntpd benutzt. Enthalten ist eine Liste der von Ihrer Site erkannten Distributionen sowie eine Beschreibung ihrer (gewünschten) Effekte.

So besitzt die virtuelle Brauerei beispielsweise die folgende Datei:

world         überall auf der Welt
local         nur lokal für diese Site
nl            nur die Niederlande
mugnet        nur MUGNET
fr            nur Frankreich
de            nur Deutschland
brewery       nur virtuelle Brauerei

log
In dieser Datei werden alle Aktivitäten von C News festgehalten. Sie sollte regelmäßig über newsdaily gestutzt werden. Kopien alter Log-Dateien werden unter den Namen log.o, log.oo und so weiter gespeichert.

errlog
In dieser Datei werden alle von C News erzeugten Fehlermeldungen gespeichert. Artikel, die aufgrund einer falschen Gruppe aussortiert wurden und ähnliches fallen aber nicht hierunter. Diese Datei wird von newsdaily automatisch per E-Mail an den Newsmaster (standardmäßig usenet) geschickt, wenn sie nicht leer ist.

errlog
wird von newsdaily gelöscht. Alte Kopien werden in errlog.o etc. gehalten.

batchlog
In dieser Datei werden alle Durchläufe von sendbatches gespeichert. Diese Datei ist üblicherweise nur von geringem Interesse. Wird auch von newsdaily benutzt.

watchtime
Eine leere Datei, die jedesmal erzeugt wird, wenn newswatch gestartet wird.

Steuermeldungen

Das Protokoll der Usenet-News kennt eine spezielle Kategorie von Artikeln, die bestimmte Antworten bzw. Aktionen durch das News-System erzwingen. Diese werden als »Steuermeldungen« (control messages) bezeichnet. Erkannt werden sie durch das Vorhandensein eines Control:-Feldes im Artikel-Header, das den Namen der auszuführenden Steuerungsoperation enthält. Es gibt die verschiedensten Operationen, die alle durch Shell-Scripten übernommen werden, die in /usr/lib/news/ctl zu finden sind.

Die meisten dieser Aktionen werden automatisch ausgeführt, während C News den Artikel bearbeitet, wobei der Newsmaster nicht darüber informiert wird. Standardmäßig werden nur checkgroups-Meldungen an den Newsmaster weitergeleitet, was Sie aber durch Editieren der Scripten anpassen können.

Die cancel-Meldung

Die bekannteste Meldung ist cancel. Damit kann ein Benutzer einen vorher geposteten Artikel löschen (aufheben). Diese Nachricht entfernt den Artikel, wenn er existiert, aus den Spool-Verzeichnissen. Die cancel-Meldung wird an alle Sites weitergeleitet, die News aus den Gruppen beziehen, die diese Meldung betrifft. Dabei ist es gleichgültig, ob die Site den Artikel bereits gesehen hat oder nicht. So wird die Möglichkeit in Betracht gezogen, daß der eigentliche Artikel erst nach der cancel-Meldung eintrifft. Einige News-Systeme erlauben es, Nachrichten anderer Personen zu canceln. Das sollten Sie natürlich niemals tun.

newgroup und rmgroup

Die zwei Steuermeldungen, die dem Erzeugen und Entfernen von News-Gruppen dienen, sind newgroup und rmgroup. News-Gruppen unter den »üblichen« Hierarchien können nur nach einer Diskussion und einer abschließenden Abstimmung zwischen Usenet-Lesern erzeugt werden. Die bei der alt-Hierarchie gültigen Regeln kommen der totalen Anarchie recht nahe. Weitere Informationen finden Sie in den regelmäßigen Veröffentlichungen in news.announce.newusers und news.announce.newgroups. Senden Sie niemals selbst eine newgroup- oder rmgroup-Nachricht, solange Sie nicht ganz sicher sind, daß Sie das auch wirklich dürfen.

Die checkgroups-Meldung

checkgroups-Meldungen werden von News-Administratoren verschickt, damit alle Sites ihre active-Dateien mit den Gegebenheiten im Usenet synchronisieren können. So könnten etwa kommerzielle Internet-Service-Provider eine solche Nachricht an die Sites ihrer Kunden schicken. Einmal im Monat wird die »offizielle« checkgroups-Meldung für die Haupt-Hierarchien vom entsprechenden Moderator in comp.announce.newgroups gepostet. Allerdings wird sie als normaler Artikel gepostet und nicht als Steuermeldung. Um die checkgroups-Operation durchzuführen, speichern Sie den Artikel in einer Datei, etwa /tmp/check, löschen alles bis zum Beginn der eigentlichen Steuermeldung und übergeben es mit dem folgenden Befehl an das checkgroups-Script:
# su news -c "/usr/lib/news/bin/ctl/checkgroups" < /tmp/check
Dadurch wird Ihre newsgroups-Datei aktualisiert, wobei die in localgroups aufgeführten Gruppen hinzugefügt werden. Die alte newsgroups-Datei wird unter dem Namen newsgroups.bac gespeichert. Das lokale Posten einer solchen Meldung funktioniert übrigens selten, weil inews einen so großen Artikel nicht akzeptiert.

Erkennt C News Unterschiede zwischen der checkgroups-Liste und der active-Datei, erzeugt es eine Liste von Befehlen, die Ihre Site auf den neuesten Stand bringen, und schickt sie an den News-Administrator.

Die Ausgabe sieht üblicherweise wie folgt aus:

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
Wenn Sie eine solche Meldung von Ihrem News-System erhalten, sollten Sie ihr aber nicht blind vertrauen. Je nachdem, wer Ihnen die checkgroups-Meldung geschickt hat, können einige Gruppen oder sogar ganze Hierarchien fehlen. Seien Sie also äußerst vorsichtig beim Entfernen jedweder Gruppen. Wenn Sie Gruppen finden, die als fehlend aufgeführt sind, die Sie aber auf Ihrer Site haben möchten, müssen Sie diese über das Script addgroup aufnehmen. Speichern Sie die Liste der fehlenden Gruppen in einer Datei und übergeben Sie sie an das folgende kleine Script:
#!/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

sendsys, version und senduuname

Zum Schluß gibt es noch drei Meldungen, mit denen Sie etwas über die Netzwerk-Topologie erfahren können. Dies sind sendsys, version und senduuname. Daraufhin überträgt C News die sys-Datei an den Absender, die aus einem String besteht, der die Software-Version widerspiegelt bzw. die Ausgabe von uuname. Bei der version-Meldung gibt sich C News dagegen eher wortkarg und liefert ein einfaches, schmuckloses »C« zurück.

Auch in diesem Fall sollten Sie niemals eine solche Meldung verschicken, solange Sie nicht sichergestellt haben, daß sie Ihr (regionales) Netzwerk nicht verlassen kann. Antworten auf sendsys-Meldungen können ein UUCP-Netzwerk nämlich ganz schnell in die Knie zwingen.(8)

C News in einer NFS-Umgebung

Ein einfacher Weg, News in einem lokalen Netzwerk zu verteilen, besteht darin, alle News auf einem zentralen Host zu speichern und die relevanten Verzeichnisse über NFS zu exportieren, so daß die Newsreader die Artikel direkt von dort lesen können. Der Vorteil dieser Methode gegenüber NNTP liegt darin, daß der durch den Abruf und das Threading verursachte Overhead deutlich geringer ist. Andererseits gewinnt NNTP in heterogenen Netzwerken, wo sich das Equipment der einzelnen Hosts stark unterscheidet oder wo Benutzer keine gleichwertigen Accounts auf der Server-Maschine besitzen.

Bei NFS müssen auf einem lokalen Host gepostete Artikel an die zentrale Maschine weitergeleitet werden, weil der gleichzeitige Zugriff auf administrative Dateien wie active zu Inkonsistenzen führen kann. Darüber hinaus wollen Sie eventuell auch Ihren Spool-Bereich schützen, indem Sie ihn nur mit Leserechten exportieren, was wiederum die Weiterleitung an die zentrale Maschine erfordert.

C News verwaltet dies transparent. Wenn Sie einen Artikel posten, startet Ihr Newsreader üblicherweise inews, um den Artikel an das News-System zu übergeben. Dieser Befehl führt eine ganze Reihe von Prüfungen des Artikels durch, vervollständigt den Header und prüft die Datei server in /usr/lib/news. Wenn die Datei existiert und der Hostname sich von dem des lokalen Host unterscheidet, wird inews über rsh auf dem Server-Host ausgeführt. Weil das inews-Script eine Reihe binärer Programme und Support-Dateien von C News verwendet, müssen Sie C News entweder lokal installiert haben oder die News-Software über den Server mounten.

Damit der rsh-Aufruf ordnungsgemäß funktionieren kann, muß der Benutzer einen entsprechenden Account auf dem Server-System besitzen, d. h. einen, bei dem nicht nach einem Paßwort gefragt wird.

Stellen Sie sicher, daß der in server stehende Hostname exakt mit der Ausgabe des hostname-Befehls auf der Server-Maschine übereinstimmt, weil C News sonst beim Versuch, den Artikel auszuliefern, in einer Endlosschleife hängenbleibt.

Verwaltungsaufgaben und -Tools

Trotz der Komplexität von C News kann das Leben eines News-Administrators recht einfach sein, weil C News eine breite Palette von Verwaltungs-Tools bereitstellt. Einige wie beispielsweise newsdailysind für den regelmäßigen Betrieb aus cron heraus gedacht. Die Verwendung dieser Skripten reduziert die Anforderungen an die tägliche Pflege Ihrer C News-Installation ganz beträchtlich.

Wenn nicht anders erwähnt, sind diese Befehle in /usr/lib/news/bin/maint zu finden. Denken Sie daran, diese Befehle nur als news auszuführen. Die Ausführung dieser Befehle als Superuser kann dazu führen, daß die Dateien von C News nicht mehr gelesen werden können.

newsdaily
Der Name sagt es bereits: Führen Sie es einmal täglich aus. Es ist ein wichtiges Script, mit dem Sie Ihre Log-Dateien klein halten, wobei jeweils Kopien der letzten drei Läufe aufgehoben werden. Es versucht auch, Anomalien, wie alte Batches in ein- oder ausgehenden Verzeichnissen oder Postings an unbekannte oder moderierte News-Gruppen etc., zu erkennen. Daraus resultierende Fehlermeldungen werden über E-Mail an den Newsmaster geschickt.

newswatch
Dieses Script sollte regelmäßig etwa einmal stündlich ausgeführt werden, um Anomalien im News-System zu entdecken. Es ist für die Erkennung von Problemen gedacht, die einen unmittelbaren Einfluß auf den Betrieb des News-Systems haben. Ein Problembericht wird dann per E-Mail an den Newsmaster geschickt. Überprüft werden Dinge wie alte Lock-Dateien, die nicht entfernt wurden, unbeaufsichtigte Eingabe-Batches und knapper Festplattenspeicher.

addgroup
Fügt Ihrer lokalen Site eine Gruppe hinzu. Der korrekte Aufruf sieht wie folgt aus:
addgroup gruppenname y|n|m|=reale_gruppe
Das zweite Argument hat dieselbe Bedeutung wie die Option in der active-Datei, d. h. jeder kann in diese Gruppe posten(y), keiner darf posten (n), die Gruppe wird moderiert (m), oder daß dies ein Alias für eine andere Gruppe ist (=reale_gruppe).

Sie können addgroup auch verwenden, wenn die ersten Artikel einer neu angelegten Gruppe früher erscheinen als die newgroup-Steuermeldung, die sie anlegen sollte.

delgroup
Erlaubt das lokale Löschen einer Gruppe. Der korrekte Aufruf lautet wie folgt:
delgroup gruppenname
Die im Spool-Verzeichnis der News-Gruppe verbliebenen Artikel müssen Sie selbst löschen. Alternativ können Sie den Dingen auch ihren natürlichen Lauf lassen (d. h. expire abwarten), um sie verschwinden zu lassen.

addmissing
Nimmt fehlende Artikel in die history-Datei auf. Führen Sie dieses Script aus, wenn Sie Artikel entdecken, die so aussehen, als würden sie für immer bei Ihnen rumhängen.

newsboot
Dieses Script sollte während der Bootphase des Systems ausgeführt werden. Es entfernt alle Lock-Dateien, die übriggeblieben sind, wenn News-Prozesse bei einem Shutdown unterbrochen wurden. Außerdem schließt es alle Batches und führt noch vorhandene aus, die bei einem Shutdown übriggeblieben sind.

newsrunning
Ist in /usr/lib/news/bin/input zu finden und wird genutzt, um die Verarbeitung von Batches (z. B. während der normalen Arbeitszeiten) zu unterdrücken. Der Befehl lautet:
/usr/lib/news/bin/input/newsrunning off
Eingeschaltet wird die Verarbeitung wieder durch Angabe von on anstelle des off.

Fußnoten

(1)
Es kann einen Unterschied geben zwischen den Gruppen, die auf Ihrer Site vorhanden sind, und den Gruppen, die Ihre Site zu empfangen bereit ist. Beispielsweise könnte die Aboliste comp.all enthalten, was alle News-Gruppen unter der comp-Hierarchie einschließt. Auf Ihrer Site sind aber eine Reihe der comp-Gruppen nicht in Ihrer active-Datei eingetragen. In diese Gruppen gepostete Artikel werden in junk abgelegt.
(2)
Beachten Sie, daß dies die crontab von news sein sollte, damit die Datei-Zugriffsrechte nicht beschädigt werden.
(3)
Es ist nicht unüblich, daß ein in, sagen wir mal, Hamburg geposteter Artikel seinen Weg nach Frankfurt über reston.ans.net in den Niederlanden oder sogar über eine Site in den USA nimmt.
(4)
Wenn Sie die Anzahl der Spool-Verzeichnisse nicht interessiert (weil Sie die einzige Person sind, die diesen Computer benutzt und weil Sie keine megabytegroßen Artikel verfassen), können Sie das Script einfach auf den Eintrag exit 0 reduzieren.
(5)
So wie es mit C News ausgeliefert wird, verwendet compcun compress mit der 12-Bit-Option, weil dies den kleinsten gemeinsamen Nenner für die meisten Sites darstellt. Sie können eine Kopie, beispielsweise compcun16, erzeugen, bei der die 16-Bit-Komprimierung verwendet wird. Die Verbesserung ist allerdings nicht so berauschend.
(6)
Die Zeit, zu der ein Artikel eingetroffen ist, ist im mittleren Feld der history-Zeile zu finden. Der Wert wird in Sekunden seit dem 1.1.1970 angegeben.
(7)
Ich weiß nicht, warum das passiert, aber bei mir kommt das von Zeit zu Zeit vor.
(8)
Ich würde das auch im Internet nicht versuchen.

Inhaltsverzeichnis Kapitel 16 Kapitel 18