Leafnode permet de lire les news en mode off-line car il est très simple d'utilisation. Il est prévu pour fonctionner pour des petits sites. L'intérêt de Leafnode est qu'il est très facilement configurable, on peut lui dire de récupérer uniquement les newsgroups qui nous intéressent en fixant éventuellement d'autres critères (date des posts, nombre de posts, ...). N'importe quel lecteur de news, qu'il soit sur le poste serveur ou sur un poste client, peut alors accéder aux news (en lecture et écriture).
Il est constitué de trois programmes:
Seuls les newsgroups qui ont été lus dans la semaine sont récupérés sur le serveur de news du provider. Si on cesse de regarder un newsgroup pendant une semaine, les articles de ce newsgroup ne seront pas récupérés, si à nouveau on cherche à y accéder, ce n'est qu'à la prochaine connexion qu'on pourra à nouveau lire les articles.
Le développement de leafnode a divergé en deux branches distinctes la première leafnode, appelé aussi cornelius-leafnode (qui en est à la 1.9.5) et leafnode+ (version 2.9), les deux outils sont évidemment très proches, il n'est pas impossible qu'il fusionne dans un avenir proche.
Dans cet document est présentée l'installation de la version 2.7 de leafnode+, il ne devrait pas avoir beaucoup de différences avec la 2.9. Est présentée aussi l'installation de leafnode-1.9.5.
Vous pouvez trouver Leafnode+ à l'adresse suivante http://www.pobox.com/~jam/leafnode+ . Renommer, dézipper et détarer l'archive:
mv leafnode.tgz leafnode.tar.gz gunzip leafnod.tar.gz tar xvf leafnode.tar
Dans le répertoire de travail vous trouvez un répertoire leafnode+-2_7, comme vous allez vite vous en apercevoir, y a pas des binaires, il faut compiler le tout, pas d'affolement ça se passe plutôt bien. Par défaut les exécutables sont placés dans /usr/local/sbin, le manuel est placé dans /usr/local/man, la librairie dans /usr/lib/leafnode, le répertoire de stockage des news est placé dans /var/spool/news, libre à vous de modifier ces chemins, pour cela éditer le Makefile et modifier les variables:
BINDIR = /usr/local/sbin MANDIR = /usr/local/man SPOOLDIR = /var/spool/news LIBDIR = /usr/lib/leafnode
Placer vous dans le répertoire leafnode+-2_7 et taper tout simplement make, la compilation va normalement se dérouler sans problème, tapez ensuite make installall qui aura pour effet de créer, éventuellement, les répertoires /usr/local/sbin, /usr/local/man, /var/spool/news et /usr/lib/leafnode si ceux-ci n'existent pas déjà (ou alors ceux que vous aurez défini), ainsi qu'un certain nombre d'autres répertoires (sous /var/spool/news) et de copier les exécutables et fichier de configuration à l'endroit qui va bien.
Vous pouvez récupérer leafnode à l'adresse suivante http://wpxx02.toxi.uni-wuerzburg.de/krasel/leafnode.html. L'archive se présente sous la forme d'un tar.gz (tarball). Une fois décompressée vous trouvez un répertoire leafnode-1.9.5, dans ce répertoire, tapez:
./configure make make install
Les exécutables seront placés dans /usr/local/sbin, les news dans /var/spool/news, mais le fichier de config dans /etc/leafnode. Vous pouvez modifier ces chemins par défaut en donnant des arguments à configure, pour les connaître taper ./configure -help
Leafnode se sert de trois répertoires, le répertoire de "spool", le répertoire de librairie et le répertoire de binaires.
Le répertoire de "spool" sert à stocker tous les articles récupérés du serveur de news, il contient d'autres sous répertoires, si vous êtes abonnés au newsgroup fr.comp.os.linux.configuration, vous aurez le répertoire /var/spool/news/fr/comp/os/linux/configuration. Ce répertoire contiendra tous les articles identifiés par un numéro. Le répertoire /var/spool/news/out.going contient les articles postés en local en attente d'être envoyés vers le serveur de news du provider. Le répertoire /var/spool/news/failed.postings contient les articles postés en local qui ont été rejetés par le serveur de news du provider. Le répertoire /var/spool/news/message.id contient des liens hards vers chaque message. Le répertoire /var/spool/news/interesting.groups contient des fichiers vides dont les noms correspondent aux newsgroups
Le répertoire de librairie /usr/lib/leafnode contient le fichier de configuration de leafnode+, /etc/leafnode pour leafnode.
Le répertoire de binaires /usr/local/sbin, comme son nom l'indique contient les binaires (entre autres fetchnews, leafnode et texpire) (idem leafnode et leafnode+).
Cette manip concerne les deux leafnode. Vous devez d'abord modifier le fichier /etc/inetd.conf pour que leafnode soit lancé automatiquement au démarrage comme un daemon. A la fin du fichier rajoutez:
# leafnode nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode
La première ligne est un commentaire, modifiez éventuellement le chemin de leafnode si nécessaire.
Sous /usr/lib/leafnode vous avez un fichier config.example copier le au même endroit en l'appelant config
cp /usr/lib/leafnode/config.example /usr/lib/leafnode/config
Editer le fichier config
# le # indique un commentaire # la variable server indique le nom du serveur de news de votre provider # la variable newsgroup indique les newsgroups que vous voulez récupérer, vous pouvez utiliser l'* server = news.fai.fr newsgroups=fr.comp.os.linux.* newsgroups=fr.comp.os.unix newsgroups=fr.rec.sport.voile.planche newsgroups=fr.comp.mail newsgroups=fr.test # valeurs de timeout (en jours) # - timeout_short; les newsgroups qui n'ont pas été accédés ou qui ont été accédés qu'une seule fois pendant ce timeout sont considérés comme non intéressants (et donc pas récupéré lors des connexions futures) # - timeout_long; les newsgroups qui n'ont pas du tout accédés pendant ce timeout sont considérés comme non intéressants # - timeout_active; fréquence de vérification de l'existence de nouveaux newsgroups timeout_short = 7 timeout_long = 21 timeout_active = 14 # au bout du temps défini par la variable expire les articles non lus seront supprimés expire = 21 # pour certains newsgroup ENORME comme fr.comp.os.linux.configuration on peut redéfinir la variable expire groupeexpire = fr.comp.os.linux.configuration 10 # On ne récupérera jamais plus que maxcount articles dans un newsgroup en une fois. maxcount = 2000
Avec ça, vous avez un fichier de config standard, éventuellement faire un man leafnode pour plus de détails et d'autres variables.
Le fichier de configuration de leafnode se trouve sous /etc/leafnode et a pour nom config. Au contraire de leafnode+ on n'a pas à définir les noms de newsgroups auxquels on veut s'inscrire, dans un premier la liste est téléchargée ensuite à partir des lecteurs de news on choisit les groupes intéressants.
## This is the NNTP server leafnode fetches its news from. ## You need read and post access to it. Mandatory. # ici c'est le nom de mon serveur de news server = news.free.fr ## Unread discussion threads will be deleted after this many days if ## you don't define special expire times. Mandatory. # au bout de 10 jours les posts non lus seront supprimés expire = 10 ## ## All the following parameters are optional ## ## I have free access to my news server. If you don't have, comment out ## the following two lines and change them accordingly. # ici vous mettez votre mot de passe, c'est inutile si vous utilisez le serveur de news de votre fai username=login password=motdepasse ## Standard news servers run on port 119. If your newsserver doesn't, comment ## out the following line and change it accordingly. # normalement vous avez pas à toucher ça, généralement les serveurs de news utilisent le port 119 # port = 8000 ## This is another news server which stores some groups that are not ## available on the first one. You can define username, password and port ## for each server separately. # comme son nom l'indique vous pouvez récupérer les posts d'un autre serveur de news # cependant à ce moment là je sais pas trop comment va se passer l'envoie de post (vers les deux ?) # supplement = sex.and.warez.com # username = xenu # password = secret ## This is a news server which does not understand the ## "LIST NEWSGROUP news.group" command. For this reason, we don't try to ## download newsgroups descriptions when getting new newsgroups. This is ## achieved by putting "nodesc = 1" somewhere behind the server/supplement ## line. # supplement = broken.upstream.server # nodesc = 1 ## Here we have another news server which has a very slow connection. For ## that reason, we wait a full minute before we give up trying to connect. ## The default is 10 seconds. # supplement = really.slow.snail # time out pour trouver le serveur au bout de 60s on abandonne timeout = 60 ## Non-standard expire times (glob(7) wildcard constructs possible) # groupexpire comp.os.linux.* = 5 # groups too big to hold articles 20 days # groupexpire any.local.newsgroup = 100 # very interesting, hold articles longer # ici pour les groupes très volumineux (en nombre de posts), on peut raccourcir le temps où les posts # seront considérés comme "vieux" groupexpire = fr.comp.os.linux.configuration 5 ## 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 = 2000 ## Fetch only a few articles when we subscribe a new newsgroup. The ## default is to fetch all articles. # variable très importante, si vous ne la mettez pas, à la première connexion, # vous allez vous retrouver avec tout les posts même ceux d'il y a plus d'un mois contenus sur le serveur distant # ça peut prendre largement plus d'une heure, c'est pourquoi j'ai limité le chargement initial d'un newsgroup aux 100 derniers posts initialfetch = 100 ## If you want to use leafnode like an offline newsreader (e.g. Forte ## Agent) you can download headers and bodies separately if you set ## delaybody to 1. In this case, fetch will only download the headers ## and only when you select an article, it will download the body. ## This can save a huge amount of bandwith if only few articles are really ## read from groups with lots of postings. ## This feature works not very well with Netscape, though (which is not ## a fault of Leafnode). # delaybody = 0 ## To avoid spam, you can select the maximum number of crosspostings ## that are allowed in incoming postings. Setting this below 5 is ## probably a bad idea. The default is unlimited crossposting. # maxcrosspost = 5 ## If you suffer from repeatedly receiving old postings (this happens ## sometimes when an upstream server goes into hiccup mode) you can ## refuse to receive them with the parameter "maxage" which tells the ## maximum allowed age of an article in days. The default maxage is 10 ## days. # on ne va pas récupérer les posts vieux de plus de 10 jours sur le serveur, #maxage = 10 # vaut mieux pas se servir des variables suivantes ## maxlines will make fetch reject postings that are longer than a certain ## amount of lines. # maxlines = 100 ## minlines will make fetch reject postings that are shorter than a certain ## amount of lines. # minlines = 2 # intéressant si quelqu'un poste du binaire dans les newsgroups ## maxbytes will make fetch reject postings that are larger # maxbytes = 50000 ## timeout_short determines how many days fetch gets a newsgroup which ## has been accidentally opened. The default is two days. # timeout_short = 1 ## timeout_long determines how many days fetch will wait before not getting ## an unread newsgroup any more. The default is seven days. # timeout_long = 6 ## timeout_active determines how many days fetch will wait before re-reading ## the whole active file. The default is 90 days. # timeout_active = 365 ## If you want to have your newsreader score/kill on Xref: lines, you might ## want to uncomment this. # create_all_links = 1
Pour configurer Netscape par exemple que ce soit d'un poste client ou du poste serveur.
Choisissez Edit->Preferences->Mails&Newsgroups->Newsgroups Servers, tapez sur Add, une fenêtre apparaît, saisissez le nom de votre serveur, laissez les autres paramètres par défaut, sélectionnez le nom du serveur dans la liste puis cliquez sur Set As Default, puis OK.
C'est très simple, vous vous connecter et en tant que root vous tapez:
/usr/local/sbin/fetchnews -vvvv
les vvvv permettent d'avoir un max de commentaires pour voir si tout se passe bien. Quand vous avez à nouveau la main dans le shell, vous pouvez vous déconnecter. Si vous jetez un coup d'oeil dans /var/spool/news vous verrez que toute l'arborescence des news a été créée, y compris les newsgroups non choisis dans le fichier de configuration.
Lancer votre lecteur de news favori, "subscriber" aux newgroups qui vous intéressent (vous êtes limités avec leafnode+ à ceux préalablement définis dans le fichier de configuration ). Vous vous rendrez vite compte qu'il n'y a aucun article, c'est normal car c'est la première fois que vous y accéder, faites en sortes d'ouvrir tous les newsgroups auxquels vous vous êtes inscrits, même s'ils sont vides. Reconnectez vous à votre provider, relancer fetchnews, déconnecter vous, ça y est les articles sont là !
Vous pouvez alors lire les articles, y répondre, vos posts seront envoyés vers le serveur de news de votre provider au prochain appel de fetchnews.
De temps à autres, au moins une fois par semaine, tapez:
/usr/local/sbin/texpire
Ca aura pour effet de "faire le ménage" dans le répertoire /var/spool/news et de supprimer les vieux posts.