Gestion de listes de diffusion avec Majordomo et MHonarc  

Les listes de diffusion sont un élément essentiel du développement des logiciels libres. Tous ceux développés en coopération grâce à Internet possèdent une liste ("lidie'' en abrégé) et certains ont même plusieurs listes pour différentes personnes : développeurs, traducteurs, utilisateurs, etc. Il existe des listes sur toutes sortes de sujets (voir l'annuaire des listes de diffusion francophones sur http://www.cru.fr/listes/).

Il existe sous Linux plusieurs logiciels permettant de gérer une liste de diffusion. Les plus connus sont Majordomo, ListServ, Listproc, SmartList et Sympa. Je présenterai ici Majordomo, pour gérer les listes, les archives et les condensés, et MHonarc qui permet la présentation des messages sur un site Web avec un classement par date ou par sujet.

Les archives permettent de garder une trace des messages accessibles soit en mode texte, soit, grâce à MHonarc, sur un site Web.

Les condensés (en anglais "digest'') regroupent en un seul message les mails d'une période donnée ou un ensemble de mails dont le volume dépasse une certaine valeur. Ces paramètres peuvent être définis dans le fichier de configuration de chaque liste.

Majordomo

Majordomo est un logiciel libre publié sous sa propre licence. J'ai traduit Majordomo en français, mais la licence ne permet de publier qu'une version modifiée. Vous trouverez sur le site de Ionix Services (http://www.ionix-services.com/) un script d'installation et un script de création de listes.

Majordomo travaille en étroite collaboration avec l'agent de transport de mail (MTA) pour renvoyer les messages aux abonnés d'une liste. Il est configuré pour fonctionner par défaut avec sendmail. On peut changer cette configuration pour utiliser par exemple Qmail (lire la FAQ).

Majordomo utilise les alias de sendmail (/etc/aliases) pour transmettre les messages à un "wrapper'' (binaire en C pour des questions de sécurité) qui, lui, appelle un script Perl "majordomo''. Je crée habituellement un fichier d'alias séparé pour les listes de diffusion, ce qui rend la maintenance des alias beaucoup plus facile si vous avez un serveur avec un grand nombre de comptes mail et/ou de nombreuses listes.

IMPORTANT : ne pas oublier de mettre à jour la base des alias en lançant "newaliases'' si vous modifiez le fichier /etc/aliases.

Pour chaque liste ma_liste, Majordomo utilise les fichiers suivants dans un répertoire "lists" :

- ma_liste : adresses des personnes abonnées ;

- ma_liste.config : fichier de configuration pour cette liste ;

- ma_liste.intro : informations sur cette liste envoyées à toute personne qui en fait la demande ;

- ma_liste.info : informations sur cette liste envoyées à tout nouvel abonné (accès restreint dans le cas d'une liste privée ou modérée).

Dans le cas d'une liste archivée, Majordomo utilise en plus le fichier ma_liste dans un répertoire "archives'' et le fichier ma_liste.digest dans le répertoire "lists'' pour les personnes abonnées à une liste condensée.

Installation

Le RPM de Majordomo est bogué. On installe donc Majordomo à partir des sources dans /home/majordomo. Le fichier de configuration général sera /home/majordomo/majordomo.cf. Il y a aussi un fichier de config pour chaque liste.

1 Récupérer les sources de Majordomo.

2 Décompacter les sources dans /usr/local (tar zxvf majordomo-1.94.4.tar.gz).

3 Aller dans le répertoire /usr/local/majordomo-1.94.4.

4 Modifier le Makefile pour installer Majordomo dans /home/majordomo. Cela permet, par exemple, de regrouper les archives des listes avec les données sauvegardées.

5 Créer un utilisateur "majordomo'' avec uid et gid 91.

6 Compiler Majordomo : taper "make install''.

7 Récupérer les deux scripts d'installation sur le site de Ionix. Lancer le script "post-install'' qui génère le fichier de configuration général.

8 Lancer le script "newlists'' qui crée les répertoires "listes'', "digest'' et "archives'', le fichier d'alias /etc/ml.aliases et le fichier de configuration pour chaque liste. Modifier ce dernier pour une liste modérée.

9 Dans /etc/sendmail.cf, rajouter une référence à ce fichier si elle n'existe pas encore :

# location of alias file

O AliasFile=/etc/aliases

O AliasFile=/etc/ml.aliases

10 Relancer sendmail : /etc/rc.d/init.d/sendmail restart (sur RedHat).

11 Recréer la base de données des alias de Sendmail en lançant "newaliases''.

Alias

Cinq alias sont utilisés pour une liste ni archivée ni condensée. Le script "newlists'' crée pour chaque liste les alias suivants dans /etc/ml.aliases :

owner-ma_liste: mon_adresse_email

ma_liste-approval: owner-ma_liste

ma_liste-request: ''|/home/majordomo/wrapper majordomo -l ma_liste''

ma_liste: ''|/home/majordomo/wrapper resend -l ma_liste

ma_liste-out''

ma_liste-out: :include:/home/majordomo/lists/ma_liste

Les alias ma_liste-owner et ma_liste-approval renvoient les requêtes sur l'adresse du gestionnaire de la liste.

Les alias ma_liste-request et ma_liste renvoient les requêtes à Majordomo. Il y a donc deux méthodes d'envoyer une commande à Majordomo.

Le script "archive2.pl'' gère l'archivage des messages. Pour une liste archivée, rajoutez :

ma_liste-archive: \

''|/home/majordomo/wrapper archive2.pl \

-f /home/majordomo/archives/ma_liste -u -m''

Modifiez la ligne :

ma_liste: \

''|/home/majordomo/wrapper resend -l ma_liste ma_liste-archive''

Pour une liste condensée, rajoutez :

ma_liste-digestify: \

"|/home/majordomo/wrapper digest -r -C -l ma_liste-digest

ma_liste-digest-out"

ma_liste-digest: ma_liste

ma_liste-digest-out: :include:/home/major do mo/ lists/ma_liste-digest

ma_liste-digest-request: "|/home/majordomo/wrapper majordomo -l ma_liste-digest"

owner-ma_liste-digest: mon_adresse_email

ma_liste-digest-approval: owner-ma_liste-digest

Utilisation

On s'abonne à une liste en envoyant un message "subscribe liste'' à "majordomo@nom-de-domaine.com'' ou un message "subscribe'' à "liste-request@nom-de-domaine.com''. Pour annuler son abonnement, les procédures sont les mêmes avec "unsubscribe''.

MHonarc

MHonarc permet d'archiver les messages d'une liste sur un site Web. La licence est la GNU Public Licence (GPL).

Installation

Le RPM ne contient pas de fichier de configuration. Lisez l'abondante documentation fournie avec MHonarc pour la configuration. L'installation est très simple :

Installez MHonarc : rpm -ivh mhonarc-x.xx-i386.rpm ;-)

MHonarc utilise aussi un alias dans /etc/aliases pour obtenir une copie des messages :

ma_liste-mh: \

"|/usr/bin/mhonarc -add -idxfname index.html \

-outdir /home/httpd/mon_site/ma_liste -rcfile /etc/mhonarc.cf''

-outdir indique le répertoire du site Web où seront présents les fichiers HTML de la liste. Modifiez cette valeur suivant l'emplacement de votre site Web.

Modifiez aussi la ligne suivante :

ma_liste-out: :include:/home/majordomo/lists/ma_liste, ma_liste-mh

Un script interactif "mhonarc-install'' et un fichier de configuration type sont également disponibles sur le site de Ionix. Le script crée un fichier de configuration francisé à copier dans /etc/mhonarc.cf. Le fichier de configuration est constitué de balises de style HTML (voir http://www.oac.uci.edu /indiv/ehood/MHonArc/doc/resources/rcfile.html).

L'utilisation est totalement transparente pour l'utilisateur. Les messages sont automatiquement copiés sur la page Web spécifiée avec deux index, par date et par sujet.

Yann FORGET

L'auteur est administrateur système chez Ionix Services, une start-up spécialisée dans les services réseaux basés sur Linux et les logiciels libres.

http://www.ionix-services.com/

yann.forget@ionix-services.com

yann.forget@mail.dotcom.fr

WEB BIBLIOGRAPHIE

Les procédures décrites ici sont celles utilisées sur une RedHat 5.1 et 6.0.

Alan Schwartz, Listes de diffusion électroniques,

Ed. O'Reilly, ISBN 2-84177-059-1

Le site Web de Majordomo :

http://www.greatcircle.com/majordomo/

Le site Web de MHonarc :

http://www.oac.uci.edu/indiv/ehood/mhonarc.html


© Copyright 2000 Diamond Editions/Linux magazine France. - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License".