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 19
Newsreader-Konfiguration

Ein Newsreader ist ein Programm, mit dem sich Benutzer News-Artikel ansehen, sie speichern und erzeugen. Verschiedene Newsreader wurden auf Linux portiert. Nachfolgend beschreibe ich das grundlegende Setup der drei bekanntesten Newsreader, nämlich tin, trn und nn.

Einer der effektivsten Newsreader ist

$ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more
Auf diese Weise lesen ganz harte UNIX-Typen ihre News.

Die meisten Newsreader sind aber bei weitem niveauvoller. Sie bieten häufig ein Fullscreen-Interface, bei dem verschiedene Ebenen der vom Benutzer abonnierten Gruppen, eine Übersicht aller Artikel einer Gruppe und individuelle Artikel angeboten werden.

Auf Newsgruppen-Ebene zeigen die meisten Newsreader eine Liste von Artikeln samt Subject-Zeile und Autorennamen. Bei großen Gruppen ist es für den Benutzer schwierig, zusammengehörende Artikel zuzuordnen, obwohl es möglich ist, Antworten auf frühere Artikel zu identifizieren.

Antworten enthalten üblicherweise den ursprünglichen Titel des Artikels, dem der Text »Re:« vorangestellt ist. Zusätzlich kann der Message-ID des Artikels, dessen direkter Nachfolger er ist, in der References:-Header-Zeile angegeben werden. Die Sortierung von Artikeln nach diesen beiden Kriterien erzeugt kleine Cluster (eigentlich Bäume) von Artikeln, die Threads genannt werden. Eine der Hauptaufgaben beim Schreiben eines Newsreaders ist das Entwerfen eines effizienten Threading-Schemas, weil die dafür verwendete Zeit proportional zum Quadrat der Anzahl der Artikel ist.

An dieser Stelle wollen wir uns nicht damit beschäftigen, wie Benutzerschnittstellen aufgebaut werden. Alle momentan unter Linux verfügbaren Newsreader verfügen über eine gute Hilfefunktion, mit der Sie sich problemlos zurechtfinden sollten.

In den folgenden Abschnitten werden wir uns nur mit administrativen Aufgaben beschäftigen. Die meisten beschäftigen sich mit der Erzeugung von Threads und dem Accounting.

Konfiguration von tin

Unter dem Gesichtspunkt des Threading ist tin der mit Abstand vielseitigste Newsreader. Er wurde von Iain Lea geschrieben. Bei der Entwicklung orientierte er sich leicht an einem älteren Newsreader namens tass (geschrieben von Rich Skrenta). Das Threading wird erledigt, wenn der Benutzer die Newsgruppe aufruft, und solange Sie nicht über NNTP arbeiten, ist er auch schön schnell.

Auf einem 486DX50 werden für das Threading von 1000 Artikeln ca. 30 Sekunden gebraucht, wenn diese direkt von der Platte gelesen werden. Erfolgt der Zugriff über NNTP auf einen ausgelasteten News-Server, dauert dies etwas über 5 Minuten. Sie können diese Zeit verringern, indem Sie Ihre Indexdatei mit der Option -u regelmäßig aktualisieren oder indem Sie tin mit der Option -U aufrufen.(1)

Normalerweise sichert tin seine Threading-Datenbank im Home-Verzeichnis des Benutzers unter .tin/index. Das kann eine ziemliche Ressourcen-Verschwendung sein, weshalb Sie nur eine einzelne Kopie an zentraler Stelle speichern sollten. Dies kann erreicht werden, indem Sie tin auf Setuid news setzen oder auf einen völlig unprivilegierten Account.(2) tin sichert dann alle Thread-Datenbanken unter /var/spool/news/.index. Für jeden Dateizugriff oder Shell-Aufruf wird die UID dann auf die UID des Benutzers gesetzt, der ihn angefordert hat.(3)

Eine bessere Lösung ist die Installation des tind-Indexierungs-Dämons, der die Indexdateien regelmäßig aktualisiert. Dieser Dämon ist allerdings in keiner der Linux-Releases zu finden, d. h. Sie müssen ihn selbst kompilieren. Wenn Sie ein LAN mit einem zentralen News-Server betreiben, können Sie tind sogar auf diesem Server laufen und die Clients den Index über NNTP anfordern lassen. Dazu benötigt NNTP eine entsprechende Erweiterung. Patches für nntpd, die diese Erweiterung implementieren, sind in den tin-Sourcen enthalten.

Manche den Linux-Distributionen beiliegenden tin-Versionen bieten noch keine NNTP-Unterstützung an, aber die meisten haben sie bereits integriert. Als rtin oder mit der Option -r aufgerufen, versucht tin, eine Verbindung mit dem in der Datei /etc/nntpserver oder in der Umgebungsvariablen NNTPSERVER eingestellten NNTP-Server aufzubauen. Die Datei nntpserver enthält einfach in einer einzigen Zeile den Namen des Servers.

Konfiguration von trn

trn ist ebenfalls ein Nachfolger eines älteren Newsreaders, nämlich rn (was für read news steht). Das »t« in seinem Namen steht für »threaded«. Er wurde von Wayne Davidson geschrieben.

Im Gegensatz zu tin bietet trn keine Möglichkeit, die Threading-Datenbank zur Laufzeit zu erzeugen. Statt dessen verwendet es Datenbanken, die mit dem Programm mthreads erzeugt wurden, das regelmäßig aus cron heraus gestartet werden sollte, um die Indexdateien zu erzeugen.

Lassen Sie mthreads nicht laufen, bedeutet das nicht, daß Sie nun keine neuen Artikel lesen können, sondern nur, daß Sie die gesamten »Linux-Ausverkauf durch Novell!!«-Artikel im Artikel-Auswahlmenü verstreut und nicht in einem einzigen Thread vorfinden, den Sie einfach übergehen können.

Um das Threading für bestimmte Newsgruppen zu aktivieren, starten Sie mthreads mit einer Liste der Newsgruppen in der Kommandozeile. Diese Liste ist genauso aufgebaut wie die in der sys-Datei:

$ mthreads comp,rec,!rec.games.go
Dieser Befehl aktiviert das Threading für alle comp- und rec-Gruppen mit Ausnahme von rec.games.go (Go-Spieler brauchen keine Threads). Danach können Sie es einfach ohne Optionen aufrufen, und das Threading wird bei allen neu eingehenden Artikeln durchgeführt. Das Threading aller Gruppen Ihrer active-Datei können Sie aktivieren, indem Sie mthreads mit der Gruppenliste all ausführen.

Wenn Sie News über Nacht empfangen, werden Sie mthreads einmal am Morgen ausführen. Wenn nötig, können Sie es aber so häufig ausführen, wie Sie wollen. Sites mit hohem Datenaufkommen sollten mthreads im Dämon-Modus ausführen. Wenn Sie es während der Bootphase mit der Option -d starten, schiebt es sich selbst in den Hintergrund und prüft alle 10 Minuten, ob neue Artikel eingetroffen sind. Dabei wird automatisch auch das Threading durchgeführt. Um mthreads im Dämon-Modus auszuführen, müssen Sie die folgende Zeile in Ihr rc.news-Script aufnehmen:

/usr/local/bin/rn/mthreads -deav
Mit der Option -a schaltet mthreads automatisch das Threading für neue Gruppen ein, sobald diese erzeugt werden. -v aktiviert ausführliche Log-Meldungen, die in die mthreads-Logdatei mt.log geschrieben werden. Diese ist dort untergebracht, wo auch trn installiert ist.

Ältere, nicht mehr verfügbare Artikel müssen regelmäßig aus den Indexdateien entfernt werden. Standardmäßig werden nur Artikel entfernt, deren Nummer unter der kleinsten aktiven Artikelnummer liegt.(4) Artikel, deren Nummer über der kleinsten gültigen Artikelnummer liegt, aber deren Gültigkeitsdauer dennoch abgelaufen ist (weil dem ältesten Artikel über das Expires:-Header-Feld eine längere Lebensdauer eingeräumt wurde), können entfernt werden, indem mthreads mit der Option -e ausgeführt wird. Dies erzwingt einen sog. »erweiterten« expire-Lauf. Läuft mthreads im Dämon-Modus, bringt die Option -e es in einen solchen erweiterten Modus, der einmal täglich kurz nach Mitternacht durchgeführt wird. Lesen Sie mehr dazu im Kapitel 17.

Konfiguration von nn

nn wurde von Kim F. Storm geschrieben und behauptet, ein Newsreader zu sein, dessen eigentliches Ziel es ist, keine News zu lesen. Sein Name steht für »No News«, und sein Motto lautet »No news is good news. nn is better.«

Um dieses ehrgeizige Ziel zu erreichen, wird nn mit einer großen Sammlung von Verwaltungs-Tools geliefert. Mit diesen können nicht nur Threads erzeugt, sondern auch die ausführliche Prüfung des Konsistenz dieser Datenbanken durchgeführt werden. Darüber hinaus lassen sich das Accounting verwalten, Benutzerstatistiken erzeugen und Zugriffsrechte vergeben. Es gibt sogar ein Administrations-Programm namens nnadmin, mit dem diese ganzen Aufgaben interaktiv durchgeführt werden können. Es ist sehr intuitiv, weshalb wir auch nicht weiter darauf eingehen, sondern uns nur der Generierung der Indexdateien widmen.

Der Thread-Datenbankmanager von nn heißt nnmaster. Es ist üblich, ihn als Dämon auszuführen, der aus rc.news oder rc.inet2 heraus gestartet wird. Aufgerufen wird er wie folgt:

/usr/local/lib/nn/nnmaster -l -r -C
Das aktiviert das Threading für alle in Ihrer active-Datei vorhandenen Newsgruppen. file.

Ebenso können Sie nnmaster regelmäßig über cron ausführen, wobei eine Liste der Gruppen übergeben werden muß, die bearbeitet werden sollen. Diese Liste ist der Subskriptions-Liste der sys-Datei sehr ähnlich, mit der Ausnahme, daß Leerzeichen anstelle von Kommata verwendet werden. Anstelle des Schlüsselworts all muß ein leeres Argument (»«) verwendet werden, wenn alle Gruppen gemeint sind. Der Beispielaufruf lautet:

# /usr/local/lib/nn/nnmaster !rec.games.go rec comp
Beachten Sie, daß die Reihenfolge wichtig ist. Die Gruppen-Spezifikationen werden von links nach rechts bearbeitet, wobei die erste passende gewinnt. Hätten wir also !rec.games.go nach rec geschrieben, wäre das Threading für alle Artikel dieser Gruppe durchgeführt worden.

nn bietet verschiedene Möglichkeiten an, ungültige Artikel aus seinen Datenbanken zu entfernen. Die erste besteht darin, die Datenbank zu aktualisieren, indem die Newsgruppen-Verzeichnisse durchsucht und die Einträge entfernt werden, deren Artikel nicht mehr existieren. Das ist die Standardoperation, die durch den Aufruf von nnmaster mit der Option -E erreicht wird. Das geht einigermaßen zügig, solange Sie dies nicht über NNTP erledigen.

Die zweite Methode verhält sich genau wie der Standard-Aktualisierungslauf von mthreads. Dabei werden nur solche Einträge entfernt, deren Artikelnummer unter der gerade gültigen kleinsten Artikelnummer der active-Datei liegen. Sie wird durch die Option -e gestartet.

Bei der dritten Strategie wird die ganze Datenbank gelöscht, und dann werden alle Artikel erneut eingeordnet. Dieses Verfahren wird verwendet, wenn Sie nnmaster mit der Option -E3 ausführen.

Die Liste der zu aktualisierenden Gruppen wird in derselben Weise wie oben beschrieben über die Option -F angegeben. Wenn Sie allerdings nnmaster als Dämon betreiben, müssen Sie diesen zuerst anhalten (mit der Option -k), bevor der Aktualisierungslauf durchgeführt werden kann. Danach muß er wieder mit seinen normalen Optionen gestartet werden. Die richtige Befehlsfolge für die Aktualisierung aller Gruppen nach der ersten Methode lautet also:

# nnmaster -kF ""
# nnmaster -lrC
Es gibt noch wesentlich mehr Optionen, mit denen Sie eine Feinabstimmung für das Verhalten von nn durchführen können. Wenn Sie schlechte Artikel entfernen oder Artikelsammlungen (Digests) aufsplitten wollen, seien Sie auf die nnmaster-Manpage verwiesen.

nnmaster verwendet eine Datei namens GROUPS, die in /usr/local/lib/nn zu finden ist. Wenn sie zu Beginn nicht existiert, wird sie automatisch erzeugt. Für jede Newsgruppe enthält sie eine Zeile, die mit dem Gruppennamen beginnt, dem optional eine Zeitangabe und verschiedene Flags folgen können. Sie können diese Optionen editieren, um das Verhalten der einzelnen Gruppen entsprechend zu beeinflussen, Sie dürfen aber nicht die Reihenfolge verändern, in der die Gruppen aufgeführt sind.(5) Die erlaubten Optionen sowie deren Effekte werden ebenfalls ausführlich in der nnmaster-Manpage besprochen.


Fußnoten

(1)
Die Dinge laufen wesentlich schneller, wenn der NNTP-Server das Threading selbst übernimmt und der Client nur die Thread-Datenbank liest. INN-1.4 beispielsweise kann dies.
(2)
Allerdings sollten Sie nicht nobody dafür benutzen. Als Faustregel gilt, daß diesem Benutzer keine Dateien oder Befehle gehören sollten.
(3)
Das ist der Grund für die häßlichen Fehlermeldungen, die Sie erhalten, wenn Sie ihn als Superuser starten. Aber Routinearbeiten sollten Sie sowieso nicht als root erledigen.
(4)
Beachten Sie, daß C News die niedrigste gültige Artikelnummer nicht automatisch setzt. Statt dessen müssen Sie dies mit dem Programm updatemin von Hand erledigen.
(5)
Der Grund dafür liegt darin, daß die Reihenfolge mit den Einträgen in der (binären) MASTER-Datei übereinstimmen muß.

Inhaltsverzeichnis Kapitel 18 Anhang A