5.6. Linux som newsserver

Et naturligt spørgsmål ville være: "Hvorfor skulle man overhovedet køre en lokal newsserver?". Det er der faktisk flere gode grunde til:

Et valg af newsserver er Leafnode.

5.6.1. Leafnode, en NNTP-server til hobby-brug

Ud over de generelle argumenter for at køre nyhedsserver selv, kan vi tilføje følgende som angår newsserveren Leafnode:

Så der er faktisk mange gode grunde til at bruge Leafnode, hvis man kun har brug for en simpel NNTP-server og ikke har brug for at "feede" til andre NNTP-servere.

5.6.1.1. Installation af Leafnode

Installationen af Leafnode er nem. På et Debian-system klares det med apt-get install leafnode. Hvis din distribution ikke kommer med Leafnode må du hente kildeteksten hentes fra http://www.leafnode.org/. Når man så har hentet tar-pakken, pakker man den ud:

[root@linus /root]# tar xzvf leafnode-*.tar.gz 
...
[root@linus /root]# cd leafnode-*; less INSTALL

I denne fil er installationen beskrevet trin for trin, men vi løber den lige igennem alligevel. Dette er beskrevet fra en Red Hat. Det kan være at opsætningsfilerne ligger andre steder på andre distributioner.

[root@linus leafnode]# ./configure && make && echo O.k.
...
O.k.

Herefter skal der oprettes en bruger news:

[root@linus leafnode]# adduser news

Så må man køre:

[root@linus leafnode]# make install

Så skal der rettes i opsætningsfilen til Leafnode, som er placeret i /etc/leafnode/config. Det interessante er:

## Dette er en del af Leafnode opsætningsfilen /etc/leafnode/config
## This is the NNTP server Leafnode fetches its news from.
## You need read and post access to it. Mandatory.
server = news.sslug.dk

Her kan man så bare tilføje flere servere hvis man ønsker at læse fra flere. Skal der bruges brugernavn/adgangskode på en af dem, tilføjes det bare nedenunder:

# username = gulbrandsen
# password = secret

Og dette er faktisk alt der skal gøres ved opsætningsfilen. De andre parametre er rigtig godt beskrevet og omhandler ting som:

  • I hvor lang tid indlæg skal gemmes.

  • I hvor lang tid der skal hentes nye indlæg, hvis gruppen ikke bliver læst.

Disse parametre kan man altid stille på hvis man synes den ikke fungerer tilfredsstillende, men default er faktisk rimelig gode indstillinger.

Så skal crontab redigeres for brugeren news. Som standard anvender crontab editoren vi. Du kan evt. starte med at ændre dette forhold med kommandoen: editor=emacs; export EDITOR eller editor=mcedit; export EDITOR. Samme kommando kan tilføjes til din ~/.profile.

[root@linus leafnode]# crontab -u news -e

Heri tilføjes linjen:

0 0 * * * /usr/local/sbin/texpire

Dette får den til at slette gamle indlæg hver midnat. Det er smart hvis man sørger for at det er et tidspunkt hvor computeren er tændt. Nå, ja, hvis den er tændt, og man sover i samme rum, så lad være med at sætte den til at køre mens du sover. Der er rimeligt meget tryk på disken, når denne køres, da der er mange filer der skal tjekes igennem, så det kan man godt vågne af :-).

Så skal inet-dæmonen sættes op til at starte Leafnode. Først kontrolleres at inet er startet (Der skal være en stjerne foran i ntsysv). Så redigeres filen /etc/inetd.conf. Det er følgende linje der skal ses på:

nntp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/leafnode 

Her er Leafnode sat til at gå igennem tcpwrapperen så der skal også lige åbnes for denne. I /etc/hosts.deny skal der helst (af sikkerhedsmæssige årsager) stå:

ALL: ALL

hvorefter man redigerer /etc/hosts.allow og indsætter linjen:

leafnode: localhost

Her kan så tilføjes andre maskiner som skal have lov til at læse (se man hosts.allow). Og så skal netværks-funktionerne genstartes:

[root@linus leafnode]# /etc/rc.d/init.d/inet restart

Eller hvis du bruger Red Hat 7.0

[root@linus leafnode]# /etc/rc.d/init.d/xinetd restart

Eller hvis du anvender SuSE 6.4

[root@linus leafnode]# /etc/rc.d/init.d/inetd restart

Så er det hele ved at være sat op. Nu køres /usr/local/sbin/fetchnews for første gang. Første gang køres den med -f som parameter. Dette får Leafnode til at læse serverlisterne på de angivne servere. Denne skal køres som "root" eller "news". Man kan igen putte den i "news"s crontab hvis ens forbindelse er oppe hele tiden, ellers kan den med fordel puttes i ens opkaldsscripts eller man kan køre den manuelt når man ønsker at poste/hente news. Det sidste har jeg valgt, og derfor har jeg redigeret /root/.bashrc og indsat denne linje:

alias news='/usr/local/sbin/fetchnews -vvv' 

De 3 v'er giver bare meget output fra fetchnews, og nu kan jeg skrive news som root og køre fetchnews. Når man poster gennem Leafnode, bliver postningerne lagt i kø indtil fetchnews bliver kørt igen, og indlægget bliver postet mens nye indlæg fra de grupper, der abonneres på, bliver hentet. Nu mangler vi kun at sætte newsreaderen op til at læse fra localhost i stedet for den gamle newsserver.

Ønsker du automatisk hentning af nyheder hvert kvarter, kan du yderligere tilføje denne linje i /etc/crontab (kun interessant hvis du har en forbindelse med fast pris):

*/15 * * * * /usr/sbin/fetchnews