11.8 Das Usenet
Das Usenet bietet eine Diskussionsplattform, bei der sich die Anwender über Clientsoftware mit der jeweiligen Serversoftware verbinden und über diese Nachrichten austauschen können. Doch nun etwas mehr Details.
Hierarchie & Gruppen
Das Usenet kann man sich als hierarchisch organisiertes Forum zu verschiedensten Thematiken vorstellen. Dabei heißen die Diskussionsforen zu den Themen Newsgroups. Ein Beispiel für eine Newsgroup ist de.comp.lang.c.
In diesem Beispiel wird schon sehr gut der hierarchische Aufbau des Usenets deutlich. Der Name de.comp.lang.c lässt sich nämlich wie folgt unterteilen:
- de
- Die Newsgroup ist in deutscher Sprache gehalten,
- comp
- befasst sich mit Computern,
- lang
- genauer gesagt mit Programmiersprachen,
- c
- und zwar mit der Programmiersprache »C«.
Namen von Newsgroups beginnen meist mit einer der 7 Primärgruppen oder einer Sprachkennung wie »de«, »it« oder »at«. Bei den 7 Primärgruppen handelt es sich um:
- comp Computer-Themen
- misc Alle Themen, die keiner anderen Primärgruppe zugeordnet werden können
- news Diskussionen über das Usenet
- rec Hobby/Freizeit etc
- sci Wissenschaft (science)
- soc Soziale Themen
- talk Diskussionen zu allen möglichen und unmöglichen Themen
Posting
Diese Newsgroups sind so lange nicht von Nutzen, bis man beginnt, sie auch wirklich zur Diskussion zu verwenden. Diese Diskussion wird durch Postings umgesetzt. Dabei schreibt jemand einen Artikel (= Posting) und sendet diesen Artikel zum Server (= posten). Der Server speichert das Posting und stellt es allen anderen Mitgliedern des Usenets zur Verfügung. Dabei tauschen die Usenet-Server (wenn sie keine Einzelserver oder privaten Intranet-Server sind) untereinander die aktuellen Postings aus.
Follow-Up
Auf solch ein Posting kann nun wieder jemand antworten. Das Posting dieser Antwort bezeichnet man als Follow-Up-Posting. Auf jedes Posting und jedes Follow-Up können bliebig viele weitere Follow-Up-Postings folgen.
Größe des Usenets
Damit man sich die Größe des Usenets zumindest in etwa vorstellen kann, möchten wir Ihnen ein Zitat aus der Wikipedia nicht vorenthalten:
»Eine interessante Einrichtung war das DejaNews-Archiv (Deja.com), das es sich zum Ziel gesetzt hatte, die News-Beiträge dauerhaft zu archivieren. Das Archiv von Deja.com reichte bis etwa 1995 zurück. Nach dem Konkurs von Deja.com wurde dessen Datenbestand Anfang 2001 von Google aufgekauft und in das eigene GoogleGroups integriert. Ende 2001 wurden von Google ca. 700 Millionen weitere Artikel aus diversen ursprünglich privaten Archivierungen in das Archiv integriert, die teilweise bis in die Anfangszeit des Usenet zurück reichen, für die Zeit vor 1991 allerdings mangels vollständiger Archive etwas lückenhaft bleiben müssen. (...) Heutzutage kann niemand sagen, wie viele Newsserver und Newsgroups es weltweit gibt. Schätzungen gehen von Zahlen zwischen 50.000 und 100.000 aus.« <Quelle: http://de.wikipedia.org/wiki/Usenet>
11.8.1 Das Protokoll
Beim Usenet handelt es sich um eine recht alte Form der Kommunikation via TCP/IP. Bereits vor vielen Jahren vernetzte man Usenet-Server zusammen mit einigen Clients und ließ sie über das zugehörige NNTP-Protokoll kommunizieren. NNTP, das Network News Transfer Protocol, wurde zum ersten Mal 1986 als Standard verabschiedet, das Usenet selbst jedoch bereits 1979 via UUCP zwischen zwei Unix-Systemen realisiert.
Beim NNTP-Protokoll handelt es sich um ein Plaintext-Protokoll, das relativ mühsam zu verarbeiten ist. Dafür kann man notfalls aber auch ohne Client, nämlich direkt mit Telnet, Artikel lesen und posten. Da NNTP-Befehle jedoch nicht case-sensitive sind und es oft mehrere Möglichkeiten gibt, diese Befehle (und auch Header-Zeilen) zu senden, müssen Usenet-Server diverse langsame und aufwendige Parsing-Techniken für jeden Befehl und jedes Posting anwenden.
Wir werden hier im Folgenden, da es sich ja nicht um ein TCP/IP-Buch, sondern um ein Linux-Buch handelt, nur die allerwichtigsten NNTP-Befehle aus RFC 977 beschreiben und die NNTP-Extensions aus RFC 2980 außen vor lassen.
Grundlegendes
NNTP funktioniert ähnlich wie die Protokolle FTP und HTTP: Der Client sendet eine Plaintext-Anfrage, und der Server antwortet mit einer Plaintext-Response, die einen Response-Code in Form einer Zahl enthält. Diese Zahl teilt dem Client mit, ob die Anfrage erfolgreich war oder ob es dabei Probleme gab.
Der Fehlercode 411 gibt beispielsweise an, dass eine Newsgroup nicht existiert, während der Code 211 die Bestätigung für das Wechseln zur jeweiligen Newsgroup angibt.
Listing 11.17 Ausschnitt aus einer NNTP-Session
group de.comp.lang.c 211 5129 66442 71881 de.comp.lang.c group die.gibts.nicht 411 No such group die.gibts.nicht quit 205 bye, bye.
Wichtige Befehle
Wir wollen diesen Abschnitt mit einer Übersicht über die allerwichtigsten NNTP-Befehle abschließen. Zur Administration von Usenet-Servern und um Probleme mit dem Client zu verstehen, kann es nämlich sehr hilfreich sein, zumindest diese Kommandos zu kennen. <Diese Kommandos sind nicht case-sensitive, wir haben sie nur der Einheitlichkeit halber alle großgeschrieben. Statt »LIST« wäre also auch »List«, »list« oder »LisT« etc. möglich.>
- LIST
- Der Server sendet die Liste der Newsgroups inklusive deren ersten und letzten verfügbaren Artikeln und dem Posting-Flag, das besagt, ob das Posting in einer Newsgroup erlaubt ist oder nicht.
- GROUP <Gruppe>
- Selektiert eine Newsgroup.
- ARTICLE <Message-ID | Nummer>
- Der Server sendet den Header und den Body des mit der angegebenen Message-ID bzw. Newsgroup-internen Nummer angegebenen Artikels an den Client.
- HELP
- Der Server sendet eine Befehlsliste an den Client, die in der Regel einige Erklärungen beinhaltet.
- POST
- Postet einen neuen Artikel. Dabei muss der Header mindestens aus den Zeilen Absender (From:), Betreff (Subject:) und Zielnewsgroup(s) (Newsgroups:) bestehen und einen Body aufweisen, der mit einer Zeile abgeschlossen wird, in der nur ein Punkt steht. <Genauer gesagt sendet der Client nach jeder Zeile zunächst die Zeichenkombination CR-LF (Return und Newline), also <CR-LF>. <CR-LF> zum Abschluss des Postings.>
- QUIT
- Beendet die Verbindung.
11.8.2 Clients
Unter Linux stehen einem eine ganze Menge von Clients zur Verfügung. Dabei gibt es Text-Clients für die Konsole, grafische ncurses-Clients für die Konsole und Clients für die grafische Oberfläche X11, die auf diversen verschiedenen Libraries basieren. Wir werden Ihnen eine Auswahl der ausgereiftesten Clients vorstellen und die jeweiligen Vorzüge erläutern. Welchen dieser Clients Sie letztendlich verwenden, müssen Sie jedoch selbst entscheiden.
slrn
slrn ist ein ncurses-basierter Usenet-Client für die Konsole. Der Vorteil des Programms liegt daher primär darin, dass slrn auch auf Systemen ohne grafische Oberfläche und natürlich im Netzwerk, etwa via Telnet oder SSH, verwendet werden kann. slrn ist durch Makros erweiterbar und neben Linux auch für Unix, MacOS X, Windows und einige weitere Systeme verfügbar. slrn verdankt seine Beliebtheit primär der Tatsache, dass sich das Tool in ständiger Weiterentwicklung befindet und dass der Quellcode offen ist.
Die Konfiguration des kleinen, aber mächtigen Clients erfolgt über das Environment und eine Text-Konfigurationsdatei. Dabei lassen sich zum Beispiel die Farben anpassen. Diese Konfigurationsdatei kann man dann, etwa mit Secure-Copy (scp) auf alle weiteren Workstations übertragen, die man nutzt. Auf diese Weise muss man slrn nur einmal konfigurieren.
Sinnvoll ist besonders die Möglichkeit zum Editieren von Postings und Follow-Ups durch einen externen Editor. So kann man slrn beispielsweise den vim aufrufen lassen, um Postings darin zu schreiben.
Abbildung 11.5 slrn
Übrigens unterstützt slrn auch GnuPG.
sylpheed(-claws)
Sylpheed ist ein Gtk-basierter Mail- und Usenet-Client. Sylpheed unterstützt diverse Protokolle, etwa IMAP, POP3 oder NNTP, kann mehrere Accounts gleichzeitig handhaben, unterstützt MIME-Anhänge, hat einen integrierten, konfigurierbaren Nachrichten-Filter und, und, und. Wir werden uns jedoch nur mit den Usenet-Features auseinandersetzen.
Auch Sylpheed unterstützt GnuPG, zudem auch noch das von slrn bekannte Nutzen eines externen Editors – was unserer Meinung nach jedoch nicht notwendig ist, da der interne Editor alles kann, was man zum Posten braucht.
Sylpheed unterstützt keine HTML-Mails und wandelt HTML-Mails, die eintreffen, automatisch in Text-Mails um, wobei die originale HTML-Mail als Anhang über einen externen Browser einsehbar ist. Für die verschiedenen Typen von Anhängen können externe Viewer konfiguriert werden, die meisten angehängten Bildertypen kann Sylpheed jedoch direkt anzeigen. Zudem können Templates verwendet werden, Postings und Mails gedruckt und Absender im XML-basierten Adressbuch gespeichert werden.
Es existiert von Sylpheed noch eine zweite Variante: Sylpheed-Claws. Diese Variante bietet noch diverse zusätzliche Features, etwa eine Rechtschreibprüfung via aspell, Themes und Plugins. Was die Plugins anbelangt, so sind unter anderem ein Anti-Virus-Plugin (Clam AntiVirus), ein Image-Viewer, sowie der Spam-Filter SpamAssassin vorhanden.
Knode
Als letzten, ebenfalls sehr lobenswerten Client dieser Runde möchten wir Ihnen knode (siehe Abbildung 11.6) vorstellen. Knode ist im Gegensatz zu Sylpheed ein reiner Usenet-Client, unterstützt auch mehrere Accounts und ist hervorragend konfigurierbar. Knode ist Bestandteil des KDE-Projekts und basiert auf den Qt-Bibliotheken. Auch dieses Programm kann viele Image-Dateien direkt im integrierten Betrachter anzeigen und stellt einen Filtermechanismus ähnlich dem von Sylpheed zur Verfügung.
Abbildung 11.6 Knode