Wenn man keinen Newsserver zur Verfügung hat, der den eigenen
Newsserver feedet, also man keinen Newsadministrator überreden
kann, für seinen eigenen Server Feedlisten zu pflegen, kann man
auch einen Newsserver betreiben, der sich wie ein Client verhält.
Das bedeutet, er holt die Artikel wie ein Client ab und verteilt
Artikel nicht über Feeds, sondern postet diese selbst auch
wieder. Mischformen sind natürlich auch möglich.
Man kann hier suck und rpost verwenden.
Suck verwendet man wie folgt:
Suck
|
#!/bin/sh
suck <newsserver> -c -bi /var/spool/news/batch -dt /var/spool/news \
-dm /var/spool/news/Msgs -dd /var/spool/news
/usr/lib/news/bin/innxmit localhost /var/spool/news/batch
|
Die Pfade müssen natürlich den Gegebenheiten angepaßt werden.
|
Beim Posten müssen noch einige Infos aus dem Header gefiltert werden,
da der andere Server keine Newsserver Einträge in den Artikeln sehen
möchte (viele Newsserver werfen solche Artikel gleich in junk).
Hier ein Beispiel für die Verwendung von Post:
Beispiel für die Verwendung von Post
|
#!/bin/bash
mv /var/spool/news/out.going/newssrv3 \
/var/spool/news/out.going/newssrv3.new
/usr/lib/news/bin/ctlinnd flush newssrv3
/usr/bin/rpost newssrv3.bedi.net -d -b \
/var/spool/news/out.going/newssrv3.new \
-p /var/spool/news \
-f /etc/news/post.filter \$\$o=/tmp/filtered_msg \
\$\$i /tmp/filtered_msg
|
Das ist hier quick-and-dirty (für Testumgebungen z.B.). Hier wird
out.going sicherheitshalber für die Dauer des rpost Aufrufes
umbenannt, damit keine Artikel übergangen oder doppelt gepostet
werden.
Ein Beispiel-Filter für das Entfernen der Header und
Newsservereinträge (/etc/news/post.filter) könnte so aussehen:
Beispiel-Filter für das Entfernen der Header und Newsservereinträge
|
#!/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin:/usr/lib/news/bin
PERLCMD='/^(NNTP-Posting-Host|Xref|X-Trace|\
X-Complaints-To|NNTP-Posting-Date)/ or print'
INFILE=$1
OUTFILE=$2
if [ -f ${INFILE} ]; then
cat ${INFILE} | perl -ne "${PERLCMD}" > ${OUTFILE}
if [ $? -ne 0 ]; then
echo "Error"
exit -1
fi
else
echo "$1 does not exist"
exit -1
fi
|
|
|
Beide Scripte kann man über einen Wrapper (News eXchanger)
starten:
Wrapper (News eXchanger)
|
#!/usr/bin/bash
/etc/news/post.sh >> /var/log/news/post_log 2>&1
/etc/news/suck.sh >> /var/log/news/suck_log 2>&1
|
Hier werden noch Logdateien geschrieben.
Das kann man dann per Cron alle 5 Minuten ausführen lassen:
per Cron alle 5 Minuten ausführen lassen
|
*/5 * * * * /etc/news/NX.sh
|
|
Das ist ein kleines Grundgerüst, auf dem man aufbauen kann. Es
ist damit zu rechnen, dass weitere Dinge angepaßt werden müssen;
leider verhalten sich Newsserver nicht einheitlich. Das ist
meistens neben dem Verwalten der Datenmengen die größte
Schwierigkeit beim Administrieren von richtigen Newsservern.
|
|