/* not completely translated! */

RNEWS
-----

Usage:
	RNEWS

RNEWS is the centerpiece of the news system. It unpacks the news batches
in the mail queue and distributes the news articles both to the local
news tree and to remote sites. For the latter purpose, *.B files are
created in the spool directories (see batch(1)).

RNEWS supports a history feature that enables to reject articles that
have already appeared (so-called "duplicates", or "dupes" for short).
Other improvements on to the Mercury RNEWS program include:

	- Extended SYS file format (resembling CNEWS)
	- Clearly defined rules to determine what news articles are
	  spooled to which sites (also resembling CNEWS)
	- No more choking on articles >64KB (as long as they fit into
	  memory)
	- Only those articles that cannot be places elsewhere are put
	  into the junk pseudo-newsgroup.
	- The full name of the local site (with the domain name) is
	  written to the Path: line.
	- Compressed, frozen and gzipped news are accepted both in internal 
	  ("#! [cfg]unbatch") and external ("r[cfg]news", "[cfg]rnews") format.
	  'z' works like 'g' in all these cases (guess what that means :-) )
	- RNEWS recognize compressed batches (any method) and act accordingly,
	  even if they are just sent to "rnews" rather than "r[cfg]news".

The NEWS.DEF file remains unchanged, so for the switch from Mercury RNEWS
to Hermes RNEWS only the SYS and ACTIVE files must be adapted (not even
that in same cases), and off you go! (see nhm(1)).

/* out of time translating, switch to German */

Bevor ich das Format des ACTIVE- und SYS-Files beschreiben kann, mu ich
kurz auf den 

Newsgroup-Pattern-Matcher 
-------------------------

eingehen. Er vergleicht einen Newsgroupnamen (instance), der z. B. aus der 
Newsgroups:-Zeile stammt, mit einem Newsgroupnamenmuser (pattern), das aus 
dem ACTIVE- oder SYS-File stammt. Distribution-Namen aus der Distribution:-
Zeile werden ebenfalls mit Newsgroupnamenmustern verglichen (doch dazu
spter).

Verglichen werden immer Wrter, das heit Teile zwischen Punkten, 
nacheinander vom Anfang zum Ende. Ein Wort aus der instance pat auf ein 
Wort aus dem pattern, wenn bei Wrter gleich sind oder wenn das Wort aus
dem pattern "all" oder "*" ist. 

Der Patternmatcher bewertet die bereinstimmung von pattern und instance
mit einer Zahl: 0 bedeutet keine bereinstimmung, 1 oder hher bedeutet
bereinstimmung. Dabei wird der Wert von 1 an jeweils fuer jedes ueberein-
stimmende Wort, das im pattern nicht "*" oder "all", um 1 erhht. (Keine
Panik, es kommt noch ein Beispiel, und wozu das gut ist, wird auch noch
erklrt.)

Grundstzlich darf das pattern nicht lnger sein als die instance, sonst
wird grundstzlich 0 (keine bereinstimmung) zurueckgeliefert. Wenn die
instance nach Ende des pattern noch weitere Wrter enthlt, so ndert das
den bereinstimmungswert nicht. Ausnahme: Wenn pattern mit einem Punkt
endet (gewissermaen mit einem leeren Wort), dann darf instance an dieser
Stelle kein Wort mehr haben, mu also (in Worten) genausolang sein wie
pattern vor dem abschlieenden Punkt. Dabei wird der bereinstimmungswert
um eins erhht.

Beispiele:

pattern                         |instance                        |Wert
--------------------------------+--------------------------------+----
all                             |comp.sources.atari.st           |   1
comp                            |comp.sources.atari.st           |   2
comp.*.atari.st                 |comp.sources.atari.st           |   4
                                |                                |
alt.romance                     |alt.romance                     |   3
alt.romance                     |alt.romance.chat                |   3
alt.romance.                    |alt.romance                     |   4
alt.romance.                    |alt.romance.chat                |   0 
                                |                                |
sub                             |sub.jokes                       |   2
sub                             |sub.jokes.d                     |   2
sub.*                           |sub.jokes                       |   2
sub.*                           |sub.jokes.d                     |   2
sub.*.                          |sub.jokes                       |   3
sub.*.                          |sub.jokes.d                     |   0
sub.*.*                         |sub.jokes                       |   0
sub.*.*                         |sub.jokes.d                     |   2

So. Nun knnen wir zum Format fuer das

ACTIVE-File
-----------

uebergehen. Das ACTIVE enthlt Newsgroupmuster, die angeben, welche Gruppen
lokal erlaubt sind. Damit eine Newsgroup angelegt werden kann (automatisch
mit RNEWS oder manuell mit NHM newgroup=<grp>), mu ihr Name auf irgendeine
Zeile im ACTIVE-File passen, also mit einer Zeile einen bereinstimmungswert
ueber 0 haben.

Das

SYS-File
--------

sieht schon viel interessanter aus. Jede Zeile hat drei durch Doppel-
punkte getrennte Felder. Wenn ein Feld mehr als einen String enhalten
kann (das betrifft die ersten beiden Felder), dann knnen diese Strings
mit Tabulatorzeichen, Leerzeichen, Schrgstrich, Komma oder Semikolon
getrennt werden.

Reicht die Lnge einer Zeile nicht aus, so kann sie durch einen '\'
am Ende fortgesetzt werden. Eventueller Whitespace am Anfang der nchsten
Zeile wird dann entfernt. Die Gesamtlnge (inklusiver aller Fortsetzungs-
zeilen) sollte aber nicht ueber 2040 Byte oder so liegen.

Das erste Feld bezeichnet die Site, fuer die Zeile gelten soll. Es kann
hinter dem "Hauptnamen", der mit dem ersten Namen der entsprechenden
Zeile des XHOSTS-Files uebereinstimmen mu, noch "Nebennamen" enthalten.
Ein Artikel wird auf keinen Fall an diese Site gespoolt, wenn irgendeiner
der Namen im ersten Feld in der Path:-Zeile des Arikels vorkommt. Beispiels-
weise kann hier als Nebenname der Name der Site mit Domain eingetragen
werden.

Das zweite Feld enthlt die Newsgroupmuster, die bestimmen, ob ein Artikel
an die betreffende Site gespoolt wird oder nicht. Steht unmittelbar vor
dem Muster ein "!", so BEHINDERT das Muster das Spoolen, sonst BEGNSTIGT
es das Spoolen. Steht unmittelbar vor einem Muster ein "%", so BEGNSTIGT
das Muster das Spoolen dann, wenn der Artikel auf dieser Site erzeugt wurde,
sonst wird es ignoriert.

Die Bestimmung, ob gespoolt wird oder nicht, luft folgendermaen ab:

Zuerst wird jeder Newsgroupname aus der Newsgroups:-Zeile mit jedem Muster
aus der SYS-File-Zeile verglichen. Je der hchste bereinstimmungswert 
der BEHINDERNDEN und der BEGNSTIGENDEN Muster wird festgestellt. Nur wenn
der BEGNSTIGENDE Wert hher ist als der BEHINDERNDE, kann gespoolt werden,
sonst nicht. Wenn kein Name auf irgendein Muster pat, wird konsequenter-
weise auch nicht gespoolt.

Wenn der Artikel eine Distribution:-Zeile hat, wird jede Distribution
mit allen Mustern verglichen, die keinen Punkt enthalten. Sind solche
Muster nicht vorhanden, oder hat der Artikel keine Distribution:-Zeile,
so geht RNEWS davon aus, da die Distribution das Spoolen BEGNSTIGT.
Sonst luft der Vergleich genauso ab wie bei den Newsgroups, nur mit dem
Unterschied, da es ausreicht, wenn der BEGNSTIGENDE Wert der Distribution
mindestens so gro ist wie der BEHINDERNDE.

Also: 

Das am besten zu einem Newsgroupnamen passende BEGNSTIGENDE Muster mu 
einen HHEREN bereinstimmungswert als das am besten zu einem Newsgroup-
namen passende BEHINDERNDE Muster

	UND
	
Das am besten zu einer Distribution passende BEGNSTIGENDE Muster darf
KEINEN NIEDRIGEREN bereinstimmungswert haben als das am besten zu einer
Distribution passende BEHINDERNDE Muster,

sonst wird nicht gespoolt.

Dieses Verhalten ist im wesentlichen CNEWS-kompatibel.

Nun noch das dritte Feld: Es enthlt die Anzahl der Bits, mit denen die
Batches komprimiert werden sollen. Ein 'c' davor ist optional. Statt dieser
Zahl kann auch ein 'f' eingetragen werden. Dann werden die Batches mit
FREEZE statt mit COMPRESS behandelt. Das Verfahren ist genau analog, das
heit (wer nicht wei, wie ein komprimierter Newsbatch aussieht, bitte
weglesen), da der Batch dann nicht mit "#! cunbatch", sondern mit
"#! funbatch" anfngt. Es ist noch ein anderes Verfahren, Newsbatches mit 
FREEZE zu behandeln, im Umlauf: siehe unten.

Genau analog zu den beiden Mglichkeiten, Newsbatches mit FREEZE zu
komprimieren, gibt es auch zwei, sie mit GZIP zu behandeln. In diesem
Fall tritt an die Stelle des 'f' immer ein 'g' (entsprechend steht
dann auch "#! gunbatch" drin).

Wahlweise kann hinter der Bitanzahl bzw. dem 'f' noch, durch einen
Schrgstrich abgeteilt, die Wunschgre der Batches in Kilobyte (vor dem
Komprimieren) stehen, der Standard ist 50 KB.

Wird statt der Kennzeichnung der Komprimierungsart durch "#! cunbatch",
"#! funbatch" oder "#! gunbatch" die Weiterleitung an ein spezielles
Kommando ("rfnews" etc. statt "rnews"), so kann dieses Kommando hinter
einem Gleichheitszeichen (!) an das letzte Feld angehngt werden. Dadurch 
knnen auch Sites bedient werden, die "frnews" oder etwas hnlich Hirntotes 
haben wollen. Der HERMES-RNEWS kann "rnews" (Einzelartikel, "#! rnews", 
"#! cunbatch", "!# funbatch", "!# gunbatch" ["!# zunbatch" als Alias]),
"rfnews" bzw. "frnews" (frozen, sonst wie "rnews"), "rcnews" bzw. "crnews" 
(compressed, sonst wie "rnews") und "rgnews" bzw. "grnews", ebenso "rznews"
und "zrnews" (gzipped, sonst wie "rnews") verstehen. "rnews" erkennt eine
eventuelle Komprimierung (alle Methoden) auch selbst. Damit duerfte alles 
Gebruchliche erschlagen sein.
