Leafnode als NNTP proxy

>> Index <<

Een eenvoudig te configureren NNTP server is het pakket Leafnode van Cornelius Krasel: http://www.leafnode.org/. Tegenwoordig staat het ook op http://leafnode.sourceforge.net.

Leafnode is een nieuwsserver (NNTP server of proxy) voor een klein aantal gebruikers (1-30) die op dezelfde PC of via een netwerk eens in de zoveel tijd berichten nieuwsgroepen ophalen. Voor het beheer van zeer veel nieuwsgroepen op grotere netwerken gebruikt u inn. De laatste leest i.t.t. leafnode 1.9x ook lokale nieuwsgroepen. Als u continu met het internet verbonden bent heeft het draaien van leafnode natuurlijk weinig zin, maar met een dial-up internet verbinding en zeker op een LAN kan Leafnode erg handig zijn.

NNTP proxy

> Top <

Een NNTP proxy is een programma dat nieuwsgroepberichten bij uw internet provider ophaalt en lokaal opslaat. Het verschil met een off-line reader client is dat laatste de opgehaalde berichten alleen voor eigen doeleinden gebruikt, maar een proxy een heuse server is die de nieuwsgroepberichten aan alle nieuwsgroeplezers (clients) kan leveren. Via een TCP/IP netwerk kunt u de berichten die u onder Linux ophaalt onder andere besturingssystemen lezen.

Principe

Tijdens een dial-up internetverbinding worden de door alle gebruikers aangevraagde nieuwsberichten snel en efficient van news.provider.com opgehaald. Dit regelt het programma fetchnews dat u in een root shell (su) of via een ip-up script kunt starten. U hoeft dus niet als root in te bellen. De berichten worden in /var/spool/news/ geplaatst. Geabonneerde groepen zitten in /var/spool/news/interesting.groups/. Zijn de berichten binnen dan kunt u de verbinding verbreken en de berichten off-line bekijken. Als NNTP server voor de nieuwsgroep client geeft u niet news.provider.com maar localhost (bijv. visser:119) op. Het poortnummer van de NNTP nieuwsservice is 119 (zie: portnumber.txt).

Het schema werkt dus als volgt:

NNTP upstream server

<---> NNTP local proxy <--->

local NG Clients

Met fetchnews haalt leafnode de gegevens van uw ISP op "news.provider.com" op.

Leafnode presenteert de gegevens op de harde schijf aan NG clients die de NNTP server "localhost" aanspreken.

Met StarDiscussion, knews, Netscape Messenger, pine, Emacs GNUs, maar ook met onder Windows werkende clients als Free Agent (via een netwerk) kunt u off-line berichten lezen en posten.

Plaats de door uw NG readers gebruikte NNTP server (bijv "localhost") in /etc/nntpserver of plaats een passende omgevingsvariabele in ~/.bashrc of /etc/profile:

export NNTPSERVER=localhost 

Een telnet naar de "nieuwspoort" (nntp server) van de eigen computer zou dan het volgende op moeten leveren (help voor opdrachten, quit om telnet af te sluiten):

sjoerd@visser:~ > telnet localhost nntp 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
200 Leafnode NNTP Daemon, version 1.9.4 running at visser.thuis 
quit 
205 Always happy to serve! 
Connection closed by foreign host. 
sjoerd@visser:~ > 

Gelukkig hoeft u niet via een terminal te posten. Als u zich op een groep wilt abonneren klikt u gewoon op de de nieuwsgroep in uw favoriete nieuwslezer. Bij de eerste benadering van een nieuwsgroep verschijnt een "dummy bericht" op het scherm:

Subject: Leafnode placeholder for group comp.os.os2.multimedia

Date: Fri, 5 May 2000 03:34:53 +0200

From: Leafnode <nobody@visser.thuis>

Newsgroups: comp.os.os2.multimedia


This server is running leafnode, which is a dynamic NNTP proxy.

This means that it does not retrieve newsgroups unless someone is actively reading them.

If you do an operation on a group - such as reading an article, looking at the group table of contents or similar, then leafnode will go and fetch articles from that group when it next updates.

Since you have read this dummy article, leafnode will retrieve the newsgroup comp.os.os2.multimedia when fetch is run the next time. If you'll look into this group a little later, you will see real articles.

If you see articles in groups you do not read, that is almost always because of cross-posting. These articles do not occupy any more space - they are hard-linked into each newsgroup directory.

If you do not understand this, please talk to your newsmaster.

Leafnode can be found at http://wpxx02.toxi.uni-wuerzburg.de/~krasel/leafnode.html

Als u dit bericht opent wordt in /var/spool/news/leaf.node/ een ingang voor de groep aangemaakt. U zou dit handmatig kunnen doen door in de betreffende map "touch comp.os.linux.answers" een leeg bestand aan te maken.

Voordat u dit kunt doen moet leafnode de lijst van alle nieuwsgroepen (groupinfo) en de lijsten van de te bezoeken nieuwsgroepen per server ophalen en aanmaken. Dit doet u met fetchnews -f tijdens een internetverbinding.

root@zolder:/var/spool/news > fetchnews -f -vvv
1.9.18: verbosity level is 3
Trying to connect to news.demon.nl ... connected.
Getting all newsgroups from news.demon.nl

De groupinfo bevat de lange lijst van alle nieuwsgroepen met wat huishoudelijke informatie). De daaronder staande bestanden bevatten de bezochte servers (news.demon.nl als hoofdserver en news.ecomstation.nl als de supplementary server).

root@zolder:/var/spool/news/leaf.node > ls -la
total 1613
drwxr-xr-x 2 news news 124 Nov 14 21:17 .
drwxrwxr-x 16 news news 404 Nov 14 21:17 ..
-rw-rw-r-- 1 news news 1638857 Nov 14 21:17 groupinfo
-rw-rw-r-- 1 news news 20 Nov 14 21:17 news.demon.nl
-rw-rw-r-- 1 news news 17 Nov 14 21:17 news.ecomstation.nl

Tijdens de volgende dial-up verbinding kunnen de berichten met fetchnews worden opgehaald. De optie -n garandeert dat ook de minder drukke nieuwsgroepen opgehaald worden (Don't automatically unsubscribe unread newsgroups). De optie -vvv geeft het informatienivo (verbosity level is 3) van het log aan (hoe meer v-tjes des te meer feedback op de prompt).



Berichten die u zelf verstuurd worden niet eerder dan met de volgende (of door vertraging bij de ISP nog later) fetchnews opdracht opgehaald. Dus post ze niet dubbel als u in eerste instantie niets ziet verschijnen ... Wat wel kan is achtereenvolgens met fetchnews -P alleen de berichten te versturen en daarna fetchnews opnieuw te draaien. Zoiets combineert u natuurlijk met andere opdrachten in een shell script:

#! /bin/bash

/usr/sbin/fetchnews -P -vv

/usr/sbin/sendmail -q -vvv

netdate -l 10 131.107.1.10 132.163.4.101 tcp 129.6.15.28

/usr/sbin/fetchnews -vv -n

/usr/bin/fetchmail -vv

/usr/sbin/sendmail -q -vvv

Sendmail wordt meerdere keren gestart zodat ik de post tijdens het ophalen van de nieuwsgroepen al kan lezen.

Configuratie van Leafnode

> Top <

Informatie

De manual van leafnode en texpire: man leafnode.

De Leafnode Homepage.

De Leafnode FAQ , met de meest gestelde vragen.

De The Leafnode mailing list, waarvan de archieven te doorzoeken zijn.

Fetchnews opstartopties

root@visser:/home/sjoerd > fetchnews --h 
fetchnews: invalid option -- - 
Usage: fetch [-v] [-x #] [-l] [-n] [-f] [-P] 
-v: more verbose (may be repeated) 
-x: check for # extra articles in each group 
-l: do not use supplementary servers 
-n: do not automatically expire unread groups 
-f: force reload of groupinfo file 
-P: only post outgoing articles, don't fetch any 

Leafnode zal met de -vvvv optie (verbosity level 4) meer log-informatie naar het scherm sturen dan met -vv.

Met de -l optie wordt alleen de berichten in NNTP server /etc/leafnode/config (hier demon) bezocht. De extra (supplementary) newsservers worden overgeslagen.

server = news.demon.nl
supplement = news.ecomstation.nl

De optie -n voorkomt dat Leafnode automatisch een unsubscribe uitvoert in nieuwsgroepen met weinig verkeer (veel gemodereerde nieuwsgroepen).

Zie: http://www.leafnode.org/archive/1999/msg00014.html

wolfgang.ratzka@gmx.de wrote: 
> Does leafnode include any special handling for newsgroups 
> that are not read because there are no new messages in it? 

So far, there is no difference between low- and high-traffic newsgroups. 

It is possible to avoid automatic unsubscribing in general by calling fetch with the -n parameter, but it is not possible (yet) to limit automatic unsubscribing to certain newsgroups. 

--Cornelius. 

fetchnews -f zal een nieuw Groupinfo bestand aanmaken. Nuttig bij de foutmelding: "Groupinfo file possibly truncated or damaged". Zie: http://www.leafnode.org/archive/1999/msg00026.html (indertijd heette fetchnews nog fetch). Hierbij worden de door u opgeven server(s) bezocht om de lijst(en) met nieuwsgroepen op te halen.

Configuratie tips

> Top <

Nog wat tips van Cornelius Krasel ("Cornelius") e.a. over de instellingen van het configuratiebestand /usr/lib/leafnode/config of /etc/leafnode/config (SuSE).

maxfetch en initialfetch

## Never fetch more than this many articles from one group in one run. 
## Be careful with this; setting it much below 1000 is probably a bad idea. 
# maxfetch = 3000 

## Fetch only a few articles when we subscribe a new newsgroup. The 
## default is to fetch all articles. 
initialfetch = 200 

Zie: http://www.leafnode.org/archive/1999/msg00008.html

Personally, I would strongly advise against the use of maxfetch. If you want to follow a newsgroup, it makes (in my opinion) absolutely no sense to stop fetching news after a certain amount of articles. I can only see two reasons for using maxfetch: 

1) The group you use is swamped with spam. Instead of using maxfetch, try to adjust your filterfile accordingly. 
2) You are afraid of fetching too many articles when you start reading a new newsgroup. Use initialfetch instead of maxfetch. 

--Cornelius. 

Overige tips

Tips over het beheer en de beveiliging van de server: http://www.leafnode.org/archive/1999/msg00017.html

Jeff Grossman wrote:


> 1. Where do I put this config file that I created? Plus, what do I call

> it?


/usr/lib/leafnode/config . (As I understand the File System Standard, it might be necessary to switch to /etc/leafnode.config instead since all config files are apparently stored in /etc . This has already been suggested to me several times.)


> 2. I noticed there was a line in the config.example that talks about a free

> open server. I only want to allow users that are on my system to access the

> news server. And who are connected to the server locally. How do I set

> that up?


The access to your news server is free for everybody unless you block it. Leafnode itself does not contain a blocking mechanism because Arnt Gulbrandsen believed (and I do so as well) that this can be better achieved using dedicated tools. I recommend the tcp wrappers.

If you run some kind of Linux, the tcp wrappers are already installed. In this case, if you only want users to access news who are connected locally (i.e. on the server machine), you put into /etc/hosts.deny


leafnode: ALL


which means nobody has access to leafnode except the IP numbers or names that you now put into /etc/hosts.allow. For example, if you now put into /etc/hosts.allow


leafnode: 127.0.0.1


only people on the localhost will be able to read news from your server. See also man 5 hosts_access, man 5 hosts_options . The INSTALL for leafnode also contains a short paragraph on how to set up tcp wrappers.


> 3. I have never set up cron before. I need a little help. I added the

> line:

> 0 4 * * * /usr/local/sbin/texpire

> to the cron file. But it talks about adding fetch there also. I have a

> full time connection and want Fetch to run at least every hour, but would

> prefer more often. How do I set something like that up?


man 5 crontab


20 * * * * /usr/local/sbin/fetch


will run fetch every 20 minutes past the hour. If you think you need to run it more frequently, you probably should also think of migrating to another server. (I run fetch every second hour during daytime locally, i.e. only on the first server, and once a night through all servers.)


--Cornelius.


Belangrijke mappen en bestanden

/var/spool/news

/var/spool/news/interesting.groups/ bevat de door u (touch newsgroup) of leafnode (klik in NG lezer op dummy bericht) aangemaakte lege bestanden met de namen van de te bezoeken groepen.

/var/spool/news/leaf.node/ bevat de lijst van alle nieuwsgroepen (groupinfo) en de lijsten van de te bezoeken nieuwsgroepen per server.

groupinfo

news.demon.nl

news.ecomstation.nl



Nieuwslezers

> Top <

Start een NGR, bijv. slrn:

sjoerd@visser:~ > slrn -h localhost -create 
slrn 0.9.5.7 (Nov 8 1999 23:00:01) 

Reading startup file /etc/slrn/slrn.rc. 
Using newsrc file .jnewsrc for server localhost. 
Connecting to host localhost ... 
Connected to host. Posting Ok. 
--The next step may take a while if the NNTP connection is slow.-- 

Creating /home/sjoerd/.jnewsrc........... 

Toegang tot de server regelen

/etc/hosts.deny

ALL: ALL

/etc/hosts.allow

http-rman: 192.168. 127.0.0.1

leafnode: 192.168. 127.0.0.1

ALL: 192.168.1.10/20

ALL: 127.0.0.1

ALL: .thuis


Op moderen SuSE systemen is inetd vervangen door xinetd:

Maak hier het bestand /etc/xinetd.d/leafnode aan:

service nntp

{

disable = no

socket_type = stream

protocol = tcp

wait = no

user = news

server = /usr/sbin/leafnode

}

>> Index <<