Version : 1.8 14/9/98 SN

Modappbot : un robot-modrateur pilot par mail

Sommaire
--------

Premire Partie : Prsentation, installation, configuration
A.1. Prsentation
A.2. Pr-requis
A.3. Installation
A.4. Modappspool : rception des articles  modrer
A.5. Modappmail : communication avec les modrateurs
A.6. Configuration du robot
A.7. Options de ligne de commande de modappbot
A.8. Tester la configuration du robot

Deuxime Partie : Mode d'emploi pour l'administrateur
B.1. Ajouter un groupe gr par le robot moderateur
B.2. Commandes e-mail disponibles pour l'administrateur

Troisime Partie : Mode d'emploi pour l'utilisateur
C.1. Gnralits
C.2. Obtenir de l'aide du robot
C.3. Demander les articles en attente
C.4. Approuver un article
C.5. Supprimer ou refuser un article
C.6. Librer un article
C.7. Transfert d'articles
C.8. Commandes administratives

Quatrime Partie : Messages d'erreur

Cinquime Partie : Implmentation
E.1. Spcifications

------------------------------

Premire Partie : Prsentation, installation, configuration initiale

------------------------------

A.1. Prsentation

Modappbot est un programme permettant de grer un groupe de nouvelles
modr. Il est constitu de plusieurs modules :

- le module modappspool est utilis pour traiter les articles de news reus 
pour publication dans le groupe modr, en utilisant ventuellement 
un mcanisme de filtrage.

- le module modappmail est le module d'analyse et de traitement 
des commandes par mail. Il est utilis pour traiter les articles
 publier, en les refusant ou les postant ventuellement dans 
les groupes modrs grs par modappbot.

Les diffrents modules sont regroups dans un seul programme.
Modappbot est crit en langage Perl5, et utilise plusieurs modules internes
ou externes, ainsi qu'indiqu dans le paragraphe ci-dessous.

Pour une description plus complte des fonctionnalits de ce programme,
veuillez-vous reporter au paragraphe C.1.

------------------------------

A.2. Pr-requis

Sur le serveur excutant modappbot : 

* Un*x (FreeBSD, Linux, etc). Il semble difficile de faire fonctionner
  ce programme sur une plateforme Win*ows.

* Perl version 5.004 minimum

* Modules Perl5 : 

  Ces modules sont disponibles sur les archives CPAN.
  Les principales archives CPAN en France sont
  ftp://ftp.pasteur/pub/Perl/CPAN ou
  ftp://ftp.lip6.fr/pub/perl/CPAN

  MailFolder (Mail::Folder): 
    requiert TimeDate (Date::Format), MailTools (Mail::xx),
    MIMETools (MIME::xx), File-Sync (File::Sync), libnet (Net::xx)
    CPAN/modules/by-module/Mail/MailFolder-0.07.tar.gz
  TimeDate (Date::Format) : 
    ne requiert aucun module
    CPAN/modules/by-module/Date/TimeDate-0.08.tar.gz
  MailTools (Mail::Internet, Mail::Header, Mail::Address) : 
    requiert libnet (Net::xx)
    CPAN/modules/by-module/Mail/MailTools-1.11.tar.gz
  libnet (Net::SMTP, Net::NNTP, etc) :
    requiert Data-Dumper (Data::Dumper)
    CPAN/modules/by-module/Net/libnet-1.06.tar.gz
  Data-Dumper (Data::Dumper) :
    ne requiert aucun module
    CPAN/modules/by-module/Data/Data-Dumper-2.081.tar.gz
  MIMETools (MIME::xx) : 
    requiert MIME-Base64 (MIME::Base64 & MIME::QuotePrint), IO-Stringy (IO::xx)
    MailTools (Mail::xx)
    CPAN/modules/by-module/MIME/MIME-tools-4.116.tar.gz
  IO-Stringy (IO::xx) :
    ne requiert aucun module
    CPAN/modules/by-module/IO/IO-stringy-1.105.tar.gz
  MIME-Base64 (MIME::xx) : 
    ne requiert aucun module
    CPAN/modules/by-module/MIME/MIME-Base64-2.05.tar.gz
  File-Sync (File::Sync) : 
    ne requiert aucun module
    CPAN/modules/by-module/File/File-Sync-0.06.tar.gz
  Date-Manip (Date::Manip) : 
    ne requiert aucun module
    CPAN/modules/by-module/Date/DateManip-5.31.tar.gz

  Procdure d'installation des modules :
  Installer dans l'ordre :
  Date-Manip, File-Sync, Data-Dumper, Time-Date, MIME-Base64, IO-Stringy,
  libnet, MailTools, MIMETools, MailFolder

* sendmail v8, ou tout programme compatible capable de prendre
  les destinataires dans les en-ttes.

* rnews (celui de INN fonctionne correctement) ou
  rpost (programme livr avec 'suck')

  Suck est disponible entre autres sur ftp://ftp.sunsite.edu, 
  dans le rpertoire /pub/Linux/system/news 
  La dernire version en date au 21/4/98 est la 3.9.0.

* procmail v3.10 ou suprieur 
  Procmail et formail sont utiliss pour le tri des articles.
  ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/

Sur le client (poste du modrateur) :
* n'importe quel client de messagerie

------------------------------

A.3. Installation

Le programme modappbot doit tre install dans un rpertoire personnel, 
ddi  un compte utilisateur spcifique utilis par le robot. 
Il est excut en tant que l'utilisateur spcifique cr dans le systme.

------------------------------

A.3.1. Compte utilisateur ddi  modappbot

Dans la version actuelle, il faut crer sur le serveur recevant
les articles un compte utilisateur spcial utilis pour modappbot.
Par exemple, crer l'utilisateur "modapp", verrouiller son mot
de passe, lui donner un rpertoire de connexion avec un peu de place
pour le spool des articles et les archives ventuelles.

------------------------------

A.3.2. Organisation des rpertoires

Choisir un rpertoire de travail pour modappbot. 

Par exemple : /home/modapp

Dans ce rpertoire, crer les sous-rpertoires suivants : bin etc spool

Dans le rpertoire bin, copier le programme modappbot.

Le rpertoire etc contient :
- le fichier de configuration du robot (modappbot.conf)
- les fichiers d'aide pour les modrateurs et l'administrateur
  (helpfile et adminhelpfile)
- des sous-rpertoires correspondant aux groupes grs par le robot

Chaque sous-rpertoire contient :
- le fichier donnant la liste des modrateurs (fichier moderators)
- le fichier optionnel de signature (fichier signature)
- le fichier optionnel de liste blanche (whitelist)
- le fichier optionnel de liste noire (blacklist)
- les fichiers optionnels de messages de refus (refuse.*)
- les fichiers optionnels pour modappspool contenant l'accus de rception
  et la charte du groupe (ackmsg et errormsg respectivement)
- le fichier optionnel subjectdb.db contenant la base de donnes des
  des auteurs d'articles utilise si le sujet ssame est dfini.

Il faut donc crer les sous-rpertoires dans etc correspondant
aux noms des groupes, avec dans ces sous-rpertoires, au minimum
le fichier moderators.

Voir les paragraphes ci-dessous pour la description du contenu de
ces fichiers.

Dans le rpertoire spool, crer autant de sous-rpertoires qu'il y a
des groupes de news grs par le robot : fr.announce.seminaires
et penelope.moderated dans les exemples de ce document.
Crer galement dans le rpertoire spool un autre sous-rpertoire
contenant les boites aux lettres recevant les articles et les
mails de commande des modrateurs. Ce rpertoire s'appelle 'mailboxes'
dans l'exemple de ce document.

Dans ce cas, l'organisation des rpertoires est la suivante :

/home/modapp
            /etc : fichiers de configuration
            |   /modappbot.conf : fichier de configuration de modappbot
            |   /helpfile       : fichier d'aide pour les moderateurs
            |   /adminhelpfile  : fichier d'aide pour l'administrateur
            |   /articles.db    : base de donnes des articles affects
            |   |
            |   /penelope.moderated
            |   |                  /moderators : liste moderateurs du groupe
            |   |                  /signature  : signature ajoutee aux articles
            |   |                  /whitelist  : liste blanche
            |   |                  /blacklist  : liste noire
            |   |                  /ackmsg     : accuse de reception spouleur
            |   |                  /errormsg   : message de refus spouleur
            |   |                  /subjectdb.db : base de donnes auteurs
            |   |                  /refuse.xxx : message de refus xxx
            |   |
            |   /fr.announce.seminaires
            |                          /modappspool.conf
            |                          /moderators
            |                          /ackmsg
            |    
            /spool : rpertoire de stockage des articles en attente
            |     /penelope.moderated
            |     |                  /article_1
            |     |                  /article_n
            |     /fr.announce.seminaires
            |     |                      /article_1
            |     |                      /article_n
            |     /mailboxes
            |               /modappbot
            |               /pm
            |               /fas
            |
            /archive : rpertoire d'archivage des articles supprims ou refuss
            |       /penelope.moderated
            |       |                  /article_1
            |       |                  /article_n
            |       /fr.announce.seminaires
            |                              /article_1
            |                              /article_n
            |  
            /bin : programmes
                 /modappbot : le robot

Tous les rpertoires et sous-rpertoires doivent tre crs
au pralable.
Il est ncessaire de crer le rpertoire d'archivage, mais les
sous-rpertoires (ayant comme nom les groupes grs par le robot)
peuvent ne pas tre crs initialement. Dans ce cas, ils seront
crs lorsque le programme en aura besoin.

Les noms des fichiers dans le rpertoire de configuration sont
figs en dur dans le robot et ne peuvent pas tre changs. Seul
le nom des fichiers refuse.xx est modifiable (et seulement l'extension xx).
Pour changer nanmoins le nom de ces fichiers, modifier les valeurs 
des variables commenant par 'f'  la fin du tableau associatif %mopt dfini 
au dbut du programme.

Les commandes shell  taper en tant qu'utilisateur root sont donc :

* Creation des rpertoires pour le robot
# mkdir /home/modapp
# mkdir /home/modapp/bin /home/modapp/etc /home/modapp/spool

* Creation du rpertoire pour les boites aux lettres
# mkdir /home/modapp/spool/mailboxes

* Creation des rpertoires dans le spool
# mkdir /home/modapp/spool/nom.du.groupe1

* Recopie des fichiers de configuration 
  Les versions franaise et anglaise 
  des fichiers helpfile et adminhelpfile 
  sont livres avec les sources du logiciel
# cp helpfile adminhelpfile /home/modapp/etc
# mkdir /home/modapp/etc/nom.du.groupe1
# vi /home/modapp/etc/nom.du.groupe1/moderators

* Recopie des programmes excutables
# cp modappbot /home/modapp/bin

* Initialisation de la base de donnes d'articles : 
  ncessaire sur certains systmes uniquement (pas sur FreeBSD)
# makemap hash /home/modapp/etc/articles < /dev/null

* Attribution du rpertoire de travail du robot et 
  de ses sous-rpertoires  l'utilisateur ddi
# chown -R modapp:users /home/modapp
# chmod 755 /home/modapp/bin/*

Il faut ensuite modifier les fichiers de configuration situs
dans le rpertoire /home/modapp/etc/{nom.du.groupe} 
comme indiqu dans la suite de ce document.

------------------------------

A.3.3. Filtrage du courrier entrant par sendmail et procmail

A.3.3.1. Le contenu du fichier d'aliases du systme

Crer autant d'alias qu'il y a de groupes grs par le robot.
Crer galement un alias pour les mails de commande envoys
par les modrateurs.

Voir le fichier d'exemple 'aliases' du sous-rpertoire 'etc-exemples'
des sources du programme pour plus d'informations.

------------------------------

A.3.3.2. Le fichier de configuration .procmailrc

Tous les articles et mails de commande sont envoys dans la boite
aux lettres de l'utilisateur ddi au robot (modapp dans les exemples
de ce fichier).

Pour que les mails envoys  modapp soient tris par procmail, crer
un fichier .forward dans le rpertoire de login de 'modapp'. Le fichier
doit contenu quelque chose comme :

"|IFS=' '&& exec /usr/local/bin/procmail -f-||exit 75 #modapp"

Attention : .forward doit appartenir  l'utilisateur modapp, et tre
en mode 600.

Le logiciel procmail utilise un fichier de configuration .procmailrc
qui doit tre situ dans le rpertoire de connexion du robot.

Les mails envoys aux groupes modrs grs par le robot sont filtrs
par le programme 'formail' faisant partie de la distribution logicielle
'procmail'. Les options de lancement spcifies sur la ligne de commande
de formail sont :
* -R Received X-Original-Received : renomme les en-ttes Received:
  en X-Original-Received:, afin de garder une trace du chemin parcouru
  par l'article arrivant jusqu'au serveur sur lequel s'excute le robot
* -a \"Newsgroups: nom.du.groupe1\" pour ajouter l'en-tte 
  Newsgroups: avec le contenu du nom d'un groupe gr par le robot, 
  uniquement si cet en-tte n'est pas dj prsent

Voir le fichier d'exemple 'procmailrc' situ dans le rpertoire
'etc-exemples' des sources du robot pour plus d'informations sur
le contenu du fichier.

Dans le cas o le robot gre plusieurs groupes, les dclarations
de filtrage du courrier dlivr  'modappbot+extension' doivent tre
mises avant la rgle de filtrage du courrier dlivr  'modappbot'
(sans l'extension 'plus').

------------------------------

A.3.4. Invocation du robot

Ajouter une ligne permettant de lancer modappbot priodiquement
dans son fichier crontab (ou dans /etc/crontab). En invocation
priodique (qui est le mode d'excution standard), lancer
modappbot sans option sur la ligne de commande (ou ventuellement,
avec -c configfile seulement).

Le fichier crontab peut contenir la ligne suivante pour que
modappbot analyse toutes les cinq minutes les diffrentes boites
aux lettres des groupes modrs qu'il gre et celle contenant
les mails de commande des modrateurs :

*/5 * * * * /home/modapp/bin/modappbot 2>&1

Les erreurs affiches par le robot sont envoyes sur la sortie
erreur standard (stderr). Si le robot affiche des messages d'erreur,
le processus cron fait suivre les erreurs  l'administrateur
du robot, en envoyant les mails  l'utilisateur 'modapp'. Les mails
sont filtrs par procmail, et c'est la dernire rgle qui s'applique
(les mails qui ne sont pas  destination du robot 'modappbot'
ni des groupes modrs sont envoys  l'administrateur dfini
dans l'alias 'modappbot-request').

Afin d'viter les boucles de mail, il FAUT dclarer un alias
'modappbot' distinct du nom de login ddi au robot. Les mails
de commandes sont envoys  'modappbot', les messages d'erreur
du robot sont envoys au login ddi 'modapp'.

------------------------------

A.4. Modappspool : rception des articles  modrer

Ce module analyse chaque article reu pour modration. Dans le cas le
plus gnral, l'article reu est copi dans la file d'attente
du robot (spool) pour tre ultrieurement affect  un modrateur
et trait par lui.

Il est possible de configurer modappspool pour qu'il renvoie
automatiquement un accus de rception  tout article reu.

Il est possible d'utiliser des fonctions de filtrage des articles
reus, afin de ne traiter qu'un sous-ensemble des articles reus.

------------------------------

A.4.1. Vrification de la syntaxe de l'article

modappspool vrifie avant tout filtrage que l'article est correctement
compos :

* il supprime certains champs d'en-tte (Received, To, Old-To, Mail-From
  par dfaut).
* si l'article ne contient pas de champ d'en-tte Subject, il en
  ajoute un, qui est 'no subject' par dfaut.
* si l'article ne contient pas de champ d'en-tte Message-ID, il
  en fabrique un.
* il nettoie l'article en supprimant les accents des en-ttes From:,
  Reply-To: et Subject:, en dcodant ventuellement l'article cod
  en 'Quoted-Printable'. Il dcode aussi les caractres faisant partie
  du jeu de caractres propritaire de Microsoft Windows (apostrophes).
* si l'article ne contient pas de champ d'en-tte From, ou Newsgroups,
  il est supprim (sans tre prsent aux modrateurs) et est archiv.
  Idem si l'article contient un champ Newsgroups:, mais que le groupe
  gr par le robot n'apparat pas ce champ d'en-tte (ce cas est vicieux
  puisque de tels articles ne devraient pas arriver jusqu'au robot;
  il doit y avoir un problme au niveau des alias de modration sur
  un serveur, mais ce n'est pas au robot de dtecter ce genre de problme).

------------------------------

A.4.2. Filtrage

Modappspool possde les fonctions de filtrage suivantes :

- liste noire contenant la liste des auteurs d'articles qui ne
peuvent pas poster dans le groupe. Aucun accus de rception n'est
renvoy dans ce cas. Si l'auteur est dans la liste noire, l'article
est supprim mme si le sujet ssame est prsent (voir ci-dessous).

- liste blanche contenant la liste des auteurs dont les articles
sont automatiquement approuvs par le robot et posts sans intervention
manuelle d'un modrateur. Si l'article reu n'est post que
dans un seul groupe modr (gr par modappbot), aucun accus
de rception n'est renvoy. Si l'article doit tre envoy par 
mail  un modrateur d'un autre groupe modr, un accus
de rception est renvoy.

- sujet interdit (blacksubject) : si le sujet d'un article reu
correspond au sujet 'interdit', l'article est ignor par le robot
et aucun accus de rception n'est renvoy  l'auteur

- sujet ssame (whitesubject) : si le sujet d'un article reu
ne correspond pas au sujet 'ssame', un message d'erreur est renvoy
 l'auteur et l'article est ignor. Si le sujet de l'article correspond,
l'article est soit post directement par le robot, soit spool
afin d'tre trait par un modrateur. Si le sujet ssame est dfini,
une base de donnes contenant la liste des posteurs l'ayant utilis
au moins une fois est utilise afin de permettre aux auteurs d'viter
de mettre le sujet ssame dans leurs articles ultrieurs s'ils l'ont utilis
une fois.

------------------------------

A.4.3. Algorithme de fonctionnement

L'algorithme exact du fonctionnement de modappspool est donn ci-dessous.
On cite quelques mots-cls de configuration du robot, sur lesquels vous
pouvez obtenir tous les dtails dans le paragraphe A.6.

L'algorithme est :

- analyse de l'article reu.

- si l'auteur est dans la liste noire, l'article est ignor

- si le sujet de l'article correspond au sujet interdit, l'article
est ignor

- si l'auteur est dans la liste blanche, et si l'article n'est pas
crosspost dans d'autres groupes modrs, l'article est post par
modappbot. Sinon, l'article est spool.

- si le ssame est dfini, et si l'auteur de l'article est trouv dans
la base auteurs (subjectdb.db), l'article est auto-post ou spool suivant
qu'il est post dans le seul groupe modr ou bien dans d'autres
groupes modrs.

- si le sesame est dfini, et si le sujet de l'article ne correspond pas
au ssame, le robot renvoie un message d'erreur  l'auteur de l'article.
Ce fichier s'appelle 'errormsg' et est diffrent pour chaque groupe
gr par le robot.

- si le ssame est dfini, et si le sujet de l'article correspond, si
'autopost' est dfini pour le groupe, l'article est automatiquement
post par le robot. Si 'autopost' n'est pas dfini, l'article est spool.

- si le ssame n'est pas dfini, l'article est spool.

- si l'article est spool, le robot envoie  l'auteur de l'article
un accus de rception. L'accus de rception est le fichier 'ackmsg'
et est diffrent pour chaque groupe gr par le robot.

IMPORTANT : si l'adresse de l'auteur d'un article correspond  l'expression
rationnelle dfinie dans la configuration par le mot cl 'noreply',
aucun accus de rception ou message d'erreur n'est renvoy par
le spouleur. Cela permet par exemple d'viter de rpondre  des adresses
anti-spam.

Si une sous-routine du programme ne s'excute pas correctement,
l'article analys par le robot reste dans la bote aux lettres
des articles en attente de traitement par le robot. Un message
d'erreur est normalement envoy par 'cron'  l'administrateur
du robot. Suivant le contenu de ce message, il peut tre ncessaire
d'agir sur le contenu de la bote aux lettres des articles  traiter
(par exemple en supprimant le message fautif aprs en avoir gard
une copie). Un message mal compos ne bloque pas le fonctionnement
du robot pour les autres articles ou mails de commandes reus. Seul
le mail mal form est concern.

------------------------------

A.5. Modappmail : communication avec les modrateurs

Ce module est charg de traiter les articles spools (et uniquement
ceux-ci). Le dialogue entre modappbot et l'quipe de modrateurs est
fait par courrier electronique.

Un exemple de session (basique) est la suivante :

- le modrateur, lorsqu'il a le temps de s'occuper de quelques articles,
envoie un mail  modappbot en prcisant dans le corps du message la
commande "available password nom.du.groupe"

- si modappbot voit que le mot de passe du groupe est correct, et si
l'adresse e-mail du From: est dans la liste des modrateurs pour
le groupe en question, il renvoie au modrateur qui l'a demand la liste
de tous les articles en attente pour publication dans le groupe prcis.
Tous les articles sont alors marqus comme affects au modrateur.
Le modrateur doit alors traiter les articles avant de pouvoir en demander
d'autres pour le mme groupe (par contre, il peut demander d'autres articles
pour un autre groupe dont il serait modrateur). Dans le mail renvoy
par le robot au modrateur, les articles sont marqus par un identifiant
unique, avec galement l'adresse e-mail de l'auteur et le sujet de l'article.
La liste comporte ventuellement en plus, pour chaque article, un
identifiant indiquant si l'article est crosspost entre plusieurs groupes
pour lequel le modrateur n'est pas responsable, ou bien un identifiant
indiquant si l'article est crosspost dans plus de cinq groupes (ce nombre
est configurable), un identifiant indiquant si les en-ttes MIME 
d'un article sont incorrects, et galement un identifiant 
indiquant si l'article est crosspost avec des groupes inconnus du serveur.

Si un article contient un champ d'en-tte References: et qu'un article
prcdemment approuv par le robot est cit dans ce champ, 
seul le modrateur ayant approuv l'article rfrenc peut 
approuver l'article en followup. Le robot n'affecte pas les articles 
en followup  un autre modrateur que celui qui a approuv 
l'article initial du fil de discussion.

Le robot est capable d'envoyer automatiquement les articles qui
viennent d'tre affects au modrateur qui les a demands.

- traitement des articles :

  - le modrateur peut supprimer un article sans le publier
  - le modrateur peut refuser un article en donnant un motif
    de refus. Dans ce cas, l'article est retourn  l'auteur
    avec un message d'explication.
  - il peut galement approuver un article
  - il peut demander que l'article complet lui soit envoy par mail
  - il peut modifier l'article par mail en l'envoyant au robot avec
    son identifiant

Le modrateur rpte cette opration pour tous les articles. Il peut
mettre plusieurs commandes dans un mme mail pour le robot. Apres rception
du mail de commandes (ventuellement multiples), modappbot effectue
les actions indiques, et apres traitement, renvoie un mail au modrateur
en lui donnant la liste des articles qui lui sont toujours affects.
La liste peut d'ailleurs tre vide.

De plus, le robot possde un administrateur (ou plusieurs) : 
c'est une personne qui peut modifier le fichier de configuration 
gnral de modappbot ou les fichiers d'aide (helpfile et adminhelpfile).

L'administrateur n'a pas pour rle de modifier la liste des modrateurs
d'un groupe. Chaque modrateur peut modifier cette liste sans faire
intervenir l'administrateur.

------------------------------

A.6. Configuration du robot

Modappbot utilise un fichier de configuration principal appel
par dfaut modappbot.conf. Ce fichier contient des lignes au format
cl=valeur. On y trouve deux types de dclarations : des dclarations
globales, s'appliquant  tous les groupes grs par le robot ou modifiant
le comportement gnral du robot, et des dclarations propres  un
groupe. Les dclarations spcifiques  un groupe sont dfinies
dans un bloc au format :

[nom.groupe1]
cle=valeur
cle2=valeur2
...
[end]

On dtaille ci-dessous tous les mots-cl valides pour une dclaration
globale ou locale  un groupe.

------------------------------

A.6.1. Types de valeurs

Les valeurs associes aux mots-cl sont de diffrents types :

- chaine de caractres : aucun contrle n'est fait sur la valeur

- booleen y/n : les deux valeurs autorises sont 'yes' ou 'no'. 
  Il est possible d'utiliser uniquement 'y' ou 'n', et de mettre 
  la valeur en majuscules ou minuscules indiffremment.

- multi-option : certaines valeurs peuvent prendre plusieurs valeurs.
  Par exemple : full/body/header. Ces valeurs peuvent tre abbrges en f,b,h,
  et crites en majuscules ou minuscules indiffremment.

- liste : dans ce cas, les valeurs sont prises dans une liste. Les
  lments de la liste doivent tre spars par des blancs :
  "faq charter general". Une liste ne peut contenir qu'un seul lment
  (auquel cas la liste se rduit  un mot-cl de type 'chaine de caractres').

- numrique : les valeurs doivent tre un nombre positif.

- expression rationnelle : cas particulier de chaine de caractres
interprte comme une expression rationnelle. Si vous n'tes
pas familier avec les expressions rationnelles, vous pouvez
consulter la page de manuel de regexp ou re_format.

Dans la description des diffrentes options ci-dessous, les
valeurs autorises sont indiques entre parenthses :
- valeur chaine  : C
- valeur booleene : B
- valeur multi-option : T
- valeur liste : L
- valeur numrique : N
- valeur expression rationnelle : R

De plus, les options globales sont indiques par un G, et celles
valables pour un bloc sont indiques par un S (comme 'section').

------------------------------

A.6.2. Dclarations globales

Les mots-cl suivants peuvent tre utiliss comme dclarations globales :

confdir spooldir archivedir mailboxdir 
admin adminpw warnadmin
activefile logfile loglevel
mailcmd mailopts newscmd newsopts 
from nntpserver moderators 
maxgroups
maxarchive maxspool
lockretries locksleep
mailbox sender
articledbexpire subjectdbexpire
nosubject noreply 
organization

* confdir (GC)

Cette variable donne le chemin d'accs complet au rpertoire
de configuration contenant le fichier de configuration modappbot.conf
et les sous-rpertoires contenant les fichiers de configuration
propres  chaque groupe

ATTENTION : ce rpertoire doit exister ainsi que les sous-rpertoires
des groupes grs. Sinon, le robot refuse de fonctionner.

Exemple : confdir=/usr/local/etc/modappbot
Dfaut : confdir=/home/modapp/etc

* spooldir (GC)

Cette variable donne le chemin d'accs complet au rpertoire
contenant les articles en attente. Ce rpertoire contient en fait
des sous-rpertoires dont le nom est le nom de chaque groupe
gr par le serveur.

ATTENTION : ce rpertoire doit exister ainsi que les sous-rpertoires
des groupes grs. Sinon, le robot refuse de fonctionner.

Exemple : spooldir=/var/spool/news/modappbot
Dfaut : spooldir=/home/modapp/spool

* archivedir (GC)

Si la fonction d'archivage des articles supprims ou refuss est
active, cette option donne le nom du rpertoire d'archivage
contenant les sous-rpertoires des groupes grs par le robot.

Si ce rpertoire ou les sous-rpertoires des groupes grs n'existe
pas, il sera cr par le robot lorsqu'il en aura besoin.

Exemple: archivedir=/var/spool/news/archive/modappbot
Dfaut: archivedir=/home/modapp/archive

* mailboxdir (GC)

Spcifie l'emplacement du rpertoire contenant les fichiers de type
mailbox unix dans lesquels sont stocks les mails ou articles en
attente de traitement par le robot (le stockage tant ffectu
par procmail)

Ce rpertoire doit exister avant que des mails ou des articles
soient reus par le serveur (car sinon procmail ne fonctionnera
pas correctement)

Exemple : mailboxdir=/var/mail/modappbot
Dfaut : mailboxdir=/home/modapp/spool/mailboxes

Exemple

* admin (GL)

'admin' permet de spcifier l'adresse e-mail de l'administrateur
du robot. Il est possible de donner plusieurs adresses e-mail,
si on veut dfinir plusieurs administrateurs du robot (les
administrateurs se partagent le mme mot de passe). Les multiples
adresses e-mail sont spares par des blancs.

Exemple : admin=sn@penelope.frmug.org truc@bidule.to
Dfaut : admin=root

* adminpw (GC)

'adminpw' permet de spcifier le mot de passe utilis par
l'administrateur (dont l'adresse est donne par le mot-cl admin)
pour les commandes administratives (cf Deuxime Partie)

Exemple : adminpw=mypw

* warnadmin (GB)

'warnadmin' est une option binaire : yes/no . Si warnadmin vaut 'yes',
l'administrateur (dont l'adresse e-mail est donne par le mot-cl admin)
reoit un courrier dans les cas suivants :
- problme de configuration de modappbot (fichier de configuration corrompu,
problme lors de l'excution du programme, etc)
- le robot reoit un courrier d'une personne qui n'est modrateur
d'aucun des groupes grs par le robot

Il est conseill de valider cette option.

Exemple : warnadmin=no
Dfaut : warnadmin=yes

* activefile (GC)

'activefile' donne le chemin d'accs COMPLET au fichier active
(au format INN nom.du.groupe1 himark lowmark flags). Comme en gnral
le robot est excut sur un serveur hbergeant aussi un serveur de news,
il faut donner  cette cl le chemin d'accs au fichier active
du serveur de news.

Attention : par dfaut,  l'installation de INN, le fichier texte
active n'est pas lisible par n'importe qui. Vrifier que l'utilisateur
'modapp' ddi  l'excution du robot peut bien accder et lire ce
fichier.

Si cette option n'est pas spcifie, la vrification de l'existence
des groupes (dans le cas d'articles crossposts) ne se fera pas,
mais cela n'entraine pas d'erreur fatale de la part du robot.

Exemple : activefile=/usr/local/news/etc/active

* logfile (GC)

Spcifie l'emplacement du fichier contenant la trace de l'excution
du robot. Si ce fichier n'existe pas, aucune trace n'est effectue.
La trace par syslog n'est plus disponible dans la version 0.4.

Exemple : logfile=/var/log/modappbot.log (Attention aux droits d'accs)
Dfaut : logfile=/home/modapp/etc/logfile

* loglevel (GN)

Le robot modrateur catalogue toutes ses actions dans le fichier spcifi
par 'logfile.' Les messages de log sont plus ou moins importants suivant 
la valeur de la cl 'loglevel'. Si loglevel vaut zro, rien n'est catalogu.
Si loglevel vaut 1, seules les informations importantes sont catalogues.
Les valeurs suprieures ou gales  2 ne sont utilises qu' des
fins de dboguage.

Exemple : loglevel=0
Dfaut : loglevel=1

* mailcmd (GC)

'mailcmd' permet de spcifier le chemin d'accs au programme sendmail.
La localisation de ce programme dpend du systme d'exploitation
(il peut tre dans /usr/lib ou /usr/sbin, ou encore ailleurs).

Attention : il faut donner  cette cl uniquement le chemin d'accs  sendmail
sans l'option -t. Le script ne fonctionnera probablement pas 
si un autre agent de transport du courrier est utilis.

Exemple : mailcmd='/usr/lib/sendmail -t'
Dfaut :  mailcmd='/usr/sbin/sendmail -t'

* mailopts (GC)

Spcifie les options de ligne de commande du programme donn dans
'mailcmd'. Il faut utiliser l'option '-t' dans cette variable
si sendmail est utilis.

Si l'option de ligne de commande '-f toto' est utilis (avec, en gnral,
toto=nobody), cela permet aux bounces d'tre renvoys  nobody,
c'est  dire normalement vers /dev/null. Pour viter les messages
d'avertissement de sendmail dans syslog et dans les en-ttes 
(X-Authentication-Warning), ajouter le login 'modapp' (ou celui
dfini pour le robot) dans la classe T de sendmail.cf (chercher une ligne
commenant par T dans sendmail.cf et ajouter une ligne 'Tmodapp').

Exemple : mailopts='-t'
Dfaut : mailopts='-oem -f nobody -t'

* newscmd (GC)

Chemin d'accs complet au programme de postage des articles de news,
sans les options de ligne de commande. Il est possible d'utiliser
rnews (celui de INN) ou rpost (livr avec l'ensemble logiciel suck).
Je n'ai pas une bonne exprience, personnellement, avec inews qui
refuse certains en-ttes d'article de news gnrs par le robot
(comme Message-ID, ou Path).

Si rnews est utilis, il faut probablement ajouter le login 'modapp'
dans le groupe auquel appartient le programme rnews (uucp par dfaut).
Modifier le fichier /etc/group de la faon approprie.

Exemple : newscmd=/usr/local/bin/rpost
Dfaut : newscmd=/usr/local/bin/rnews

* newsopts (GC)

Options de ligne de commande du programme spcifi dans newscmd.
Si la fonctionnalit de postage simultan d'un article sur plusieurs
serveurs est active (voir la variable globale 'nntpserver'), 
alors il est possible de spcifier dans la variable newsopts 
le mot cl spcial NNTPSERVER, qui sera remplac par Modappbot
par le nom du serveur de news sur lequel l'article doit tre post,
le nom du serveur tant extrait de la variable nntpserver.

Exemple : newsopts=NNTPSERVER -M -s  (options pour rpost)
Dfaut : newsopts=-h localhost -v -S NNTPSERVER (options pour rnews)

Dans les deux exemples ci-dessus, si la variable nntpserver vaut
'news.entreprise.com news.universite.fr', Modappbot lancera
'rpost news.entreprise.com -M -s' puis 'rpost news.universite.fr -M -s'
pour poster l'article simultanment sur les deux serveurs.

* from (GC)

'from' donne la valeur du champ From: utilis dans les messages e-mail
envoys par le robot  un modrateur ou un administrateur.

Ce qui est donn entre parenthses est le champ commentaire d'une
adresse e-mail. Il est optionnel.

Il n'est pas utile de modifier la valeur donne par dfaut. Si le
serveur sur lequel est excut modappbot est correctement configur,
le nom de la machine est automatiquement ajout par sendmail lorsqu'un
mail est envoy.

Exemple : from=robotmoderateur@quelquepart.fr (Robot Moderateur des News)
Dfaut :  from=modappbot (Modappbot)

* nntpserver (GC)

Nom du ou des serveurs de news utiliss pour poster l'article.
Il est possible de lister plusieurs serveurs de news sur lesquels
l'article est simultanment post.

Exemple : nntpserver=news.entreprise.com news.universite.fr
Dfaut : nntpserver=localhost

* moderators (GC)

Nom du serveur de mail recevant les mails envoys pour approbation
d'articles crossposts dans d'autres groupes modrs.

Exemple : moderators=moderators.usenet.fr.net
Dfaut : moderators=moderators.isc.org

* maxgroups (GN)

Cette variable donne le nombre maximum de groupes au del duquel
un article spool est considr comme massivement crosspost.

Si un article est massivement crosspost, le flag "C" est positionn
dans la liste renvoye par modappbot suite  une demande d'affectation
d'article envoye par le modrateur (voir la Troisime Partie).

Exemple : maxgroups=10
Dfaut : maxgroups=4

* maxarchive (GN)

Tout article refus par le robot est automatiquement archiv.
Si le nombre maximal d'articles archivs dans un groupe 
dpasse la valeur spcifie par 'maxarchive', le robot arrte 
d'archiver les articles.

Exemple : maxarchive=1000
Dfaut : maxarchive=10000

* maxspool (GN)

Indique le nombre maximum d'articles stocks dans le spool
en attente de traitement par un modrateur. Si un article
ne peut pas tre spool du fait que le nombre d'articles
spools pour un groupe dpasse 'maxspool', un message d'erreur 
est renvoy  l'auteur de l'article.

Exemple : maxspool=1000
Dfaut : maxspool=10000

* lockretries (GN)

Le robot crit un fichier verrouillant son execution dans
un rpertoire temporaire, de sorte qu'il est garanti
qu'une seule invocation du robot ne s'excute  la fois.
Cela est ncessaire pour ne pas corrompre la base de donnes
'articles' qui est ouverte au lancement du robot.
Si le robot tente de s'excuter alors qu'un autre exemplaire
est dj en excution, il s'endort et essaie de se relancer
un certain de nombre de fois spcifies par la variable lockretries.
S'il ne peut pas se lancer au bout du nombre d'essais spcifi,
un message d'erreur est envoy  l'administrateur, car cela signifie
probablement que le robot a t arrt brutalement ( cause
d'une bogue ou d'un crash systme), et il est probablement ncessaire
d'effacer le fichier lock pour que le robot puisse s'excuter
normalement.

Exemple : lockretries=100
Dfaut : lockretries=10

* locksleep (GN)

Donne le nombre de secondes pendant lesquelles le robot s'endort
en attendant de pouvoir s'excuter.

Exemple : locksleep=1
Dfaut : locksleep=3

* lockext (GC)

Nom de l'extension ajoute  un nom de fichier verrouill par le robot.
Le contenu de cette variable doit tre cohrent avec la valeur
de la variable LOCKEXT du fichier procmailrc du robot. Le point
est indispensable dans le contenu de cette variable.

Dfaut : lockext=.lock

* mailbox (GC)

Nom du fichier mailbox dans lesquels les mails de commandes sont
stocks par procmail, en attente de traitement par le robot.

Exemple : mailbox=.bot
Dfaut : mailbox=modappbot

* sender (GC)

Contenu de l'en-tte Sender: ajout par le robot dans les articles
de news qu'il poste.

Exemple : sender=monrobot@quelquepart.fr (C'est mon robot a moi)
Dfaut : sender=modappbot@penelope.frmug.org

* articledbexpire (GN)

Nombre de jours pendant lesquels une entre est conserve dans
la base des articles. Les articles approuvs par les modrateurs
sont stocks dans la base de donnes des articles. La base est purge
 chaque excution du robot. La dure de rtention des entres
dans la base est fixe par ce mot-cl.

Exemple : articledbexpire=0   (pas d'expiration)
Dfaut : articledbexpire=20

* subjectdbexpire (GN)

Nombre de jours par dfaut pendant lesquels une entre est conserve
dans la base des e-mails ayant utilis au moins une fois le sujet
ssame. Cette base de donne est individuelle  chaque groupe gr
par le robot. Cette option permet de fixer une valeur globale 
tous les groupes, mais si cette option est dclare dans une dclaration
de groupe, la valeur particulire pour le groupe en question
est prise en compte  la place de valeur globale.

Exemple : subjectdbexpire=0   (pas d'expiration)
Dfaut : subjectdbexpire=20

* noreply (GR)

C'est une expression rationnelle utilise par le spouleur. Si l'adresse
de l'auteur d'un article envoy au robot correspond  cette expression
rationnelle, aucun accus de rception ou message d'erreur n'est renvoy
 l'auteur. La comparaison entre l'adresse de l'auteur et l'expression
spcifie dans 'noreply' ne fait pas diffrence entre minuscules
et majuscules.

Exemple : noreply=(nospam|remove|delete)

* nosubject (GC)

Contenu du champ Subject: ajout  un article qui ne possderait
pas de tel champ d'en-tte.

Exemple : nosubject=vide  (le Subject: vaut alors la chaine 'vide')
Dfaut : nosubject=no subject

* organization (GC)

Contenu du champ Organization: ajout  un article qui ne possderait
pas de tel champ d'en-tte.

Exemple : organization=Robots Incorporated

------------------------------

A.6.3. Dclarations locales  un groupe

Les mots-cl suivants ne sont utilisables que dans un bloc de dclaration
de groupe :

password from
sendarticles refuse includearticle 
whitelist blacklist
blacksubject whitesubject 
ack autopost archive refusecc subjectdb
subjectdbexpire mailbox followup organization
articledbexpire checkrefs

Un bloc de dclaration est spcifi de la faon suivante :

[nom.du.groupe.1]
cl=valeur locale  ce groupe
...
[end]

[nom.du.groupe.2]
...
[end]

Attention : il faut utiliser comme dbut de dclaration de bloc
le nom exact du groupe de nouvelles modr et gr par le robot modrateur.

* password (SC)

Cette option permet de donner le mot de passe utilis par les modrateurs
lorsqu'ils communiquent par mail avec le robot (cf Troisime Partie)

Exemple : password=MyTailorIsRich

* sendarticles (ST)

Si cette option est utilise, les articles sont automatiquement 
envoys au modrateur en mme temps qu'ils lui sont affects.

Les valeurs possibles sont :
- h(eaders) : dans ce cas, seuls les champs d'en-tte sont renvoys
- b(ody) : seul le corps du message est renvoy
- f(ull) : tout l'article (en-tte et corps du message) est renvoy

Il est possible d'utiliser seulement la premire lettre de la valeur au lieu
du mot complet.

Exemple : sendarticles=h
Exemple : sendarticles=full

* from (SC)

'from' spcifie l'adresse qui est mise dans l'en-tte From: des messages
qui sont renvoys par le robot aux auteurs d'articles (cas d'articles
refuss ou messages renvoys par le spouleur).

Exemple : from=pm-request@penelope.frmug.org (Moderateur penelope.moderated)

* refuse (SL)

Un bloc de dclaration de groupe peut contenir une directive
'refuse' permettant de spcifier les motifs de refus disponibles
pour le groupe. Dans ce cas, un fichier contenant le message
de refus renvoy  l'auteur de l'article doit exister dans
le sous-rpertoire de configuration du groupe.
Il est possible de prciser plusieurs motifs de refus
possibles sur cette dclaration.
Par exemple, pour spcifier un fichier  renvoyer  un auteur 
d'article dans le cas d'une question rsolue dans la FAQ du groupe, 
ou d'un thme inappropri, il est possible de spcifier les options suivantes :

refuse=charter faq

Dans cet exemple, un modrateur peut utiliser les commandes
'refuse.charter' et 'refuse.faq' lorsqu'il refuse un article. Le
message renvoy par le robot contient le message d'explication
donn par l'option refuse, ainsi qu'ventuellement l'article
original (suivant la valeur de l'option 'includearticle' dcrite
ci-dessous). Les fichiers d'explication de refus renvoys sont
situs dans le rpertoire confdir/nom.du.groupe, le nom de chaque
de fichier commenant par 'refuse.' suivi du motif spcifi dans
l'option 'refuse' du fichier de configuration.

* includearticle (ST)

Cette option spcifie ce que le robot doit inclure dans la rponse
envoye  l'metteur en cas de refus de son article. 

Les valeurs possibles sont :
- h(eaders) : dans ce cas, seuls les champs d'en-tte sont renvoys
- b(ody) : seul le corps du message est renvoy
- f(ull) : tout l'article (en-tte et corps du message) est renvoy

Il est possible d'utiliser seulement la premire lettre de la valeur au lieu
du mot complet.

Par dfaut, l'article original n'est pas renvoy en cas de refus.

Exemple : includearticle=h
Exemple : includearticle=body

* whitelist (SB)

Cette option booleene permet d'indiquer au spouleur s'il doit
utiliser un fichier de liste blanche (dont le nom est 
'confdir/nom.du.groupe/whitelist')
Attention, si whitelist est positionn  'y', le fichier whitelist
doit exister (mais peut tre vide) car sinon, le robot refuse
de se lancer.

Exemple : whitelist=y
Exemple : whitelist=n

* blacklist (SB)

Cette option booleene permet d'indiquer au spouleur s'il doit
utiliser un fichier de liste noire (dont le nom est 
'confdir/nom.du.groupe/blacklist')
Attention, si blacklist est positionn  'y', le fichier blacklist
doit exister (mais peut tre vide) car sinon, le robot refuse
de se lancer.

Exemple : blacklist=y
Exemple : blacklist=n

* blacksubject (SR)

Cette option est une expression rationnelle spcifiant les
mots cls du champs Subject: d'un article qui ne sont pas
acceptables pour le groupe. La comparaison du sujet avec
l'expression rgulire est faite en ignorant la casse
(caractres minuscules ou majuscules) des caractres du champ Subject:.

Exemple : blacksubject=(sex|money|job)

* whitesubject (SR)

Si cette expression rationnelle est dfinie, un article dont
le champ Subject: ne correspond pas est refus par le robot.
Dans ce cas, le robot envoie un message d'erreur  l'auteur
de l'article et l'article est ignor.

Si le sujet d'un article reu par le spouleur correspond 
l'expression rgulire, l'article est post automatiquement
ou spoul suivant la valeur de la variable 'autopost'.

La comparaison du sujet avec l'expression rgulire 
est faite en ignorant la casse (caractres minuscules 
ou majuscules) des caractres du champ Subject:.

Exemple : whitesubject=charte ok

* subjectdb (SB)

Si whitesubject est dfini, et si subjectdb vaut 'y', le
robot accepte de poster (ou spouler) un article provenant
d'une personne ayant dj utilis le sujet ssame dans un article
prcdent. Il utilise une base de donnes annexe (au format DBM)
pour vrifier que l'auteur de l'article a utilis le sujet ssame
auparavant. Cette base de donnes est susceptible d'tre purge
(voir subjectdbexpire).
Si subjectdb n'est pas dfini ou vaut 'n', la base de donnes
des auteurs d'articles ayant utilis le sujet ssame n'est pas
utilise.

Exemple : subjectdb=y
Dfaut : subjectdb=y

* subjectdbexpire (SN)

Donne le nombre de jours pendant lesquels une adresse e-mail
peut tre conserve dans la base de donnes des auteurs d'articles
ayant utilis le sujet ssame.

Voir ci-dessus la variable globale du mme nom.

Exemple : subjectdbexpire=0    (pas d'expiration)
Exemple : subjectdbexpire=20

* autopost (SB)

Si 'autopost' est vrai (y), l'article est automatiquement
post si 'whitesubject' est dfini et si le sujet d'un article
correspond. Si 'autopost' vaut 'n' (ou n'est pas dfini), 
l'article est spoul.

Exemple : autopost=y
Exemple : autopost=n

* ack (SB)

Si cette variable est dfinie, un accus de rception est renvoy
 l'auteur d'un article spoul (mais pas si l'article est automatiquement
post par le spouleur). De plus, il est possible de donner
 cette variable les valeurs suivantes pour indiquer ce qui doit
tre inclus dans l'accus de rception :

- (f)ull : l'article complet est inclus dans l'accus de rception ( la
fin du message renvoy  l'auteur d'un article)
- (b)ody : seul le corps du message est renvoy dans l'accus de rception
- (h)eader : seuls les en-ttes de l'article sont renvoys dans
l'accus de rception.

Si 'ack' est dfini, mais possde une autre valeur que les trois cites
ci-dessus, l'accus de rception est renvoy sans inclure aucune partie
de l'article original. Si 'ack' n'est pas dfini, aucun accus
de rception n'est dfini.

De plus, 'ack' rgle galement le comportement du spouleur en cas
de message d'erreur renvoy  l'auteur d'un article (ce cas ne
se produit que si 'whitesubject' est dfini et si le sujet d'un
article ne correspond pas  l'expression rgulire). Si 'ack' n'est
pas dfini, le message d'erreur ('errormsg') est renvoy  l'auteur
de l'article sans inclure l'article original. Si 'ack' est dfini et
contient un des trois mots cls dfinis ci-dessus (f, b ou h),
le message d'erreur contient respectivement l'article complet,
son corps ou seulement ses en-ttes.

* mailbox (SC)

Nom du fichier (relativement au rpertoire spcifi par la variable
globale mailboxdir) contenant les articles tris par procmail et devant
tre analyss par modappbot pour tre stocks dans la file d'attente
des articles pouvant tre affects  un modrateur.

Exemple : mailbox=pm     (correspond alors au fichier 
                          /home/modapp/spool/mailboxes/pm)

* followup (SC)

Si cette variable est dfinie, le contenu du champ Followup-To: 
qui existait auparavant dans l'article publi par le robot est remplac
par son contenu. Si le champ Followup-To: n'existait pas dans l'article,
il est ajout avec comme contenu celui de cette variable.

Exemple : followup=penelope

* refusecc (SC)

Si cette variable est dfinie, elle contient normalement une 
(ou plusieurs, spares par des virgules) adresse e-mail,
recevant en copie invisible (blind carbon-copy) les mails de refus
renvoys par le robot aux auteurs d'articles refuss par les modrateurs.
La syntaxe du contenu de cette variable n'est pas vrifie avant
son utilisation.

Exemple : refusecc=archivage@ailleurs.fr,pm-request@penelope.frmug.org

* organization (SC)

Contenu du champ Organization:  ajouter  un article qui n'en
possde pas. Si cette variable de groupe n'est pas dfinie mais
que la variable globale du mme nom l'est, alors c'est le contenu
de la variable globale 'organization' qui est utilise.

Si l'article ne contient pas de champ Organization:, et si les
variables globale et de groupe 'organization' ne sont pas dfinies,
aucun en-tte Organization: n'est ajout  l'article par le robot.
Nanmoins, suivant la mthode de postage utilise, il est possible
que le serveur NNTP ajoute lui-mme un tel champ d'en-tte 
(c'est le cas lorsque le robot poste sur un serveur en mode lecteur).

Exemple : Organization=Penelope Moderated

* articledbexpire (SN)

Fonctionnement identique  la variable globale du mme nom.
Cette variable permet de donner une dure de vie aux entres
des articles dans la base de donnes des articles approuvs
par les modrateurs ou en attente de traitement. Cette valeur
doit tre exprime en jours.

Si la valeur est nulle, le numro de l'article approuv n'est
pas conserv dans la base de donne, qui ne contient alors que
les articles en attente de traitement. Ceci permet de modifier
l'algorithme d'affectation des articles (de manire similaire
au positionnement d'une variable de groupe 'checkrefs') : 
par dfaut, si un article est approuv par un modrateur, et si
le robot reoit un followup  cet article approuv, seul le modrateur
ayant approuv l'article followup peut approuver les articles
du mme fil de discussion. En positionnant articledbexpire  zero,
ou bien en positionnant checkrefs  'no', cette vrification
n'est pas effectue.

Exemple : articledbexpire=2
Exemple : articledbexpire=0  (pour dsactiver l'algorithme de vrification
   des rfrences avant affectation d'un article)

* checkrefs (SB)

Si cette variable vaut 'yes', l'algorithme d'affectation des articles
possdant des rfrences vers des articles approuvs par un modrateur
est utilis (voir ci-dessus, la description de la variable de groupe
'articledbexpire'). Si cette variable vaut 'no', n'importe quel
modrateur peut obtenir n'importe quel article, mme si l'article
possde des rfrences vers des articles approuvs par d'autres modrateurs.

Par dfaut, le robot vrifie que l'article reu a t approuv
par le mme modrateur que celui qui a approuv des articles
rfrencs.

Exemple : checkrefs=n

* archive (ST)

Cette variable indique au robot s'il doit archiver les articles
refuss, supprims, posts, ou ceux qui sont en erreur. Dans le cas
o l'article est archiv, une copie est stocke dans un sous-rpertoire
de archivedir/nom.du.groupe.

Cette variable peut prendre plusieurs valeurs :
- r : un article refus par un modrateur est archiv
- d : un article supprim par un modrateur est archiv
- e : un article dtect en erreur par le robot est archiv 
      (pas de From:, de Newsgroups:, syntaxe de l'article invalide, etc) 
- p : un article automatiquement post par le robot ou approuv
      par un modrateur est archiv
- a : un article automatiquement refus par le robot est archiv

Ces valeurs peuvent tre cumules, ce qui signifie que l'exemple suivant
permet l'archivage des articles automatiquement refuss ou detects
en erreur, mais pas des autres types d'articles.

Exemple : archive=ae

------------------------------

A.6.4. Autres fichiers de configuration

*  Accus de rception, et message d'erreur renvoy par modappspool

Le format des fichiers 'ackmsg' et 'errormsg' est simple :

la premire ligne contient optionnellement un champ Subject:
prcisant les mots  inclure dans le sujet de l'accus
de rception.

Le texte  renvoyer est donn  la suite de cette ligne
Subject: optionnelle.

Par exemple, si 'ackmsg' contient les lignes suivantes :

|Subject: (accuse de reception) 
|
|Nous avons bien recu votre article.

L'accus de rception renvoy par le robot ressemblera  :

|From: moderateur
|To: auteur
|Subject: (accuse de reception) Re: message bidon
|
|Nous avons bien recu votre article.

Rien n'empche d'utiliser des caractres accentus
dans les fichiers 'ackmsg' et 'errormsg' (mais il vaut mieux
les viter dans le champ Subject:).

* Listes blanche et noire

Les fichiers de liste blanche et noire, spcifis par whitelist
et blacklist dans la configuration de modappspool pour un groupe
particulier peuvent comporter plusieurs lignes. Chaque ligne
est une expression rationnelle (ou plus simplement une adresse
e-mail).

Par exemple :

- fichier whitelist

sn@penelope.frmug.org
kabal.fr.eu.org

- fichier blacklist

123@aol.com
.*promo.*\.com

ATTENTION : un point (.) dans une expression rationnelle signifie
'n'importe quel caractre'. Si donc vous mettez dans une des
deux listes une adresse e-mail du genre : promo.com, un article
provenant de machin@quelquepart.promotcom.fr sera captur
par l'expression. Il est donc prfrable de mettre un caractre '\'
devant chaque point de chaque adresse e-mail donne dans liste
(comme le montre le deuxime exemple du fichier blacklist ci-dessus).

IMPORTANT : si le fichier whitelist contient une ligne 'Control:'
ou 'Supersedes:', le robot auto-approuve un article comprenant
un de ces deux champs d'en-tte sans spouler ou refuser l'article.
Cela permet en particulier  l'auteur d'un article
d'annuler ou remplacer un article prcdemment approuv par le
moderateur sans passer par lui. Il est conseill de mettre 'Control:'
dans whitelist, par contre, 'Supersedes:' a peut-tre des effets
secondaires indsirables quant  la politique de modration des articles.

* Fichiers d'aide

La premire ligne des fichiers d'aide
'helpfile' et 'adminhelpfile' doit tre de la forme :

Subject: Modappbot help for the administrator

ou

Subject: Modappbot help

La partie importante est : 'Subject:'. En effet, cette ligne est utilise
pour gnrer le courrier lectronique envoy  la personne qui
a demand le fichier d'aide en question. Si cette ligne est absente,
le mail ne possdera pas de sujet.

Les lignes suivantes de ce fichier contiennent le corps du mail
envoy  un modrateur ou un administrateur demande l'aide 'en ligne'.

* Liste des modrateurs

Le fichier 'moderators' contient une adresse e-mail par ligne.

Par exemple :

sn@penelope.frmug.org
sn@kabal.fr.eu.org
sintes@dial.oleane.com

La casse des caractres est indiffrente.

* Messages d'explication associs aux commandes 'refuse.'

Les motifs de refus donns par l'option 'refuse' correspondent
 des fichiers situs dans confdir/nom.du.groupe et contenant 
un message d'explication renvoy  l'auteur d'un article refus. 

Par exemple, le fichier refuse.faq pourrait contenir :

Bonjour,

l'article que vous avez envoy dans penelope.moderated
n'est pas publi, car le problme voqu est trait 
dans la FAQ du groupe que vous pouvez consulter
dans fr.usenet.reponses et sur le Web  l'adresse :

    <URL:http://www.quelquepart.fr/pm/faq.html>

L'quipe de modration de penelope.moderated.

L'article refus est reproduit ci-dessous :
(...)

* Fichier de signature

Si un fichier 'signature' apparait dans le rpertoire de configuration
d'un groupe gr par le robot, son contenu est automatiquement
ajout  la fin de chaque article post par le robot.

Le fichier de signature ne doit pas contenir la ligne de sparation '-- '.
Cette sparation est ajoute par le robot.

Ainsi, si le fichier /home/modapp/etc/penelope.moderated/signature
existe, son contenu est ajout  la fin de chaque article post
par le robot dans le groupe 'penelope.moderated'.

------------------------------

A.7. Options de ligne de commande de modappbot

Les options suivantes sont reconnues :

-c fichier : donne un nom de fichier diffrent de celui donn dans $configfile
     au dbut du script, et lance le robot en mode normal
-h : affiche un message d'aide (rappelant les options de ligne de commande)
     et sort
-t : lance le robot en mode test
-v : affiche la version du robot et sort

Si le robot est lanc sans option (ou avec l'option -c fichier), il analyse
le contenu des fichiers mailbox des articles et mails de commande en
attente de traitement.

------------------------------

A.8. Tester la configuration du robot

Lorsque la configuration du robot est termine (ou aprs modification), 
il est prfrable de lancer le robot en mode test.

Pour cela, en tant qu'utilisateur 'modapp' (ou tout autre login
dfini pour l'xecution du programme en environnement restreint)
lancer le robot directement au prompt du shell avec
l'option -t :

% /home/modapp/bin/modappbot -t

Dans ce mode, le programme vrifie la syntaxe du fichier de configuration,
ainsi que tous les rpertoires et fichiers. S'il y a une erreur,
il l'indique en dbut d'affichage des rsultats, et signale les
erreurs par un '->'.

------------------------------

Deuxime Partie : Mode d'emploi pour l'administrateur

Dans cette partie, les points suivants sont voqus :
- tapes  suivre pour ajouter un groupe modr  la configuration du robot
- commandes e-mail disponibles pour l'exploitation et la configuration du robot
par l'administrateur.

L'adresse e-mail de l'administrateur est dfinie par le mot cl
global 'admin'. Comme indiqu dans la description des mots-cl,
il est possible de dfinir plusieurs administrateurs en sparant
leur e-mail par des blancs.

------------------------------

B.1. Ajouter un groupe gr par le robot moderateur

Supposons que l'quipe de modration du groupe fr.comp.machin ait
choisi d'utiliser modappbot pour grer les articles publis dans le
groupe.

Nous considrons que les tapes d'installation et de configuration
initiale du robot, donnes dans la premire partie, ont t suivies,
et que le robot est dj en exploitation pour un ou plusieurs groupes
modrs.

------------------------------

B.1.1. Crer les alias e-mail et les rpertoires

Sur le serveur sur lequel est excut modappbot, demander  l'administrateur
d'ajouter l'alias e-mail pointant vers modappspool :

## moderateurs de fr.comp.machin. Mails recus sur fcm@quelquepart.fr
fr-comp-machin: fcm
fcm: "|/usr/local/bin/formail -R Received X-Original-Received -a \"Newsgroups: fr.comp.machin \" -i \"To: modappbot+fcm\" | /usr/sbin/sendmail -t"
## Adresse utilise en cas de problme
fcm-request: un.utilisateur@quelquepart.fr

Demander ensuite  root de crer le rpertoire de spool et de config,
et de le donner  'modapp' :

# mkdir /home/modapp/etc/fr.comp.machin
# mkdir /home/modapp/spool/fr.comp.machin
# chown -R modapp:users /home/modapp/etc/fr.comp.machin \
  /home/modapp/spool/fr.comp.machin

------------------------------

B.1.2. Dclarer le groupe dans la configuration de modappbot

Il faut modifier le fichier modappbot.conf, pour ajouter
le bloc concernant le groupe modr qui va tre ajout :

[fr.comp.machin]
password=unmotdepasse
sendarticles=y
[end]

Ajouter la liste des e-mails (un par ligne) dans le fichier des moderateurs
etc/fr.comp.machin/moderators :

mod@quelquepart.fr
truc@ailleurs.fr
bidule@boutdumonde.edu

Il est possible de compliquer un peu plus la configuration du robot
pour le groupe fr.comp.machin en prcisant si le spouleur doit
vrifier l'adresse d'un auteur par rapport  une liste blanche ou noire,
un sujet interdit ou un sujet ssame, si un accus de rception
doit tre renvoy ou pas, etc. Voir pour cela la partie A.6.

------------------------------

B.1.3. Vrifier les droits d'accs et la configuration

L'administrateur du robot, qui devrait avoir un accs shell au serveur
hbergeant le robot, doit s'assurer que les droits d'accs sont
corrects : tous les fichiers de configuration du robot doivent
appartenir au robot (utilisateur modapp par exemple).

De plus, pour tester la configuration du robot,
il est fortement recommand de lancer modappbot au prompt
shell avec l'option '-t'. Voir le paragraphe A.8 pour les dtails.

Le travail est alors termin pour l'administrateur du serveur.
Tout le reste peut se configurer par e-mail.

------------------------------

B.2. Commandes e-mail disponibles pour l'administrateur

L'administrateur communique avec le robot par des commandes
envoyes par courrier lectronique.
Toutes les commandes au robot doivent tre donnes dans le corps
du message envoy  Modappbot. Le sujet (en-tte Subject:) 
des mails est ignor.

Le format gnral d'une commande administrateur est le suivante :

commande adminpassword option

* 'commande' est un des mots-cl dcrits ci-dessous. 
* 'adminpassword' est le mot de passe dfini par le mot-cl
  'adminpw' dans le fichier de configuration de modappbot.
* 'option' est un paramtre ... optionnel utilis par
  certaines commandes qui ont besoin de paramtres spcifiques.

Une commande 'admputfile' permet d'envoyer un fichier (de configuration
ou autre) au robot. Dans le cas de cette commande,
le fichier envoy au robot doit suivre immdiatement
la commande. La fin du mail est galement la fin du fichier.
(signature ventuelle repre par "-- " non comprise). Il est
possible d'envoyer une commande au robot aprs une commande
de dpot de fichier en indiquant aprs le fichier  dposer
le mot cl 'endput' en dbut de ligne. 

Par exemple :

admputfile adminpw modappbot.conf
...
endput
help adminpw

-- 
ma belle signature

------------------------------

B.2.1. Fichier d'aide de l'administrateur

L'administrateur peut obtenir le fichier d'aide donnant le
dtail des commandes administrateur en envoyant un mail  modappbot
avec dans le corps du message :

help adminpassword

Si la requte provient bien de l'administrateur et si le mot de passe
est correct, l'administrateur reoit en retour le fichier d'aide.
Si l'emetteur du mail n'est pas l'administrateur, mais est modrateur
d'un des groupes grs, le fichier d'aide pour les modrateurs est
renvoy (ce fichier d'aide ne doit pas contenir les commandes spcifiques
 l'administrateur). 

Si l'metteur du mail est l'administrateur mais si le mot de passe 
est incorrect, le message d'erreur suivant est renvoy :

>>>help password
password incorrect

Si l'metteur du mail n'est ni administrateur, ni modrateur, un message
d'avertissement est envoy  l'administrateur indiquant une requte
d'un non-modrateur et donnant le corps du mail envoy :

Subject: Modappbot : non moderator request

Modappbot has received a request from a non moderator.

The message was : 
(...)

------------------------------

B.2.2. Transfert de fichiers

Il est possible de modifier le contenu des fichiers de configuration
gnraux par e-mail.

La commande  utiliser pour cela est :
- admgetfile adminpassword nomfichier pour que le robot envoie  
  l'administrateur le contenu du fichier specifi
- admputfile adminpassword nomfichier, et dans les lignes suivant cette
commande le nouveau fichier  dposer, si on veut mettre  jour un fichier
administratif.

------------------------------

B.2.2.1. Gestion des fichiers d'aide

En utilisant les commandes suivantes, on peut mettre  jour les fichiers
d'aide (pour l'administrateur et les moderateurs) :

admgetfile adminpassword helpfile
admgetfile adminpassword adminhelpfile
admputfile adminpassword helpfile
admputfile adminpassword adminhelpfile

Le nom exact du fichier dpend de la configuration du robot, et est
modifiable uniquement  l'intrieur du programme. 'helpfile' et 'adminhelpfile'
sont les noms des fichiers par dfaut.

Si l'administrateur met  jour le fichier adminhelpfile, il recoit
en retour un acquittement du robot si l'opration s'est bien passe.

Si l'administrateur met  jour le fichier helpfile, tous les moderateurs
de groupes grs par le robot recoivent le nouveau fichier d'aide
par mail (si un moderateur s'occupe de plusieurs groupes grs, il ne
reoit ce fichier qu'une seule fois).

IMPORTANT : la premire ligne du fichier helpfile ou adminhelpfile
doit tre une ligne spcifiant le sujet inclus dans le message
d'aide renvoy  l'administrateur ou aux moderateurs par une commande
'help'. Par exemple, la premire ligne du fichier 'helpfile' devrait tre :
Subject: Modappbot help for moderators
(ou quivalent)

------------------------------

B.2.2.2. Gestion du fichier de configuration modappbot.conf

Aprs la configuration initiale du robot, il est possible de modifier
le fichier de configuration par e-mail.

* admgetfile adminpassword modappbot.conf

Permet d'obtenir le fichier de configuration utilis par modappbot

* admputfile adminpassword modappbot.conf

Cette commande permet de dposer un nouveau fichier de configuration.
Le nouveau fichier doit tre donn aprs la commande "admput" :

admputfile adminpassword modappbot.conf
admin=toto@quelquepart.fr
adminpw=nouveaupassword
(...)

Le robot fait les vrifications ncessaires sur le format du fichier
de configuration (les mmes que celles effectues par le robot en mode test) :
- validit de tous les mots-cl
- syntaxe de l'e-mail de l'administrateur (ou des administrateurs)
- existence des fichiers helpfile, adminhelpfile, activefile, moderators,
  spooldir, whitelist, blacklist
- vrification de l'existence et du bon fonctionnement du programme
  charg de l'envoi des mails (sendmail), et de l'existence du programme
  charg du postage des articles (rnews, ou rpost)
- ...

Si le robot trouve des erreurs dans la nouvelle configuration, il
renvoie  l'administrateur un message d'erreur indiquant que
le fichier de configuration est refus et en affichant le rsultat
qu'aurait donn modappbot -t sur ce nouveau fichier (cf partie D).

------------------------------

B.2.3. Commandes annexes

La seule commande administrative non traite dans les paragraphes
prcdents est 'dbdump'.

* dbdump adminpassword

Cette commande permet d'obtenir la liste des articles qui sont affects
aux modrateurs. C'est en fait le contenu de la base de donnes
spcifie par le mot-cl 'dbfile' du fichier modappbot.conf.

Sur rception de cette commande, modappbot renvoie  l'administrateur
la liste par e-mail. Le format de la liste est le suivant :

Subject: Modappbot : Database dump : 3 assigned articles

The following 3 articles are currently assigned :


Article                    Flags   From                  Newsgroup
  Date     Lines                Subject                  Moderator
------------------------------------------------------------------------------
6188gl$jp$1                      toto@quelquepart.fr     penelope.moderated
 5/10 14:33 233                   il fait beau, non ?    sn@penelope.frmug.org
6188i4$ke$1                      sn@penelope.frmug.org   penelope.moderated
 5/10 14:34 20                    c'est l'heure !        moderator@ailleurs.fr
615ijc$9j$1                      spammer@aol.com         fr.announce.seminaires
 4/10 14:01 163             CM    Make money             intcvg@freenet.fr

Chaque article est rsum sur deux lignes. Sur la premire ligne,
on a l'identifiant unique de l'article, les drapeaux ventuels, l'adresse
de l'metteur, et le groupe dans lequel l'article sera post.
Sur la seconde ligne, on a la date de l'article (champ d'en-tte Date:),
le nombre de lignes de l'article, le sujet, et le modrateur auquel 
l'article est affect.

Le dtail des drapeaux est le suivant :
- drapeau C : article crosspost dans plus de N groupes, N tant
la valeur du mot-cl 'maxgroups' dans le fichier de configuration
modappbot.conf
- drapeau U : article crosspost dans des groupes inconnus du serveur
(c'est  dire des groupes qui ne figurent pas dans le fichier active
spcifi par le mot-cl 'activefile' dans modappbot.conf)
- drapeau M : article crosspost avec d'autres groupes modrs.
- drapeau T : en-ttes MIME incorrects

------------------------------

Troisime Partie : Mode d'emploi pour l'utilisateur

Dans cette partie, on s'adresse  un modrateur non administrateur.
On suppose que le modrateur est familier avec les termes courants
du vocabulaire usenetien. Le modrateur curieux du fonctionnement
du robot se reportera  la premire partie de ce document, ou bien
 la dernire partie traitant de l'implmentation.

C.1. Gnralits

Modappbot est un programme permettant le traitement des articles
envoys  un groupe modr. Vous tes, en qualit de modrateur
de groupe de news, responsable de la publication, ou non, des
articles qui vous sont envoys.

Suivant certains critres dfinis par vous en collaboration avec
l'administrateur du robot, les articles envoys  votre groupe
peuvent tre directement publis dans votre groupe ou refuss. Pour
cela, vous avez dfini avec l'administrateur le contenu des
listes blanche et noire s'appliquant  votre groupe.
Vous avez galement dtermin le besoin d'envoyer  tout metteur
d'article dans votre groupe un accus de rception par mail,
et la ncessit d'utiliser un mot-cl 'sesame' ouvrant l'accs
 votre groupe. Dans le cas o le ssame n'est pas prsent dans
un article soumis, un message de refus est automatiquement renvoy
par le robot  l'auteur de l'article.
Vous avez aussi dtermin si vous vouliez utiliser les commandes
de refus d'article (cf C.5).

Il est cependant ncessaire de traiter manuellement les articles
qui ne satisfont pas aux critres mentionns ci-dessus. Ces articles
sont stocks dans une file d'attente, dans un mode
spcifique appel "attente d'affectation".

Lorsque vous estimez avoir du temps  consacrer au traitement des
articles en attente, vous envoyez un courrier lectronique au robot.
Le robot vous envoie en retour un message vous donnant la liste
des articles en attente, qui vous sont alors affects. Vous devez
traiter ces articles, c'est  dire que vous pouvez agir de plusieurs
faons :
- accepter que un ou plusieurs articles soient publis
- refuser un ou plusieurs articles, en renvoyant  l'auteur
  d'un article un motif de refus
- supprimer un ou plusieurs articles
- rcuprer l'article (en-ttes et corps complets)
- remplacer un article par un autre que vous envoyez au robot par mail

Ces commandes inter-agissant avec le robot modrateur sont protges
par un mot de passe dfini en collaboration avec l'administrateur du
robot. Vous avez galement la possibilit de changer ce mot de passe
si vous estimez qu'il a t compromis.

Lorsque vous dialoguez avec le robot, vous lui envoyez des commandes
par e-mail. Vous pouvez envoyer plusieurs commandes dans un mme message.
Le format gnral d'une commande est le suivant :

commande motdepasse option

'commande' est un des mots-cl dfinis ci-dessous
'motdepasse' est le mot de passe dont vous avez convenu avec
l'administrateur
'option' est un paramtre optionnel utilis par certaines commandes

Certaines commandes permettent d'envoyer un fichier au robot. 
Dans le cas de ces commandes (qui commencent toutes par "put"), 
le fichier envoy au robot doit suivre immdiatement
la commande. La fin du mail est galement la fin du fichier
(signature ventuelle repre par "-- " non comprise). Il est
possible d'envoyer une commande au robot aprs une commande
de dpot de fichier en indiquant aprs le fichier  dposer
le mot cl 'endput' en dbut de ligne. 

Par exemple :

putarticle mypw 21
...
endput
help

Les commandes disponibles sont dcrites dans la suite de ce document.

------------------------------

C.2. Obtenir de l'aide du robot

Vous pouvez obtenir un message d'aide rcapitulant les diffrentes
commandes comprises par le robot en lui envoyant un message contenant
la commande suivante :

help

Le robot vous envoie le message d'aide si vous tes modrateur d'un
des groupes qui sont grs par le robot. Il vous renvoie galement
un rsum de la configuration des groupes dont vous tes modrateur :

You (sn@penelope.frmug.org) are moderator for the following newsgroups :

* fr.announce.seminaires
* penelope.moderated

----------------------------------------------------------------------
Configuration parameters for fr.announce.seminaires newsgroup :

Password : titi
Full articles are sent to moderators during 'available' phase
Refused or deleted articles are not archived

----------------------------------------------------------------------
Configuration parameters for penelope.moderated newsgroup :

Password : mytailor
Only the body of articles are sent to moderators during 'available' phase
Possible refuse commands :
* refuse.faq
* refuse.charter
Full article is sent back to author of a refused article
Refused articles are sent back to sender with the following From: header :
  pm@penelope.frmug.org (Moderateur penelope.moderated)
Refused or deleted articles are archived

------------------------------

C.3. Demander les articles en attente

La premire tape d'une session de communication avec le robot
consiste  lui demander les articles qu'il a en attente.

Pour cela, vous envoyez au robot un message contenant la commande suivante :

available motdepasse nom.du.groupe

Vous pouvez galement indiquer le nombre maximum d'articles que vous
voulez que le robot vous affecte en prcisant ce nombre comme argument
de la commande 'available' de la faon suivante :

available motdepasse nom.du.groupe nombre

Le robot accepte de vous rpondre si vous tes modrateur du groupe
prcis par le paramtre 'nom.du.groupe' et si le mot de passe est
correct. 

Si vous tes modrateur d'autres groupes, le robot vous indique
le nombre d'articles non affects.

Si le mot de passe est incorrect, le robot vous renvoie 
par mail le message d'erreur  suivant :

>>> available mauvaispassword penelope.moderated
password incorrect

Si vous vous tes tromp dans le nom du groupe, le robot vous renvoie
le message d'erreur suivant :

>>> available motdepasse mauvais.nom.de.groupe
mauvais.nom.de.groupe not declared in configuration

Si aucun article n'est en attente pour le groupe
concern, le robot vous rpond le message suivant :

Subject: Modappbot : No assigned articles to root@kabal.fr.eu.org

There are no assigned articles to root@kabal.fr.eu.org.

** There are 5 unassigned articles in fr.announce.seminaires.

Le robot mentionne ventuellement s'il y a des articles en attente
pour d'autres groupes dont vous tes modrateur, et que vous
n'auriez pas demand.

Par contre, s'il y a des articles qui attendent d'tre affects,
le robot renvoie la liste des articles en attente et les passe
dans un tat 'affect' :

Subject: Modappbot : 5 assigned articles to sn@penelope.frmug.org

The following 5 articles are assigned to sn@penelope.frmug.org :


Article                    Flags   From                  Newsgroup
 Date      Lines                 Subject
------------------------------------------------------------------------------
6188gl$jp$1                      sn@penelope.frmug.org   penelope.moderated
 5/10 14:33 20                                test2
6188i4$ke$1                      sn@penelope.frmug.org   penelope.moderated
 5/10 14:34 20                                test3
615ijc$9j$1             U        sn@penelope.frmug.org   penelope.moderated
 4/10 14:01 21                                test
6188l4$lb$1                      sn@penelope.frmug.org   penelope.moderated
 5/10 14:36 20                                test
6189fn$m2$1            CM        sn@penelope.frmug.org   penelope.moderated
 5/10 14:50 20                                test

** There are 5 unassigned articles in fr.announce.seminaires.

Description of flags :
U : article would be posted in unknown newsgroups
M : article would be posted in other _Moderated_ newsgroups 
    for which you are not moderator
C : article would be posted in more that 4 newsgroups

Le format de la liste qui vous est renvoye est le suivant :
chaque article est dcrit sur DEUX lignes. Sur la premire ligne,
un code identifie l'article, suivant certains critres,
des drapeaux sont positionns, et le nom de l'auteur de chaque article
est affich. Sur la seconde ligne sont affiches la date d'emission
de l'article, le nombre de ligne de l'article, et son sujet.

Le dtail des drapeaux est le suivant :
- drapeau C : article crosspost dans plus de N groupes, N tant
une valeur maximale dfinie par l'administrateur du robot
- drapeau U : article crosspost dans des groupes inconnus du serveur
- drapeau M : article crosspost avec d'autres groupes modrs.
- drapeau T : en-ttes MIME incorrects

Suivant votre politique de modration, vous pouvez refuser les
articles massivement crossposts, ou ceux provenant de spammers
ou d'adresses/sujets inappropris.

Lorsque vous avez demand que des articles vous soient affects,
vous ne pouvez pas en demander d'autres pour le mme groupe
tant qu'il vous en reste  traiter. Si vous envoyez une commande
'available' au robot, il vous renverra simplement la liste des
articles qui vous sont affects.

Pour connaitre ultrieurement la liste des articles qu'il reste
 traiter, vous pouvez envoyer au robot la commande suivante :

assigned

Le robot vous renverra la liste des articles qui vous sont affects
sous le mme format que la liste dcrite ci-dessus. Dans le message
de retour, le robot peut mentionner qu'il existe des articles
en attente d'affectation :

** There are 2 unassigned articles in penelope.moderated
** There are 7 unassigned articles in fr.announce.seminaires

Le robot peut galement vous renvoyer les articles qui vous ont t
affects, suivant la configuration que vous avez mise en place
avec l'administrateur du robot (option de groupe 'sendarticles').

------------------------------

C.4. Approuver un article

Une fois que vous avez demand des articles  traiter, vous
devez dcider ce que vous allez en faire. Dans cette partie,
on dcrit les commandes disponibles pour publier un article
dans votre groupe.

Pour approuver un ou plusieurs articles, envoyez au robot
la commande suivante :

approve motdepasse article

'article' est le code unique affect  chaque article lorsqu'il
est stock dans la file d'attente (par exemple : 6188gl$jp$1 pour
le premier article de la liste donne en exemple ci-dessus).

Il est possible de donner plusieurs rfrences d'articles sur
la mme commande approve, ou de donner plusieurs commandes
approve dans le mme mail au robot (dans le cas o vous
modrez plusieurs groupes de discussion, par exemple) :

approve motdepasse article1 article2 article3

Tous les articles approuvs sont automatiquement posts dans
votre groupe par le robot.

Cas Particulier : si un article possde le drapeau "M", cela
signifie qu'il est crosspost avec un ou plusieurs groupes modrs.
Dans ce cas, l'article n'est pas post dans les news, mais
est envoy par mail au grant du groupe modr dans lequel l'article
est crosspost (sauf si vous tes modrateur de l'autre groupe,
auquel cas, le flag "M" n'apparait pas). Si vous voulez VRAIMENT
publier l'article dans votre groupe et celui de l'autre ou des
autres modrateurs, utilisez la commande 'reallyapprove' au lieu
de 'approve' :

reallyapprove motdepasse ArticleCrossposteDansUnGroupeModere

Nanmoins, nous vous avertissons que ceci est tout  fait contraire
aux rgles d'thique que la communaut des modrateurs s'est fixe...

Vous pouvez utiliser plusieurs fois ces commandes dans un mme mail pour
traiter tous les articles qui vous sont affects. Lorsqu'il ne reste
plus d'articles affects, vous pouvez en demander d'autres par
la commande 'available'.

Aprs chaque mail envoy au robot avec les commandes 'approve',
'reallyapprove' ou (ces commandes pouvant tre groupes
dans un mme mail), le robot vous renvoie la liste des
articles qui restent  traiter.

------------------------------

C.5. Supprimer ou refuser un article

Si vous voulez supprimer un article (qui ne sera donc pas publi
dans un groupe), utilisez la commande 'delete' :

delete motdepasse article1 article2

L'article est supprim de la file d'attente et la liste des articles
qui sont sont affects. Aucun message d'explication n'est renvoy
 l'auteur de l'article si l'article est supprim par le commande
'delete'.

Vous pouvez galement utiliser la commande 'refuse.noreply', qui
a le mme effet que 'delete'.

Vous pouvez galement refuser un article. Dans ce cas, l'article
n'est pas publi dans le groupe, et est supprim de la file d'attente,
mais un message d'explication est renvoy  l'auteur. Pour cela,
vous pouvez utiliser une commande commenant par 'refuse.'. 
Les diffrentes commandes 'refuse.' disponibles pour votre groupe 
sont donnes dans le message d'aide renvoy aprs une commande 'help'
(partie 'Possible refuse commands').
Par exemple, si un message de refus est configur dans le cas d'articles 
ne respectant pas la charte du groupe, ou bien d'articles sur des 
thmes traits dans la FAQ du groupe, vous pouvez utiliser 
les commandes suivantes :

refuse.charter motdepasse article1 article2
refuse.faq motdepasse article3 article4

IMPORTANT : le message de refus n'est pas envoy  l'auteur de l'article
si son adresse contient une expression 'ANTISPAM' telle que dfinie
dans la configuration gnrale du robot (variable globale 'noreply').

------------------------------

C.6. Librer un article

Vous pouvez demander au robot que certains articles soient
remis en tat "attente de traitement". Pour cela, envoyez un
message de commandes contenant :

release motdepasse article

L'article est alors retir de votre liste d'articles en attente,
et il peut tre demand par un autre modrateur.

Si jamais vous re-demandez des articles  traiter, et si l'article
que vous avez libr n'a pas t affect  un autre modrateur,
il vous est de nouveau attribu.

------------------------------

C.7. Transfert d'articles

Si vous avez un doute sur un article, vous pouvez demander qu'il vous
soit envoy par mail. Pour cela, utilisez la commande suivante :

getarticle motdepasse article

Le robot vous renvoie alors l'article, de la faon suivante :

Subject: Modappbot : Article xxxxxxxxx for nom.du.groupe

(suit l'article complet : en-tte et corps)

Lorsque vous avez rcupr l'article, vous pouvez choisir de le
supprimer ou de l'approuver en connaissance de cause.

Vous pouvez galement le renvoyer modifi au robot. Pour cela,
utilisez la commande :

putarticle motdepasse article

Vous devez inclure  la suite de cette commande, dans le mme
mail envoy au robot, l'article que vous voulez dposer dans
la file d'attente du robot, de la facon suivante :

putarticle mypw 3224vdg$e
From: sn@penelope.frmug.org
Newsgroups: fr.announce.seminaires
(...)

Si vous voulez inclure d'autres commandes aprs cette commande putarticle,
utilisez le marqueur de fin de fichier 'endput'. D'autre part,
si le mail que vous envoyez au robot pour remplacer un article contient
une signature (commenant par '-- '), elle est incluse  la fin
de l'article remplac (sauf si la fin de l'article est mentionne
par 'endput').

------------------------------

C.8. Commandes administratives

N'importe quel moderateur d'un groupe peut modifier les fichiers
de configuration du groupe :
- liste blanche et noire
- fichier d'accus de rception du spouleur, ou message d'erreur du spouleur
- message de refus correspondant aux commandes 'refuse.xx'
- liste des moderateurs
- fichier de signature

Le transfert de fichiers de configuration utilise deux
commande : getfile et putfile.

La syntaxe gnrale de ces commandes est :

* getfile password nom.du.groupe fichier

* putfile password nom.du.groupe fichier

'password' est le mot de passe des moderateurs du groupe
nom.du.groupe est le groupe gr par le robot qui est concern par le transfert
fichier est un des fichiers de configuration du groupe.

Par dfaut, les fichiers pouvant tre transfrs sont :
- errormsg : message d'erreur renvoy par le spouleur en cas d'article 
  ne satisfaisant pas au sujet ssame
- ackmsg : message d'accus de rception renvoy par le spouleur si
  l'article est stock dans la file d'attente d'affectation
- moderators : liste des moderateurs du groupe
- blacklist : liste noire utilise par le spouleur
- whitelist : liste blanche utilise par le spouleur
- refuse.xx : fichiers contenant un message standard de refus (utilis
  par le robot en cas de commande 'refuse' envoye par un modrateur)
- signature : fichier de signature ajoute aux articles posts par le robot

Consultez votre administrateur si ces noms de fichiers ont t changs.

N'importe quel modrateur peut galement changer le mot de passe
du groupe, en utilisant la commande 'newpassword', dont la syntaxe
est : 

newpassword ancienmotdepasse nom.du.groupe nouveaumotdepasse

------------------------------

C.8.1. Gestion des listes blanche et noire

Le robot modrateur utilise des fichiers de configuration spciaux
contenant :
- la liste des auteurs qui sont autoriss  poster dans le groupe
modr sans intervention des modrateurs. C'est la 'liste blanche'
- la liste des auteurs dont les articles sont systmatiquement
supprims sans tre stocks dans la file d'attente. C'est la 'liste noire'.

Il est possible :
- de rcuprer ces listes du serveur
- d'envoyer une nouvelle liste au serveur

Pour rcuprer une liste complte, envoyer une des commandes suivantes
au robot :

getfile motdepasse nom.de.groupe whitelist
getfile motdepasse nom.de.groupe blacklist

Le robot vous renvoie en retour la liste demande :

Subject: Modappbot : whitelist file for nom.de.groupe

the whitelist/blacklist for nom.de.groupe is :
(suit la liste actuelle)

Enfin, pour envoyer une nouvelle liste au robot, utilisez une
des commandes suivantes :

putfile motdepasse nom.de.groupe whitelist
putfile motdepasse nom.de.groupe blacklist

Il faut mettre  la suite d'une de ces deux commandes le fichier
contenant la nouvelle liste qui devra tre prise en compte par le
robot. La prise en compte est immediate une fois que le robot
a confirm la rception de la nouvelle liste.

Par exemple, pour mettre  jour la liste noire de fr.announce.seminaires,
envoyer au robot le mail suivant :

putfile mypw fr.announce.seminaires blacklist
spammer@aol.com
123@compuserve.com
root@cyberpromo.com
endput

Tout le reste du mail, jusqu' la fin, est considr comme faisant
partie du fichier de liste  mettre  jour (signature non comprise).
Il est possible de donner un autre commande de robot dans le mme mail 
si on termine le fichier inclus par le mot spcial 'endput' (comme
l'exemple ci-dessus).

Tous les modrateurs sont avertis par le robot que la liste concerne
 t mise  jour :

Subject: Modappbot : new whitelist for nom.de.groupe by mod@quelquepart.fr

moderateur@quelquepart.fr has put a new whitelist for nom.de.groupe.

The list is now :
(suit la nouvelle liste mise  jour)

------------------------------

C.8.2. Changer la liste des moderateurs

En utilisant les commandes getfile et putfile, il est possible
de mettre  jour la liste des modrateurs pour un groupe.
Si la liste des moderateurs est modifie, tous les modrateurs
concerns (y compris les nouveaux s'il y en a) recoivent un message
les avertissant que la liste a t change

* getfile password nom.du.groupe moderators

pour rcuprer la liste actuelle des moderateurs de nom.du.groupe

* putfile password nom.du.groupe moderators

pour envoyer au robot une nouvelle liste des moderateurs.
La liste est refuse par le robot si elle est vide.

La liste doit suivre la commande putfile. La fin de la liste est dtermine
par la prsence du mot spcial 'endput' ou la fin du mail (ou le dbut
de la signature '-- ' de l'envoyeur) :

putmoderators password penelope.moderated
sn@penelope.frmug.org
toto@quelquepart.fr

Si le programme peut crire le fichier de liste des modrateurs, il
recopie l'ancien fichier en ajoutant l'extension .old, crit le nouveau
fichier, et envoie un message d'information aux personnes dont l'e-mail
figure dans la liste envoye :

Subject: Modappbot : new moderators file set for penelope.moderated

sn@penelope.frmug.org has set a new moderators file for penelope.moderated.

The file is now :

sn@penelope.frmug.org
root@kabal.fr.eu.org

Attention : c'est toute la liste qui est remplace par le nouveau
fichier envoy par e-mail. Pour ajouter un modrateur  la liste,
il faut rcuprer l'ancienne liste, et la renvoyer  modappbot aprs
y avoir ajout la nouvelle adresse.

------------------------------

C.8.3. Autres transferts de fichiers de configuration

Il est possible d'utiliser les commandes getfile et putfile pour
rcuprer et mettre  jour les message d'explication 'ackmsg', 'errormsg'
'refuse.xx', et 'signature' :

getfile password nom.du.groupe ackmsg
getfile password nom.du.groupe errormsg
getfile password nom.du.groupe signature
getfile password nom.du.groupe refuse.charter (par exemple)

Et pour dposer un nouveau fichier qui sera remplac par le robot :

putfile password nom.du.groupe ackmsg
putfile password nom.du.groupe errormsg
putfile password nom.du.groupe signature
putfile password nom.du.groupe refuse.charter (par exemple)

Le nouveau message doit suivre la commande 'putfile', et la fin
du message est dtermine par la prsence du mot spcial 'endput',
la fin du mail ou le dbut de la signature ('-- ').

ATTENTION : Certains de ces fichiers doivent normalement contenir, sur leur
premire ligne, le sujet qui est insr dans le mail renvoy  l'auteur
d'un article, de la faon suivante :

* pour ackmsg et errormsg :
Subject: Accuse de reception

Dans ce cas, les mots suivant 'Subject:' sont insrs au dbut
du sujet du mail renvoy  l'auteur d'un article. Par exemple,
si l'article initial contient :
Subject: probleme avec sendmail
alors le message de retour contient : 
Subject: Accuse de reception Re: probleme avec sendmail

Cette ligne Subject est optionnelle pour ackmsg et errormsg.

* pour refuse.xx :
Subject: Votre message n'est pas accepte pour publication dans nom.du.groupe

Cette ligne devrait normalement figurer dans le fichier 'refuse.xx'.

------------------------------

C.8.4. Changer le mot de passe du groupe

N'importe quel modrateur d'un groupe gr par le robot peut
changer le mot de passe de son groupe. La commande  utiliser
est :

newpassword ancienmotdepasse nom.de.groupe nouveaumotdepasse

Par exemple :

newpassword mypw fr.announce.seminaires ghyrdgj

Tous les modrateurs du groupe dont le mot de passe a t
modifi reoivent un message d'information du robot :

Subject: Modappbot : new password for nom.de.groupe

moderateur@quelquepart.fr has set a new password for nom.de.groupe.

The new password is : ghyrdgj

------------------------------

Quatrime Partie : Messages d'erreur

[ A COMPLETER ]

Autant que possible, les messages d'erreur ont t crits pour tre
comprhensibles sans trop de problme.

Les messages d'erreur sur la configuration du robot sont envoys
 l'administrateur dans tous les cas, puisqu'ils peuvent indiquer un
problme qui empche le robot de fonctionner correctement. Les messages
d'erreur indiquant un problme de configuration (ou droit d'accs ou autre)
sont indiqus par un mail ayant comme sujet :
"Modappbot configuration problem"

En cas de problme de configuration, le message d'erreur
est uniquement envoy  l'administrateur, mais en aucun cas
 l'auteur de la requte ou au postmaster du serveur excutant le
robot.

Les messages d'erreur concernant des requtes de personnes qui
ne sont pas modrateurs, ou pas administrateurs, sont renvoyes
 l'administrateur uniquement si le mot-cl warnadmin est dfini
(avec comme valeur 'yes') dans modappbot.conf.

------------------------------

Cinquime Partie : Implmentation

E.1. Spcifications

Je reproduis ci-dessous un article post dans les news concernant
le mode de fonctionnement des diffrentes composantes du robot.

--------------------------------------------------------------------
From: sn@kabal.fr.eu.org (Sylvain Nierveze)
Newsgroups: fr.usenet.logiciels
Subject: Robot moderateur par mail : fonctionnalites proposees
Date: 4 Jul 1997 21:38:56 GMT

Modappbot : un Robot-moderateur pilot par mail

Modappbot est un robot moderateur bas sur le script en perl
"modapp", implmentant une fonction de robot-modration.

Il est dcompos en plusieurs "robots" spars :
- robot rcepteur : analyse les articles envoys pour modration.
  Poste les articles accepts sur certains critres (liste blanche, mot cl
  dans le sujet). Refuse certains articles (liste noire), sauvegarde
  dans une file d'attente tout autre article
- robot rpartiteur : dcide quel modrateur doit prendre en charge
  la publication des articles.
- robot communiqueur : permet l'interraction avec les moderateurs
- robot verifieur : annule automatiquement les messages abusifs publis
  dans un groupe modr

La plupart de ces robots sont pilots par mail.

1. Schma fonctionnel

                            |-> article ok (CHARTE_OK)
                            |-> article ok (liste blanche)
Article -> Robot Recepteur -|-> article supprime (CHARTE_OK oblig., non present)
                            |-> article supprime (liste noire)
                            |-> article spoul (autres cas)

                    msg moderateur
                            |
                            +
article spool -> R. repartiteur -> liste articles envoy au moderateur
                                 -> article dans spool en attente "a moderer"

articles -> Robot Communiqueur -|-> auteur ajout sur l. blanche (blacklistset)
 moderer                      |-> auteur ajout sur l. noire (whitelistset)
                               |-> article supprim sans etre publie (delete)
                               |-> renvoi de l'article complet (get)
                               |-> entetes de l'article modifi (headers)
                               |-> article complet modifi (put)
                               |-> autres manips des l. noires et blanches
                                   (recuperer les listes, modifier les listes)

2. Robot rcepteur 

Le robot rcepteur reoit et analyse les articles envoys par mail
 l'quipe de modration.

Il utilise un fichier de configuration par groupe modr dans lequel sont 
dcrits les paramtres suivants :
- liste blanche : liste des posteurs qui ont le droit de publier les
articles sans autorisation des moderateurs
- liste noire : liste des posteurs dont les articles sont ignors
- chemin d'accs au fichier d'accus de rception, ou au fichier indiquant
que la charte doit tre lue
- identifiant dans le sujet permettant d'approuver automatiquement certains
articles (de type [charte_OK]). Pour ces articles, une autre variable
indique s'ils doivent tre publis dans le groupe modr, ou bien
spouls. Si l'identifiant n'est pas prsent dans l'article, la charte
est renvoye  l'auteur, et l'article est ignor.

Dans tous les cas (sauf liste blanche), un accus de rception est
renvoy  l'auteur.

3. Robot rpartiteur

Ce robot attribue les articles spouls  un des modrateurs de l'quipe.
Actuellement, il est prvu de communiquer avec ce robot rpartiteur
par mail. Dans ce cas, le modrateur demande au robot rpartiteur
de lui envoyer la liste des articles en attente. Le R. rpartiteur
lui renvoie la liste, et fait passer les articles dans un tat
"en attente de modration".
Ces articles sont affects  un modrateur. Ils doivent tre publis
ou effacs. Ils peuvent d'ailleurs tre effacs s'ils ont t affects
mais non publis au del d'un certain laps de temps configurable.
Le robot rpartiteur renvoie la liste des articles affects au modrateur.

A terme, il pourrait tre intressant d'utiliser une fonction de
rpartition plus fine : un modrateur pourrait demander  recevoir
des articles certains jours de la semaine, ou bien s'ils proviennent
d'un certain posteur, ou encore d'autres critres. Le robot
rpartiteur lui affecterait alors automatiquement (sans que le
moderateur le demande) les articles en question. A voir...

4. Robot communiqueur 

Dans le cas d'un article spoul, l'intervention d'un moderateur
est "manuelle". Elle est pilote  par le robot communiqueur.

Ce robot permet  un modrateur de :
- modifier les listes blanche et noire pour un ou plusieurs groupes.
En particulier : ajouter un auteur dans une des listes (whitelist,blacklist), 
supprimer un auteur, ou renvoyer une nouvelle liste complte au robot, 
qui remplacera la liste actuelle par celle renvoye.
- supprimer un article qui est en attente de modration (delete). Dans ce cas,
l'article n'est simplement pas publi.
- rcuperer un article complet (entetes et corps de l'article) afin
de le modifier et de le renvoyer ensuite dans le spool "attente de moderation".
(get, put)
- rcuperer/modifier les en-tetes d'un article (headers)
- approuver un article du spool (approve)

Dans les cas "blacklist", "whitelist", il faut prciser l'adresse email
de l'auteur concern. Dans le cas de blacklist, l'article est supprim.
Dans le cas de whitelist, l'article est publi.

Dans le cas de "get, delete, put, headers" , il faut prciser le numro
de l'article dans le spool.
Dans le cas "put", l'ancien article de meme numro de squence
est remplac par celui qui est mis par le moderateur.
Dans le cas de put ou headers, l'article est publi ensuite.
Sinon, il faut utiliser la commande approve.

5. Robot vrifieur

Le robot vrifieur est important, mais pas fondamental dans une
premiere approche. En effet, avec une quipe de moderateurs, il est  mon
avis difficile  quelqu'un de mal intentionn de rendre l'article invisible
pour tous les moderateurs, et l'article peut etre annul manuellement.

Un robot annuleur automatique (un peu comme newsbot) pose de nombreux
problemes : si on utilise PGP pour signer les articles correctement
approuvs, cela n'empeche pas que certains articles ne seront
probablement pas PGP-signs.  Si on utilise le champ Approved:
et le Path: (par exemple), il faudrait avoir une possibilit de
prciser plusieurs valeurs d'"Approved:" autorises (et de Path).

6. Questions diverses

- le problme du codage QP/Base64 :
on laisse sendmail le dcoder (flag 9 sur mailer local/prog).
Il est possible d'implmenter une fonction de dcodage QP/Base64
dans modapp (modules CPAN Mime)

- supprimer les articles qui n'utilisent pas un codage acceptable
(multipart, html, uuencode, etc) : c'est prvu de le faire au niveau
du robot rcepteur.

- scurit des robots
il est important de garantir la scurit du dialogue entre les
modrateurs et les robots. Cela pourra se faire par un mot de passe
prcis dans le champ Subject des mails changs (plus souple qu'un
champ d'en-tete spcial  ajouter dans un mail, impossible  faire avec 
certains mailers)
--------------------------------------------------------------------

Modappspool est le robot rcepteur. Modappmail s'occupe
des fonctions de rpartition des articles, et de la communication
par mail avec les modrateurs d'un ou plusieurs groupes. Le robot
vrifieur n'est pas encore implment.

[ A COMPLETER ]

------------------------------

Pour toute question concernant le robot modrateur (installation,
configuration, administration, utilisation, etc), n'hsitez
pas  crire  sn@penelope.frmug.org.
