Vous êtes sur la page 1sur 41

Le serveur de listes de diffusion Sympa

Mars 2002

Serge Aumont & Olivier Salan CRU Vincent Mathieu Universit de Nancy 2

Sympa est laboutissement de nos investissements pour rpondre aux besoins dun service national pour les universits dans le domaine des listes de diffusion. Cette activit a dmarr en 1992 pour prparer la migration des listes de bitnet. Aujourdhui, Sympa est un produit sous licence GPL dont les dveloppements continuent sous le contrle du CRU et avec de nombreuses contributions de la communaut des utilisateurs. Plus de 3000 sites de toutes origines chargent rgulirement les nouvelles versions de notre SYstme de Multi-Postage Automatique . Il serait vain de rcrire le manuel de rfrence de Sympa, mais la mise en uvre de Sympa est souvent juge complexe par les listmasters. Cest bien entendu la ranon de la grande richesse de fonctionnalits de cette application. Ce cours a donc pour objectif de vous aider exploiter tous les dispositifs de Sympa visant simplifier son administration tout en offrant des services amliors.

Ce cours a t donn en mars 2002, il est bas sur la version 3.3.4 de Sympa.

Panorama des fonctionnalits de Sympa.......................................................................... 5 1.1 1.2 1.3 1.4 Service aux usagers .................................................................................................. 5 Service aux propritaires et aux modrateurs de listes ........................................ 5 Service au listmaster ................................................................................................ 6 Autres caractristiques de Sympa .......................................................................... 6

2 3

Panorama de lorganisation de Sympa............................................................................. 6 Organisation des donnes ................................................................................................. 7 3.1 3.2 Structure de la base de donnes .............................................................................. 7 Structure des fichiers ............................................................................................... 7 Fonctionnalits.......................................................................................................... 8 Dfinition et hritage des privilges........................................................................ 9

Lespace de dpt de fichiers web..................................................................................... 8 4.1 4.2

5 6 7

Les options dabonnement .............................................................................................. 10 Antivirus........................................................................................................................... 10 Le traitement des bounces (ou rapports de non remise) ................................................ 11 7.1 7.2 7.3 7.4 Lanalyse des bounces, bounced.pl ....................................................................... 11 Linterface web de gestion des bounces................................................................ 12 Expiration des bounces .......................................................................................... 12 Projets de dveloppement...................................................................................... 13

8 9

Le gestionnaire de tches ................................................................................................ 13 Robots virtuels ................................................................................................................. 13 9.1 Organisation interne des Robots virtuels............................................................. 14 9.2 Crer un robot virtuel............................................................................................ 14 9.2.1 DNS.................................................................................................................. 14 9.2.2 Configurer votre moteur SMTP ....................................................................... 14 9.2.3 Crer les alias : ................................................................................................. 15 9.2.4 Apache.............................................................................................................. 15 9.2.5 robot.conf ......................................................................................................... 15 9.2.6 Rpertoire dexploitation.................................................................................. 16 9.2.7 Redmarrer Apache, Sendmail et les dmons de Sympa ................................ 16 9.2.8 Autre configuration .......................................................................................... 16

10

Ecrire vos scnarios..................................................................................................... 17 10.1 Principe de fonctionnement des scnarios ........................................................... 17 10.1.1 Les conditions utilisables dans un scnario : ................................................... 18 10.1.2 Les variables utilisables dans un scnario :...................................................... 18

11 11.1

Les templates................................................................................................................ 19 Organisation ........................................................................................................... 19 2

11.2 Le format................................................................................................................. 20 11.2.1 Les variables..................................................................................................... 20 11.2.2 Les conditions .................................................................................................. 20 11.2.3 Les boucles....................................................................................................... 20 11.2.4 Inclusion de fichiers ......................................................................................... 21 11.2.5 Echappement .................................................................................................... 21 11.3 11.4 12 Liste des templates ................................................................................................. 21 Exemples ................................................................................................................. 22 Support LDAP dans SYMPA ...................................................................................... 22 12.1 Prsentation succincte de LDAP........................................................................... 23 12.1.1 Structure dune base LDAP.............................................................................. 23 12.1.2 Composition dun objet LDAP ........................................................................ 23 12.1.3 Groupes LDAP................................................................................................. 24 12.1.4 Niveau de protocole ......................................................................................... 24 12.1.5 Caractres accentus ........................................................................................ 24 12.1.6 Format dchange............................................................................................. 24 12.1.7 Droits daccs................................................................................................... 24 12.1.8 Droulement dune requte LDAP................................................................... 24 12.1.9 Filtres de recherche LDAP............................................................................... 24 12.1.10 Replica.......................................................................................................... 25 12.1.11 Paramtrage habituel dun client LDAP ...................................................... 25 12.1.12 Exemple dobjets LDAP .............................................................................. 25 12.2 Pr-Requis pour le support de LDAP dans sympa ............................................. 26 12.3 Utilisation de LDAP pour lauthentification dans wwsympa............................. 26 12.3.1 Authentification dans wwsympa ...................................................................... 26 12.3.2 Authentification avec LDAP............................................................................ 26 12.3.3 Changements dans wwsympa suite une authentification de type LDAP ...... 27 12.4 Listes issues de requtes LDAP............................................................................. 28 12.4.1 Listes de type ldap_query .............................................................................. 28 12.4.2 Listes de type ldap_2level_query .................................................................. 29 12.4.3 Listes include et cache sympa .......................................................................... 29 12.4.4 ttl et cache de listes........................................................................................... 29 12.5 Utilisation de filtres ldap dans les scnarios...................................................... 30 12.5.1 Les Filtres Nomms :Named Filters (NF)........................................................ 30 12.5.2 Utilisation des Filtres Nomms (NF) dans un scnario.................................... 30 Ici, tous les abonns de la liste listname et les enseignants du campus lettres ont le droit denvoyer un mail la liste listname. ...................................................................... 30 12.5.3 Etendue de ces filtre ......................................................................................... 30 12.6 13 13.1 13.2 13.3 13.4 Conclusion Sympa et LDAP .................................................................................. 31 Configuration MySQL ................................................................................................ 31 Installer les modules Perl....................................................................................... 31 Crer la base de donnes ....................................................................................... 31 Configurer sympa.conf .......................................................................................... 32 Outils daccs la base de donnes....................................................................... 33 3

13.4.1 13.4.2 14 14.1

mysql ................................................................................................................ 33 phpMyAdmin ................................................................................................... 33

Optimisations / rpartition de charge ......................................................................... 33 Optimisation de la diffusion .................................................................................. 33 14.2 Optimisation avec sendmail................................................................................... 35 14.2.1 Non canonisation des adresses ......................................................................... 35 14.2.2 Abaisser les timers ........................................................................................... 35 14.3 Optimisation MySQL............................................................................................. 35 14.3.1 Structure de la base .......................................................................................... 35 14.3.2 Configuration du serveur.................................................................................. 36 14.4 Rpartition de charge............................................................................................. 36 Linstallation de Sympa............................................................................................... 37 Intgration de Sympa avec dautres applications ...................................................... 37 16.1 Partage de lauthentification web ......................................................................... 37 16.1.1 Utiliser le systme dauthentification de Sympa.............................................. 38 16.1.2 Sympa reconnat votre authentification............................................................ 38 16.2 Partage des donnes ............................................................................................... 38 16.2.1 Dfinition des listes par extraction dune base de donnes.............................. 38 16.2.2 Ajouter vos donnes la base de donnes de Sympa ...................................... 39

15 16

17 17.1

S/MIME et HTTPS...................................................................................................... 39 HTTPS..................................................................................................................... 39 17.2 S/MIME................................................................................................................... 40 17.2.1 Validation des signatures S/MIME .................................................................. 40 17.2.2 Diffusion chiffre ............................................................................................. 40

18

Les ressources disponibles .......................................................................................... 41

Panorama des fonctionnalits de Sympa

Il nest pas question dnumrer toutes les spcificits de ce serveur de listes de diffusion, tout au plus pouvons nous donner un aperu des points originaux de Sympa. Une des caractristiques de Sympa est doffrir deux interfaces (messagerie et web) intgres. Linterface WEB est unique et dispense chacun une vue personnalise du service de listes. Ainsi, les usagers, les propritaires de listes et le(s) listmaster(s) utilisent la mme interface.

1.1 Service aux usagers


Sympa propose aux usagers des listes de diffusion toute la panoplie des services classiques dans ce domaine : abonnement / dsabonnement, option dabonnement pour recevoir les messages sous diffrents formats, archives indexes, prsente par date ou par fil de discussion (thread), espace web permettant le dpt de documents rservs aux abonns de la liste etc. Il convient de souligner que le service est accessible par deux interfaces : linterface messagerie qui reconnat les jeux de commandes de la plupart des robots usits et saccommode sans difficults des messages formats avec toutes les possibilits de MIME (reconnaissance des commandes de messagerie places dans des messages multipart/alternative). linterface web qui se prsente sous la forme dun portail des listes de diffusion du site. Elle propose chacun une vue personnalise du service de listes de diffusion ds que la personne sidentifie grce un dispositif dallocation/r-allocation des mots de passe. Lusager peut alors visualiser lensemble de ses abonnements, positionner des prfrences (choix de la langue de linterface par exemple), supprimer des archives les messages dont il est lauteur etc. Chaque abonn peut choisir pour chaque liste des options dabonnement comme la rception priodique et groupe des articles, le remplacement dans les messages des attachements par des URLs, la rception exclusive de la version texte ascii ou de la version html quand les deux alternatives sont contenues dans le message.

1.2 Service aux propritaires et aux modrateurs de listes


Sympa distingue les modrateurs (qui valident ou refusent la diffusion de messages dans les listes) et les propritaires (qui configurent la liste et grent les abonnements). Authentifis avec son mot de passe le propritaire de liste dispose sur linterface web dune vision spcifique de ses listes. Pour chaqune dentre elle il peut : rdiger les messages de service (message de bienvenue, rappel dabonnement, message de dsabonnement,, ) et la page daccueil de la liste. accder et configurer les paramtres de sa liste (ceux que le listmaster a rendu ditable) en particulier pour dfinir la population des gens autoriss sabonner sa liste, y diffuser des messages etc. valider ou refuser (par mail ou par web) les demandes dabonnement qui sont soumises validation ainsi que la diffusion des messages soumis validation. 5

1.3 Service au listmaster


Un ou plusieurs lismasters sont dfinis pour chaque robot de listes (Sympa permet de grer plusieurs robots de listes relatifs des domaines diffrents). Le listmaster valide sur linterface web les demandes de cration de liste quand elles sont soumises autorisation. Il configure les comportements par dfaut de Sympa ainsi que les messages de services non spcifiques une liste. Il dfinit entre autre la population des personnes autorises crer des listes de diffusion etc.

1.4 Autres caractristiques de Sympa


Le systme de gestion des privilges appel scnario permet de dfinir le fonctionnement en fonction de tous les lments du contexte (catgorie dutilisateur, prsence de pices jointes dans le message, utilisation depuis un poste du rseau local etc). En outre Sympa intgre un systme dauthentification par mot de passe ; celui-ci peut tre commun dautres applications en particulier en utilisant lauthentification LDAP. Sympa autorise deux modes de dfinition de la population des listes dabonns : les classiques listes construites par abonnement/dsabonnement et les listes dynamiques directement extraites dannuaires LDAP ou de serveurs de base de donnes. Dans le domaine des certificats X509, Sympa peut reconnatre les signatures S/MIME mais aussi chiffrer des messages destination des abonns, lauthentification HTTPS est aussi possible sur linterface web. A noter que tous les messages diffuss sont traits par un anti-virus.

Panorama de lorganisation de Sympa

Un petit coup dil sur lensemble de lorganisation de Sympa est indispensable pour en apprhender le fonctionnement et lensemble des possibilits. sendmail sendmail sendmail Virus sympa.pl Opensl archived.pl Apache +fastcgi wwsympa.fcgi mysql bounced.pl

task_manager.pl 6

sympa.pl : cest le dmon principal, il reoit et diffuse les messages via sendmail (postfix, qmail ou exim). Il consulte et modifie les listes dabonns dans la base de donnes. Il alimente archived.pl aprs diffusion dun message. Il appelle un antivirus externe pour tous les messages destins relays vers un modrateur ou diffuss. wwsympa.fcgi reoit des requtes du serveur HTTP (Apache ou Roxen). Grce au module fastcgi, ce CGI est rsident : il conserve les trs nombreuses initialisations ralises en mmoire. En particulier il maintient sa connexion avec le serveur SQL ainsi quune image mmoire des objets liste. wwsympa.fcgi fait des mises jour dans la base de donnes. Il dlgue la diffusion des messages Sympa via un spoule bounced.pl est le dmon de traitement des rapports de non-remise. Il reoit ceux-ci du moteur SMTP et met jour la base de donnes. archived.pl est le dmon darchivage. Il traite les messages du spool outgoing et les convertit en template HTML utiliss par wwsympa.fcgi. task_manager.pl : actuellement ce dmon est utilis uniquement pour mettre priodiquement les messages de rappel des abonnements et pour supprimer les bounces non significatifs. De nombreuses tches lui sont rserves lavenir.

Organisation des donnes

Le modle de donn de Sympa se compose de : la base de donnes Sympa, un ensemble de fichiers. Selon la configuration, des sources de donnes externes : des bases de donnes (LDAP ou SQL) pour la constitution des listes dynamiques, annuaires LDAP pour lauthentification. Ne pas confondre la base de donnes Sympa (en gnral MySQL) et la ou les bases de donnes externes Sympa utilises pour des includes. Dans le second cas, Sympa ne fait que des accs en lecture ces donnes externes.

3.1 Structure de la base de donnes


Bien que, pour des raisons historiques , linstallation dun SGBD pour la gestion des tables dabonns soit encore mentionne comme optionnelle, il est impratif dinstaller une base de donnes si linterface web est installe. En effet, seule la base de donnes assure la gestion des conflits dcriture entre les processus fastcgi et les diffrents dmons. Le SGBD nest donc pas seulement un moyen damliorer les performances de lapplication. Plusieurs SGBD sont supports : MySQL, Postgresql, Sybase et Oracle. Le mode daccs la base est configur dans le fichier sympa.conf. La base est constitue de deux tables : 1. la table user_table qui permet de stocker les infos des utilisateurs (email, mot de passe et langue de prfrence ) 2. la table subscriber_table : les informations sur les abonnements

3.2

Structure des fichiers

On se reportera avec avantage la section organisation du manuel de rfrence de Sympa : http://listes.cru.fr/sympa/doc/sympa/node3.html#SECTION00310000000000000000 et aux exemples de ce document. On distingue 3 familles de fichiers : sympa.conf et wwsympa.conf : la configuration globale de lapplication les fichiers de configuration de robot virtuel : robot.conf, edit_list.conf, templates, scnarios, Les fichiers relatifs une liste : config, stats, archives, bounces, Les spoules

Lespace de dpt de fichiers web

Un espace de dpt de fichiers est disponible pour chaque liste ; il est accessible depuis la page web de la liste. Les ambitions de cet espace documentaire sont modestes, il ne sagissait pas de proposer un outil de gestion de site web (voir Rearsite) mais juste un espace dchange de documents et de signets entre membres dune liste.

4.1 Fonctionnalits
La fonctionnalit principale est le dpt (upload) de fichiers ; il est possible dditer, de renommer, de supprimer les fichiers dposs. Un descriptif est associable chaque fichier. Lespace documentaire permet galement de grer des dossiers et des signets (URLs). Par dfaut, lespace de dpt dune liste est inactif ; lactivation est effectue par le propritaire de la liste, via linterface web dadministration.

Il est possible de dposer un fichier index.html dans un dossier, il remplacera lindex des fichiers lors de la consultation du dossier. Laccs en consultation aux documents dans lespace de dpt est compltement contrl par WWSympa qui se base sur son systme dauthentification (interne ou LDAP) pour identifier le client.

4.2 Dfinition et hritage des privilges


Lespace de dpt permet de dfinir 3 types de privilges sur chacun de ses lments : consultation : droit daccs un document, un dossier dition : droit dditer un fichier, de le renommer/supprimer. Dfinit galement le droit de dpt dans un rpertoire. contrle : permet de dfinir les droits en consultation/dition sur un lment de lespace de dpt. Ce privilge permet galement de changer le propritaire du fichier/dossier.

Chaque nouvelle entre (fichier / dossier / signet) hrite des privilges du dossier auquel il appartient. Les privilges associs au dossier racine sont dfinis par le paramtre de liste shared_doc (scnaris), lexception du privilge de contrle, assimil au droit dditer le paramtre shared_doc (par dfaut restreint au propritaire de la liste). Extrait de config de liste :
shared_doc d_read public d_edit private

Les privilges sur un fichier dpendent bien sr des droits dfinis pour ce fichier, mais galement de ceux de son ascendance ; ce principe permet de garder le contrle sur une hirarchie de lespace de dpt. Soit le fichier dont le chemin complet est D1/D2/F1, les privilges suivent le schma suivant : consultation et dition : priv(F1) = priv(D1) ET priv(D2) ET priv(F1) contrle : priv(F1) = priv(D1) OU priv(D2) OU priv(F1)

Les options dabonnement

La configuration de chaque liste permet de dfinir les options de rception des messages disponibles (paramtre available_user_options ) et loption dabonnement par dfaut (paramtre default_user_options). Chaque abonn peut donc choisir une option dabonnement. Citons les options : nomail : pas de rception utile pour suspendre la rception des messages tout en conservant les privilges dabonns. digest : rception groupe et priodique des messages (Sympa utilise le format Mime multipart/digest, la priodicit est configurable) summary : idem digest mais rception limite la liste des messages urlize : les messages sont distribus normalement mais les attachements sont remplacs par des liens text et html : permet de spcifier la version prfre, dans le cas ou le message diffus contient les deux formes (multipart/alternative)

Antivirus

Sympa est prvu pour utiliser les services dun antivirus pour analyser les messages entrant ; les antivirus suivant sont reconnus : uvscan (McAfee) fsav (Fsecure) sophos AVP viruswall (Trend Micro) Vous devez positionner les paramtres antivirus_path et antivirus_args dans sympa.conf pour activer la dtection des virus (dans les messages entrants) dans

10

sympa.pl. Les messages contamins sont mis de cot (rpertoire bad/) ; lauteur du message est prvenu (voir le template your_infected_msg.tpl). Une semaine de virus au CRU (utilisation uvscan) :
W32/Magistr.b@MM W32/SirCam@MM W32/Hybris.gen@MM W32/Klez.e@MM VBS/Tam@M W32/BadTrans@MM W32/Magistr.b.dam1 W32/Gibe@MM W32/Nimda.gen@MM TOTAL 51 37 15 8 6 4 4 3 1 129

En moyenne, le serveur Sympa du CRU, intercepte plus de 100 messages contamins par semaine.

Le traitement des bounces (ou rapports de non remise)

Traditionnellement, les rapports de non remise pour les messages diffuss dans les listes sont transmis aux propritaires de la liste ; leur bote aux lettres est alors submerge par ces rapports peu lisibles pour le commun des mortels. Pour rsoudre ce problme Sympa traite les bounces automatiquement, lopration finale de dsabonnement tant laisse (pour linstant) aux propritaires.

7.1 Lanalyse des bounces, bounced.pl


Les bounces sont reus ladresse maliste-owner puis stokes dans un spool par le programme bouncequeue. Exemple dalias :
maliste-owner: "|/home/sympa/bin/bouncequeue maliste"

Le dmon bounced.pl traite les rapports de non remise dans le spool pour en extraire ladresse de labonn en erreur et le type derreur. Le champ bounce_subscriber (table subscriber_table) est mis jour ; le dernier rapport de non-remise de labonn est archiv (rpertoire darchives dfini par le paramtre bounce_path de wwsympa.conf). Le champ bounce_subscriber (table subscriber_table) :
1014647647 1016081883 97 5.2.2 1014647647 : date de 1re erreur (25 fvrier 2002) 1016081883 : date dernire erreur (14 mars 2002) 97 : nombre de bounces reus 5.2.2 : type de lerreur (dfini par RFC 1891) 5 => erreur permanente 2.2 => mailbox full

11

Si le taux dabonns en erreur dans une liste dpasse un seuil (dfini par le paramtre bounce_warn_rate) le propritaire recevra une alerte pour chaque message diffus dans la liste. Ce message est actuellement dfini dans les NLS (8,28).

7.2 Linterface web de gestion des bounces


Linterface web dadministration dune liste permet de grer les abonns en erreur. La liste des adresses en erreur permet de visualiser la frquence des erreurs, leur type. Le propritaire de la liste peut alors choisir dannuler les erreurs ou de dsabonner ladresse. Labonn recevra alors un message de dsabonnement dfini dans le template bye.tpl(sauf case sans prvenir coche).

Interface web de gestion des bounces 1

7.3 Expiration des bounces


Lorsquune adresse ne gnre plus derreurs, les erreurs reues doivent tre oublies par le systme. Cette tche est confie au gestionnaire de tches de Sympa, via le paramtre expire_bounce de sympa.conf. Le scnario par dfaut (et le seul actuellement) expire les bounces des abonns nayant pas gnr de bounce 10 jours aprs la dernire diffusion dans la liste. La tche expire_bounce.daily :
title.fr expiration de bounces 10 jours antrieurs au dernier mail diffus

12

title.us expire of bounces older than 10 days before message distribution /ACTION expire_bounce (10) next ([execution_date] + 1d, ACTION)

7.4 Projets de dveloppement


Depuis la version 3.3.3 Sympa effectue une corrlation entre les bounces et la diffusion des messages (via le fichier msg_count). Cette information devrait permettre dans les versions venir deffectuer un certain nombre de dsabonnements automatiques. Dans certains cas cependant la dcision restera la charge du propritaire de la liste.

Le gestionnaire de tches

Sympa a besoin deffectuer certaines oprations planifies ; il utilise pour certaines de ces oprations les services du gestionnaire de tches. Le gestionnaire de tches est lquivalent pour Sympa de la crontab. Le dmon task_manager.pl planifie les tches sur la base de certains paramtres de listes (expire_task, remind_task) et des paramtres globaux (crl_update, expire_bounce). Les tches pouvant tre complexes, le dmon stocke ltat de chaque tche dans un spool. A terme, certaines oprations rptitives traites actuellement par sympa.pl devraient ltre par le gestionnaire de tches (envoi des digests, mnage dans les spools, ). Exemple de tche planifie (expire.yearly.task) :
title.fr procedure d'expiration : envoi de 2 messages d'avertissement avant suppression title.us expiration routine : sending of 2 warning mails before deletion title.hu trls menete: a vgleges trls eltt 2 figyelmeztet levelet kld ki /STEP1 @selection = select_subs (older ([creation_date]-1y)) send_msg (@selection, expire_warning1) next ([execution_date]+3w, STEP2) /STEP2 @selection = select_subs (older ([creation_date]-1y)) send_msg (@selection, expire_warning2) next ([execution_date]+1w, STEP3) /STEP3 @selection = select_subs (older ([creation_date]-1y)) @deleted = delete (@selection) send_msg (@deleted, expire_deletion) stop ()

Les models de tches sont personnalisables ( linstar des scnarios) dans les rpertoires list_task_models et global_task_models.

Robots virtuels

13

La notion de robot virtuel est Sympa ce que les hosts virtuels sont Apache : le moyen dhberger plusieurs services de listes de diffusion partir dune seule installation de Sympa et une administration simplifie. Du point de vue des utilisateurs (abonns, propritaires de listes, modrateurs), les services apparaissent comme totalement indpendants. Exemple : https://listes.cru.fr/wws , https://listes.renater.fr/wws , http://listes-dgcid.diplomatie.gouv.fr/wws,

9.1 Organisation interne des Robots virtuels.


A chaque robot virtuel correspond une adresse de robot sympa@domaine . Les listes dun robot sont gres dans le domaine robot virtuel . Les listes de diffusion ne sont visibles que via le robot du mme domaine. Pour russir la configuration dun robot virtuel, il faut comprendre comment Sympa et WWSympa choisissent le contexte de robot virtuel appliquer pour chaque message ou requte HTTP 1. sympa.pl traite des messages qui ont t dposs dans le spoule des messages via le programme queue et les alias du moteur de messagerie. Exemple :
cours-sympa-20-03-2002@cru.fr: | /home/sympa/bin/queue sympa-fr@cru.fr

sympa.pl rcupre largument du programme queue pour identifier la liste et le robot de rfrence (une entte x-sympa-to: cours-sympa-20-03-2002@cru.fr est ajoute au message). 2.
wwsympa.fcgi : chaque requte HTTP est qualifie par la variable denvironnement SERVER_NAME (le host appel par le client donc celui utilis pour la dfinition du virtuel host Apache). Une table interne Sympa construite partir des fichiers de configuration de robot permet deffectuer une correspondance entre ce nom de host et le domaine du robot virtuel. Par exemple listes.cru.fr sert le robot virtuel cru.fr.

9.2 Crer un robot virtuel


9.2.1 DNS Dfinir dans le DNS un MX record pour le domaine virtuel et un CNAME ou un host ( A record) pour le serveur web associ. Dans le cas dun serveur HTTPS dfinir une nouvelle adresses IP et non un CNAME (contrainte lie larchitecture de lempilement du protocole http sur la couche ssl) 9.2.2 Configurer votre moteur SMTP

Votre MTA doit reconnatre le nouveau domaine. Avec sendmail et le kit Jussieu voir http://www-crc.u-strasbg.fr/docs/kitjussieu/support/node115.html Avec sendmail et les macro m4 voir http://www.sendmail.org/virtual-hosting.html

14

Avec Postfix voir http://www.postfix.org/virtual.5.html

9.2.3

Crer les alias :

listmaster@virtual.fr: |~sympa/bin/queue listmaster@virtual.fr sympa@virtual.fr: |~sympa/bin/queue sympa@virtual.fr sympa-request@virtual.fr: |~sympa/bin/queue listmaster@virtual.fr bounce+*@virtual.fr : "| ~sympa/bin/bouncequeue sympa "

9.2.4 Apache Configurer un virtual host Apache. Il nest pas utile de dfinir un/des serveur(s) FastCgi pour chaque robot virtuel, au contraire chaque serveur FastCgi est capable de servir nimporte quel robot virtuel. On trouve donc la dfinition des serveurs FastCgi dans la partie commune de la configuration dApache et le path de lapplication dans chaque host virtuel :
AddHandler .fcgi FastCgiServer /bin/sympa/bin/wwsympa.fcgi -processes 3 -idle-timeout 120 <VirtualHost 195.220.94.165:80> ServerName listes.virtual.fr <Location /wws> SetHandler fastcgi-script </Location> ScriptAlias /wws /home/sympa/bin/wwsympa.fcgi </VirtualHost>

Le reste des oprations sera trait tt ou tard via un formulaire de cration de robot virtuel. En attendant ces raffinements. Il convient de crer la main chaque environnement. Dans les exemples qui suivent, le robot virtuel sert le domaine virtual.fr. 9.2.5 robot.conf

Le robot virtual.fr est dfini en rpertoire ~sympa/etc/virtual.fr/ et un fichier robot.conf dans ce rpertoire. Ce fichier de configuration permet de redfinir ventuellement des paramtres de sympa.conf et de wwsympa.conf (exemple les couleurs des pages). Mais robot.conf doit obligatoirement dfinir le paramtre http_host qui sera utilis pour tablir la correspondance entre le nom du serveur HTTP rfrenc et le robot virtuel cible. Description des paramtres de robot :
email : title :

la partie locale de ladresse du robot : exemple le titre de la page daccueil.

sympa.

default_home :

la page daccueil par dfaut (home : classement par topics ou lists : classement alphabtique). nom du scnario contrlant laccs la fonction de cration de listes.

create_list : lang :

la langue par dfaut du robot. activation du log des appels sendmail. 15

log_smtp :

log_level : listmaster max_size :

niveau de log. : adresses email des listmasters spares par des , . taille maximale des messages (redfinition possible pour chaque liste).

dark_color, light_color, text_color, bg_color, error_color, selected_color, shaded_color

exemple : # http_host must be the same as the server_name defined in Apache Virtual Host http_host demo.sympa.org wwsympa_url https://demo.sympa.org/wws title A virtual robot dedicated to Sympa demo default_home log_level 3 dark_color #00aa00 light_color #ddffdd selected_color #0099cc bg_color #dddddd lists

9.2.6

Rpertoire dexploitation Crer le rpertoire qui contiendra les listes du robot virtuel : Toute liste cre dans ce rpertoire est affecte ce robot.
~sympa/expl/virtual.fr.

9.2.7

Redmarrer Apache, Sendmail et les dmons de Sympa La prise en compte de nouveaux robots virtuels nest pas dynamique pour ces trois applications.

9.2.8

Autre configuration

De mme que chaque liste peut disposer dun jeu spcifique de scnarios et de templates, ces lments de configuration peuvent tre dfinis au niveau dun robot virtuel. Lors de lvaluation dun scnario, par exemple le scnario intranet pour le contrle de lopration send dans la liste foo du robot virtual.fr, Sympa recherche le fichier send.intranet successivement dans les rpertoires. - ~sympa/expl/virtual.fr/foo/scenarii/ (uniquement pour les oprations relatives une liste ) - ~sympa/etc/virtual.fr/scenarii/ - ~sympa/etc/scenarii/ - ~sympa/bin/etc/scenarii/ La mme tactique est applique pour les templates (gabarits de messages et de pages html) :

16

~sympa/expl/virtual.fr/foo/ (attention par de sous rpertoire templates) ~sympa/etc/virtual.fr/template/ ~sympa/etc/template/ ~sympa/bin/etc/template/

Ce dispositif permet de personnaliser compltement par liste, par robot ou pour le site laspect et le fonctionnement des droits daccs de chaque page de linterface web et du robot de messagerie.

10 Ecrire vos scnarios


Le systme de scnario est un langage permettant de spcifier les droits associs chaque opration. Presque toutes les oprations de Sympa sont sous contrle de scnarios : cration de listes, diffusion de message, accs lespace de dpot dune liste, etc. La visibilit mme dune liste est contrle par scnario ce qui permet de dissimuler des listes certaines catgories dusagers. Il est donc possible de crer des vues spcifiques pour plusieurs catgories dutilisateurs dans le but de crer des intranets. Voir : http://listes.cru.fr/sympa/doc/sympa/node11.html#SECTION001180000000000000000 Sympa est distribu avec un jeu de scnario par dfaut qui sont installs dans ~sympa/bin/etc/scenarii, http://listes.cru.fr/sympa/distribution/current/src/etc/scenari/ Ne jamais modifier ces fichiers, une mise jour de Sympa craserait votre travail. Si vous souhaitez modifier les scnarios standard, il est prfrable de les copier et de les diter dans le rpertoire ~sympa/etc/scenarii

10.1 Principe de fonctionnement des scnarios


Un scnario est une liste de rgles appeles squentiellement. Chaque rgle est constitue dune condition portant sur le contexte dappel du scnario, de la mthode dauthentification utilise (Entte From:, mot de passe ou authentification par certificat) dune action qui sera appele si la rgle sapplique au contexte dappel. Exemple :
title.fr limit aux abonns authentifis title.cz pouze lenov title.hu listatagok is_subscriber([listname],[sender]) is_subscriber([listname],[sender]) smtp smime,md5 -> request_auth -> do_it

Cet exemple, appliqu au contrle de la diffusion des messages, permet de limiter lenvoi des messages aux abonns identifis. On remarque des conditions prdfinies comme is_subscriber et des variables ([listname] et [sender]) qui sont instancies lors de

17

lappel selon le contexte du moment. Trois mthodes dauthentification sont reconnues par les scnarios : smtp : indique que lon se fie lentte From: dun message. md5 : authentification par mot de passe (les mots de passe allous par Sympa sont construits avec lalgorithme de hash appel md5) smime : authentification forte base sur un certificat X509 (signature S/MIME ou session HTTPS avec certificat du client) Les actions en partie droite des rgles de scnario sont des indicateurs rudimentaires. request_auth (message de retour avec demande dauthentification), do_it (rendre le service ). Si vous crivez des scnarios, pensez mettre un titre (title.<lang>), celui-ci apparat dans les menus droulants des formulaires de configuration de liste. Tout scnario se termine par une rgle implicite de rejet :
true() smtp,smime,md5 -> reject

10.1.1 Les conditions utilisables dans un scnario : true () equal (<value>, <value>) match (<var>, /perl_regexp/) is_subscriber (<listname>, <value>) is_owner (<listname>, <value>) is_editor (<listname>, <value>) is_listmaster (<value>) older (<date>, <date>) newer (<date>, <date>) # true if first date is posterior to the second date

Pour inverser une condition : prfixer celle-ci par un ! 10.1.2 Les variables utilisables dans un scnario : [sender] : le sender du message courant, par extension, le demandeur de la requte courante [email] : dans les commandes qui acceptent un email en argument, utilis uniquement dans le contexte unsubscribe [subscriber-><subscriber_key_word>] : les attributs dabonn : email | gecos | bounce | reception | visibility | date | update_date |<additional_subscriber_fields>

Il est aussi possible dajouter des champs propritaires dans la table subscriber et dy accder dans les scnarios et dans les templates (Voir http://listes.cru.fr/sympa/doc/sympa/node5.html#db-additional-subscriber-fields ) [listname] [list-><list_key_word>] : tous les lments du fichier de configuration dune liste

18

[conf-><conf_key_word>] : tous les lments de la configuration de Sympa (sympa.conf) [msg_header-><smtp_key_word>] : tous les lments dentte du message (dans les scnarios send uniquement) Modrer les messages contenant des attachements :
match([header->Content-Type],/multipart/) smtp,smime,md5 -> editorkey

[msg_body] : le corps du message Bloquer les messages en franais dans une liste francophone :
match([msg_body],/[]/) match([msg_body],/bonjour/) smtp,md5,smime -> reject smtp,md5,smime -> reject

[msg_part->type] [msg_part->body] Tout test appliqu ces variables est un OU logique appliqu chaque partie du message. [is_bcc] Indique que la liste cible nest ni dans le champs To: ni dans le le champs
Cc:

Une astuce anti-spam utilise au CRU : une rgle commune tous les scnarios :
equal([is_bcc],'1') smtp -> request_auth

Cette rgle est dfinie dans le fichier : /home/sympa/etc/scenarii/include.send.header (les fichiers include.<action>.header sont inclus en tte de tous les scnarios <action>.*). [remote_host] : la variable REMOTE_HOST telle que celle-ci est positionne par le serveur HTTP. Cela suppose quApache ait t configur pour valuer cette variable, mais cela permet de crer une notion dintranet en particulier en utilisant cette variable dans le scnario visibility permettant de contrler qui a le droit de connatre lexistence dune liste donne.

11 Les templates
Les compte-rendus de commandes envoys par Sympa sont dcrits dans des templates (exception faite de certaines commandes anciennes) ; cette sparation du code et des messages facilite les traductions et les personnalisations. Les templates sont des modles de message et peuvent contenir des lments de programmation (variables, conditions, boucles,...) qui seront valus lors de lenvoi du message.

11.1 Organisation
Des templates par dfaut sont fournis avec la distribution de Sympa, traduits dans 10 langues. Ils sont personnalisables plusieurs niveaux, dans l'ordre de priorit suivant : 1. la liste (~sympa/expl/maliste/) 2. le robot virtuel (~sympa/etc/virtual.fr/etc/templates/) 3. le site (~sympa/etc/templates/) 4. la distribution (~sympa/bin/etc/templates/) Attention : si vous personnalisez des templates, faites-le dans ~sympa/etc/templates/ (le rpertoire ~sympa/bin/etc/templates lui est cras chaque nouvelle installation).

19

Les fichiers ont l'extension.tpl. Si le template concerne une langue en particulier, le fichier aura lextention .<lang>.tpl. Les templates peuvent inclure des enttes SMTP (pour dfinir des messages multipart notamment), auquel cas Sympa najoute aucune entte SMTP au message. Un template est considr comme MIME sil commence par From : (voir exemple plus loin).

11.2 Le format
Les lments syntaxiques des templates sont dfinis entre crochets [] ; leur interprtation nest pas sensible la casse. 11.2.1 Les variables Exemples:
[url] [is_owner] [list->name] [user->lang]

Loprateur -> permet de faire rfrence lentre dun HASH. La liste des variables utilisables pour chaque template est fournie dans la documentation : (voir les templates de site et les templates de liste). 11.2.2 Les conditions Une structure de contrle [IF..][ELSE][ENDIF] permet dadapter la page en fonction du contexte li son usage : Exemple:
[IF user->lang=fr] Bienvenue dans la liste [list->name] [ELSIF user->lang=es] Bienvenida en la lista [list->name] [ELSE] Welcome in list [list->name] [ENDIF]

11.2.3 Les boucles Les boucles permettent de parcourir une liste dlments (reprsents en interne par un tableau ou un tableau associatif). Exemple :
Les listes publiques : [FOREACH l IN lists] [l->NAME] [l->subject]

20

[END]

[elt->NAME] est une variable particulire contenant la clef courante dans le tableau associatif (dans lexemple ci-dessus, le nom de la liste). Dans le cas du parcours de tableau, la variable [elt->INDEX] contient lindex courant. 11.2.4 Inclusion de fichiers Linclusion dun fichier peut tre passive (INCLUDE) ou le fichier inclus peut tre interprt comme un template (PARSE). Le chemin du fichier inclure peut tre fourni directement ou par lintermdiaire dune variable. Exemple dinclusions de fichiers textuels :
[INCLUDE 'archives/last_message'] [INCLUDE file_path]

Exemple dinclusions de templates (eux-mme parss) :


[PARSE 'welcome.tpl'] [PARSE file_path]

11.2.5 Echappement Il est possible dinterrompre linterprtation dun template (pour utiliser des [] par exemple). Les directives [STOPPARSE] et [STARTPARSE] permettent respectivement dinterrompre et de reprendre linterprtation du template. Exemple dchappement dune fonction JavaScript sensible :
<HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- for other browsers function toggle_selection(myfield) { for (i = 0; i < myfield.length; i++) { [STOPPARSE] if (myfield[i].checked) { myfield[i].checked = false; }else { myfield[i].checked = true; } [STARTPARSE] } } // end browsers --> </SCRIPT> </HEAD>

11.3 Liste des templates


Dune manire gnrale, un template est un modle de rapport de commande. Dans un avenir proche, tous les rapports de commandes seront dfinis par des templates (actuellement certains utilisent les NLS). Template Commande associe Description du message 21

bye.tpl global_remind.tpl helpfile.tpl info_report.tpl invite.tpl list_created.tp list_unknown.tpl listmaster_notification.tpl lists.tpl moderate.tpl modindex.tpl reject.tpl remind.tpl removed.tpl review.tpl sendpasswd.tpl stats_report.tpl summary.tpl welcome.tpl x509-user-certmissing.tpl your_infected_msg.tpl

SIGNOFF REMIND * HELP INFO INVITE

LISTS MODINDEX REJECT REMIND DEL REVIEW STATS SUBSCRIBE / ADD

Message de dsabonnement Rappel de lensemble des abonnements Aide sur Sympa Informations sur une liste Message dinvitation Notification de cration de liste Rapport de non-remise (liste inconnue) Notifications pour le(s) listmaster(s) Catalogue des listes Notification message modrer Liste des messages en attente de modration Notification de rejet dun message Rappel dabonnement Message de suppression Liste des abonns Rappel de mot de passe Statistiques sur la liste Message en mode summary Message de bienvenue Notification dabonn : pas de certificat pour chiffrer Notification dabonn : rejet de message contamin

11.4 Exemples
Message de bienvenue (welcome.fr.tpl) incluant le dernier message diffus :
From: abc-request@cru.fr Subject: Bienvenue dans la liste ABC Content-type: multipart/mixed; boundary="myboundary" --myboundary Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Bienvenue dans la liste .... Veuillez trouver ci-dessous le dernier message diffus dans la liste : --myboundary Content-Type: message/rfc822 [INCLUDE '/home/sympa/expl/abc/archives/last_message'] --myboundary--

12 Support LDAP dans SYMPA


Sympa propose dans sa version 3.3.3 le support de LDAP pour les trois fonctionnalits suivantes : lauthentification dans wwsympa, la constitution de listes dynamiques et lutilisation de filtres LDAP dans les scnarios. 22

Cette section du cours est une prsentation succincte et pratique de LDAP, puis un guide pour la mise en uvre de LDAP dans sympa pour les trois cas cits pralablement. Lensemble des possibilits de paramtrage nest pas dcrit ; pour cela, il faut se rfrer la documentation de rfrence de sympa : http://listes.cru.fr/sympa/doc/sympa/ .

12.1 Prsentation succincte de LDAP


Ce paragraphe dcrit dune manire trs grossire et pratique la technologie LDAP. LDAP est un protocole standard permettant un accs ais et rapide des informations dannuaire au sens large. Les serveurs LDAP sont optimiss pour dlivrer trs rapidement des donnes en lecture ; lcriture de donnes via le protocole LDAP est en gnral coteux en temps. Les informations qui seront proposes par un serveur LDAP seront donc relativement stables, comme par exemple des informations concernant le personnel dune entreprise, ses serveurs, les objets de communication proposs par ces serveurs, Les informations LDAP sont en gnral structures dun manire hirarchique. 12.1.1 Structure dune base LDAP La structure dun serveur LDAP est appele DIT ( Directory Information Tree). Un serveur LDAP na pas de connaissance intrinsque du type dobjets quil publie ; les diffrents objets sont dfinis par un schma propre un serveur LDAP. La racine dun serveur LDAP est appele root DN. Un exemple de root DN pourrait tre : DC=MonEtablis,,DC=fr. Cet exemple laisse supposer une quivalence entre dnominations de racine LDAP et DNS ; elle nest absolument pas obligatoire (mais souhaitable pour des raisons dunicit ?). Un objet LDAP est identifi par son Distinguish Name (DN), qui est unique dans une base LDAP, et qui dcrit son adresse dans larborescence. Ainsi, le DN dun objet LDAP situ dans le container OU=People de la racine prcdente pourrait tre le suivant :
DN : uid=tartempion,OU=People,DC=MonEtabliss,DC=fr

La partie la plus gauche du DN (ici, uid=tartempion) est appele RDN : Relative Distinguish Name. Elle apparat galement comme attribut de lobjet. 12.1.2 Composition dun objet LDAP Une entre LDAP est adresse par son DN. Elle est compose de diffrents attributs, qui nont aucune signification pour le serveur (hormis les attributs objectClass et userpassword). Ces attributs peuvent tre multi-valus. - Lattribut objectClass dtermine le type dobjet manipul ; en fait, le schma dune base LDAP dcrit lensemble des objectClass supports par cette base, et pour chaque objectclass, les attributs possibles et obligatoires. - Lattribut userPassword : il permet daffecter un mot de passe li une entre LDAP ; ce mot de passe peut tre en clair, ou crypt. Si le mot de passe est crypt, le type de cryptage est dfini en faisant prcder le mot de passe du type de cryptage, encadr des caractres { et } ; par exemple, {sha}xxxxxxx pour un mot de passe de type sha. Un objet LDAP comporte ncessairement un attribut objectClass, multi-valu. Le RDN fait partie des attributs de lentre LDAP. Lunicit du RDN nest pas assure dans la base LDAP. La syntaxe et lutilisation de chaque attribut est dcrite dans le schma : numrique, case sensitive, mono ou multi-valu, obligatoire ou non, .

23

12.1.3 Groupes LDAP Deux classes LDAP standard dfinissent des objets de type groupe : groupOfUniqueNames et GroupOfNames. Ces objets comportent diffrents attributs banaliss, et un attribut multi-valu qui contient les DN des objets LDAP faisant partie du groupe ; cet attribut normalis a comme nom respectif uniqueMember ou Member, le premier tant plus courant. De nombreuses interfaces LDAP dauthentification supportent ces groupes (et particulirement le premier, groupOfUniqueNames). 12.1.4 Niveau de protocole La dfinition standardise du protocole LDAP est actuellement en version 3. A ne pas confondre avec la version des diffrents serveurs LDAP (Iplanet : 5.xx, OpenLDAP : 2.xx, ). 12.1.5 Caractres accentus Depuis la version 3 du protocole LDAP, les caractres accentus sont cods en UTF8. 12.1.6 Format dchange Un format dchange dobjets LDAP a t normalis : le format LDIF ( ???). Les caractres qui ne sont pas ascii purs sont encods en format encode64. 12.1.7 Droits daccs Des droits daccs sont dfinis (ou non) au niveau du serveur LDAP afin de permettre laccs en lecture, criture, cration, , en fonction de lauthentification dans ce serveur. 12.1.8 Droulement dune requte LDAP Une requte LDAP se droule habituellement de la faon suivante : - Etablissement dune connexion TCP/IP au serveur LDAP (machine IP et port TCP). - Etablissement dune connexion logique (bind) auprs du serveur LDAP ; cette connexion logique est compose dun DN, et du mot de passe correspondant. une connexion anonyme est possible avec un DN et un mot de passe vides. - Gnration dune ou plusieurs requtes, porteuses des lments suivants : . le DN dune branche de recherche, ou de la racine du serveur. . la porte de la recherche : sub (comme subtree) pour un objet situ nimporte quel niveau de la sous-arborescence de la recherche; one pour un objet situ strictement au niveau de larborescence de recherche ; base pour lobjet lui-mme. . un filtre de recherche. - Eventuellement, la liste des attributs recherchs, et dautres options. - Rupture de la connexion logique (unbind) - Rupture de la connexion TCP Depuis la version 3 de LDAP, il est possible de gnrer une requte LDAP sans bind pralable ; dans ce cas, une connexion anonyme est suppose. 12.1.9 Filtres de recherche LDAP Le filtre LDAP le plus simple est de la forme (NomAttribut=ValeurAttribut) . Ainsi, pour interroger toutes les entres ayant lattribut cn valu toto, le filtre LDAP sera (cn=toto). La partie droite ValeurAttribut peut comporter le caractre * ; il remplace toute occurrence dun caractre quelconque. Il est possible (et mme frquent), de gnrer un filtre plus labor, comportant des oprateurs logiques : ET (&), OU (|), non ( !). Par exemple : 24

(&(objectClass=inetOrgPerson)(cn=math*)(|(serv=cri)(serv=pers))) Retourne toutes les entres de type inetOrgPerson, ayant lattribut cn commenant par math appartenant aux services cri ou pers. 12.1.10 Replica La mise en exploitation dun service LDAP fiable et performant ncessite bien souvent la mise en uvre de rplicas de la base LDAP. La technique de rplica nest pas dcrite dans le protocole LDAP ; elle est donc spcifique chaque implmentation. Trs souvent, le rplica est de type matre esclave. Dans le cas de lutilisation de rplicas, il faut paramtrer les clients afin quils puissent lancer les requtes vers un serveur de backup en cas dindisponibilit du premier serveur. 12.1.11 Paramtrage habituel dun client LDAP Les clients LDAP se paramtrent globalement de la mme manire. Comme on la vu prcdemment, ils ont besoin des paramtres suivants : - HOST : le nom de la machine supportant le serveur LDAP. - PORT : le port TCP correspondant au serveur LDAP. - SUFFIXE : la base de la recherche - SCOPE : la porte de la recherche - FILTRE : le filtre de recherche - Dans le cas o la requte ncessite un bind non anonyme, le DN et le mot de passe de bind seront indiqus dans le paramtrage. Dautres paramtres peuvent tres utiles en fonction de lapplication. Dans le cas dutilisation de rplicas, la syntaxe est trs souvent la suivante : HOST ldap1.univ.fr:392,ldap2.univ.fr:389 Prciser les attributs dsirs Lorsquon na pas besoin de tous les attributs des objets recherchs, il est souhaitable de prciser la liste des attributs dsirs; ceci peut limiter considrablement la quantit dinformations retournes lors des requtes. Prciser lobjectClass dans les requtes LobjectClass permet de slectionner le type dobjet que lon dsire atteindre. Il est frquents que le mme attribut soit prsent dans des objets de type diffrents. Ainsi, les attributs CN (Common Name), description, Authentifier avec LDAP Si ladministrateur du serveur LDAP a paramtr correctement le serveur LDAP, il est impossible tout client de lire lattribut user password. La technique dauthentification laide de LDAP est la suivante : connexion anonyme, afin de rcuprer le DN de la personne identifier, en fonction de lidentifiant pass par lutilisateur : exemple de requte : (&(objectCLass=inetOrgPerson)(uid=IdentifiantUser)) Bind avec le DN de lutilisateur, et le mot de passe saisi. Si le bind est accept, le mot de passe est valide.

12.1.12 Exemple dobjets LDAP

25

Voir en annexe 1 un exemple de type personne et un exemple de type groupe de personnes

12.2 Pr-Requis pour le support de LDAP dans sympa


Le module perl-ldap doit tre install sur la machine qui supporte le logiciel sympa pour pouvoir utiliser les fonctionnalits LDAP de sympa.

12.3 Utilisation de LDAP pour lauthentification dans wwsympa


12.3.1 Authentification dans wwsympa Linterface wwsympa est gomtrie variable en fonction du type dutilisateur connect. Les types dutilisateurs sont les suivants : - anonyme : utilisateur non logu dans linterface - abonn dune ou plusieurs listes - modrateur et/ou propritaire dune ou plusieurs listes - listmaster Les trois derniers cas ncessitent bien sr une authentification dans linterface wwsympa. De manire native, un utilisateur sauthentifie laide de son adresse mail et dun mot de passe qui est connu de sympa (mmoris dans la base de donnes sympa, de manire crypte, mais avec possibilit de dcryptage). Le mot de passe initial de lutilisateur est affect par sympa ; lutilisateur a la possibilit de le modifier ultrieurement via wwsympa. Il peut galement demander sympa de lui transmettre son mot de passe par messagerie. 12.3.2 Authentification avec LDAP Pour bnficier de lauthentification LDAP, il faut pralablement paramtrer sympa ; ceci se fait laide du fichier auth.conf, qui se trouve dans le rpertoire ~sympa/etc/. Lorsque ce fichier est prsent, et convenablement paramtr, lauthentification dans wwsympa se fait de cette manire : - Lutilisateur saisit son adresse mail ou son login LDAP, et son mot de passe. - Si le nom dutilisateur correspond une adresse mail valide, sympa tente dauthentifier via son mcanisme natif dcrit auparavant. - Si lauthentification native choue, ou si le nom dutilisateur ne correspond pas une adresse mail valide, wwsympa va tenter dauthentifier dans LDAP. 12.3.2.1 Fichier auth.conf Voir la documentation de rfrence http://listes.cru.fr/sympa/doc/sympa/node8.html#SECTION00811000000000000000 Ce fichier est constitu de un ou plusieurs paragraphes qui commencent par le mot cl ldap. Chaque paragraphe est compos dun ensemble de couples mot-cl <-> valeur. Des commentaires sont possibles en commenant la ligne par le caractre #. Les lignes vides sont ignores. Voici un exemple de paragraphe ldap :
ldap host ldap.univ.fr:389 suffix ou=People,dc=univ,dc=fr scope one timeout 10 get_dn_by_uid_filter (&(objectclass=inetOrgPerson)(uid=[sender]))

26

get_dn_by_email_filter (|(mail=[sender])(maildrop=[sender])) email_attribute mail alternative_ email_attribute maildrop

Les mot cl host, suffix, scope correspondent au paramtrage de base dune requte LDAP comme expos auparavant. La directive host permet le support du mcanisme de rplica ; ainsi, on peut prciser plusieurs serveurs LDAP ; sympa tentera le bind dans le premier, puis dans le suivant si le premier est indisponible, etc La syntaxe est la suivante :
host ldap.univ.fr:389,ldap2.univ-fr:392,ldap1.univ.fr:389

Comme indiqu prcdemment, lutilisateur peut se loguer dans linterface wwsympa soit par un login LDAP, soit en saisissant son adresse email. Dans le premier cas, le filtre utilis pour la recherche sera celui prcis par la directive get_dn_by_uid_filter, et dans le second, par la directive get_dn_by_email_filter. A noter que wwsympa remplacera les occurrences de "[sender]" par le login entr par lutilisateur dans linterface wwsympa. Grce lun ou lautre filtre, lentre LDAP correspondant lutilisateur est charge. wwsympa va ensuite contrler le mot de passe grce un bind LDAP avec le DN de cette entre, et le mot de passe saisi. Si ce bind est accept, lutilisateur est authentifi. Il reste maintenant wwsympa faire le lien entre cet utilisateur LDAP et un utilisateur sympa, connu par son adresse mail. Cest le rle des directives email_attribute et alternative_email_attribute. email_attribute indique le nom de lattribut LDAP qui contient ladresse mail canonique de la personne. alternative_email_attribute est une directive facultative, qui contient le nom dune liste de noms dattributs qui seraient utiliss dans lannuaire LDAP pour des alias de messagerie. Dans le cas de lexemple ci-dessus, on peut remarquer que lattribut mail contient ladresse de mail canonique, et que lattribut maildrop contient ventuellement une adresse mail alternative (alias). 12.3.2.2 Authentification vers plusieurs serveurs LDAP Il peut y avoir plusieurs paragraphe LDAP dans le fichier auth.conf Dans ce cas, wwsympa tente lauthentification LDAP dabord vers le serveur qui est dcrit dans le premier paragraphe LDAP, puis vers le second si la tentative est infructueuse, et ainsi de suite. Il serait par exemple possible, pour une universit qui dispose dun serveur LDAP du personnel et un serveur des tudiants, de permettre une authentification vers ces 2 serveurs distincts. 12.3.3 Changements dans wwsympa suite une authentification de type LDAP wwsympa garde la trace du type dauthentification laide dun cookie. Certains menus proposs par wwsympa sont modifis dans le cas dune authentification LDAP. En particulier, dans les prfrences utilisateur, le changement de mot de passe nest plus propos. En outre, si lutilisateur dispose dadresses mail alternative dans lannuaire LDAP, sympa propose de les mmoriser dans ses tables internes. Utilisation Intranet 27

A luniversit de Nancy2, lauthentification pour laccs aux diffrentes ressources informatiques (intranet, messagerie, ) sappuie sur lannuaire LDAP, et sur lattribut uid qui contient le login de lutilisateur. Il est donc important que les utilisateurs utilisent la mme technique dauthentification pour laccs wwsympa. Sympa est utilis pour des listes internes, et galement pour des listes totalement ou partiellement externes. Nous voulions donc que wwsympa puisse toujours authentifier avec son mcanisme natif pour les personnes externes, mais ncessairement avec ldap et le login pour les utilisateurs internes. Ceci a t ralis dune manire simple grce la souplesse des templates sympa : un petit bout de code javascript a t ajout au fichier de template ( loginbanner.tpl) qui gre le login des utilisateurs. Si ce login est une adresse de messagerie, et sil se termine par univ-nancy2.fr, un message davertissement apparat et demande lutilisateur dentrer son login LDAP.

12.4 Listes issues de requtes LDAP


Sympa sait grer diffrents types de listes : les listes natives, qui sont mmorises dans sa base de donnes, et des listes de type include. Ceci correspond la directive user_data_source du fichier de configuration de la liste, qui peut prendre respectivement les valeurs database ou include. Les listes de type include sont gnres laide de requtes auprs de serveurs SQL ou LDAP. Il existe deux types de dfinition de listes LDAP : ldap_query et ldap_2level_query. Voir la documentation de rfrence : http://listes.cru.fr/sympa/doc/sympa/node14.html#SECTION001420000000000000000 12.4.1 Listes de type ldap_query Ces listes sont gnres dynamiquement laide dune simple requte LDAP. Elles sont dfinies dans le fichier de configuration de la liste grce au paragraphe include_ldap_query En voici un exemple :
include_ldap_query host ldap.univ.fr port 389 suffix ou=People,dc=univ,dc=fr scope one timeout 10 filter (&(objectClass=n2pers)(mail=*)(n2PersType=E)(n2PersServ=ufrdroit)) attrs mail select first

On reconnat le paramtrage habituel dune requte LDAP. Ici, on dsire construire une liste des personnels enseignants de lUFR droit, ayant lattribut mail valu. La directive attrs donne le nom de lattribut contenant ladresse mail. Dans le cas o une requte non anonyme est ncessaire, il est ventuellement possible de prciser le DN (user) et le mot de passe (passwd) de connexion. La directive select permet dindiquer sympa comment agir dans le cas o lattribut contenant ladresse mail serait multivalu. La liste gnre sera donc constitue de toutes les personnes rpondant la requte saisie.

28

12.4.2 Listes de type ldap_2level_query Ces listes sont gnres dynamiquement laide de requtes LDAP complexes, deux niveaux. Une premire requte permet de rcuprer une liste de valeurs ; ensuite, pour chaque valeur rcupre, une nouvelle requte permettra de rcuprer les adresses mail correspondantes. Ce type de listes permet en particulier de traiter les groupes LDAP (groupOfNames ou groupOfUniqueNames). Le paragraphe include_ldap_2level_query permet de dfinir une telle liste. En voici un exemple, qui traite des groupes de type groupOfUniqueNames :
include_ldap_2level_query host ldap.univ.fr port 389 suffix1 ou=Groups,dc=univ,dc=fr scope1 one filter1 (&(objectClass=groupOfUniqueNames)(|(cn=cri)(cn=ufrmi))) attrs1 uniquemember select1 all suffix2 [attrs1] scope2 base filter2 (objetcClass=n2pers) attrs2 mail select2 first

Ici, la premire requte permet de construire la liste des DN des personnes qui sont dans les groupes LDAP cri ou ufrmi ; la seconde rcupre lattribut mail correspondant. La valeur [attrs1] peut tre utilise dans les directives suffix2 et/ou filter2 ; sympa la remplacera dune manire itrative par toutes les valeurs retournes par la premire requte. Lorsque [attrs1] est utilis pour la directive suffix2, lattribut retourn par la premire requte doit tre obligatoirement un DN. Il est ainsi logique de positionner lattribut scope2 la valeur base. A noter quil est possible de faire des traitements trs complexes, avec lutilisation de la directive regex1 (ou regex2) qui permettent dappliquer un filtre de type expression rgulire au rsultat de chaque requte ; il faut pour cela que select1 (ou select2) ait la valeur regex. A noter galement que les listes de ce type peuvent gnrer une charge importante : si la liste comporte n membres, il y aura n + 1 requtes LDAP pour la constituer. Sympa permet de dfinir plusieurs paragraphes de type include pour une liste. Il est ainsi possible de constituer une liste issue de plusieurs requtes LDAP et/ou SQL. 12.4.3 Listes include et cache sympa Afin damliorer les performances de sympa et wwsympa et de limiter la charge vers les servers SQL ou LDAP avec les listes include, sympa gre un cache de ces listes dynamiques. Ainsi, ces listes ne sont par regnres chaque fois que sympa ou wwsympa en a besoin, mais conserves dans un cache interne. La frquence de rafrachissement de ce cache est paramtre dans le fichier de configuration de la liste, grce la directive ttl. 12.4.4 ttl et cache de listes Sympa rafrachit les listes lors dune rfrence celle-ci et son le ttl est dpass. Wwsympa ne fait pas ce travail qui peut induire de trs long temps de rponse si les listes dynamiques 29

sont nombreuses et si les sources externes sont lentes. En consquence wwsympa partage avec sympa.pl un fichier .db dont sympa assure la mise jour. Nous prvoyons remplacer ce cache partag via un fichier par un cache en base de donnes accessibles tout les processus sympa.pl, wwsympa.fcgi, task_manager.pl, bounce.pl et permettant dobtenir les mmes performances pour les listes en mode include que pour les listes en mode database. Il sera alors possible de grer les bounces et de positionner les options dabonnement pour toutes les listes. La mise jour du cache de listes en base de donnes sera confie au gestionnaire de taches (task_manager.pl)

12.5 Utilisation de filtres ldap dans les scnarios


12.5.1 Les Filtres Nomms :Named Filters (NF) Ces filtres apportent le support de LDAP an niveau des scnarios. Un filtre va dfinir une requte LDAP. Il sera utilisable dans le champ condition dun scnario et permettra donc dindiquer une liste de personnes autorises effectuer une action, laide de cette requte. Les Filtres Nomms (on utilisera labrviation NF) sont des fichiers ascii crits dans le rpertoire ~sympa/etc/search_filters/. Ces fichiers ont ncessairement pour extension '.ldap'. Voici un exemple de contenu du NF "EnsLettres.ldap" :
host ldap2.univ.fr:392,ldap.univ.fr:389 suffix ou=People,dc=univ,dc=fr scope sub filter (&(objetClass=n2pers)(mail=*)(n2Type=E)(n2Campus=lettres) (|(mail=[sender])(maildrop=[sender])))

Cest un paramtrage banal dune requte LDAP. Sympa va remplacer toutes les occurrences de [sender] par le contenu de [sender] des scnarios utilisant ce filtre, en gnral, ladresse mail de lutilisateur. Dans cet exemple, le filtre va donner certains droits lutilisateur ayant un attribut mail valu, de type E (Enseignant ?) appartenant au campus Lettres et dont lattribut mail ou maildrop correspond son adresse mail. 12.5.2 Utilisation des Filtres Nomms (NF) dans un scnario Les NF sont utilisables dans le champ condition dun scnario. La syntaxe est : search(NomDuFiltre). Voici un exemple de scnario utilis pour les personnes ayant le droit denvoyer un mail dans une liste ; il est appel send.EnsLettresSimple :
title.fr Envoi autorise aux abonnes de la liste et aux enseignants du campus lettres is_subscriber([listname],[sender]) smtp,md5,smime do_it search(EnsLettres.ldap,[sender]) smtp,md5,smime do_it

Ici, tous les abonns de la liste listname et les enseignants du campus lettres ont le droit denvoyer un mail la liste listname. 12.5.3 Etendue de ces filtre

30

Les filtres nomms associs aux scnarios Sympa offrent des possibilits de personnalisation trs pousss. Ainsi, les diffrents rles grs par Sympa (listmaster, owner, moderator, subscriber) pourraient ventuellement et au cas par cas tre issus de requtes LDAP. Cache des filtres nomms Sympa gre un cache des filtres nomms. Lors de la mise au point, il est ncessaire darrter/relancer sympa pour tester les modifications apportes un filtre.

12.6 Conclusion Sympa et LDAP


Sympa offre nativement des possibilits de personnalisation trs puissantes. Le support LDAP est bien intgr diffrents niveaux, et profite donc de ces possibilits. Quelques amliorations sont encore souhaitables, en particulier du ct de la gestion des listes dynamiques et de leur rafrachissement ; ceci est prvu dans les prochaines versions de Sympa. Dautre volutions lies LDAP semblent tre prvues ; il suffit de consulter les sources pour sen convaincre.

13 Configuration MySQL
Sympa requiert les services dune base de donnes pour la gestion des abonns (au choix MySQL, PostgreSQL, Oracle ou Sybase). Nous prsenterons ici les tapes de configuration avec MySQL en particulier car nous lutilisons sur notre plate-forme de dveloppement. Pour la suite, nous supposons que vous disposez dun serveur MySQL.

13.1 Installer les modules Perl


Sympa accde sa base de donnes via DBI, linterface standard de Perl pour laccs aux bases de donnes. Vous devez installer le module DBI, non fourni avec la distribution standard de Perl. DBI requiert un driver (DBD) pour chaque type de base de donnes. Modules Perl installer : DBI >= 1.06 DBD::mysql >= 2.407 (fourni avec Msql-Mysql-modules) Linstallation de ces modules est prise en charge lors de linstallation de Sympa. Vous pouvez galement les obtenir : Sous forme de tar.gz sur le site CPAN le plus proche (http://cpan.cict.fr/) Sous forme de RPM sur RPMFind (http://www.rpmfind.net/linux/RPM/Development_Languages_Perl.html) Si vous installez le module DBD::mysql sous forme de RPM, il requiert linstallation du RPM mysql-devel, fournissant les librairies daccs MySQL.

13.2 Crer la base de donnes


La base de donnes de Sympa est constitue de 2 tables : 31

user_table : les prfrences utilisateurs subscriber_table : les donnes relatives labonnement

Le script de cration de la base (ci-dessous) est fourni avec la distribution (src/etc/script/create_db.mysql). Utilisez le client en ligne mysql pour excuter le script :
# /usr/bin/mysql u root p < create_db.mysql CREATE DATABASE sympa; ## Connect to DB \r sympa CREATE TABLE user_table ( email_user varchar (100) NOT NULL, gecos_user varchar (150), password_user varchar (40), cookie_delay_user int, lang_user varchar (10), PRIMARY KEY (email_user) ); CREATE TABLE subscriber_table ( list_subscriber varchar (50) NOT NULL, user_subscriber varchar (100) NOT NULL, date_subscriber datetime NOT NULL, update_subscriber datetime, visibility_subscriber varchar (20), reception_subscriber varchar (20), bounce_subscriber varchar (30), comment_subscriber varchar (150), PRIMARY KEY (list_subscriber, user_subscriber), INDEX (user_subscriber,list_subscriber) );

Une fois la base cre, vous pouvez dfinir les droits daccs la base sympa pour lusager sympa :
# /usr/bin/mysql u root p mysql> grant all on sympa.* to sympa@localhost identified by your_password; mysql> flush privileges;

13.3 Configurer sympa.conf


Les paramtres daccs la base de donnes sont dfinis comme suit dans sympa.conf :
## extrait de sympa.conf db_type mysql db_host localhost db_name sympa db_user sympa db_passwd your_password

Contrairement aux clients en ligne (mysql, mysqladmin), les librairies C et Perl (DBI) n'exploitent pas par dfaut le fichier de configuration my.cnf. Pour prendre en compte votre my.cnf, ajoutez dans sympa.conf : db_options mysql_read_default_file=/etc/my.cnf

32

Le paramtre de liste user_data_source dfinit le type de source de donnes pour les abonns. Sa valeur par dfaut est database (utilisation de la base de donnes dcrite dans sympa.conf). Les autres valeurs possibles sont include et file.

13.4 Outils daccs la base de donnes


13.4.1 mysql mysql est le client en ligne de commande fourni avec MySQL. Il permet d'excuter des requtes SQL. Il implmente les commodits du shell Bash : compltion, historique. Exemple : liste des abonns de la liste cours-sympa-20.03.2002
# /usr/bin/mysql sympa mysql> SELECT user_subscriber,date_subscriber FROM subscriber_table WHERE list_subscriber = 'cours-sympa-20.03.2002'; +--------------------------------------+---------------------+ | user_subscriber | date_subscriber | +--------------------------------------+---------------------+ | alain.defrance@univ-xxx.fr | 2002-02-13 10:05:24 | | ameyer@xxx.fr | 2002-02-26 08:18:41 | | anas.agoumi@etu.xxx.fr | 2002-02-12 12:00:17 | | andre.lagadec@xxx.gouv.fr | 2002-02-08 15:37:20 | ........................................ +--------------------------------------+---------------------+ 79 rows in set (0.01 sec)

13.4.2 phpMyAdmin phpMyAdmin permet de grer vos bases de donnes MySQL via une interface web. Il permet facilement (sans connaissance SQL) de : crer/modifier/supprimer des bases/tables/champs rechercher/insrer/diter/supprimer des enregistrements

14 Optimisations / rpartition de charge

14.1 Optimisation de la diffusion


Sympa ninclut pas de client SMTP, il utilise les services du MTA local (sendmail, postfix, exim ou qmail) via un appel systme (les destinataires sont passs en paramtre, le message envoy dans le STDIN). Plusieurs paramtres de sympa.conf dfinissent linterfaage avec le MTA : sendmail, sendmail_args : programme (compatible sendmail) utiliser pour la diffusion des messages. maxsmtp (dfaut 20) : nombre maximum de processus sendmail fils lancs par Sympa. nrcpt (dfaut 25): nombre max. de destinataires par appel sendmail ; dfinit le facteur de groupage. avg (dfaut 10): nombre maximum de domaines internet diffrents par appel sendmail.

33

Le facteur de groupage (paramtres nrcpt et avg) est paramtr en fonction de plusieurs critres : le MTA utilis : les MTAs ont un comportement trs variable vis vis du groupage. Sendmail value le groupage sur la base des seuls destinataires passs en paramtre, mais il peut envoyer une seule fois le corps du message pour plusieurs destinataires. Postfix tente une remise vers les MTA adjacents en conservant le groupage des destinataire (plusieurs RCPT TO : pour un seul DATA). Qmail neffectue aucun groupage. la taille des listes : dans une petite liste, il y a peu dabonns du mme domaine, on atteint rapidement avg destinataires par paquet. Dans une grande liste, avec plus dabonns par domaines, cest le paramtre nrcpt qui bornera le groupage. la politique anti-spam des sites distants : certains ISP (Yahoo au moins) rejettent certaines sessions SMTP dont le nombre de destinataires est jug suspect. Veillez donc maintenir le paramtre nrcpt en-dessous dun seuil raisonnable. Ce diagramme reprsente lvolution du nombre de processus sur un serveur Sympa. Les processus fils de Sympa, une fois leur tache termine, ne sont librs par sympa.pl que lorsque ce dernier atteint son quota (maxsmtp) ou une fois le traitement du message courant termin. Cela conduit des librations massives de processus (en dents de scie). Les processus defunct noccupent cependant aucune ressource sur le serveur.

34

14.2 Optimisation avec sendmail


Deux objectifs concurrents peuvent tre recherchs : 1. augmenter la ractivit du service en diminuant le temps de traitement dune diffusion : on augmente le maxsmtp quitte charger la machine. 2. diminuer la charge de la machine (baisser maxsmtp) par exemple pour conserver pendant des distributions copieuses de bons temps de rponse sur linterface www; quitte ce que celle-ci dure plus longtemps. On obtient un bon compromis en optimisant les processus fils de Sympa. 14.2.1 Non canonisation des adresses Dans Sympa, lappel Sendmail est bloquant jusqu ce que sendmail obtienne un ventuel CNAME du DNS pour chacun des destinataires passs en argument. Cette rsolution nest pas ncessaire ; par ailleurs si le DNS est peu disponible, le serveur de listes est paralys. Nous mettons cette fonctionnalit en place uniquement pour les appels sortant via Sympa en utilisant un sendmail.cf spcifique Sympa. Dans cette configuration, le nombre de processus sendmail en mmoire augmente beaucoup plus vite. Voir FEATURE nocanonify . 14.2.2 Abaisser les timers On peut optimiser certains timer des sessions SMTP dont les valeurs par dfaut colle assez mal avec l'tat lamentable de la disponibilit de certains mailhosts. En effet ces timers qui s'expriment en minutes voir en 10zaines de minutes. Il suffit alors d'une douzaines de serveurs saturs parmis vos gros correspondants pour que les sessions SMTP disponibles soit alors constitues majoritairement (voir exclusivement) de sessions en attente de rponse du serveur distant. Ces ajustement vise faire baisser rapidement le nombre de sendmail en machine pour traiter d'autres messages. Bien entendu, il faut rgler la gestion des spools en consquence. Le timer iconnect est le plus intressant, nous avons positionn :
O Timeout.iconnect=17s

Voir les options de configuration.

14.3 Optimisation MySQL


14.3.1 Structure de la base Depuis la version 3.23 de MySQL, les tables sont stoques par dfaut au format MyISAM, offrant de meilleures performances que son prdcesseur ISAM. Pour passer d'anciennes tables au format MyISAM :
#/usr/bin/mysql sympa mysql> ALTER TABLE subscriber_table TYPE = MYISAM; Query OK, 46307 rows affected (4.49 sec)

35

Records: 46307 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE user_table TYPE = MYISAM; Query OK, 140355 rows affected (8.51 sec) Records: 140355 Duplicates: 0 Warnings: 0

Le commande myisamchk permet d'effectuer des opration de maintenance sur les tables de la base de donnes. Exemple : augmentation de la taille du buffer pour le tri
# /usr/bin/myisamchk O sort_buffer_size /var/lib/mysql/sympa/*.MYI

La requte OPTIMIZE TABLE permet galement d'optimiser une table MySQL en librant l'espace non utilis et en dfragmentant les fichiers de donnes.
# /usr/sbin/mysql sympa mysql> OPTIMIZE TABLE subscriber_table; +------------------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +------------------------+----------+----------+----------+ | sympa.subscriber_table | optimize | status | OK | +------------------------+----------+----------+----------+ 1 row in set (7.74 sec)

14.3.2 Configuration du serveur Au dmarrage, le dmon MySQL lit les valeurs de ses options dfinies dans le fichier de configuration /etc/my.cnf. Pour obtenir la liste des options au runtime :
# mysqladmin variables +-----------------------------------------------+ | Variable_name | Value | +-----------------------------------------------+ | ansi_mode | OFF | | back_log | 50 | | basedir | /usr/ |

Des exemples de fichiers de configuration adapts diffrents usages sont fournis avec la distribution MySQL (my-huge.cnf, my-large.cnf, my-medium.cnf, mysmall.cnf), chez nous sous /usr/share/mysql/. Vous pouvez les prendre comme base pour optimiser votre installation. Par dfaut le serveur MySQL ne logue pas les oprations effectues sur les bases. Pour le faire loguer, ajoutez lentre suivante votre /etc/my.cnf : log = /var/log/mysql

14.4 Rpartition de charge


Il peut tre intressant de rpartir le service de listes sur plusieurs serveurs. La solution la plus simple consiste dporter les applications extrieures Sympa : la base de donnes (MySQL, PostgreSQL,) : voir le paramtre db_host de sympa.conf. le serveur de messagerie (sendmail , postfix, ) : vous pouvez transmettre le trafique sortant du serveur de listes un autre serveur (ou plusieurs en faisant du Round Robin DNS). 36

Voir lexprience dutilisation de mini_sendmail Vous pouvez galement sparer les composantes de Sympa, savoir : traitement des mails : sympa.pl interface web : wwsympa.fcgi gestion des rapports de non-remise : bounced.pl gestion des archives web : archived.pl Mais la sparation de ces applications imposent de partager les donnes entre les serveurs : base de donnes toutes les applications doivent y avoir accs fichiers de configuration (sympa.conf & wwsympa.conf) NFS ~sympa/etc/ NFS ~sympa/spool/ NFS ~sympa/expl/ NFS les rapports de non-remise (utiliss par bounced.pl et wwsympa.fcgi) les archives web (utilises par archived.pl et wwsympa.fcgi)

15 Linstallation de Sympa
Linstallation de Sympa est simple. Aprs avoir tlcharg la version courante partir su site http://www.sympa.org, et avoir cr un usager ddi sympa.sympa, extraire les fichiers du tar, puis procder linstallation :
% ./configure % make % make install

Bien entendu, ceci nest pas suffisant. Il faut aussi installer ou configurer les produits annexes tel que lantivirus, le serveur de messagerie, la base de donnes et le serveur http. Vous trouverez dans le manuel de rfrence de Sympa les indications pour raliser ces configurations. Un certains nombres de choix devront tre fait au moment de linstallation ou plus tard lors de lvolution du service : Choix de lagent de messagerie (sendmail, exim, easy-sendmail, postfix, qmail) Choix dun SGBD (MySQL, Sybase, Oracle, PosgreSQL) Choix dun antivirus (MacAfee/Uvscan, Fsecure/fsav, Sophos, AVP, Trend Micro/VirusWall) Choix dun serveur http (Apache, Roxen) Choix dune installation binaire (.rpm, .deb) ou source. Un seul serveur ou rpartition sur plusieurs machines

16 Intgration de Sympa avec dautres applications 16.1 Partage de lauthentification web

37

Sympa vous permet dunifier votre systme dauthentification avec vos autres applications web. Il utilise un cookie HTTP pour transporter les donnes dauthentification ; ce cookie ne contient cependant aucune notion de privilge. 16.1.1 Utiliser le systme dauthentification de Sympa Dans ce cas de figure, vous rutilisez les fonctions de login, de logout et de rappel de mots de passe de Sympa. Vous pouvez intgrer le formulaire de login dans votre application, le CGI appel restant wwsympa.fcgi. A votre charge dexploiter le cookie HTTP dauthentification de Sympa (vrification, extraction de ladresse email). Pour que wwsympa.fcgi redirige lutilisateur de faon transparente vers votre application, ajouter /referer la fin de lURL dappel wwsympa. Exemple : <A HREF=/wws/loginrequest/referer>Page de Login</A> 16.1.2 Sympa reconnat votre authentification Votre application gre le systme dauthentification, mais positionne un cookie Sympa pour tre reconnue de lui. Lapplication doit partager le secret de Sympa (paramtre cookie de sympa.conf) utilis pour gnr le cookie. Dans ce cas, Sympa reconnatra vos utilisateur comme authentifis. Exemple dintgration de ce type : Rearsite.

16.2 Partage des donnes


16.2.1 Dfinition des listes par extraction dune base de donnes Par dfaut les membres dune liste sont des abonns, grs dans la base de donnes ddie Sympa. Les membres de la liste peuvent tre le rsultat dune requte dans une base de donnes (ou un annuaire LDAP). Dans ce cas, la liste des membres est mise jour rgulirement (paramtre de liste ttl) par introgation de la base. Plusieurs sources de donnes peuvent tre dfinis pour une mme liste. Extrait de config de liste :
# les membres de la liste sont extraits dune user_data_source include source de donnes externe

# Mise jour des donnes toutes les 12h (43200 s) ttl 43200 # Dfinition dune liste dtudiants include_sql_query db_type mysql host sqlserv.admin.univ-x.fr user stduser passwd mysecret db_name studentbody sql_query SELECT DISTINCT email FROM student connect_options mysql_connect_timeout=5

Cache des donnes : actuellement le cache des donnes est stock dans un fichier DB. De prochains dveloppements devraient permettre de grer le cache dans la base de donnes (MySQL), ce qui aurait pour avantages de : - permettre de dfinir des listes mixtes include/abonnement

38

- rendre disponibles les options dabonnement tous (y compris extraction DB) - diminuer la taille des processus Sympa, les donnes tant gres par MySQL 16.2.2 Ajouter vos donnes la base de donnes de Sympa Vous avez la possibilit dtendre la structure des tables user_table et subscriber_table pour y ajouter des champs pour vos usages propres (exemple : systme de paiement pour les listes). Sympa prservera ces champs et les rendra mme disponibles dans les templates et les scnarios. Les champs supplmentaires doivent tre dclars dans sympa.conf. Les champs ajouts la table subscriber_table sont visibles depuis linterface web dadministration des abonns. Extrait de sympa.conf :
# champs sup. dans subscriber_table db_additional_subscriber_fields reglement_ok,duree_abo # champs sup. Dans user_table db_additional_user_fields adresse_postale,num_rib

17 S/MIME et HTTPS
Le mot de passe nest pas la seule faon de sauthentifier. Lmergence des infrastructures de gestion de clefs (IGC) permet de mettre en uvre des mthodes la fois plus sres et plus pratiques. Sympa utilise une librairie de chiffrement (OpenSSL) permettant dexploiter les certificats X509 dans toute lapplication. Cette section a pour objet de vous aider mettre en uvre ces fonctionnalits rapidement. Pour en savoir plus on se reportera au manuel de rfrence de Sympa et larticle Sympa S/MIME and Sympa mailing lists manager http://listes.cru.fr/sympa/documentation/article_smime/sympasmime.html .

17.1 HTTPS
Comme chacun le sait on distingue deux modes de fonctionnement de HTTPS : Le mode chiffrement sans authentification des clients. Dans ce cas on nutilise pas de certificat client ; le seul certificat X509 en jeux tant celui du serveur. Ce type dinstallation est particulirement simple raliser, mais le service rendu par la couche SSL se limite au chiffrement des changes qui ne peuvent tre intercepts par quiconque. Dans le cas de Sympa, les donnes sensibles sont bien entendu les mots de passe et les cookies. Une telle installation consiste : o Installer OpenSSL et mod_ssl pour Apache o Installer un certificat serveur Se rfrer la trs bonne documentation de mod_ssl (http://www.modssl.org) pour ces oprations. La seule modification de la configuration de sympa consiste mettre jour la variable wws_url de sympa.conf (https au lieu de http). Le mode chiffrement avec authentification des clients. Dans ce cas, les clients prsentent (automatiquement) leur certificat. Sympa a t modifi pour exploiter les donnes extraites du certificat client ce qui permet de supprimer la phase dauthentification. Le bouton login de sympa ne saffiche plus et toutes les pages sont affiches avec les

39

privilges de la personne identifie par ladresse de messagerie prsente dans son certificat avec la mthode dauthentification smime. Ce rsultat est obtenu en combinant les deux lments de configuration suivant : o Le serveur Apache est configur pour demander un certificat au client : SSLVerifyClient Optional ou SSLVerifyClient Require o Loption de mod_ssl StdEnvVar est positionne dans Apache pour permettre ce cgi dhriter dans des variables denvironnement extraites des certificats :
SSLOptions +StdEnvVars

17.2 S/MIME
Sympa peut aussi exploiter les certificats X509 travers des messages signs et/ou chiffrs reus et/ou mis par lui. Le but est alors dauthentifier le sender dun message en se basant sur la signature S/MIME du message ou de diffuser des messages chiffrs. 17.2.1 Validation des signatures S/MIME Openssl tant install, il suffit de renseigner les paramtres openssl et trusted_ca_options
de sympa.conf. On a bien entendu intrt dassurer la cohrence avec les autorits de confiance dans le contexte dApache en partageant les mmes fichiers de certificats au format PEM : Exemple extrait de la configuration du serveur de listes du CRU : ## path to OpenSSL command openssl /usr/local/ssl/bin/openssl # directory where trusted CA certificat are stored trusted_ca_options -CAfile /usr/local/apache/conf/ssl.crt/ca-bundle.jhgjh

Sympa peut alors valider les signatures de message S/MIME. 17.2.2 Diffusion chiffre La diffusion chiffre de messages dans une liste est possible condition quun certificat X509 et la clef prive associe aient t installs pour la liste. Cette installation peut tre ralise avec le script ~sympa/bin/p12topem.pl partir dun certificat et de sa clef au format pkcs#12. Le message de bienvenue de la liste est alors sign (en utilisant S/MIME) ce qui permet aux interfaces de messageries des abonns de stocker ce certificat. Ils peuvent alors poster des messages chiffrs destination de la liste comme vers tout autre correspondant. Sympa ne peut chiffrer un message lintention dun abonn que sil a dans son cache le certificat de celui-ci. Il faut donc quil ait reu au moins un message sign de chaque abonn des listes pour lesquelles le chiffrement est mis en uvre. En effet, Sympa conserve dans le rpertoire ~sympa/expl/X509-user-certs les certificats extraits de tout les messages signs reus. Il est donc conseill dimposer labonnement via un message sign S/MIME pour ces listes (utilisation de la mthode dauthentification smime dans le scnario subscribe).

40

18 Les ressources disponibles


Cet article est disponible sur le site www.sympa.org dans la rubrique documentation . Vous y trouverez galement la documentation de rfrence aux formats HTML, Postscript et PDF. Une foire aux questions rpond aux questions les plus souvent poses dans les listes de diffusion. Enfin les listes sur Sympa (sympa-fr, sympa-users, sympa-dev, sympa-announce et sympa-translation) vous sont ouvertes. Nous rappelons que des archives web de ces listes sont disponibles. Plusieurs entreprises fournissant un support commercial sur Sympa sont rfrences dans la rubrique technical support du site web. Le code de Sympa est gr avec CVS (Concurrent Versions System). Le serveur CVS et sa version web vous donnent un accs la version de Sympa en cours de dveloppement. Dune manire gnrale, il nest pas raisonnable dinstaller chez vous la branche courante de larbre CVS qui na peut-tre par encore t valid en exploitation au CRU. Laccs web CVS peut vous tre utile pour connatre ltat davancement dun module, rechercher un bugfix, rcuprer un patch.

41