Next Previous Contents

9. Configurer Usenet. ( COMPLET MAIS ...)

VERSION des produits necessaires : package INN 2.x (Vous trouverez une exxxxxcellente documentation sur la configuration d'inn et notement des versions 1.7 sur le site http://www.linux-france.org). Newsx pour le transport des articles. Il nous servira meme à voir comment faire une compilation.

Dans notre réseau exemple nous utilisons le FAI oleane. le service de news est news.dial.oleane.com et le pathhost est oleane.com

9.1 Configurer Inn

Configurer Inn pour travailler en collaboration avec newsx (nous y reviendrons plus bas) n'est pas tres compliqué.

Les fichiers de configuration sont sous /etc/news dans la plus part des distributions. Nous y trouveront l'ensemble des fichiers à preparer.

Commencons par le commencement voici les premieres lignes qui nous suffiront pour l'instant.


-rw-r--r--   1 news     news         3489 Jun 29 17:37 inn.conf

##  $Revision: 1.24.2.1 $
##  inn.conf -- inn configuration data
##  Format:
##      <parameter>:<whitespace><value>
##
##  See the inn.conf(5) man page for a full description of each
##  of these options
##
##  Blank values are allowed for certain parameters
## ---------------------------------
# All parameters must exist
#
organization:           Je ne suis pas un numero, Je suis un logiciel Libre
server:                 news.sortilege.net
pathhost:               sortilege.net
#moderatormailer:
domain:
#fromhost:
pathalias:
complaints:             abuse@sortilege.net
mta:                    /usr/sbin/sendmail -oi %s

.../...

Voyons les options a fournir pour un service de base.

organization:

Le nom de votre organisation. FACULTATIF.

server:

Nom de votre serveur.domaine.

pathhost:

Champ qui apparaitra dans chaque message.Generalement votre domaine.IMPERATIF

complaints:

adresse a qui se plaindre en cas d'abus. Sans importance car nous utiliserons une methode de transport qui n'autorise pas le maintient de ce champ. Mettez le tout de meme, ne serait ce qu'a titre de bonne habitude.

Le reste de ce fichier comporte enormement de chose qu'il vous faudra decouvrir au fur à mesure que vous maitriserez mieu le sujet. Neanmoins cela nous suffira pour nos debuts.

Continuons notre tour d'horizon. Par default en effet notre serveur n'accepterez pas d'etre consulté par des postes avec une adresse IP autre que la notre. Nous allons immediatement remedier à cela.


-rw-r-----   1 news     news         1064 Jun 29 19:56 nnrp.access

## Default is no access, no way to authentication, and no groups.
*::::!*
##  Foo, Incorporated, hosts have no password, can read anything.
#*.foo.com:Read Post:::*
## Bar, Incorporated have a separate access file that they maintain
# *.bar.com:/news/etc/customers/access.bar.com
stdin:Read Post:::*
localhost:Read Post:::*
127.0.0.1:Read Post:::*
*.sortilege.net:Read Post:::*
#*:Read Post:::*

Ce fichier nous permet d'autoriser ou d'interdire l'acces à certains poste que cela soit totalement ou partiellement.

La structure de chaque ligne est ainsi :

ADRESSE:MODE:USER:PASSWORD:GROUP

ADRESSE

Adresse IP ou nom sur qui porte la régle.

MODE

Type d'acces RIEN=AUCUN DROIT, READ = Lecture, POST= ecriture.

USER

Si l'on desire mettre en place une authentification, la personne ne pouvant entrer que si elle connait le login et le password.

PASSWORD

voir plus haut. Pratique pour autoriser par exemple des consultations par des personnes qui ne sont pas sur le réseau ou depuis un acces ouvert égalemetn au public.

groupe

Nom des groupes sur lequel porte les regles.

Vous devez savoir que : C'est toujours la derniere regle qui est consideré comme la bonne donc si dans notre exemple je ne veux pas que le poste merlin puisse ecrire sur les news il me faut mettre : *.sortilege.net:Read Post:::* merlin.sortilege.net:Read:::* dans cet ordre si, sinon cela ne marchera pas.

Regulierement dans la configuration d'inn nous retrouverons les signes * ou ! ce sont des patterns, des operateurs generiques qui remplace ou invalide des choses. En voici la signification : * Signifie = n'importe quoi ! Signifie = negation donc !* = AUCUN DROIT.

Voyons maintenant le fichier moderators. Il entre en ligne de compte pour les groupes modérés comme vous pouvez le voir dans la section Notions Usenet.


-rw-r--r--   1 news     news          810 Apr 15 08:24 moderators

#
#
# LA DERNIERE LIGNE DOIT ETRE AINSI
#
*:%s@moderators.isc.org

Attention que tout les fichiers de configurations de inn doivent avoir des droits : news.news Ils ne doivent jamais se terminer par une ligne vierge.

Preparer le transport (feed).

C'est le fichier newsfeeds qui va nous servir pour definir comment doivent transiter les messages.


-rw-r--r--   1 news     news         4975 Jun 29 19:09 newsfeeds

.../...

ME:*,!local.*,!junk,!control::


news.dial.oleane.com/dial.oleane.com\
        :*,!local.*,!junk,!control\
        :Tf,Wnm:news.dial.oleane.com
.../...

Il y aurra deux parties importantes pour nous. Les regles se font ainsi :

site/EXCLUSION:GROUPE:METHODE:PARAMETRE

site.

Nom du site à traiter. ME est un nom valide qui represente notre serveur.

EXCLUSION.

Regle basé sur le champ pathhost.

GROUPE.

Groupe de news sur lequel il doit agir.

METHODE.

Methode de traitement à appliqué aux articles.

De maniere à ne pas laisser les lignes trop longues ont peut les couper, à condition de "marquer" la coupure par un "\".

Pour notre serveur en entrée nous donnons les régles :


ME:*,!local.*,!junk*,!control.*::

Tout accepter (*) sauf les groupes dont le nom commence par : local (!local.*), junk (!junk*), control (!control.*).

Pour la liaison avec le serveur de notre fournisseur d'acces :


news.dial.oleane.com/dial.oleane.com\
        :*,!local.*,!junk,!control\
        :Tf,Wnm:news.dial.oleane.com

Attention de bien placer un !control dans votre ligne sinon vos messages de creation destruction de groupes partirait sur usenet et pourrait affecter d'autres SERVEUR

Travailler avec le "feed" news.dial.oleane.com, ne pas lui envoyer les messages qui ont deja dans le pathhost les mots "dial.oleane.com", il assure le transport de tout les groupes sauf : junk*, local.* et control. Nous utilisons un mode de transport par fichier (Tf,Wnm).

Lancer Inn

Vous trouverez sous /etc/rc.d (chez suse, /etc/rc.d/init.d/ chez RH ...) inn (pour suse) et innd pour RH. Consultez la documentation sur les procedures d'initialisation disponible http://www.linux-france.com


polgara:/etc/rc.d # ./inn start
Starting News-Server INN:                                             done
<code>
Pour qu'inn soit lancé à chaque demarrage du système chez suse aller dans le fichier /etc/rc.config

<code>
-rw-r--r--   1 root     root        24663 Jul  3 22:46 rc.config
chercher la ligne :

# Start the INN news server? (yes/no)
START_INN=yes

Mettre yes à la place de no puis sauver.

9.2 Entretient du serveur, création, destruction des groupes.

L'entretient d'un serveur usenet de notre taille (c'est à dire minuscule) n'est pas trop important en quantité, mais demande tout de meme une surveillance réguliere. N'oubliez pas que Usenet est un systéme cooperatif qui ne peut fonctionner correctemetn que si chacun fait un effort.

Creer un groupe

Etant donné notre type d'acces il serait particulierement stupide que de vouloir recuperer tout les groupes meme seulement la hierarchie fr. Il vosu faut donc faire des choix. Néanmoins certains groupes me semblent incontournable si vous devez mettre usenet à disposition d'autres personnes. J'ai deja abordé le sujet dans les notions sur usenet, donc je n'y reviendrais que par principe :)

et si besoin :

Bien passons à la création :


su news
cd /usr/lib/news/bin
./ctlinnd pause "travail"
./ctlinnd newgroup fr.bienvenue m
./ctlinnd newgroup fr.questions y
etc etc

./ctlinnd newgroup fr.usenet.abus.discussion y < --- oui c'est une erreur mais c'est fait pour.

./ctlinnd reload active "travail"
./ctlinnd go "travail
exit

Voila nos groupes en place. Certes nous avons fait une erreur mais bon. Nous la corrigerons plus tard.

notons que lorsque l'on crée un groupe

Que signifie "travail", il sagit d'une commande obligatoire de ctlinnd qui nous oblige à specifier un motif a notre action. C'est purement indicatif et indique aux postes clients qui voudrait envoyer des messages qu'ils doivent attendre.

Detruire un groupe.

La destruction d'un groupe passe elle aussi par un ctlinnd.


su news
cd /usr/lib/news/bin
./ctlinnd pause "travail"
./ctlinnd rmgroup fr.usenet.abus.discussion
./ctlinnd newgroup fr.usenet.abus.d y 
./ctlinnd reload active "travail"
./ctlinnd go "travail"
exit

Configurer les delais de conservation des messages

C'est le fichier expire.ctl qui va nous permettre d'indiquer pendant combien de temps les articles devront etre conservés.

N'oubliez pas qu'a force ils prennent enormement de place à la longue. Pour eviter cela nous allons fixer des régles pour que les articles ne soient conservés que pendant un certain temps.


-rw-r--r--   1 news     news         1541 avr 15 08:24 expire.ctl


##  make this 28, 30, etc.
/remember/:5

##  Keep for 1-10 days, allow Expires headers to work.
*:A:3:4:5

*:M:1:15:40

local.*:A:20:30:40

*.test:A:1:2:2

Comme les autres fichiers de inn nous retrouvons un mode tres simple de configuration (une fois que l'on a compris evidement :).

Groupe_ou_pattern_de_groupe:type:garde:pardefault:vider

Groupe.

Permet d'identifier les groupes qui doivent recevoir les régles.

type.

M (N'appliquer la regle que pour les groupes moderés) ou U (n'appliquer la régle que pour les groupes non moderés) ou A (appliquer à tout le monde) X (Enlever tout les articles de tout les groupes qui correspondent à la definition de l'option groupe).

garder

Indique qu'il faut que l'article soit la depuis au moins X jours avant de subir un effacement.

pardefault

Si il n'y a pas d'indication de date de validité dans l'article, l'effacer au bout de X jours.

Purge

Quoi qu'il arrive on vide au bout de X jours.

Les valeurs en jour peuvent etre remplacé par never pour indiquer que l'on ne veut rien effacer du tout

Pour notre petit site nous n'allons pas nous casser la tete :

*:A:3:4:5

Quelque soit le nom du groupe (*) le type du groupe (A) l'on conserver les articles au minimum 3 jours, Si il n'y a pas d'indication de validité dans l'article on le conserve 4 Jours et quoi qui l'arrive il ne restera pas plus de 5 Jours.

*:M:5:15:40

Mais comme, quelque soit le groupe (*) si il est moderé (M) l'on a des articles de meilleur qualité et souvent utile alors nous les conserverons au minimum 5 jours, si il n'y a pas d'indication de validité dans l'article on le conserve 15 Jours et quoi qui l'arrive il ne restera pas plus de 40 Jours.

local.*:A:20:30:40

Si il sagit d'un groupe local (local.*) qu'il soit moderé ou non (A) nous les conserverons au minimum 20 Jours, si il n'y a pas d'indication de validité dans l'article on le conserve 30 Jours et quoi qui l'arrive il ne restera pas plus de 40 Jours.

*.test:A:1:2:2

Si il sagit d'un groupe test (local.*) et dans tout les cas le message ne reste que deux jours.

Voila, nous allons maintenant mettre en route la procedure d'entretient et de nettoyage.

Mettre en route l'entretient.

Nous allons confier à un cron la tache de régulierement entretenir notre serveur :


crontab -u news -e

# Nettoyer tout les jours à 4H15
15 4 * * * /usr/lib/news/bin/news.daily expireover delayrm lowmark

Cela generera un rapport tres complet sur l'utilisation du serveur. Nous permettant d'identifier par exemple les groupes que personne ne regarde, ce qui entre sort etc etc.

Lire les resultats de l'entretient.

A FAIRE A FAIRE

Le cas des groupes locaux.

Comme vous disposez d'un serveur usenet, rien ne vous empeche de creer vos propres groupes pour vos utilisateurs. Pour cela

Les groupes locaux moderés.

Sincerement des groupes locaux moderés ne serait pas la meilleure idée. Tout d'abord parce que cela engendre un travail supplementaire et vous en aurrez deja bien assez avec la maintenance, les questions des utilisateurs etc etc.

Néanmoins si tels est votre desir autant vous montrer comment réaliser l'operation.

Lorsque nous creeons un groupe moderé il nous faut imperativement prevoir également une boite email. En effet tout les messages destinés à groupe modéré sont envoyé par inn vers cette boite. C'est la que le fichier /etc/news/moderators entre en ligne de compte.

Commencons par creer le groupe moderé : local.annonces.moderated


su news
/usr/lib/news/bin/ctlindd pause "travail"
/usr/lib/news/bin/ctlinnd newgroup local.annonces.moderated m
/usr/lib/news/bin/ctlinnd reload active "travail"
/usr/lib/news/bin/ctlinnd go "travail"
exit

Maintenant qu'elle va etre le nom de boite. Inn pour l'envoi de l'article au moderateur va l'envoyer ainsi : local-annonces-moderated

Pour qu'il sache plus precisement ou est la boite nous allons modifier le fichier moderateur pour y ajouter une ligne :



## Les groupes local.* si ils sont moderés doivent envoyer les articles à 
## nomdugroupe (%s) @ sortilege.net
local.*:%s@sortilege.net 


## Direct all public hierarchies to the master moderator database.
*:%s@moderators.isc.org

Bien se souvenir de NE PAS PLACER NOTRE MODERATION SUR LA DERNIERE LIGNE. La derniere ligne devant obligatoirement pointé vers le domaine de moderation des grandes hierarchies

Nous allons donc aller dans le fichier /etc/aliases (reportez vous à la section sur sendmail pour plus d'info) ajouter les lignes suivantes :(nous partons du principe que c'est l'utilisateur stephane qui va moderer).


-rw-r--r--   1 root     root         2215 jun 24 20:21 /etc/aliases

.../...
#
# ALIAS POUR LES MODERATEURS
#
local-annonces-moderated:       stephane
.../...

Nous penserons à faire un newaliases pour mettre à jour la base.

Lorsque stephane recevra un article dans sa boite il ajoutera le champ : Approved: (suivit de quelque chose generalement l'email du moderateur) dans l'entete de l'article avant de renvoyer l'article sur le groupe.

Il existe des petits robots de messagerie qui se charge de ce genre de travail.

9.3 Le feed et compiler un programme exterieur à une distribution.

De maniere à transporter les articles et comme pour le courrier nous allons utiliser un programme specifique qui va s'occuper de transporter nos articles vers notre fournisseur. Il y a beaucoup de chance pour que le programme que je me propose d'utiliser ne soit pas sur votre distribution. Et si il y est, beiiinn ou bien vous passez à la section suivante ou bien vous restez pour voir ce qui va arriver ici. Je pense que cela pourra vous aider par la suite de voir comment rapatrier, preparer, compiler et pour finir installer un programme a partir des sources.

Nous allons faire appels pour cela au programme Newsx. Ceci pour deux raisons. Un c'est un programme d'une tres grande simplicité, fiabilité. Et en plus il est relativement respectueux des ressources de notre fournisseur.

Allons chercher le programme.

Vous trouverez régulierement les archives sous 2 formes :

Type RPM DEB : Package generalement deja compilé "pret a l'emploi". Vous avertissant theoriquemen si vous disposez bien de tout les outils necessaire au bon fonctionnement du programme. Type Tgz : Archive de type source le plus souvent. Le contenu doit donc subir quelques traitements avant d'obtenir un programme utilisable. C'est avec cette methode que nous allons installer newsx.

Premiere action aller recuperer newsx. Pour cela nous allons utiliser sur le site de l'auteur http://www.kvaleberg.com/newsx.html ou nous apprenons que le programme newsx est disponible en ftp sur ftp ftp.sol.no



stephane@merlin:~ > ftp ftp.sol.no
Connected to ftp.sol.no.
220-Welcome to Scandinavia Online's ftp service, [unknown] at dyn-1-1-146.Nts.dialup.oleane.fr.
220-Local time is now Sun Jul  4 20:08:56 1999.
220-
220-To access our public archive, please log in as "anonymous" with your
220-email address as password.
220-
220-Note: All anonymous access to this server is logged with your host name
220-      and whatever you entered for the password.  Disconnect now if you
220-      don't like this policy!
220-
220-Scandinavia Online AS                   Email:  firmapost@sol.no
220-PoBox 1178 Sentrum                      Phone:  +47 22 58 38 00
220-N-0468 Oslo                             Fax:    +47 22 02 09 77
220-Norway                                  www:    http://www.sol.no/
220-
220 ftp1.sol.no FTP server (Version wu-2.4.2-academ[BETA-18-VR13](1) Fri Feb 12 
17:18:54 MET 1999) ready.
Name (ftp.sol.no:stephane): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password: ********
230-
230-You are user 16 in your class (max 20).
230-
230-See the README file for more information about this archive.
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd user
250-
250-This area contains material made avaliable by customers of SN AS.
250-SN accepts no responsibility for any material made avaliable here.
250-
250 CWD command successful.
ftp> cd egilk
250---------------------------------------------------------------------------
250-Kindly note: The files contained herein are provided strictly "as is" and
250-come with no warranty of any kind, neither expressed nor implied. Under no
250-circumstances will any liability for any damages resulting from their use 
250-be accepted. Comments may be directed to Egil Kvaleberg, egil@kvaleberg.no
250---------------------------------------------------------------------------
250-
250-Please read the file README
250-  it was last modified on Mon May 10 09:41:58 1999 - 55 days ago
250 CWD command successful.
ftp> get newsx-1.4.tar.gz
local: newsx-1.4.tar.gz remote: newsx-1.4.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for newsx-1.4.tar.gz (257609 bytes).
226 Transfer complete.
257609 bytes received in 43.2 secs (5.8 Kbytes/sec)
ftp> exit
221-You have transferred 257609 bytes in 1 files.
221-Total traffic for this session was 263288 bytes in 2 transfers.
221-Thank you for using the FTP service on ftp1.sol.no.
221 Goodbye.

Nous avons donc l'archive tar du programme newsx. Il nous reste a la preparer. Pour commencer nous allons la decompresser et la deployer dans le repertoire /usr/src


 
merlin:/home/stephane # tar xvfz newsx-1.4.tar.gz -C /usr/src 
newsx-1.4/
newsx-1.4/Makefile.in
newsx-1.4/README
newsx-1.4/stamp-h.in
newsx-1.4/AUTHORS
newsx-1.4/COPYING
newsx-1.4/ChangeLog
[.../...]
newsx-1.4/test/testfilter.c
newsx-1.4/test/test1.rc
newsx-1.4/test/test2.rc
newsx-1.4/test/test3.rc
newsx-1.4/test/test4.rc
newsx-1.4/test/test0.rc
newsx-1.4/Makefile
merlin:/home/stephane # cd /usr/src/newsx-1.4

Compilons le programme

Par chance les sources se presenteront presque toujours (au moins pour les produits les plus habituels) de la meme maniere. La premiere etape va consister à LIRE LES DOCUMENTATIONS, (fichier README, Install et compagnie).

La deuxieme etape va consister à faire en sorte que notre systeme soit identifié et puisse réaliser la compilation


merlin:/usr/src/newsx-1.4 # ./configure
creating cache ./config.cache
checking for a BSD compatible install 
.../...
checking for getpagesize... yes
checking for working mmap... yes
checking for main in -lnsl... yes
checking for main in -linet... no
checking for main in -lsocket... no
checking for syslog in -lgen... no
checking for strerror... yes
checking for strsignal... yes
checking for strtoul... yes
checking for waitpid... yes
checking for putenv... yes
checking for setenv... yes
checking for getopt_long... yes
.../...

Par cette operation viennent de se creer plusieurs fichiers qui sont adaptés à NOTRE implantation de l'os, en l'occurence Linux.

Si il ne trouve pas quelque chose ou qu'il y ait un probleme vous allez voir apparaitre un beau message d'erreur. Reste a trouver quoi. C'est souvent ce qui est peut etre le plus compliqué. Le plus simple dans ce cas la est de bien relire la documenation du logiciel (fichier README, INSTALL etc etc). Si franchement vous ne trouvez pas, essayer de trouver une version en RPM. Si vous n'en trouvez pas non plus allez sur usenet poser la question, mais attention de bien choisir votre groupe.

Maintenant terminons en avec notre programme :


merlin: /usr/src/newsx-1.4/make 

Va lancer la compilation proprement dite et si tout est à nouveau OK


merlin; /usr/src/newsx-1.4/make install

Provoquera l'installation des programmes, documentations etc etc à leur place. Vous allez maintenant faire un man newsx et vous verrez apparaitre la liste des options disponibles pour le programme.

9.4 Configuer newsx

Il n'y a pas a proprement parlé de configuration de newsx. Nous allons juste voir quelqu'unes des possibilités du programme.

Notre serveur inn est en fonction nous avons placé les groupes locaux, les groupes des grandes hierarchie, nous sommes donc pret à agir.

En premier lieu nous allons "amorcer" les groupes comme notre connection à internet est operationnel, allons y :


polgara: ~ #su news

polgara: ~ # /usr/local/bin/newsx -dd --inn -W20 -k --rnews --maxnew 10 --maxart 150  news.dial.oleane.com
newsx 1.3 Sun Jul  4 20:25:25 1999
server: news.dial.oleane.com, spool: news.dial.oleane.com
reading /etc/news/newsfeeds
found entry for news.dial.oleane.com in /etc/news/newsfeeds
reading /var/lib/news/active
outgoing spool is empty
connecting to nntp server at news.dial.oleane.com
OK, can post
fetching news
.exec: /usr/lib/news/bin/rnews  
.......................
skipping 518 articles due to --maxart
....................................................
flushing spool...
rnews status is 0
.exec: /usr/lib/news/bin/rnews  
................................................................................
[.../...]
rnews status is 0
omitted 0 articles already in spool, 5 as crossposts
posted 0, fetched 214 articles in 49 groups at 5815 net cps

-dd.

Utiliser des informations d'erreur potentiel de niveau 2. Ceci n'est destiné qu'a nous assurer que tout fonctionne bien.

--inn.

Nous utilisons INN comme serveur. Il doit donc en tenir compte.

-W20.

Il doit travailler par tranche de 20 articles.

--rnews.

Il doit utiliser le programme rnews pour passer les articles à inn.

--maxnew 10.

Si c'est un nouveau groupe il ne doit prendre que les 10 derniers articles.

--maxart 150.

Si le groupe existait deja lors de la derniere mise à jour il ne doit prendre en compte que les 150 premiers articles depuis notre derniere mise à jour.

news.dial.oleane.com.

C'est le nom que nous avons indiqué comme feed dans newsfeed.

Si nous lancons maintenant un lecteur de news sur notre serveur, nous devrions voir les groupes que nous avions créer avec des choses dedans (evidement pour les groupes non locaux).

Il nous faut maintenant automatiser la procedure. La encore le mode dial à la demande va bien nous servir.


crontab -u news -e
10 7,13,18 * * * /usr/local/bin/newsx  -d --inn -W20 -k --rnews --maxnew 10 --maxart 150  news.dial.oleane.com

Nous remettons à jour les articles usenet 3 fois dans la journée à 7h10 13h10 et 18h10.

Je vosu conseille vivement la lecture de la page man de newsx. Vous y decouvrirez beaucoup d'option, entre autre :

--stat .

Permetant de generer des statistiques sur le transport des news.

--auth authfile .

Pour le cas ou vous devriez acceder a un serveur necessitant une authentification.

--end end_tag .

Qui permet de ne pas rapatrier a chaque fois tout les groupes.

et bien d'autres encore.


Next Previous Contents