13. August 2012

Einen eigenen Usenet(NNTP)-Server mit Ubuntu aufsetzen

(R:OK)
Mit der Freigabe von WendzelNNTPd-2.0.1 möchte ich heute darüber schreiben, wie sich ein eigener NNTP-Server (also ein Usenet-Server) in wenigen Minuten unter Ubuntu aufsetzen lässt.

WendzelNNTPd ist eine Eigenentwicklung. Außerdem verfügt der Server (und das ist der Unterschied zu anderen NNTP-Servern) über eine sehr einfache Konfiguration und mächtige Access Control-Features (ACL und RBAC). Ein Datenbank-Abstraktionslayer für MySQL und SQLite sowie IPv6-Support sind ebenfalls vorhanden.

0. Mikro-Anleitung für die ganz Ungeduldigen (anschließend erklären die Schritte 1-8 die Details)

Zunächst Ubuntu 12.04 installieren und folgende Befehle ausführen:

$ sudo apt-get install flex bison sqlite3 libsqlite3-dev libmysqlclient-dev 

Nun WendzelNNTPd von http://sourceforge.net/projects/wendzelnntpd/files/ herunterladen und wie folgt entpacken, kompilieren und installieren.

$ tar -xzf wendzelnntpd-2.0.?-src.tgz
$ cd wendzelnntpd/
$ ./configure
$ make
$ sudo make install
$ sudo /usr/local/sbin/wendzelnntpd -d

Fertig :-)

1. Ubuntu Installieren

Zunächst sollte Ubuntu 12.04 installiert werden. Im Folgenden setze ich eine bestehende Internetverbindung voraus.

2. Abhängige Pakete installieren

WendzelNNTPd benötigt eine Reihe an Pakten, damit die Kompilierung läuft. Dazu muss folgender Befehl ausgeführt werden.

$ sudo apt-get install flex bison sqlite3 libsqlite3-dev libmysqlclient-dev

3. WendzelNNTPd kompilieren und installieren

Nun laden wir die aktuelle Version des Dienstes von http://sourceforge.net/projects/wendzelnntpd/?source=directory herunter. Die heruntergeladene Datei heißt wendzelnntpd-2.0.1-src.tgz (ggf. neuere Versionsnummer verwenden!).

Anschließend muss die Datei entpackt werden und es muss das configure-Skript ausgeführt werden:

$ tar -xzf wendzelnntpd-2.0.1-src.tgz
$ cd wendzelnntpd/
$ ./configure
...

Anmerkung: Wer keinen MySQL-Support einbauen möchte, führt statt ./configure einfach MYSQL=NO ./configure aus (funktioniert erst bei der neuen Version 2.0.5).

Jetzt rufen wir make und sudo make install auf, um das Programm zu kompilieren und zu installieren.

$ make
...
$ sudo make install
...

4. WendzelNNTPd starten

Im Wesentlichen wird WendzelNNTPd nun schon lauffähig sein. Gestartet wird der Dienst über sudo /usr/local/sbin/wendzelnntpd (oder einfach sudo wendzelnntpd). Um den Daemon-Modus (also den Start als Hintergrunddienst) zu verwenden, muss WendzelNNTPd mit "-d" gestartet werden.

$ sudo /usr/local/sbin/wendzelnntpd -d


5. Thunderbird konfigurieren

Zum Test des Servers lässt sich Thunderbird sehr einfach konfigurieren. Dazu muss ein neuer Account (NNTP-Server) angelegt werden und als Server-IP die 127.0.0.1 angegeben werden. Anschließend die vorhandenen Newsgroups abonnieren (es gibt zu Beginn nur alt.wendzelnntpd.test) und eine Testnachricht posten.



6. WendzelNNTPd konfigurieren

Die Hauptkonfiguration des Servers wird in der /usr/local/etc/wendzelnntpd.conf abgewickelt. Die Details der Konfiguration sind der offiziellen Dokumentation zu entnehmen. Wahrscheinlich soll  der Dienst auf einer weiteren IP im LAN bereitgestellt werden. Dazu muss eine zusätzliche Zeile mit der weiteren IP eingefügt werden (Ihre Netzwerk-IP erhalten Sie über ifconfig -- in diesem Beispiel wurde 192.168.0.1 gewählt):

listen 192.168.0.1

Die weitere Konfiguration (Anlegen/Verwalten von Newsgroups und eventuellen Benutzern) erfolgt maßgeblich mit dem Tool wendzelnntpadm (benötigt Root-Rechte!). Wird das Tool ohne Parameter aufgerufen, erscheint eine Übersicht zu den möglichen Befehlen.

Auflistung der aktuell vorhandenen Newsgroups:

$ sudo wendzelnntpadm listgroups

Anlegen der Newsgroup "de.linux.discussion":

$ sudo wendzelnntpadm addgroup de.linux.discussion y

Anschließend kann die Newsgroup mit dem Usenet-Client (also etwa Thunderbird) abonniert werden (dazu muss ggf. ein Refresh der Newsgroup-Liste durchgeführt werden, damit die neue Newsgroup in Ihrer Liste erscheint).

7. WendzelNNTPd neustarten

Bei Konfigurationsänderungen (etwa einer neuen IP, auf der der Server Verbindungen entgegen nehmen soll), muss der Server neu gestartet werden. Ein Neustart ist nicht bei Änderungen, die mit wendzelnntpadm getätigt wurden, notwendig, da der Dienst diese Datenbank-basierten Änderungen automatisch übernimmt. Entsprechend gibt es nach erfolgreicher Grundkonfiguration kaum mehr Gründe für einen Neustart.

Der Neustart erfolgt über das Beenden des Prozesses und anschließendes Neustarten.

$ sudo pkill wendzelnntpd
$ sudo /usr/local/sbin/wendzelnntpd -d

8. Optional: Automatischer Start des Servers

Um WendzelNNTPd nicht von Hand starten zu müssen, enthält die Download-Datei ein Startup-Skript, dass auch unter Ubuntu funktioniert. Wir wechseln dazu wieder in das Verzeichnis mit dem entpackten wendzelnntpd-2.0.1-src.tgz-Paket und installieren aus dem Unterverzeichnis das Startup-Skript.

$ cd wendzelnntpd # das ist das Verzeichnis des entpackten Archivs
$ cd startup
$ sudo cp init.d_script /etc/init.d/wendzelnntpd
$ sudo chmod 755 /etc/init.d/wendzelnntpd
$ sudo ln -s /etc/init.d/wendzelnntpd /etc/rc2.d/S99wendzelnntpd

Nach einem Neustart sollte der Server automatisch laufen (dies kann mit pgrep wendzelnntpd überprüft werden, was eine Prozess-ID zurückgeben sollte).

Durch das nun installierte Skript können Sie den Dienst jederzeit mit

$ sudo /etc/init.d/wendzelnntpd start 

starten sowie mit

$ sudo /etc/init.d/wendzelnntpd stop

beenden.


Viel Spaß mit dem Server!
Fragen und Feedback sind als Kommentare zu diesem Posting willkommen.