Ein eigener Newsserver
Autor: Karsten Kruse
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.
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.
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.
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.
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.
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
.
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.
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 :).
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.
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.