www.Newbie-Net.de

Leafnode

Ein eigener Newsserver

Autor: Karsten Kruse

Inhalt

Vorwort

Leafnode ist ein Offline-News-Server der oft eingesetzt wird und seine Aufgabe problemlos erledigt. Leafnode ist wartungsarm, einfach und schnell. Allerdings ist Leafnode nicht unbegrenzt Skalierbar und damit fühlt sich Leafnode in besonders in kleinen bis mittleren Netzen zu Hause. Genau das richtige Programm für uns :). Die Konfiguration ist bei allen Distributionen gleich, nur die Installation wird sich unterscheiden.

Die Installation

Jede Distribution hat ihre eigene Art Pakete zu installieren, bei SuSE Linux ist es rpm oder das Frontend Yast. Debian Linux benutzt dpkg oder das Frontend apt. Was auch immer benutzt wird, das Paket wird in den meissten Fällen leafnode heissen und sollte jetzt installiert werden.

Die Konfigurationsdatei

Als nächstes wird die Konfigurationsdatei von Leafnode angepasst. Sie liegt in /etc/leafnode/config. Wir starten also unseren Editor, z.B. so: mcedit /etc/leafnode/config. Hier ist meine eigene Konfiguration als Beispiel:

 # Ungelesene Diskussionen werden nach 14 Tagen gelöscht:
 expire       = 14

 # 300 Postings werden beim ersten abonieren einer Gruppe downgeloadet:
 initialfetch = 300

 # Wir downloaden niemals mehr als 800 Artikel aus einer Gruppe:
 maxfetch = 800

 # Lehne Postings mit mehr als 5 Crossposts ab (gegen Spam):
 maxcrosspost = 5

 # Lehne Postings mit weniger als 2 oder mehr als 1000 Zeilen Text ab:
 minlines = 2
 maxlines = 1000

 # Lehne Postings grösser als 51200 bytes (50kb) ab:
 maxbytes = 51200

 # Lösche Gruppen die versehentlich geöffnet wurden nach 5 Tagen:
 timeout_short = 5

 # Lösche Gruppen die seit 14 Tagen nicht mehr gelesen wurden:
 timeout_long = 14

 # Hole die Gruppenliste nach 60 Tagen vom Server neu:
 timeout_active = 60

 # Wenn dein Newsreader keine Ordentliche Message-ID erzeugt
 # und dein Host auf dem leafnode läuft keinen im Internet erreichbaren
 # Hostnamen hat musst du hier einen einzigartigen Hostnamen eintragen.
 # Man kann sich einen bei www.dyndns.org umsonst besorgen.
 hostname = myhost.dyndns.org

 # Der Newbie-Net-Newsserver braucht kein Passwort, nur einen Usernamen:
 server = news.bw-networx.net
 username = newbie-net

 # Bei T-Onlines Newsserver brauche ich kein Passwort und keinen Usernamen:
 server   = news.t-online.de

 # Dieser Newsserver will Usernamen und Passwort:
 server   = news.cis.dfn.de
 username = Supermann0815
 password = hochgeheim

Nachdem wir unsere eigenen Newsserver und Zugangsdaten eingetragen haben können wie die Datei speichern und den Editor verlassen.

Leafnode als Dämon einrichten

Inetd

Das nächste was zu tun ist: Wir sagen dem System das es Leafnode starten soll wenn wir mit unserem Newsreader den Newsserverport ansprechen. Dazu Editieren wir mit mcedit /etc/inetd.conf die Konfigurationsdatei des Superservers inetd und stellen sicher das folgende Zeile vorhanden ist:

 nntp    stream  tcp     nowait  news    /usr/sbin/tcpd /usr/sbin/leafnode

Danach starten wir inetd mit dem Kommando killall -HUP inetd neu damit die neuen Einstellungen auch wirksam werden. Es ist sinnvoll dem System zu sagen das inetd nach einem Neustart automatisch gestartet wird. Das erledigt man mit Yast oder mit dem Distributionseigenen Runleveleditor.

Xinetd

Sollte inetd nicht installiert sein muss man das entweder nachholen (tcpd oder tcp-wrapper nicht vergessen) oder man benutzt xinetd. Ein xinetd-Eintrag würde so aussehen:

 service nntp
 {
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = news
        server          = /usr/sbin/leafnode
 }

Dieser Eintrag wird in eine Datei namens nntp im Verzeichnis /etc/xinetd.d abgespeichert. Auch bei xinetd wird das neueinlesen der Konfiguration mit dem Kommando killall -HUP xinetd erzwungen.

Test

Mit telnet wird getestet ob unser leafnode auch wirklich startet wenn wir auf Port 119 anfragen.Es sollte die Versionsnummer von leafnode ausgegeben werden:

 telnet localhost 119

Mit dem Kommando quit verabschieden wir uns von leafnode.

Aktivieren

Es ist der Zeitpunkt gekommen wo wir leafnode das erste mal auf die Newsserver im Internet ansetzen. Wir benutzen das Kommando fetchnews -vvv als root um den Kontakt herzustellen und die Gruppenliste abzuholen (das dauert ein paar Minuten beim ersten mal). Die Option -vvv sagt fetchnews das wir die Vorgänge mitlesen wollen.

Hinweis:

Damit leafnode arbeitet, muß das Verzeichnis /var/spool/news/leaf.node mit folgenden Rechten vorhanden sein:

 drwxr-xr-x     2 news news  4096 Okt 19 21:00 leaf.node/

Jetzt können wir mit unserem Newsreader erstmal eine Gruppe abonnieren. Alle Newsreader im Netzwerk bekommen als Newsserver unseren leafnode zugewiesen. Ist leafnode also auf dem Rechner mit der IP 192.168.1.99 geben wir das im Newsreader auch so an. Ein Passwort oder Usernamen brauchen wir nicht. Wir sehen einen Platzhalterartikel in jeder Newsgroup die wir abonniert haben. Wenn wir ihn lesen wird die Gruppe aktiviert und die Artikel beim nächsten fetchnews abgeholt.

Deshalb starten wir fetchnews -vvv als root auch gleich nochmal um die ersten Artikel abzuholen. Wir können jetzt mit unserem Newsreader lesen und posten wie die Weltmeister. Klasse :).

Automatisieren

Aber jedes mal von Hand fetchnews aufrufen? Wir tragen den Befehl einfach in die Datei /etc/ppp/ip-up ein. Es sollte eigentlich schon ein Eintrag vorhanden sein der nur auskommentiert werden muss. Wenn nicht, so sieht mein Eintrag aus:

 /usr/sbin/fetchnews -v >>/var/log/fetchnews &

Der Teil nach dem -v leitet die Ausgaben des Befehls in die Datei /var/log/fetchnews um. Damit kann ich mir die abgelaufenen Vorgänge auch später noch anschauen. Das Programm fetchnews wird jetzt bei jeder Interneteinwahl ausgeführt, wir müssen uns nicht mehr kümmern. Wer sich nicht oft einwählt weil er eine Standleitung oder Flatrate hat kann ja einen Cronjob aufsetzen. Um als root einen Cronjob einzurichten tippen wir folgendes:

 export EDITOR=mcedit
 crontab -e

Wir exportieren die Umgebungsvariable EDITOR weil crontab -e sonst den Editor vi startet, dieser ist nicht gerade als Newbie-freundlich bekannt. Mit diesem Trick wird mcedit benutzt.

Dies ist die Zeile die wir einfügen:

 */20 * * * * root /usr/sbin/fetchnews -v >>/var/log/fetchnews

Damit wird fetchnews alle 20 Minuten ausgeführt.

Ein Cron-Job zur Pflege

Aber was wird mit den alten Artikeln? Irgendwer muss sie löschen sonst ist früher oder später die Festplatte mit Artikeln voll. Dazu benutzen wir texpire. Wir erstellen einen Auftrag für Cron, das jede Nacht die alten Artikel gelöscht werden sollen. So sieht der Cronjob aus:

 15 1 * * * root /usr/sbin/texpire

Damit wird jede Nacht um 1 Uhr 15 texpire gestartet. Fertig :)

Kommentare, Wünsche und Anträge an Karsten Kruse tecneeq(at)tecneeq(dot)de.