.TH leafnode 8 "@VERSION@" leafnode \" -*- nroff -*-
.\" DO NOT EDIT: @configure_input@
.\"
.\" Written by Arnt Gulbrandsen <agulbra@troll.no> and copyright 1995 Troll
.\" Tech AS, Postboks 6133 Etterstad, 0602 Oslo, Norway, fax +47 22646949.
.\"
.\" Use, modification and distribution is allowed without limitation,
.\" warranty, or liability of any kind.
.\"
.\" hilit19 is stupid: "

.SH NAME
leafnode \- ein NNTP Server für kleine Sites (mit Wählverbindung)

.SH ÜBERSICHT
.B leafnode

.SH BESCHREIBUNG
.B Leafnode
ist ein USENET-Software-Paket, das für kleine Sites gedacht ist, wo
es wenige User und nur geringe Festplatten-Kapazität gibt, aber
trotzdem eine große Zahl von Gruppen gewünscht wird.
.PP
.B Leafnode
ist so entworfen, dass es Fehler selbständig reparieren und keinerlei
manuelle Pflege benötigen soll.
.PP
Das
.B leafnode
-Programm selbst ist der NNTP-Server. Es wird von
.BR inetd (8)
oder
.BR xinetd (8)
gestartet, wenn jemand News lesen möchte. Die anderen Teile des
Paketes,
.B fetchnews
und
.B texpire,
sind dafür zuständig, News von anderen Servern zu holen und nach
einer gewissen Zeit zu löschen.

.SH ZUGANGSKONTROLLE
.B Leafnode
bietet keinerlei Authentifizierungs- oder Zugangskontrolle an. Eine
solche zu implementieren, ist eine Aufgabe, die nicht für jeden
einzelnen Dienst neu vorgenommen werden sollte.
.PP
.B Es ist daher dringendst anzuraten, externe Zugangskontrolle per
.B tcpd oder inetd/xinetd mit libwrap-Unterstützung
.B oder vergleichbarer Funktionalität einzurichten.
tcpd und libwrap sind Bestandteil des \fBtcp_wrappers\fR Pakets von
Wietse Venema.
.PP
Als grobe sichernde Maßnahme gegen Missbrauch verweigert
.B leafnode
Verbindungen, die nicht von einem lokalen Netz (LAN) stammen.  Dies kann
in der Konfiguration ausgestellt werden, ist aber nicht anzuraten (siehe
Option allowstrangers), da die Gefahr von Missbrauch ohne weitere
Sicherungsmaßnahmen sehr groß ist.

.SH DATEIEN UND VERZEICHNISSE

Für alle folgenden Dateien und Verzeichnisse muss der User "news"
Leserechte besitzen.  Es wird angeraten, falls im weiteren nicht anders
angegeben, dass "news" der einige Benutzer in der Gruppe "news" sein sollte
und die Dateien "root:news" (Benutzer root, Gruppe news) gehören sollten,
sodass die Konfiguration- und Filterdateien von leafnode nicht geändert
werden können.
.PP
.I @msysconfdir@
sollte für den Benutzer "news" nicht beschreibbar, für die Gruppe "news" aber
les- und ausführbar sein (g+ux).
.PP
.I @msysconfdir@/config
enthält die Konfigurationseinstellungen für
.B leafnode.
Diese Datei \fBdarf nicht\fR schreibbar sein für den Benutzer "news".  Setzen
Sie diese Datei auf mode 640, Besitzer root:news.  Siehe auch KONFIGURATION
unten.
.PP
.I @SPOOLDIR@
muss für den Benutzer "news" les- und schreibbar sein.
Es enthält die News-Artikel, so enthält z.\ B. das Verzeichnis
.I @SPOOLDIR@/alt/fan/agulbra
die Artikel der Newsgruppe alt.fan.agulbra. Jedes Verzeichnis enthält
die Artikel in durchnummerierten Dateien (Dezimalzahlen, streng monoton
steigend) und eine spezielle Datei
.I .overview
, die die "Subject"-, "From"-, "Date"-, "Message\-ID"-, "References"-,
"Bytes"- und "Lines"-Header für jeden einzelnen Artikel der Gruppe
enthält.
.PP
Mehrere Unterverzeichnisse haben spezielle Aufgaben:
.PP
.I @SPOOLDIR@/leaf.node
enthält diejenigen Dateien, die
.B leafnode
während des Betriebs anlegt, zum Beispiel die
.BR groupinfo-Datei
, die Informationen über jede einzelne
USENET-Gruppe enthält. Diese Datei wird von
.BR fetchnews
(8) erstellt,
Sie können diese Datei jederzeit neu erstellen lassen, indem
Sie
.BR fetchnews
mit dem Parameter \-f aufrufen (s.
.BR fetchnews
(8)).
.PP
.I @SPOOLDIR@/out.going
enthält lokale Artikel, die von
.BR fetchnews
(8) an den Upstream-Server weitergereicht werden sollen. Während ein
Posting von einem Newsreader empfangen wird, ist das Leserecht für den
Benutzer "News" nicht gesetzt (u\-r). Nachdem ein Posting erfolgreich in
dieses Verzeichnis geschrieben wurde, wird das Leserecht für die Datei
gesetzt (u+r).
.BR fetchnews(8)
interpretiert dieses Recht als "dieses Posting darf veröffentlicht
werden", um zu verhindern, dass Postings verschickt werden, die noch
nicht vollständig empfangen worden sind. Hinweis: Versionen von 1.9.23
bis 1.9.32 einschließlich haben statt des Leserechts das Recht zur
Ausführung (u+x) benutzt. Wegen Unverträglichkeiten (Artikel werden von
Leafnode nicht weitergeleitet) nach Updates von Versionen vor 1.9.23
wurde mit Version 1.9.33 auf Leserecht umgestellt, damit sind alle von
älteren leafnode-1.9-Versionen verträglich.
.PP
.I @SPOOLDIR@/failed.postings
enthält lokale Postings, die vom Upstream-Server zurückgewiesen
wurden.
.BR Fetchnews
erstellt Dateien in diesem Verzeichnis, allerdings löscht keines der
.BR leafnode
-Programme dort Dateien.
.PP
.I @SPOOLDIR@/message.id
enthält harte Links zu jedem Artikel; dies ersetzt die
.B dbz
Datenbank,
die größere Server einsetzen. (Ein solches Verzeichnis ist auf kleinen
Servern, für die
.BR leafnode
gedacht ist, effizienter, skaliert dafür aber sehr schlecht.)
.PP
.I @SPOOLDIR@/interesting.groups
enthält pro Gruppe, die ein NNTP-Klient angefordert hat, eine Datei.
.BR Leafnode
aktualisiert die \fBctime\fR (ls\ \-l zeigt normalerweise die
\fBmtime\fR, versuchen Sie ls\ \-lc) der zugehörigen Datei, wenn ein
LISTGROUP-, XOVER-, XHDR-, STAT-, HEAD-, BODY- oder ARTICLE-Befehl
nach einem GROUP-Befehl ausgeführt wird, oder wenn ein GROUP- oder
LIST\ ACTIVE-Befehl für eine bereits "interessante" (bestellte) Gruppe
ausgeführt wird. LIST\ ACTIVE mit Muster frischt bestehende Bestellungen
nicht auf.
.BR fetchnews
(8) lädt die Artikel derjenigen Gruppen, auf deren Dateien entweder
.IP
- innerhalb der letzten zwei Tage, oder
.IP
- mehr als einmal und mindestens einmal in der vergangenen
Woche zugegriffen wurde.

Diese Zeitspannen können mittels \fBtimeout_short\fR und
\fBtimeout_long\fR in der \fIconfig\fR-Datei angepasst werden. Siehe auch
die \fB\-n\fR-Option in \fBfetchnews\fR(8).
.PP
.I /etc/inetd.conf
oder
.I /etc/xinetd.conf
enthält die Konfiguration, die
.BR leafnode
startet. Es
wird dringend angeraten,
.BR leafnode
vom User "news" starten zu
lassen.

.SH UMGEBUNGSVARIABLEN
.TP
LN_REJECT_POST_PRE
Wenn diese Variable existiert, wird jeder POST-Befehl mit einem
400-Fehlercode verweigert. Nur zum Debugging von Newsreadern benutzen!
.TP
LN_REJECT_POST_POST
Wenn diese Variable existiert, wird jeder POST-Befehl mit einem
400-Fehlercode verweigert, nach dem Artikel und CRLF.CRLF empfangen
worden sind. Nur zum Debugging von Newsreadern benutzen!

.SH KONFIGURATION

Die komplette Konfiguration wird in der Datei
.I @msysconfdir@/config
vorgenommen, die eine Filterbeschreibungsdatei, filterfile, aufrufen
kann, wie unten gezeigt.
.PP
Im Rahmen dieses Abschnitts sei "Whitespace" als eine beliebige Folge von
einem oder mehr SPACE (Leerzeichen) und HTAB (horizontaler Tabulator)
definiert, ASCII-Positionen 32 bzw. 9.
.PP
Die Konfigurationsdatei ist streng zeilenorientiert, sie kann als
Zeilenabschluss entweder LF (Zeilenvorschub) oder CRLF (Wagenrücklauf +
Zeilenvorschub) verwenden.
.PP
Leere Zeilen und solche, die ausschließlich aus Whitespace bestehen,
optional von einem Kommentar gefolgt werden (der von einem #-Zeichen
eingeleitet wird und sich bis zum Zeilenende erstreckt), werden
übersprungen.
.PP
Alle anderen Zeilen bestehen aus genau drei Pflichtfeldern, einem
Parameter im Klartext, einem Gleichheitszeichen (=), der von Whitespace
umgeben sein darf und einem Wert. Der Wert kann als Klartext angegeben
sein oder \[en] neu seit Leafnode v1.11 \[en] als Zeichenkette in Anführungszeichen
mit trivialen Fluchtzeichen (siehe unten).
.PP
Klartext fängt beim ersten nicht-Whitespace-Zeichen an und erstreckt
sich bis zum letzten nicht-Whitespace-Zeichen, das nicht zu einem
Kommentar gehört. Ein Kommentar am Ende einer Zeile wird ignoriert.
.PP
Zeichenketten in Anführungszeichen verwenden das doppelte
Anführungszeichen oben ("). Das
Backslash-(Rückwärtsschrägstrich)-Zeichen (\\) ist ein Fluchtzeichen und
wird übersprungen, liest aber das unmittelbar folgende Zeichen
originalgetreu, sodass das Backslash-Zeichen (durch Verdopplung, als
\\\\) und Anführungszeichen (als \\") in der Zeichenkette angegeben
werden können; das #-Zeichen verliert zwischen den Anführungszeichen
seine besondere Bedeutung als Kommentareinleitung. Text nach dem Ende
der Zeichenkette wird stillschweigend ignoriert (das kann sich in
zukünftigen Versionen ändern). Kommentare am Ende der Zeile werden
ignoriert.
.PP
.B OBLIGATORISCHE PARAMETER
.PP
Diese Parameter müssen angegeben werden, damit Leafnode
funktioniert.
.TP
server = news02.example.com
"server" wird von
.B fetchnews
(8) benutzt, um festzustellen, von welchem Server es News herunterladen
und wohin es neue Artikel posten soll.  Es ist möglich, mehrere Server
anzugeben, sie werden der Reihe nach kontaktiert.  Sie brauchen auf
diesen Servern Leserechte, falls Sie selber Artikel veröffentlichen
möchten, auf mindestens einem der Server auch Schreibrechte.  Im obigen
Beispiel ist news02.example.com der primäre News-Server.
.IP
Dieser Parameter kann mehrmals angegeben werden.  Jeder \fBServer\fR erhält
dabei zunächst einen Satz Standard-Optionen, die Einstellungen des vorherigen
Server-Eintrags werden nicht übernommen.  Ebenso können Server-spezifische
Einstellungen nicht global getätigt werden.
.TP
expire = 5
"expire" ist die Anzahl der Tage, die ein Artikel aufbewahrt werden
soll. Im Beispiel wird ein Artikel fünf Tage, nachdem er zuletzt
gelesen wurde, durch
.BR texpire(8)
gelöscht. Dieser Wert MUSS wenigstens 1 sein.
.PP
.B SERVERUNABHÄNGIGE OPTIONALE PARAMETER
.PP
Diese Optionen können nur einmal in der Konfigurationsdatei
angegeben werden und wirken sich auf Leafnode insgesamt aus. Es ist
unwichtig, an welcher Stelle diese Optionen \[en] auch relativ zu
server=-Zeilen \[en] stehen, es ist aber aus Gründen der Übersicht sinnvoll,
sie noch vor der ersten server=-Zeile anzugeben. Wird eine dieser Optionen
mehrfach anzugeben, wird die letzte Angabe verwendet; zukünftig kann
die mehrfache Angabe aber ein Fehler sein.
.TP
hostname = host.domain.country
.B Leafnode
versucht zunächst, den Namen des Computers zu ermitteln und dabei
ungültige Namen auszulassen.  Der hostname wird mit gethostname(3)
erfragt und mit bei Bedarf mit gethostbyname(3) aufgelöst.  Dieser
Name entstammt üblicherweise der Datei /etc/hosts oder NIS und DNS
(Details in der System-Dokumentation).

Falls Leafnode keinen host-Namen ermitteln kann, deutet das in der
Regel auf ein nicht sorgfältig konfiguriertes System oder auf
einen nicht eindeutigen Namen hin, der für die Erstellung von
Message\-IDs nicht verwendbar ist.  Namen wie "localhost.localdomain"
sind nicht eindeutig und daher zu ändern.  Es genügt in der Regel,
einen sogenannten fully-qualified host name (FQDN) der Datei
/etc/hosts hinzuzufügen.  In der Datei \fIREADME\-FQDN\fR werden
weitere Informationen dazu (auf Englisch gegeben), weiterhin
finden sich in der Datei \fIINSTALL_de\fR Hinweise auf deutsche
Dokumentation zu diesem Thema.

Sie können den Teil der Message\-ID nach dem @ auch mit dem Parameter hostname
konfigurieren. Die Verwendung von "hostname" zur Erzeugung einer
Phantasie-Message\-ID ist zwar möglich, aber dringend abzuraten.
.TP
create_all_links = 1
Üblicherweise speichert
.B fetchnews
Artikel nur in den Newsgruppen, die in
.I @SPOOLDIR@/interesting.groups
vorhanden sind, wenn Sie create_all_links auf 1 setzen, erstellt
.B fetchnews
jedoch für jede Newsgruppe, die es im "Newsgroups:"-Header findet,
einen harten Link. Dies kann interessant für Sie sein, wenn Sie ein
Score- oder Kill-File auf den "Xref:"-Header anwenden möchten.
.TP
maxfetch = 1000
"maxfetch" begrenzt die Anzahl der Artikel, die
.B fetchnews
(8) vom Upstream-Server laden darf. Die Benutzung dieses Parameters
ist jedoch nicht zu empfehlen, da Sie sonst nicht alle Artikel einer
Gruppe bekommen. In der Grundeinstellung gibt es keine Obergrenze.
.TP
initialfetch = 1
"initialfetch" beschränkt die Anzahl der Artikel, die von einer vorher
noch nicht bezogenen Gruppe geladen werden sollen. Normalerweise
werden alle alten Artikel geladen, was allerdings sehr zeitaufwendig
werden kann, wenn in dieser Gruppe sehr viele Artikel gepostet werden.
Dies entspricht einem Wert von 0 für initialfetch; wenn Sie keine
alten Artikel empfangen möchten, setzen Sie den Wert, wie im Beispiel,
auf 1.
.PP
groupexpire sehr.volle.Gruppe = 1
.TP
groupexpire sehr.volle.Hierarchie.* = 1
"groupexpire" ermöglicht es, unterschiedliche Haltezeiten für
verschiedene Gruppen festzulegen. Die Haltezeit wird in Tagen
angegeben, der Wert wird von
.B texpire
(8) benutzt. Sie können so viele
groupexpire-Einträge anlegen wie Sie möchten und dabei
.B glob
(7)-Wildcards verwenden. Der Wert 0 veranlasst leafnode, den Default zu
wählen, negative Werte verhindern das Entfernen alter Artikel (als eine
Art Archivmodus).
.TP
maxage = 10
Wenn ein Artikel auf dem Upstream-Server auftaucht, der älter als
"maxage" Tage ist, wird er von fetchnews nicht geladen, auch wenn er noch
nicht lokal vorhanden ist. Dies ist nützlich, wenn Ihr Upstream-Server
gelegentlich den 'Schluckauf' bekommt. Die Standardeinstellung beträgt
10 Tage; wenn Sie maxage deaktivieren möchten, tragen Sie einen
möglichst großen Wert ein, z. B. 100000 (also ca. 270 Jahre)
.TP
maxold = 10
Ist synonym zu maxage, siehe oben.
.TP
maxlines = 2000
Wenn Sie es vermeiden möchten, sehr große Artikel zu laden, setzen Sie
den "maxlines"-Parameter auf die Anzahl der Zeilen, die ein Artikel
höchstens haben darf. Üblicherweise ist dieses Feature deaktiviert.
.TP
minlines = 2
Manchmal werden Newsgruppen mit leeren Artikeln überhäuft. Um solche
Artikel abzuweisen, können sie "minlines" verwenden. "minlines" auf
einen Wert größer als 4 zu setzen, ist wahrscheinlich keine gute Idee,
da dann u. U. auch echte Artikel abgelehnt werden könnten.
Üblicherweise ist dieses Feature deaktiviert.
.TP
maxbytes = 100000
Wenn Sie große Artikel ablehnen möchten, können Sie statt "maxlines"
auch "maxbytes" verwenden. Auch dieses Feature ist normalerweise
deaktiviert.
.TP
maxcrosspost = 5
Wenn Sie Spam bekämpfen möchten, können Sie alle Artikel filtern, die
über mehr als "maxcrosspost" Gruppen crossgepostet werden. Den Wert
von "maxcrosspost" zu niedrig anzusetzen ist wahrscheinlich keine gute
Idee. Auch dieses Feature ist standardmäßig deaktiviert.
.TP
maxgroups = 5
Ist synonym zu maxcrosspost, siehe oben.
.TP
filterfile = @msysconfdir@/filters
leafnode kann die Header eingehender Artikel nach regulären Ausdrücken
filtern, die im "filterfile" gespeichert sind. Das Format dieser
Filterdatei ist einfach, ein regulärer Ausdruck pro Zeile. Entspricht
einer der regulären Ausdrücke dem Header eines eingehenden Artikels,
wird der Body dieses Postings abgelehnt. Dieses Feature ist
üblicherweise deaktiviert.  Reguläre Ausdrücke werden in
.BR pcre (3)
beschrieben.
.TP
timeout_short = 2
Normalerweise wird eine Gruppe, die nur zufällig abonniert wurde, 2
Tage lang bezogen. Hier können Sie diese Zeit abändern.
.TP
timeout_long = 7
Normalerweise wird eine Gruppe, die nicht mehr gelesen wird, noch
sieben Tage lang bezogen. Diese Zeitspanne kann hier geändert werden.
.TP
timeout_active = 90
Normalerweise wird das Active-File alle 90 Tage vom Upstream-Server
gezogen. Dieser Abstand kann verändert werden, indem Sie
"timeout_active" einen anderen Wert zuweisen. Bedenken sie dabei aber,
daß beim Laden des Active-Files von einem Server, der ca. 20.000 Gruppen
vorrätig hat, rund ein Megabyte an Informationen übertragen werden.
.TP
timeout_client = 900 (seit v1.9.23)
Normalerweise beendet
.B leafnode
nach 900 Sekunden (15 Minuten) Inaktivität die Verbindung zum
Newsreader.  Mit "timeout_client" kann diese Zeitspanne angepaßt werden,
etwa für defekte Newsreader, die sich nicht neu verbinden können.  Es
ist nicht ratsam, dies unter 5 Minuten zu setzen, da Neuverbindungen
die Systemlast steigern.
.TP
timeout_fetchnews = 300 (seit v1.9.52)
Fetchnews nimmt, seit v1.9.52, an, dass der Upstream-Server festhängt,
wenn es 300 Sekunden gewartet hat. Sie können die Frist hier verändern.
.TP
timeout_lock = 5 (seit v1.9.54)
Mit dieser Variable, die als natürliche Zahl oder 0 interpretiert wird,
kann eingestellt werden, wie viele Sekunden die Programme (applyfilter,
checkgroups, fetchnews, texpire) versuchen sollen, die Lock-Datei zu
setzen. Voreingestellt sind 5 Sekunden. Der Wert 0 bedeutet, dass die
Programme unbegrenzt auf die Lock-Datei warten sollen.
.TP
delaybody = 1
Wenn dieser Parameter gesetzt ist, lädt
.B fetchnews
(8) nur die Header eines Artikels zur Ansicht. Nur, wenn die Header
gelesen werden, lädt
.B fetchnews
(8) beim nächsten Start auch den Body des Postings. Sie können so
Plattenplatz und On-Line-Zeit sparen.
.TP
delaybody_in_situ = 1 (seit v1.9.41)
Gilt nur, wenn delaybody=1.

Normalerweise vergibt leafnode für komplett geladene Artikel neue
Artikelnummern, damit sie im Newsreader als neu angezeigt werden. Mit
einigen Newsreadern funktioniert dies aber nicht. Nach dem Setzen dieser
Option wird leafnode stattdessen beim Download die ursprüngliche
Artikelnummer erhalten. Sie müssen Ihren Newsreader dazu alte Artikel
anzeigen lassen. Diese Option ist normalerweise abgeschaltet. Es wird
.B eindringlich
empfohlen, sie abgeschaltet zu lassen.
.TP
debugmode = 1
Wenn Sie diesen Parameter angeben, geben
.B fetchnews
(8),
.B texpire
(8) und
.B leafnode
(8) Debugging-Informationen
via
.B syslog
(8) mit "facitily" "news" und Priorität "debug" aus. Benutzen Sie diese
Option, wenn Sie Probleme mit Ihrem Feed haben. Im Normalfall sollte die
Option jedoch 0 sein, weil sie enorme Datenmengen erzeugen kann. Zum
Debugging werden Werte von 1 bis 3 verwendet. Höhere Werte als 3 machen
derzeit keinen Unterschied zur 3.
.TP
allow_8bit_headers = 1 (seit v1.9.25)
Normalerweise lässt Leafnode das Posten von Artikeln, die 8-Bit-Daten im
Nachrichtenkopf tragen, nicht zu, weil diese gegen einschlägige Normen,
speziell RFC-2822 (auf den RFC-1036 baut), verletzen, und die verlangen,
daß Usenet-News-Köpfe nur aus 7-bit US-ASCII-Zeichen bestehen, und aus
den Steuerzeichen nur die Freiräume zulässt.

Da allerdings UTF-8 eingeführt werden soll und einige nationale
Hierarchien, besonders die norwegische und dänische (no.*, dk.*) sich
darauf geeinigt zu haben scheinen, 8-bit Daten einer Codierung mittels
RFC-2047 vorzuziehen, können Sie diese Option benutzen, um 8-bit-Daten
im Nachrichtenkopf zuzulassen. Leafnode wird in diesem Fall, wenn
8-bit-Daten vorhanden sind, aber einen zusätzliche Kopfzeile zur Warnung
einfügen, die erwähnt, daß der Administrator das erlaubt hat.

Es gibt derzeit keine Möglichkeit, beim Posten in Leafnode andere
Steuerzeichen als die Leerzeichen (einschließlich Tabulator) im
Nachrichtenkopf zuzulassen.
.TP
allowSTRANGERS = MAGIC (seit v1.9.23)
Normalerweise verweigert leafnode Verbindungen von außerhalb des lokalen
Netzes (LAN).  In config.example wird beschrieben, wie dieses Verhalten
geändert werden kann.  An Stelle von MAGIC muss eine Nummer eingesetzt
werden, siehe \fIconfig.example\fR. Beachten Sie die Groß- und
Kleinschreibung.
.TP
linebuffer = 1
Leafnode verwendet normalerweise voll gepufferte Standardausgabe und
-fehlerausgabe, außer bei Verbindung mit einem Terminal.  Mit diesem
Parameter kann explizit zeilengepufferte Ausgabe erzwungen werden.
.TP
clamp_maxage = 0
Üblicherweise werden Artikel, die älter sind als die für die aktuelle
Gruppe konfigurierte expire Zeit, nicht geladen (siehe expire und
groupexire neben dem Parameter maxage).  Dadurch wird verhindert, daß
Artikel, die von \fBtexpire\fR(8) gelöscht wurden, nochmal heruntergeladen
werden.  Mit clamp_maxage = 0 wird dieses Verhalten abgestellt.
.TP
article_despite_filter = 1 (seit v1.9.33)
Normalerweise fragt fetchnews Nachrichtenköpfe und -rümpfe separat ab,
wenn ein \fBfilterfile\fR definiert und \fBdelaybody\fR abgeschaltet
ist. Für Verbindungen mit hoher Latenz, aber hohem Durchsatz (wie zum
Beispiel DSL mit Interleaving oder Satellitenverbindungen), kann es
schneller sein, den kompletten Artikel per "ARTICLE" zu verlangen und
bei zutreffenden Filtern den Nachrichtenrumpf mit wegzuwerfen (obwohl
das nicht preiswerter sein muss, wenn die Verbindung nach Datenvolumen
bezahlt wird). Das Aktivieren dieser Option zwingt fetchnews dazu, den
ARTICLE-Befehl auch dann zu benutzen, wenn \fBfilterfile\fR definiert
ist. (Hinweis: wenn \fBdelaybody\fR aktiviert ist, werden
Nachrichtenköpfe und -rümpfe immer getrennt angefordert.)
.TP
newsadmin = news@leafnode.example.org (seit v1.9.47)
Diese Option stellt den Absender des Platzhalter-Artikels ein, der
sollte die Adresse des Leafnode-Administrators sein. Voreingestellt ist
news@HOSTNAME, wobei HOSTNAME Leafnodes Rechnername ist.
.PP
.B
SERVERSPEZIFISCHE OPTIONALE PARAMETER
.PP
Diese Optionen können nur nach der server=-Zeile desjenigen Servers
angegeben werden, dessen Funktion sie einstellen sollen, und gehören
immer zur vorausgegangenen server=-Zeile. Sie vor der ersten
server=-Zeile anzugeben, ist ein Fehler.
.TP
username = meinname
Wenn einer Ihrer News-Server eine Authentifizierung erwartet, können
Sie hier Ihren Usernamen auf diesem System eingeben. Dieses Feld darf
mehrmals erscheinen, einmal nach jeder Server-Definition. Der Anfang
dieses Abschnitts beschreibt, wie Sonderzeichen in \fImeinname\fR
angegeben werden können.
.TP
password = meinpasswort
Wenn einer Ihrer News-Server eine Authentifizierung erwartet, können
Sie hier Ihr Passwort auf diesem System eingeben. Dieses Feld darf
mehrmals erscheinen, einmal nach jeder Server-Definition. Da das
Passwort im Klartext angegeben wird, ist es ratsam, die Rechte an der
config-Datei so stark wie möglich einzuschränken, da sonst andere
Benutzer Ihres Rechners Ihr/e Passwort/Passwörter herausfinden könnten.
Der Anfang dieses Abschnitts beschreibt, wie Sonderzeichen in
\fImeinpasswort\fR angegeben werden können.
.TP
port = 8000
In den Grundeinstellungen versucht fetchnews, sich mit dem
Upstream-Server über den NNTP-Port (119) zu verbinden. Wenn ihr Server
auf einem anderen Port läuft, können Sie ihn hier angeben. Dieses Feld
darf mehrmals erscheinen, einmal nach jeder Server-Definition.
.IP ""
.B Hinweis:
Um den Port einzustellen, auf dem Leafnode selbst Verbindungen
entgegennimmt, müssen Sie ihre Konfigurationsdatei inetd.conf oder
xinetd.conf anpassen.
Leafnode öffnet diesen Port nicht selbst.
.TP
timeout = 30
Normalerweise versucht
.B leafnode
10 Sekunden lang, mit einem Server Verbindung aufzunehmen und gibt
diesen Versuch dann auf. Wenn Sie einen langsamen Server haben, können
Sie
.B leafnode
mehr Zeit dafür geben, indem Sie timeout auf einen höheren Wert setzen
(im Beispiel 30 Sekunden). "timeout" kann für jeden Server einzeln
angepaßt werden.
.TP
noactive = 1 (seit v1.9.25)
Wenn diese Option gesetzt ist, wird die Liste der verfügbaren Gruppen
nie von diesem Upstream-Server geladen.  Diese Option ist sinnvoll
für sehr langsame Verbindungen, wenn andere Server die Gruppen
ebenfalls führen.
.TP
nodesc = 1
Manche Server geben die Beschreibungen der Newsgroups nicht korrekt
an, da sie das "LIST NEWSGROUPS"-Kommando nicht verstehen. Fügen Sie
in diesem Fall nach dem "server"-Eintrag diese Zeile ein.
.TP
nopost = 1 (seit v1.9.23)
Zu diesem Server keine Postings versenden. Nützlich, wenn Ihr Server das
Veröffentlichen von Artikel nicht erlaubt und dies falsch mitteilt
(NNTP-Antwort 200) oder Ihre Postings nicht zuverlässig weiterleitet.
.TP
noread = 1 (seit v1.9.33)
Von diesem Server keine Artikel oder Gruppenlisten beziehen. Nützlich,
wenn dieser Server zwar gut zum Posten ist, aber zu langsam zum
Newsdownload.
.TP
noxover = 1 (seit v1.9.47)
Die Gruppenübersichten werden von diesem Server mit XHDR statt XOVER
abgerufen.
.TP
only_groups_match_all = 1 (seit v1.9.52)
Normalerweise crosspostet fetchnews bei Definition der
only_groups_pcre-Option einen Artikel, wenn der reguläre Ausdruck (PCRE)
auf WENIGSTENS EINE der in der Newsgroups:-Kopfzeile aufgeführte
Newsgruppe passt. Mit dieser Option muss der reguläre Ausdruck auf ALLE
Newsgruppen passen, damit er Artikel gepostet wird. Dies kann in
Verbindung mit mehreren Upstream-Servern zur Vermeidung von "poison"
(Gift)-Newsgroups verwendet werden.
.TP
only_groups_pcre = PCRE (seit v1.9.28)
Diese Option erlaubt es, einen Perl-kompatiblen, regulären Ausdruck
derjenigen Gruppen anzugeben, die von diesem Server geholt oder zu
diesem gepostet werden können. Der reguläre Ausdruck wird linker Hand
automatisch verankert, so dass der ^ am Anfang ausgelassen werden kann.
.IP
Wenn diese Option fehlt, werden alle Gruppen von diesem Server bezogen
und zu ihm gepostet.
.IP
Hinweis: Sie müssen fetchnews mit der "\-f"-Option laufen lassen wann
immer Sie eine only_groups_pcre-Option hinzugefügt, entfernt oder
verändert haben.
.IP
Denken Sie aber daran, Punkte zu "escapen" (ihre Joker-Funktion zu
unterbinden), zum Beispiel so:
.br
de\\.comp\\.|de\\.comm\\.
.IP
Tipp: Sie können ihre PCREs beispielsweise so testen:
.br
cut \-f1 \-d" " @spooldir@/leaf.node/groupinfo \\
.br
| pcregrep 'PCRE'
.TP
post_anygroup = 1 (seit v1.9.37)
Mit dieser Option wird das Posten auf einem Server ohne vorherige
Prüfung der Verfügbarkeit der Newsgroup erzwungen. Voreinstellung ist
post_anygroup=0, das heißt, leafnode wird mit einem "GROUP"-Befehl
prüfen, ob der Server die Newsgroup führt, in die der Artikel gehen
soll. Nützlich auf Servern, die nur Posten zulassen, aber den
"GROUP"-Befehl verweigern. Hinweis: unbedachter Einsatz dieser Option
kann zum Fehlschlag des Postings und Ablegen der Postings im Verzeichnis
failed.postings führen.
.PP
.B OBSOLETE PARAMETER
.TP
supplement
ist synonym zur Option server und bei neuen Installationen nicht mehr zu
verwenden.
.TP
fqdn
ist synonym zur Option hostname und bei neuen Installationen nicht mehr zu
verwenden.

.SH PROTOKOLL
.B leafnode
unterstützt die folgenden NNTP-Befehle:
.PP
ARTICLE, BODY, DATE, GROUP, HDR, HEAD, HELP, LAST, LIST, LIST ACTIVE, LIST
ACTIVE.TIMES, LIST EXTENSIONS, LIST NEWSGROUPS, LIST OVERVIEW.FMT,
LISTGROUP, MODE, NEWGROUPS, NEXT, POST, OVER, SLAVE, STAT, XHDR, XOVER.
.PP
Die Befehle, außer HDR und OVER, sind in RFC-977 und RFC-2980 spezifiziert.
Zu beachten ist, daß sich die Syntax von HDR und OVER wegen bislang
fehlender Standardisierung noch ändern kann.

.SH FEHLER
Leafnode weist Artikel mit UTF-8-Zeichen in Header-Zeilen, die nicht
nach RFC-2047 codiert sind, zurück.  Der Usefor-Standardentwurf schlägt
UTF-8 ohne RFC-2047-Kodierung für Header vor.

Leafnode beendet das Einlesen einer Zeile beim ersten NUL-Zeichen.

Leafnode kann Probleme mit hierarchieübergreifenden Crosspostings haben,
wenn mehr als ein Upstream-Server vorhanden und only_groups_pcre
konfiguriert ist.

Leafnode versucht nur auf Systemen, die die tm_gmtoff-Komponente in der
tm-Struktur haben (typisch BSD und GNU-Systeme), den Zeitversatz der
Zeitzone für von leafnode erzeugte Date:-Kopfzeilen zu ermitteln.

Die Rechtschreibung der Dokumentation ist gemischt alt/aktuell.

.SH AUTOR
Die ersten Versionen von leafnode wurden von Arnt Gulbrandsen
<agulbra@troll.no> geschrieben; Copyright 1995 Troll Tech AS,
Postboks 6133 Etterstad, 0602 Oslo, Norway, fax +47 22646949.
.PP
Weiterentwickelt wurde leafnode von Cornelius  Krasel
<krasel@wpxx02.toxi.uni\-wuerzburg.de>, Randolf Skerka
<Randolf.Skerka@gmx.de>  und Markus Enzenberger
<enz@cip.physik.uni\-muenchen.de>.
Copyright (an den Veränderungen) 1997 \[en] 1999.
.PP
Weiterentwickelt von Matthias Andree <matthias.andree@gmx.de>, Copyright
1999 \[en] 2002, und Ralf Wildenhues <ralf.wildenhues@gmx.de>, Copyright
2002.
.PP
Jonathan Larmour <jlarmour@redhat.com> implementierte die timeout_client
Option.

Andreas Meininger <a.meininger@gmx.net> fügte Code hinzu, so daß texpire
Gruppen mit 'groupexpire = \-1' ignoriert.

Mark Brown <broonie@debian.org> implementierte die noactive-Option.
.PP
Unzählige Beiträge von weiteren Personen.
.PP
Die ursprüngliche Entwicklung wurde durch Uninett AS
(http://www.uninett.no/) finanziert.
.PP
Deutsche Übersetzung:
Alexander Reinwarth <a.reinwarth@gmx.de>, ergänzt von
Ralf Wildenhues.

.SH SIEHE AUCH
.PP
.BR applyfilter (8),
.BR checkgroups (8),
.BR fetchnews (8),
.BR newsq (1),
.BR texpire (8).
.PP
.BR tcpd (8),
.BR hosts_access (5),
.BR glob (7),
.BR pcre (3),
.BR "RFC 977",
.BR "RFC 2980".
