SelfLinux Internet News Server INN Abschnitt 4 | SelfLinux-0.13.0

| INN | Autor Formatierung GFDL

#### 5 Newsserver ohne Feeder

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.

#### 5.1 Artikel einspeisen

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.

#### 5.2 Artikel weiterschicken

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.

#### 5.2.1 Artikel zum Versand aufbereiten

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

#### 5.3 Automatisierung

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

#### 5.4 Erweiterungen

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.