Zunächst muß man INN natürlich installieren, wofür man entweder ein
vorkonfiguriertes Binary verwenden kann, oder halt sein Binary selber
compiliert, was anhand des Beispiel-config.data
aus dem newspak
recht einfach möglich sein sollte. Hier habe ich gegenüber dem newspak
folgende Änderungen vorgenommen (das ist nicht das gesamte
config.data
sondern nur die Unterschiede zwischen
config.data.newspak
und meinen Anpassungen):
_EXITVAL void INEWS_PATH DONT INND_NICE_KIDS DO INND_NICE_VALUE 10 DEFAULT_CUTOFF 30 HAVE_UUSTAT DO _PATH_LOGFILE /var/log/inn/log _PATH_MOST_LOGS /var/log/inn
NEWSPAK_NEWS_LIB_DIR
/usr/local/lib/news
und für
NEWSPAK_SPOOL_DIR
/var/spool/news
verwendet wird.
Slackware verwendt meines Wissens /usr/lib/news
, so daß man
hier ggf. einen Link anbringen sollte, oder etwas umdenken muß.
Nach der Installation sind in /usr/local/lib/news
und dessen
Unterverzeichnissen diverse Änderungen vorzunhemen. Ich werde hier zu
konfigurierenden Files einfach nacheinander besprechen:
Zunächst einige kleinere Files:
/usr/local/lib/news/passwd.nntp
und
/usr/local/lib/news/nntpsend.ctl
sollten nur Kommentare
enthalten und ansonsten leer
sein. /usr/local/lib/news/hosts.nntp
enthält nur folgende
eine Zeile:
## hosts.nntp - names and addresses that feed us news ## Format ## <host>: ## <host>:<password> ## <host> can be a name or IP address; no wildcards. Any hosts not ## listed here are handed off to nnrpd. spinnaker.rhein.de:
/usr/local/lib/news/nnrp.access
sollte wie folgt aussehen:
## nnrp.access - access file for on-campus NNTP sites ## Format: ## <host>:<perm>:<user>:<pass>:<groups> ## Connecting host must be found in this file; the last match found is ## used, so put defaults first. ## <host> Wildcard name or IP address ## <perm> R to read; P to post ## <user> Username for authentication before posting ## <pass> Password, for same reason ## <groups> Newsgroup patterns that can be read or not read ## To disable posting put a space in the <user> and <pass> fields, since ## there is no way for client to enter one. ## ## Default is no access, no way to authentication, and no groups. *:: -no- : -no- :!* ## Foo, Incorporated, hosts have no password, can read anything. *:Read Post:::spinnaker* localhost:Read Post:::* spinnaker.rhein.de:Read Post:::*
spinnaker
beginnt lesen und auch dorthinein posten. Alle anderen
Newsgroups dürfen sie nicht lesen und auf meinem Rechner darf jeder
jede Newsgroup lesen und darin schreiben.
Als nächstes ist /usr/local/lib/news/inn.conf
wie folgt zu
konfigurieren:
## inn.conf -- inn configuration data ## Format: ## <parameter>:<whitespace><value> ## Used by various programs and libinn. The following parameters are defined: ## domain Local domain, without leading period. ## fromhost What to put in the From line; default is FQDN ## of the local host. ## moderatormailer Where to mail moderated postings, if not found ## in the moderators file; see moderators(5). ## pathhost What to put in the Path and Xref headers; default ## is FQDN of the local host. ## organization If $ORGANIZATION doesn't exist. What to put in ## the Organization header if blank. ## server If $NNTPSERVER doesn't exist. Local NNTP server ## host to connect to. ## organization: private site, Widdig, Germany #server: spinnaker.rhein.de server: localhost
Als nächstes das wichtigste File der INN-Konfiguration
/usr/local/lib/news/newsfeeds
, in dem festgelegt wird, welche
Newsgroups an wen exportiert werden sollen.
## newsfeeds - determine where Usenet articles get sent ## Format: ## site[/exclude,exclude...]\ ## :pattern,pattern...[/distrib,distrib...]\ ## :flag,flag...\ ## :param ## Summary of flags: ## <size Article must be less then size bytes. ## Aitems Article checks -- d (must have Distribution header) ## p (don't check for site in Path header). ## Bhigh/low Internal buffer size before writing to output. ## H[count] Article must have less then count hops; default is 1. ## Isize Internal buffer size (if a file feed) ## Nm Only moderated groups that match the patterns. ## Nu Only unmoderated groups that match the patterns. ## Ssize Start spooling if more than size bytes get queued. ## Ttype Feed types -- f (file) m (funnel; param names the ## real entry) p (pipe to program) c (send to stdin ## channel of param's sub-process); x (like c, but ## handles commands on stdin). ## Witems What to write -- b (article bytesize) f (full path) ## g (first newsgroup) m (Message-ID) n (relative ## path) s (site that fed article) t (time received) ## * (names of funnel feed-in's or all sites that get ## the article) N (Newsgroups header) D (Distribution ## header) H (all headers) O (overview data) R ## (replication data). ## Param field depends on T flag. For Tf, relative paths are from the ## out.going directory. For Tp and Tc, it is a shell command to execute. ## If a Tm refers to this entry (which will have its own T param) then "*" ## is expanded to all the funnel sites that triggered this one. Useful ## for spawning one mail process, e.g. ## ## This file is complicated -- see newsfeeds.5! # ME zeigt an, welche Newsgroups hier bestellt werden sollen: ME\ :!*\ :: # Alles, was per FidoGate verschickt werden soll: # - fido.* außer fido.junk, denn das ist eine Pseudo-Newsgroup in der # nur Artikel landen, die nicht ordentlich in Fidogate eingetragen # wurden, # - ger.*, die Gernet-Newsgroups # Wenn auch Internet ueber Fido (z.B. mittels fido.de) reinkommt, dann # sind hier auch noch die entsprechenden Newsgroups (rec.*, comp.*, # de.*, alt.*, gnu.*,...) einzutragen. # # Alle meine Uplinks haben den gleichen Namen (über die Datei # /usr/local/lib/fidogate/hosts), naemlich flokiste.fido.de, daher ist # dieser hier einzutragen, damit Mails, bei denen flokiste.fido.de im # Pfad steht, nicht mehr dorthin exportiert werden (sonst gäbe es # Dupes). # Da ich Fido und Internet bei mir absolut auseinander halten möchte # (die was über Fido reinkommt darf nicht ins Internet exportiert # werden und umgekehrt), habe ich rhein hier ebenfalls als Alias # eingetragen. fidogate/flokiste.fido.de,rhein\ :fido.*,!fido.junk,ger.*\ :Tf,Wnb: # Dies ist mein Internet (Usenet)-Feed. # Hier werden die Areas comp.*,de.*,rec.*,alt.*,gnu.* exportiert. # Damit hier nichts aus dem Fido rausgeht, steht flokiste.fido.de als # Alias für rhein. rhein/flokiste.fido.de\ :comp.*,de.*,rec.*,alt.*,gnu.*\ :Tf,Wfb:
Als nächstes ist das File /usr/local/lib/news/expire.ctl
zu
konfigurieren, welches angibt, wann welche Newsgroups expiren.
## expire.ctl - expire control file ## Format: ## /remember/:<keep> ## <patterns>:<modflag>:<keep>:<default>:<purge> ## First line gives history retention; other lines specify expiration ## for newsgroups. Must have a "*:A:..." line which is the default. ## <patterns> wildmat-style patterns for the newsgroups ## <modflag> Pick one of M U A -- modifies pattern to be only ## moderated, unmoderated, or all groups ## <keep> Mininum number of days to keep article ## <default> Default number of days to keep the article ## <purge> Flush article after this many days ## <keep>, <default>, and <purge> can be floating-point numbers or the ## word "never." Times are based on when received unless -p is used; ## see expire.8 ## If article expires before 14 days, we still remember it for 14 days in ## case we get offered it again. Depending on what you use for the innd ## -c flag and how paranoid you are about old news, you might want to ## make this 28, 30, etc. /remember/:30 # Alle Newsgroups für mindestens 3, maximal 90 und normalerweise 5 # Tage behalten (relativ zur Ankunftszeit) *:A:3:5:90 *:U:3:5:90 # Moderierte Newsgroups länger behalten: *:M:5:9:90 # Lokale Newsgroups normalerweise 90 Tage behalten: spinnaker.*:A:3:90:90 # Deutsche Newsgroups 7 Tage behalten: de.*:A:3:7:90 # de.comp.os.linux.* etwas länger: de.comp.os.linux.*:A:3:14:90 # Moderierte c.o.l.* länger behalten: comp.os.linux.*:M:5:90:90 # Fido etwas länger behalten: fido*:A:3:9:90 ger*:A:3:8:90 # Junk schnell löschen: fido.junk:A:3:4:90 # Und noch eine Ausnahme: fido.ger.linux:A:3:24:90
Als nächstes ist das File /usr/local/lib/news/send-fidogate
zu erstellen, das regelmäßig die zu verschickenden Fido-Echomails
zusammenpackt. Einen Prototyp für dieses File findet man unter
fidogate/config/inn/send-fidogate
, allerdings muß man im
Anfang des Files zwei kleinere Änderungen an den Pfaden vornehmen:
#! /bin/sh #:ts=8 ## SH script to send batches to FIDOGATE ## =()<. @<_PATH_SHELLVARS>@>()= . /usr/local/lib/news/innshellvars # # FIDOGATE rfc2ftn # RFC2FTN="/usr/local/lib/fidogate/rfc2ftn -w Normal -b -n "
Damit die News exportiert werden können, muß ein Batch-Verzeichnis für
sie existieren, das /var/spool/news/out.going
heißt,
news.news
gehört und die Permissions 775
haben sollte. Im
Gegensatz zu cnews dürfen in diesem Verzeichnis keine
Unterverzeichnisse für die einzelnen Newsfeeds angelegt werden, denn
INN verwendet nur ein File je Feed, welches er selber anlegt. Wer aber
von cnews auf INN umsteigt, sollte die bestehenden Verzeichnisse
löschen.
Da INN mit einem Dämon arbeitet, der immer läuft, muß dieser beim
Booten gestartet werden. Hierzu fügt man am Ende von
/etc/rc.d/rc.M
vor dem Aufruf von rc.local
folgendes
ein:
/usr/local/lib/news/etc/rc.news &
Bei einigen Distributionen ist standardmäßig ein anderer NNTP-Dämon
(nntpd) für cnews in /etc/inetd.conf
eingetragen. Dann kann
der innd nicht gestartet werden, weil der TCP-Port bereits belegt
ist. Daher muß die entsprechende Zeile in inetd.conf
auskommentiert werden, was man dem inetd durch kill -1 mitteilen kann.
Weiterhin sind für den reibunslosen Betrieb von INN noch einige Einträge in der crontab des Users news notwendig:
SHELL=/bin/sh MAILTO=roland # # INN: # 13 * * * * /usr/local/lib/news/send-fidogate 17 * * * * /usr/local/lib/news/send-uucp rhein 13 21 * * * /usr/bin/nice /usr/local/lib/news/bin/news.daily delayrm 48 21 * * * /usr/local/lib/news/rnews -U
Es bleibt noch das Erstellen der Newsgroups. Hierzu sowie für fast
alle anderen Änderungen am Newssystem wird nur das eine Kommando
ctlinnd
verwendet. Es sollte immer nur vom User news aufgerufen
werden und es ist im Verzeichnis /usr/local/lib/news/bin
zu
finden. Newsgroups werden dabei mittels ctlinnd newgroup
fido.ger.linux
angelegt (mit der entsprechenden Newsgroup natürlich).
Dabei sind diverse weitere Optionen möglich, die man alle in der
Manpage zu ctlinnd(8)
nachlesen kann. Insbesondere sollten die
Newsgroups control
, junk
und fido.junk
angelegt werden,
die Control-Messages (z.B. cancel), Artikel für nicht installierte
Newsgroups und Artikel für nicht in
/usr/local/lib/fidogate/areas
eingetragene Areas auffangen.
Um im Newsreader die Beschreibungen der einzelnen Newsgroups zu
finden, kann man weiterhin noch das File
/usr/local/lib/news/newsgroups
anlegen, welches in jeder
Zeile den Namen einer Newgroups und dahinter (durch einen Tab
abgetrennt) die Beschreibung der Newsgroup. Dabei stört es nicht, wenn
nicht existierende Newsgroups eingetragen sind, Newsgroups doppelt
eingetragen sind (es wird der erste Eintrag angezeigt) oder Newsgroups
nicht eingetragen sind.
Da auch INN seine Log-Messages über syslog erstellt, sollte man
folgende Einträge in /etc/syslog.conf
vornehmen:
news.crit /var/log/inn/news.crit news.err /var/log/inn/news.err news.notice /var/log/inn/news.notice
/var/log/inn
anlegen.
Für weitere Informationen zu INN, die Umstellung eines cnews-Systems auf INN, Probleme etc. verweise ich auf die sehr gute INN-FAQ und die reichlich vorhandenen Manpages.