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
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.
Le nom de votre organisation. FACULTATIF.
Nom de votre serveur.domaine.
Champ qui apparaitra dans chaque message.Generalement votre domaine.IMPERATIF
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 IP ou nom sur qui porte la régle.
Type d'acces RIEN=AUCUN DROIT, READ = Lecture, POST= ecriture.
Si l'on desire mettre en place une authentification, la personne ne pouvant entrer que si elle connait le login et le 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.
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.
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
Nom du site à traiter. ME est un nom valide qui represente notre serveur.
Regle basé sur le champ pathhost.
Groupe de news sur lequel il doit agir.
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.*::
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
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).
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.
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.
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 :)
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.
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
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
Permet d'identifier les groupes qui doivent recevoir les régles.
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).
Indique qu'il faut que l'article soit la depuis au moins X jours avant de subir un effacement.
Si il n'y a pas d'indication de date de validité dans l'article, l'effacer au bout de X jours.
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 :
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.
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.
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.
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.
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.
A FAIRE A FAIRE
Comme vous disposez d'un serveur usenet, rien ne vous empeche de creer vos propres groupes pour vos utilisateurs. Pour cela
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.
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.
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
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
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.
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
Utiliser des informations d'erreur potentiel de niveau 2. Ceci n'est destiné qu'a nous assurer que tout fonctionne bien.
Nous utilisons INN comme serveur. Il doit donc en tenir compte.
Il doit travailler par tranche de 20 articles.
Il doit utiliser le programme rnews pour passer les articles à inn.
Si c'est un nouveau groupe il ne doit prendre que les 10 derniers articles.
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.
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 :
Permetant de generer des statistiques sur le transport des news.
Pour le cas ou vous devriez acceder a un serveur necessitant une authentification.
Qui permet de ne pas rapatrier a chaque fois tout les groupes.