17.4 NNTP-Server (WendzelNNTPd 2)
Leider hat man bei der Wahl eines Usenet-Servers nicht sonderlich viele Optionen. Zwar gibt es gute Software, die Usenet-Postings aus einer konfigurierbaren Newsgroup-Liste von anderen Servern herunterlädt und im internen Netzwerk zur Verfügung stellt, jedoch macht dies recht wenig Sinn, wenn es sich nicht um Hunderte von Usenet-Lesern handelt, die alle die gleichen Groups lesen. Aus eben diesem Grund werden wir uns an dieser Stelle damit beschäftigen, wie sich ein Usenet-Server aufsetzen lässt.
Wenn es darum geht, einen Usenet-Server aufzusetzen, fällt einem entweder gar keine Software ein, oder man denkt sofort an den INNd (InterNetNews-Daemon) des ISC. Diese Software stellt wirklich alle Features des Usenets zur Verfügung und ist als Referenzimplementierung absolut standardkonform. Der Nachteil dieser Software ist jedoch die schwierige und aufwendige Konfiguration. Auch uns sagt diese Konfiguration nur bedingt zu, weshalb wir an dieser Stelle eine alternative, im Funktionsumfang etwas eingeschränkte Lösung vorstellen wollen. Aber immerhin werden wohl nur wenige Leser alle Usenet-Features, etwa die Kommunikation zwischen Usenet-Servern, nutzen wollen.
Die hier vorgestellte Eigenimplementierung ist freie Software und nennt sich WendzelNNTPd. Der Dienst unterstützt IPv6 und ein ausgefeiltes rollenbasiertes Rechtesystem. Der Server unterstützt zugegebenermaßen nicht alle von RFC977 geforderten Befehle – dafür ist er in zwei Minuten aufgesetzt.
Herunterladen lässt sich die Software von http://www.wendzelnntpd.org, die Installation läuft folgendermaßen ab: Zunächst lädt man sich (am besten als .tgz-Datei) das Quellcode-Archiv herunter, entpackt es und führt anschließend configure aus. Lesen Sie dazu auch die Datei INSTALL.
Listing 17.12 Entpacken des Archivs
$ tar -xzvf wendzelnntpd-<version>.tgz
$ cd wendzelnntpd-<version>
$ ./configure
$ make
Mittels make install (als Superuser) können Sie die Software anschließend installieren.
17.4.1 Konfiguration
Die Konfiguration gliedert sich in zwei Schritte: jene des Dienstes über die Konfigurationsdatei selbst und die anschließende Konfiguration von Newsgroups.
Konfigurationsdatei
Zunächst muss die Konfigurationsdatei /usr/local/etc/wendzelnntpd.conf editiert werden. Dabei müssen Sie zunächst auswählen, welches Datenbank-Backend Sie verwenden möchten. Am einfachsten ist ein SQLite3-Backend aufzusetzen, da WendzelNNTPd dies automatisch erledigt.
Listing 17.13 WendzelNNTPd für SQlite3 konfigurieren
database-engine sqlite3
Alternativ kann MySQL verwendet werden:
Listing 17.14 WendzelNNTPd für MySQL konfigurieren
database-server 127.0.0.1
# Nur für MySQL benötigte Parameter:
database-port 3306
database-username benutzer
database-password passwort
Anschließend müssen Sie eigentlich nur die IP-Adressen der Schnittstellen angeben, über die der Dienst erreichbar sein soll.
Listing 17.15 Ausschnitt einer beispielhaften wendzelnntpd.conf-Datei
listen 192.168.0.1
listen 127.0.0.1
Der listen-Befehl funktioniert auch mit IPv6-Adressen. Möchte man einen anderen Port als den NNTP-Standardport (119) wählen, so lässt sich das durch den port-Befehl umsetzen.
Listing 17.16 Weiterer Ausschnitt einer möglichen wendzelnntpd.conf
port 119
Newsgroups anlegen
Newsgroups werden mit dem Tool wendzelnntpadm verwaltet. Dieses Tool erzeugt und löscht Newsgroups aus der Datenbank der Serversoftware. Um eine Newsgroup zu erzeugen, ruft man einfach den folgenden Befehl auf:
Listing 17.17 Erzeugen einer Newsgroup
Die Form:
# wendzelnntpd addgroup <Newsgroupname> y
Beispiel:
# wendzelnntpadm addgroup unix.genius y
Das y am Ende des Befehls gibt das Posting-Flag an und bedeutet, dass Postings erlaubt sind, n bedeutet das Gegenteil. Derzeit ist dies jedoch nicht relevant, weil dieses Flag bisher noch wirkungslos ist und das Posten in jedem Fall erlaubt ist.
Nun ist die Basiskonfiguration bereits erledigt. Sie können natürlich beliebig viele weitere Newsgroups anlegen, wenn Sie möchten.
Newsgroups ausgeben
Mit wendzelnntpadm können Sie sich auch die Liste der momentan existierenden Newsgroups ausgeben lassen. Dazu verwenden Sie den Parameter listgroups.
Listing 17.18 Erzeugen einer Newsgroup
# sudo wendzelnntpadm listgroups
Newsgroup, Low-, High-Value, Posting-Flag
-----------------------------------------
alt.wendzelnntpd.test 0 0 y
my.group 0 0 y
done.
Das Löschen von Newsgroups erfolgt analog mit delgroup Gruppe.
17.4.2 Server starten
Beim ersten Start des Servers empfiehlt es sich, die syslog-Meldungen im Auge zu behalten, da WendzelNNTPd auftretende Fehler via syslog protokolliert. [Fn. Außerdem werden die Meldungen in die Datei /var/log/wendzelnntpd eingetragen.]
Der eigentliche Start erfolgt durch einen simplen Aufruf von wendzelnntpd. Gelingt der Start, gibt die Software etwa diese Zeilen aus:
Listing 17.19 Ausgabe bei Erfolg
WendzelNNTPd-OSE (Open Source Edition): peak: 3,
size_sockinfo: 1
WendzelNNTPd-OSE (Open Source Edition):
version 2.0.0-beta 'Stockholm' -
(Jun 20 2011 20:29:17 #2380) is ready.
Nun sollte ein auf das Serversystem konfigurierter Usenet-Client Newsgroups abonnieren, Postings und Follow-ups senden sowie aktuelle Postings herunterladen können. Spaß für die ganze Familie!
Als Daemonprozess
WendzelNNTPd lässt sich durch den Parameter -d auch als Dämonprozess starten.
17.4.3 Authentifizierung
Soll nicht jedermann Zugriff auf den Server haben, so gibt es die Möglichkeit, eine Anmeldung zu verlangen. Derzeit gibt es jedoch keine Benutzerverwaltung, sondern lediglich eine einzige gültige Kombination aus Benutzername und Passwort, über die die Authentifizierung durchgeführt wird.
Zur Aktivierung der Authentifizierung für den Server muss zunächst der Befehl use-authentication in der Konfiguration eingetragen werden.
Für eine erweiterte Rollen-basierte Konfiguration, die eher für Unternehmen geeignet ist, empfiehlt es sich, use-acl in der Konfiguration zu aktivieren. Eine Anleitung zur ACL-Konfiguration findet sich auf der Projekt-Webseite. Mit Hilfe von ACLs können Sie auch einzelnen Benutzern sowie ganzen Rollen Zugriff auf einzelne Newsgroups erlauben. Wir werden im Folgenden nur die Basis-Authentifizierung für einzelne Benutzer betrachten. Alle Informationen zur Konfiguration für ACL-basierte Administration finden sich unter wendzelnntpd.org.
Anschließend werden die Benutzer mit wendzelnntpadm adduser [Benutzername] angelegt. Mit wendzelnntpadm listusers können Benutzer angezeigt werden, und mit wendzelnntpadm deluser werden sie wieder gelöscht.
Listing 17.20 Anlegen und Löschen eines Benutzers
# sudo wendzelnntpadm adduser swendzel
$ sudo wendzelnntpadm adduser swendzel
Enter new password for this user (max. 100 chars):
User swendzel does currently not exist: okay.
done.
# sudo wendzelnntpadm listusers
Name, Password
--------------
swendzel, MeinTollesPass
done.
# sudo wendzelnntpadm deluser swendzel
done.
# sudo wendzelnntpadm listusers
done.
17.4.4 Anonyme Message-IDs
Wird in der Konfigurationsdatei der Befehl enable-anonym-mids eingetragen, werden IP-Adressen bzw. Hostnames kein Bestandteil der von WendzelNNTPd generierten Message-ID, was das Normalverhalten des Servers ist.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.