======================================== Dokumentation für das Newsserver-Paket ======================================== Inhalt: ========= 1 Einführung 1.1 Einleitung 1.2 Voraussetzungen 1.3 Funktionsumfang 2 Installation und Verwendung 2.1 Installation 2.2 Beschreibung der Konfigurationsvariablen 2.3 Zusätzliche Anmerkungen zur Konfiguration 2.4 Die Funktionen im Servicemenü 3 Zukünftige Entwicklung 4 About 1 Einleitung ============== 1.1 Einleitung ---------------- Dies ist die Dokumentation zum SN-Paket. SN steht für SmallNews und ist ein kleiner und schneller Newsserver. Er ist für diejenigen gedacht, die gerne die Vorteile eines systemunabhängigen Newsdienstes nutzen möchten (es soll ja Leute geben, die mit mehr als einem Betriebssystem auf der selben Maschine arbeiten), ohne dabei ständig online sein zu müssen, um die aktuellen News auf jedem System lesen zu können. Es werden sicher Einige fragen: "Warum SN und nicht INN oder Leafnode?" INN: overkill pur Leafnode: Das Konzept von SN gefiel mir besser :) 1.2 Voraussetzungen --------------------- Es müssen folgende Pakete installiert sein: - Base - Inet - Mail (falls Meldungen an den Newsadmin per EMail zugestellt werden sollen) 1.3 Funktionsumfang --------------------- Wie funktioniert SN? Zu jeder Newsgroup muß angegeben werden, von welchem externen Newsserver sie bezogen werden soll. Theoretisch kann man also für jede Newsgroup einen anderen Server angeben. Der Server wird über den xinetd gestartet, d.h. wenn eine Verbindung von einem Client (Newsreader) auf Port 119 (das ist der nntp-Port) gewünscht wird, dann wird der daemon gestartet, sofern der Client eine Zugriffsberechtigung hat (siehe Beschreibung der Konfigurationsvariablen). Was kann SN? - mehrere Verbindungen zu den externen Newsservern gleichzeitig (um die Bandbreite auszunutzen); zur Zeit auf 2 festgesetzt, wird in der nächsten Version konfigurierbar sein. - mehrere externe Newsserver (aber pro Newsgroup nur einer). - gepackte Newsbase (spart Platz) - mehrere Artikel pro Datei (spart Platz) - lokale Newsgroups (werden nicht an externe Newsserver weitergeleitet) Was kann SN nicht? - tausende von Newsgroups verwalten. SN ist nicht INN. Laut Autor sind um die hundert ok. - Filtern - Benutzerverwaltung (der Zugriff muß über den xinetd eingeschränkt werden) 2 Installation und Verwendung =============================== 2.1 Installation ------------------ Dazu gibt es eigentlich nicht viel zu sagen. Einfach im Setupmenü "Install new package" wählen, dann sich bis zu meinem Packageserver (der von Christian Würdig halt :)) durchhangeln und das SN-Paket auswählen. Anschließend wird das Paket heruntergeladen und installiert. Danach sollte man im Setupmenü unter "Service administration" den Eintrag "News Service" finden. Dort ist als ers- tes "Edit and apply config" auszuführen. Der Newsserver ist erst verfügbar, wenn die Konfigurationsdatei bearbeitet wurde. Nach der Bearbeitung der Konfigurationsdateien sollten als erstes ein paar Newsgroups abonniert werden (die Grouplist kann man erst abrufen, wenn ein Newsserver existiert und ein Newsserver wird angelegt in dem man eine NG abonniert und angibt, von welchem Server man sie beziehen will). 2.2 Beschreibung der Konfigurationsvariablen ---------------------------------------------- [SN_START] Wenn der News-Dienst zur Verfügung stehen soll, dann muß hier 'yes' eingetragen werden. Syntax: 'yes', 'no' [SN_FQDN] Falls vom Newsreader keine Message-ID generiert wird, dann macht SN dies. Da das i.d.R. jedoch zu einer ungültigen MID führt (weil die im LAN verwendete Domain meist eine fiktive ist) kann der FQDN-Teil hier explizit angegeben werden. Auf http://www.hanau.net/faq_message-id_ueberschreiben.php gibt es eine FAQ zum Thema Message-ID. Syntax: FQDN [SN_CLEAR_LOGS] Falls diese Option auf 'yes' gesetzt wird, dann werden die Logfiles bei jedem Bootvorgang gelöscht. Syntax: 'yes', 'no' [SN_REQ_NEW_GROUPS] Wenn diese Option auf 'yes' steht, dann wird bei jedem Connect zu einem externen Newsserver nach neuen Gruppen auf diesem gesucht. Man sollte allerdings zuerst die Grouplist per Setup vom jeweiligen Newsserver bestellen. Gelegentlich kommt es leider zu Dupes, so daß man ab und zu die Funktion zum Sortieren der Grouplist im Setup nutzen sollte. Syntax: 'yes', 'no' [SN_ALLOW_HOSTS_N] Mit dieser Option wird die Anzahl der zugelassenen Hosts und/oder IP-Bereiche festgelegt, die auf den Newsserver zugreifen dürfen. Es gilt ein DENY ALL, spricht, es werden nur die explizit angegebenen IP's zugelassen, alle anderen sind nicht berechtigt. Syntax: Zahl [SN_ALLOW_HOST_#] Hier werden die Hosts angegeben, die Zugriff zum Newsserver erhalten sollen. Man kann eine einzelne IP angeben oder einen Bereich, Hostnamen sind ebenfalls erlaubt, allerdings muß dann sichergestellt sein, daß diese aufgelöst werden können. # steht dabei für eine Zahl von 1-n (n ist die Zahl, die bei SN_ALLOW_HOSTS_N angegeben wurde). Bsp.: - eine Angabe von '192.168.5.0/24' bewirkt, daß alle Hosts aus dem IP-Bereich 192.168.5.0-254 Zugriff haben. - 'localhost' bewirkt, daß man von EIS/FAIR selbst Zugriff hat. Syntax: hostname, ip/subnetmask [SN_LOG_DIR] In dem hier angegebenen Verzeichnis werden alle Logfiles gespeichert. Es muß sichergestellt sein, daß der User 'news' Schreibrechte in diesem Verzeichnis hat, da das Logging sonst nicht funktioniert. Syntax: absoluter Verzeichnisname [SN_FETCH_LOG] Hier wird erfaßt, von welcher Newsgroup, wie viele Artikel geladen wurden und wie lange dies gedauert hat. Auch evtl. Fehler (z.B. fehlgeschlagene Authentifizierung am externen Newsserver) werden hier gelistet. Syntax: relativer Dateiname [SN_NNTPD_LOG] Hier wird erfaßt welcher Artikel (Message-ID) in welche Newsgroup gepostet wurde. Syntax: relativer Dateiname [SN_DB_LOG] Logfile für die Datenbankaktivitäten. Syntax: relativer Dateiname [SN_CONF_LOG] Ein Eintrag erfolgt, wenn eine Newsgroup gelöscht oder angelegt wird. Syntax: relativer Dateiname [SN_ADMIN] An dieses Ziel werden Messages gesandt, die für den Administrator des lokalen Newsservers gedacht sind. Das sind meistens fehlgeschlagene Postings, die der externe Newsserver nicht angenommen hat (z.B. weil die Newsgroup dort nicht existiert, oder das Posting zu alt ist) oder Cancellation-requests für eine bestimmte Message. Dabei gibt es drei Optionen: - die Angabe eines Logfiles (wie oben), dann werden alle Nachrichten mit Datum und Uhrzeit in dieses Log geschrieben - mit 'NG newsgroup' werden die Messages in die lokale Newsgroup local.newsgroup gepostet (wird automatisch angelegt) - mit 'EM email-adresse' werden die Messages an die angegebene Mailadresse weitergeleitet (falls es sich um eine lokale Adresse handelt muß der Be- nutzer existieren, Bsp.: 'EM root' - alle Nachrichten gehen an root) Syntax: relativer Dateiname, 'NG newsgroup', 'EM email-adresse' [SN_FETCH_MODE] Mit diesem Eintrag wird festgelegt, wie die News vom externen Server zu holen sind. Drei Einträge sind möglich: - manual: das Abholen und Senden der News muß von Hand per Setup veranlaßt werden - wait: es wird ein Eintrag in der xinetd-Konfiguration gemacht, so daß auf eine einkommende Verbindung auf Port SN_WAIT_PORT gelauscht wird. Falls diese Verbindung zustande kommt und die Zeichenkette 'ONLINE' empfangen wird, dann wird das Pollen der News veranlaßt. Es wird lediglich die Verbindung von dem durch SN_WAIT_ALLOW festgelegten Host akzeptiert. Falls fli4l als Router genutzt wird, dann kann man dort z.B. im Skript /etc/ppp/ip-up.user folgenden Eintrag machen: 'echo "ONLINE" | netcat -w 10 ' (dazu muß allerdings aus dem opt_tools netcat installiert sein). Diese Option ist gedacht für Leute, die ihren Router auf manuelle Wahl gestellt haben (wie ich z.B.). - auto: das Pollen wird von einem Cronjob erledigt Syntax: 'manual', 'wait', 'auto' [SN_FETCH_TIMES] Falls SN_FETCH_MODE='auto' ist, dann legt dieser Eintrag fest, wann der Cronjob ausgeführt wird. Dabei ist die normale Cron-Syntax (man crontab) zu verwenden. Bsp.: '*/10 * * * *' - alle 10min News holen '0 */2 * * *' - alle zwei Stunden (immer zur vollen Stunde) News holen Syntax: Cron-Syntax [SN_WAIT_PORT] Falls SN_FETCH_MODE='wait' ist, dann wird auf diesem Port auf die Nachricht "ONLINE" gewartet. Syntax: Zahl von 1024-65535 [SN_WAIT_ALLOW] Aus Sicherheitsgründen muß hier angegeben werden, von welchem Host die Nach- richt "ONLINE" geschickt werden darf. In der Regel ist das die IP des Routers. Syntax: hostname, ip 2.3 Zusätzliche Anmerkungen zur Konfiguration ----------------------------------------------- [SN_FQDN] Eine Message-ID sieht so aus: local-Part@FQDN FQDN steht für "Full-Qualified-Domain-Name", z.B.: gmx.de oder web.de sind solche. Es gibt immer wieder Diskussionen, ob der FQDN gültig sein muß, oder nicht, da es bei der Interpretation durchaus Spielräume gibt, aber es gilt: Wenn man einen FQDN nutzt, der einem selbst gehört (z.B. eigene Domain) dann ist man auf der sicheren Seite. Wenn man das nur für den Newsservice nutzen will, dann gibt es Adressen (z.B. http://www.myfqdn.de) wo man sich einen eigenen FQDN reservieren kann. Dieser ist allerdings *nur* für den Einsatz in MID's von News oder Mails gedacht. 2.4 Die Funktionen im Servicemenü ----------------------------------- [Edit and apply config] Zur Zeit ist es noch nötig, die Konfigurationsdatei von Hand zu bearbeiten. Was die einzelnen Variablen machen ist oben beschrieben. Nach dem Abspeichern der Datei kommt die Frage: "apply new config? (yes/no)". Wenn man mit 'y' oder 'yes' antwortet, dann werden die neuen Einstellungen übernommen, an- sonsten werden die Änderungen nicht übernommen. [Show documentation] Anzeigen der Dokumentation. [Request Newsgrouplist from external Server] Damit wird die komplette Liste aller Newsgroups, die der entsprechende externe Newsserver führt angefordert. [Search for Newsgroups in Grouplist] Falls man die Grouplist vom externen Server heruntergeladen hat, dann kann mit dieser Funktion diese Liste durchsuchen. Dabei kann nach allen regulären Aus- drücken suchen, die grep auch versteht. Bsp.: ^de\\.comp.* - sucht nach allen Gruppen, die mit 'de.comp' anfangen ascii - sucht nach allen Gruppen, die 'ascii' enthalten ^de.*pgp - sucht nach allen Gruppen in der de-Hierarchie, die was mit pgp zu tun haben \\.pascal$ - sucht nach allen Gruppen, die auf '.pascal' enden Normalerweise steht . für ein beliebiges Zeichen. Wenn man jedoch nach dem Zei- chen . suchen will, dann muß man es maskieren mit \. Da \ aber auch ein Son- derzeichen ist und es bei der Übergabe durch die Shell verschluckt werden würde, muß man dieses wiederum mit \ maskieren. [Add Newsgroup] Damit kann man eine neue Gruppe abonieren. Man kann sie entweder von einem bereits existierenden Server beziehen (dann entfallen die Angaben zum Server) oder man legt einen neuen Server an. Weiterhin können auch lokale Newsgroups angelegt werden. Lokale Gruppen legt man an, indem man '1) existing Newsserver (or local NG)' wählt und dann '3) local'. Die Gruppe wird mit dem Namen ange- legt, den man angibt. Damit es nicht zu Problemen mit öffentlichen Gruppen kommt, sollte man immer ein local oder lokal vor den Gruppennamen setzen. Bsp.: local.foobar oder lokal.wichtig [Delete Newsgroup] Hier kann man eine bestehende Newsgroup abbestellen bzw. löschen im Falle ei- ner lokalen Gruppe. Dabei wird die Gruppe inkl. aller gespeicherten Postings gelöscht. [Show subscribed Newsgroups] Damit kann man sich, die zur Zeit abonierten Gruppen anzeigen lassen. [Get/Send News] Hier kann man das Abholen/Senden der News von Hand auslösen. [Change Login on external Newsserver] Falls man sich vertippt hat, oder sich der Login auf dem externen Server ge- ändert hat, dann kann man das hier korrigieren. Das ist natürlich nur nötig, wenn der externe Server einen Login benötigt. [Sort Grouplists and kill Dupes] Wenn man per SN_REQ_NEW_GROUPS='yes' regelmäßig nach neuen Gruppen suchen läßt, dann passiert es leider, daß man doppelte Einträge in der Grouplist hat, so daß bei der Suche nach einer Gruppe evtl. einige doppelt aufgeführt werden. Mit dieser Funktion wird die Liste sortiert und von diesen Dupes be- freit. [Clear up Database] Wenn der Server länger läuft (länger als 24h) dann empfiehlt es sich, mit dieser Funktion veraltete Einträge auszusortieren und den Index neu zu ordnen. Leider kommt es dabei ab und zu zu Problemen. Falls die letzten Zeilen in SN_DB_LOG int etwas so aussehen: Wed Aug 7 17:54:26 MEST 2002 snexpire:dh_open:table has wrong size! snprimedb:dh_open:table has wrong size! snprimedb:Can't open database:Function not implemented? dann wurde die Datenbank nicht richtig aufgebaut. Abhilfe schafft hier ein erneutes Ausführen der Funktion "Clear up Database" (bitte beachten, daß das Aufbauen der Datenbank eine Weile dauert, besonderns bei vielen Artikeln). Die letzten Zeilen in SN_DB_LOG sollten in etwa so aussehen: snprimedb:insert:"message-id-bla-blub" already exists in foo-bar:12345 snprimedb:12345 insertions oder es ist nur eine Datumszeile vorhanden, dann wurden keine Artikel als dop- pelt vorhanden erkannt. 3 Zukünftige Entwicklung ========================== In Planung ist die Implementation der Mail to News Funktion, so daß Mailinglisten in eine Newsgroup umgeleitet werden können, die Unterstützung eigener moderierter Newsgroups sowie die Auswertung der Logfiles. 4 About ========= Die Originalsourcen des SN sind hier zu finden: http://www.iki.fi/patrik/sn/ Bei Problemen, Kritik oder Verbesserungsvorschlägen einfach Mail an eisfair@chriswue.de oder in die Newsgroup spline.eisfair letzte Änderung: 2002/10/09, 23:53 MEZ (c) 2002 by Christian Würdig