Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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
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.
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.
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.2
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
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.
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)
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.
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.
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).
12
title.us expire of bounces older than 10 days before message distribution /ACTION expire_bounce (10) next ([execution_date] + 1d, ACTION)
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,
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.
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
9.2.3
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 :
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 :
log_smtp :
niveau de log. : adresses email des listmasters spares par des , . taille maximale des messages (redfinition possible pour chaque liste).
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
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.
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]
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>
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
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--
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/ .
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.
25
26
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.
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)
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.
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.
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;
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.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
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
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
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
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.
# 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
41