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.
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.
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
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:
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.oldDer 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 newsWenn 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 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.
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.
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.computerswü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.
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.
F
f
F, erlaubt es C News aber, die Größe der ausgehenden Batches präziser zu berechnen.
I
n
L
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
m
Sie dürfen maximal eine der Optionen F, f, I oder n benutzen.
Der Standardbefehl lautet:
uux -- -r -z remote-system!rnewsDamit 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
newsgruppe Obergrenze Untergrenze rechtenewsgruppe 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:
Artikel, die für diese Gruppe empfangen werden, werden nicht lokal gespeichert, obwohl sie an die Sites weitergegeben werden, die sie angefordert haben.
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.
#! rnews größegröß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:
#! cunbatchManchmal, 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 transportsite 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.
Das Feld Das Feld 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, 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.
Ein Eintrag in explist hat das folgende Format:
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 Das dritte Feld, Das Im vierten Feld, 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 Im Ein Beispiel einer solchen explist-Datei mit ziemlich kurzen Zeitintervallen ist nachfolgend aufgeführt.
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.
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.
Zwei spezielle Einträge sind standardmäßig bereits enthalten: Der So besitzt die virtuelle Brauerei beispielsweise die folgende Datei:
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 Erkennt C News Unterschiede zwischen der Die Ausgabe sieht üblicherweise wie folgt aus:
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 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.
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.
Sie können addgroup auch verwenden, wenn die ersten Artikel einer neu angelegten Gruppe früher erscheinen als die
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)
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.
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.
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.
# 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.
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.
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.
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.
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.
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.
/bounds/ und /expired/. Der /bounds/-Eintrag enthält die Standardwerte der drei oben beschriebenen Einträge für das zeiten-Feld.
/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.
# 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.)
Weitere Dateien
checknews empfängt.
checknews-Nachricht empfangen, dann tragen Sie ihre Namen und die Beschreibungen in diese Datei ein. Das Format entspricht dem von newsgroups.
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.
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.
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
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.
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.
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.
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.
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.
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.
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).
newgroup-Steuermeldung, die sie anlegen sollte.
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.
/usr/lib/news/bin/input/newsrunning off
Eingeschaltet wird die Verarbeitung wieder durch Angabe von on anstelle des off.
Fußnoten
Kapitel 16
Kapitel 18