Unterabschnitte

Der Newsserver SN

Einleitung

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.

Voraussetzungen

Es müssen folgende Pakete installiert sein:

Für folgende Funktionen muss außerdem noch das Mail-Package installiert sein:

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?

Was kann SN nicht?

Installation und Verwendung

Installation

Nach der Installation des Paketes über das Setup-Menü sollte ein neuer Eintrag „News Service“ im Setup zu finden sein. Hier ist zuerst die Konfiguration zu bearbeiten. Anschließend im Untermenü „Goto news tools“ die Funktion „Add new group“ auszuführen. Dabei legt man auch einen externen Newsserver an. Jetzt kann man mit „Get/Sent News“ (ebenfalls im Untermenü „Goto news tools“) News holen (oder das Ganze automatisch erledigen lassen).

Die Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt 'Edit configuration' geändert werden.

Ich empfehle für die Konfiguration den Editor 'ece' zu verwenden. Nachdem der Editor beendet wurde, wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, so werden über ein Skript die Anpassungen umgehend wirksam gemacht. Es ist zu beachten, dass einige Programme eigenständig, bei erneuter Aktivierung, die Konfigurationsdatei erneut einlesen, sodass eine Beantwortung dieser Abfrage mit 'Nein' nur zu einem kurzen Aufschub der Aktivierung führt.

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will, findet sie unter /etc/config.d/sn

Die Parameter

SN_START

Wenn der News-Dienst zur Verfügung stehen soll, dann muss hier 'yes' eingetragen werden.

Gültige Werte: yes, no

Standardeinstellung: START_SN='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 hanau.net gibt es eine FAQ zum Thema Message-ID.

Gültige Werte: FQDN

Standardeinstellung: SN_FQDN=”

SN_CLEAR_LOGS

Falls diese Option auf 'yes' gesetzt wird, dann werden die Logfiles bei jedem Bootvorgang gelöscht.

Gültige Werte: yes, no

Standardeinstellung: SN_CLEAR_LOGS='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 doppelten Einträgen, so dass man ab und zu die Funktion zum Sortieren der Grouplist im Setup nutzen sollte.

Gültige Werte: yes, no

Standardeinstellung: SN_REQ_NEW_GROUPS='yes'

SN_POST_FORCE

Wenn diese Option auf 'yes' gesetzt wird, dann werden die Posts sofort an den NNTP Server weitergeleitet.

Gültige Werte: yes, no

Standardeinstellung: SN_POST_FORCE='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.

Gültige Werte: Zahl

Standardeinstellung: SN_ALLOW_HOSTS_N='1'

SN_ALLOW_HOST_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden, z. B. welcher Host oder irgend etwas anderes. SN wertet diesen Parameter nicht aus.

Gültige Werte: alles

Standardeinstellung: SN_ALLOW_HOST_x_NAME=”

SN_ALLOW_HOST_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_ALLOW_HOST_x_ACTIVE'='no'

SN_ALLOW_HOST_x

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 muss dann sichergestellt sein, dass diese aufgelöst werden können. x steht dabei für eine Zahl von 1-N (N ist die Zahl, die bei SN_ALLOW_HOSTS_N angegeben wurde).

Bsp.:

Wenn diese Variable leer gelassen wird, dann darf jeder auf dem Newsserver lesen und schreiben.

Gültige Werte: hostname, ip/subnetmask

Standardeinstellung: SN_ALLOW_HOSTS_x='localhost'

SN_USER_N

Hier gibt man die Anzahl der Benutzer an, die Zugriff zum Newsserver haben sollen.

Gültige Werte: Zahl

Standardeinstellung: SN_USER_N='1'

SN_USER_x_NAME

Wenn der Zugriff auf den Newsserver mit Benutzername und Passwort erfolgen soll, dann kann man hier alle Benutzer und Jeder Eintrag besteht aus einer Zeile. Groß- und Kleinschreibung werden unterschieden. Der Benutzername darf maximal 255 Zeichen lang sein.

Bsp.:

Die Benutzer und Passwörter sind unabhängig von den Systembenutzern. Es können also beliebige Werte vergeben werden.

Gültige Werte: username

Standardeinstellung: SN_USER_x_NAME=”

SN_USER_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_USER_x_ACTIVE'='no'

SN_USER_x_PASSWD

Wenn der Zugriff auf den Newsserver mit Benutzername und Passwort erfolgen soll, dann kann man hier für alle Benutzer die Passwörter eintragen. Jeder Eintrag besteht aus einer Zeile. Groß- und Kleinschreibung werden unterschieden. Passwörter dürfen je maximal 255 Zeichen lang sein.

Bsp.:

Die Benutzer und Passwörter sind unabhängig von den Systembenutzern. Es können also beliebige Werte vergeben werden.

Gültige Werte: password

Standardeinstellung: SN_USER_x_PASSWD=”

SN_LOG_DIR

In dem hier angegebenen Verzeichnis werden alle Logfiles gespeichert. Es muss sichergestellt sein, dass der User 'news' Schreibrechte in diesem Verzeichnis hat, da das Logging sonst nicht funktioniert.

Gültige Werte: absoluter Verzeichnisname

Standardeinstellung: SN_LOG_DIR='/var/log/sn'

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.

Gültige Werte: relativer Dateiname

Standardeinstellung: SN_FETCH_LOG='snfetch.log'

SN_NNTPD_LOG

Hier wird erfaßt welcher Artikel (Message-ID) in welche Newsgroup gepostet wurde.

Gültige Werte: relativer Dateiname

Standardeinstellung: SN_NNTPD_LOG='snntpd.log'

SN_DB_LOG

Logfile für die Datenbankaktivitäten.

Gültige Werte: relativer Dateiname

Standardeinstellung: SN_DB_LOG='sndb.log'

SN_CONF_LOG

Ein Eintrag erfolgt, wenn eine Newsgroup gelöscht oder angelegt wird.

Gültige Werte: relativer Dateiname

Standardeinstellung: SN_CONF_LOG='snconf.log'

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:

Gültige Werte: relativer Dateiname, NG newsgroup, EM email-adresse

Standardeinstellung: SN_ADMIN='snadmin.log'

SN_FETCH_MODE

Mit diesem Eintrag wird festgelegt, wie die News vom externen Server zu holen sind. Drei Einträge sind möglich:

Gültige Werte: manual, wait, auto

Standardeinstellung: SN_FETCH_MODE='manual'

SN_FETCH_TIMES_N

Anzahl der Cronjobs, falls SN_FETCH_MODE='auto'. Normalerweise reicht ein Eintrag aus.

Gültige Werte: Zahl

Standardeinstellung: SN_FETCH_TIMES_N='1'

SN_FETCH_TIMES_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden, z. B. welcher Crontab oder irgend etwas anderes. SN wertet diesen Parameter nicht aus.

Gültige Werte: alles

Standardeinstellung: SN_FETCH_TIMES_x_NAME=”

SN_FETCH_TIMES_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_FETCH_TIMES_x_ACTIVE'='no'

SN_FETCH_TIMES_x

Falls SN_FETCH_MODE='auto' ist, dann legt dieser Eintrag fest, wann der Cronjob ausgeführt wird.

(komplexe Definition): Legt fest, zu welchen Zeitpunkten dieser Cronjob ausgeführt werden soll. Die einzelnen Werte sind durch Leerzeichen voneinander getrennt. Das Format setzt sich wie folgt zusammen: Minute Stunde Tag_im_Monat Monat Wochentag

Minute: Wert von 0 bis 59
Stunde: Wert von 0 bis 23
Tag_im_Monat: Wert von 1 bis 31
Monat: Wert von 1 bis 12
Wochentag: Wert von 0 bis 7, wobei 0 und 7 Sonntag sind

Ein Cronjob wird nur ausgeführt, wenn alle Kriterien zutreffen (logisches UND);
so wird ein Cronjob mit der Definition 23 12 1 * 1 nur um 12.23 Uhr eines jeden Monatsersten ausgeführt, der zugleich ein Montag ist.

Einzelne Werte können mit Kommata getrennt gruppiert werden; sie werden dann wie ein logisches ODER betrachtet.

Beispiel:
0,27 * * * * führt jeweils zur vollen Stunde und 27 Minuten danach einen Job aus;
dieser Eintrag ist äquivalent zu den beiden folgenden (zusammen betrachtet): 0 * * * * und 27 * * * *
Periodische Einträge können durch die Angabe einer Basis und des Intervalls angegeben werden.
So wird 0 0/2 * * * immer zu jeder geraden vollen Stunde ausgeführt.

Gültige Werte: m s T M W (25 23 * * *)

Standardeinstellung: SN_FETCH_TIMES_x='*/30 * * * *'

SN_FETCH_CONNECTS

Legt die maximale Anzahl der Verbindungen zum externen Newsserver fest. Mit zwei gleichzeitigen Verbindungen ist eine ISDN-Leitung i.d.R. bereits ausgelastet.

ACHTUNG
Manche Newsserver haben eine Beschraenkung der Anzahl gleichzeitiger Verbindungen von einer IP (bei news.cis.dfn.de sind z.B. maximal vier gleichzeitige Verbindungen von einer IP erlaubt). Man sollte sich also vorher darüber informieren, sonst kann es passieren, dass einige Gruppen nicht oder nur unvollständig synchronisiert werden.


Gültige Werte: Zahl

Standardeinstellung: SN_FETCH_CONNECTS='2'

SN_WAIT_PORT

Falls SN_FETCH_MODE='wait' ist, dann wird auf diesem Port auf die Nachricht 'ONLINE' gewartet.

Gültige Werte: Zahl von 1024-65535

Standardeinstellung: SN_WAIT_PORT='20000'

SN_WAIT_ALLOW

Aus Sicherheitsgründen muss hier angegeben werden, von welchem Host die Nachricht 'ONLINE' geschickt werden darf. In der Regel ist das die IP des Routers.

Gültige Werte: hostname, ip

Standardeinstellung: SN_WAIT_ALLOW='localhost'

SN_GENERAL_N

Gibt die Anzahl der Punkte für allgemeine Einstellungen der Newsgroups an.

Gültige Werte: Zahl

Standardeinstellung: SN_GENERAL_N='1'

SN_GENERAL_x_NAME

An dieser Stelle kann eine Beschreibung hinterlegt werden. SN wertet diesen Parameter nicht aus.

Gültige Werte: alles

Standardeinstellung: SN_GENERAL_x_NAME=”

SN_GENERAL_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_GENERAL_x_ACTIVE'='no'

SN_GENERAL_x_GROUP

Gibt an, auf welche Gruppen die Einstellungen anzuwenden sind.

Gültige Werte: regulärer Ausdruck (grep-Syntax)

Standardeinstellung: SN_GENERAL_x_GROUP='.*'

SN_GENERAL_x_EXPIRETIME

Gibt die Zeit an, nach der alte Artikel aus dem Spool wieder entfernt werden sollen. Die Angabe erfolgt als Zahl mit einem Suffix. Das Suffix gibt dabei an, welcher Zeitraum mit der Zahl gemeint ist. Folgende Suffixe können verwendet werden:

Gültige Werte: Zahl[hdwmy]

Standardeinstellung: SN_GENERAL_x_EXPIRETIME='1m'

SN_GENERAL_x_MAXARTICLES

Legt die maximal Anzahl der Artikel fest, die von einer Gruppe bezogen werden sollen. So kann man verhindern, dass, z.B. nach einem Urlaub, ein paar tausend alte Artikel geladen werden, die nicht mehr interessant sind.

Gültige Werte: Zahl

Standardeinstellung: SN_GENERAL_x_MAXARTICLES='200'

SN_GENERAL_x_STATUS

Beschreibt den Status der Gruppe auf dem Server. Mit 'ro' kann man eine Gruppe auf readonly setzen, mit 'rw' können alle mit Zugriff auf den Server in der Gruppe schreiben und lesen.

Gültige Werte: rw, ro

Standardeinstellung: SN_GENERAL_x_STATUS='rw'

SN_MODERATED_N

Hier kann man die Anzahl der moderierten Gruppen festlegen.

Gültige Werte: Zahl

Standardeinstellung: SN_MODERATED_N='0'

SN_MODERATED_x_GROUP

Name der moderierten Gruppe. Falls die Gruppe nicht existiert, wird sie angelegt.

Gültige Werte: Newsgroupname

Standardeinstellung: SN_MODERATED_x_GROUP=”

SN_MODERATED_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_MODERATED_x_ACTIVE'='no'

SN_MODERATED_x_MOD

Mailadresse des Moderators der Gruppe. Alle Postings ohne korrekten Approved-Header werden automatisch an den Moderator gesandt (dazu muss das Mail-Package installiert sein). Der Approved-Header wird folgendermassen erwartet: 'Approved: email-adresse', wobei 'email-adresse' die in dieser Option angegebene Adresse bezeichnet. Der Moderator kann das Posting nach dem Setzen des Headers ganz normal bei Server einliefern.

Gültige Werte: email-adresse

Standardeinstellung: SN_MODERATED_x_MOD=”

SN_LIST_N

Legt die Anzahl der Mailinglisten-Einstellungen fest.

Gültige Werte: Zahl

Standardeinstellung: SN_LIST_N='1'

SN_LIST_x_NAME

Die komplette Adresse der Mailingliste. Bsp.: 'fli4l@lists.spline.de'

Gültige Werte: Mailinglistenadresse

Standardeinstellung: SN_LIST_x_NAME='yes'

SN_LIST_x_ACTIVE

Über diesen Parameter wird eingestellt, ob der Datensatz aktiv sein soll.

Gültige Werte: yes, no

Standardeinstellung: SN_LIST_x_ACTIVE'='no'

SN_LIST_x_USER

Lokaler User, an den die Mails aus der Mailingliste gehen.

Gültige Werte: lokaler Benutzername

Standardeinstellung: SN_LIST_x_USER=”

SN_LIST_x_TO

Falls die Reply-Adresse der Liste von SN_LIST_x_NAME abweicht, dann kann hier die Antwortadresse angegeben werden. Diese Variable bleibt i.d.R. leer.

Gültige Werte: Mailinglistenadresse

Standardeinstellung: SN_LIST_x_TO=”

SN_LIST_x_NEWSGROUP

Name der lokalen Newsgroup, in die die Mailingliste umgeleitet werden soll.

Gültige Werte: Newsgroupname

Standardeinstellung: SN_LIST_x_NEWSGROUP=”

SN_LIST_x_SENDER

Bei einer Antwort auf eine Nachricht in einer Gruppe, in die eine Mailingliste umgeleitet wurde, wird eine E-Mail generiert. Dabei wird der Envelope-Sender aus dem aktuellen Benutzernamen erzeugt. Das ist aber in jedem Fall der User news. Da es dadurch jedoch zu zu Problemen mit dem externen Mailserver kommen kann bzw. u.U. die Mailingliste die Mail nicht akzeptiert, sollte hier der richtige Absender eingetragen werden. Bsp.: Du hast Dich mit der Adresse foo@bar.de bei der Liste angemeldet, dann solltest Du hier SN_LIST_x_SENDER='foo@bar.de' setzen. Wenn diese Variable leer gelassen wird, dann wird den Envelope-Sender nicht geändert. Falls keine Replies an die Liste erfolgen sollen, dann sollte man hier SN_LIST_x_SENDER='ro' setzen. Damit wird er Status der Gruppe auf readonly gesetzt.

Gültige Werte: email-adresse, ro

Standardeinstellung: SN_LIST_x_SENDER=”

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 muss, 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. myfqdn) wo man sich einen eigenen FQDN reservieren kann. Dieser ist allerdings nur für den Einsatz in MID's von News oder Mails gedacht.

Die Funktionen im Servicemenü

View documentation
Anzeigen der Dokumentation.

Edit and apply config
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, ansonsten werden die Änderungen nicht übernommen.

Show Status
Gibt aus, ob der Newsserver aktiviert ist und, wenn ja, wieviele Benutzer gerade eingeloggt sind.

Goto news tools
Wechselt in das Menü mit den Administrationswerkzeugen. Beschreibung siehe unten.

Add newsgroup
Damit kann man eine neue Gruppe abonnieren. Man kann sie entweder von einem bereits existierenden Server beziehen (dann entfallen die Angaben zum Server) oder man legt einen neuen Server an. Falls bereits eine Gruppenliste vom externen Server heruntergeladen wurde, kann man mit regulären Ausdrücken arbeiten. Die Liste wird dann durchsucht und alle Treffer ausgegeben. Weiterhin können auch lokale Newsgroups angelegt werden. Dies geschieht, indem man 'existing Newsserver (or local NG)' wählt und dann 'local'. Die Gruppe wird mit dem Namen angelegt, 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 einer lokalen Gruppe. Dabei wird die Gruppe inkl. aller gespeicherten Postings gelöscht.

Delete external newsserver
Falls man sich beim Anlegen des Newsservers vertippt hat, oder falls der externe Server nicht mehr benutzt werden kann/soll, dann besteht hier die Möglichkeit diesen zu löschen. Dabei hat man die Auswahl zwischen drei Varianten:

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 Ausdrücken suchen, die grep auch versteht. Bsp.:

Normalerweise steht . für ein beliebiges Zeichen. Wenn man jedoch nach dem Zeichen . suchen will, dann muss man es maskieren mit \. Da \ aber auch ein Sonderzeichen ist und es bei der Übergabe durch die Shell verschluckt werden würde, muss man dieses wiederum mit \ maskieren.

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, dass man doppelte Einträge in der Grouplist hat, sodass bei der Suche nach einer Gruppe evtl. einige doppelt aufgeführt werden. Mit dieser Funktion wird die Liste sortiert und von diesen Dupes befreit.

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

Show subscribed Newsgroups
Damit kann man sich die zur Zeit abonierten Gruppen anzeigen lassen.

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 in etwa 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, dass 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 doppelt vorhanden erkannt

Show logfiles
Zeigt die vorhanden logfiles an.

About

Die Originalsourcen des SN sind hier zu finden: SN-News