Post on 04-Apr-2015
Co
mité R
éseau d
es Un
iversités
1
Administration d’un service de listes de diffusion avec
Serge Aumont & Olivier SalaünSeptember 2004
Co
mité R
éseau d
es Un
iversités
2
Pourquoi Sympa par le CRU ?• Les listes de diffusions sont un service de base des
universités et établissements d’enseignement supérieur.
• Première génération de serveur de listes de diffusion pour accompagner la migration de EARN. (Serveur de listes du CRU = 8 millions de messages diffusés en Octobre 2004)
• Toujours un déficit de l’offre par rapport aux besoins• La logique du libre n’est pas seulement d’utiliser les
réalisations des autres• Notre tutelle est maintenant convaincue des retombées
favorables de cet effort en particulier en terme d’image• Sympa est notre matériel d’expérimentation favori
(pages dynamiques, cgi/MySQL, LDAP, S/MIME, antivirus, SSO, SOAP, XML …)
Co
mité R
éseau d
es Un
iversités
3
Les inscrits
• 300 inscrits dont :– Majorité : universités– 30 Recherche (CNRS, INRA, INRIA)– 26 Rectorats– 16 IUFM– 14 xx.gouv.fr– Collectivités locales– Entreprises privées
Co
mité R
éseau d
es Un
iversités
4
Les utilisateurs
• 4 000 sites connus• Education :
– 90% des universités françaises +IUFM + Rectorats– Universités étrangères (Europe, USA, Amérique du
sud, Asie du sud est)
• Ministères et agences gouvernementales• Fournisseurs de service & SSII• Associations• Entreprises privées
Co
mité R
éseau d
es Un
iversités
5
Le support(http://www.sympa.org)
1. Manuel de référence
2. FAQ
3. Archives des listes
4. Google site:sympa.org « mon problème »
5. Articles et présentations
6. Listes de discussion (sympa-fr, sympa-dev)
7. Support commercial
8. Sympa-authors@cru.fr
Co
mité R
éseau d
es Un
iversités
6
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
7
Ce qui ne sera PAS abordé aujourd’hui...
• Présentation exhaustive des fonctionnalités utilisateur
• Installation « pas à pas » de Sympa
• Fonctionnalités S/MIME
Co
mité R
éseau d
es Un
iversités
8
Evolution des versions
2.7.3 3.4
4.1
3.4.4
4.1.2
HEAD
Juillet 2000
WWSympa inclusS/MIME
Octobre 2002
Include 2AuthN LDAPVirtual robotsTask managerDocuments partagésAntivirus
Mars 2004
SOAPAuth. CAS, ShibbolethGestion auto. BouncesHTML Area
Fin 2004/début 2005
TT2Familles de listesInclude ownersModération documentsCanal RSSUpload zip
Co
mité R
éseau d
es Un
iversités
9
Distribution de Sympa
• sympa-xx.tar.gz– Préserve les personnalisations– Gestion automatique des dépendances CPAN– Maj automatique des structures de données
• Paquets :– Debian : sympa 4.1.2 dans unstable– Mandrake : maintenu par le rectorat de Nantes– RedHat : pas maintenu !!
• CVS : ne pas installer une version « anonyme » !!
Co
mité R
éseau d
es Un
iversités
10
Mise à jour de votre installation
• Incompatibilités :– indiquées dans le fichier NEWS (lignes *****)– affiché au début du make install
• Installation/Maj des modules CPAN :– Géré automatiquement au make install
• Modification de la structure de la base :– Pour MySQL mise à jour auto, au démarrage de
sympa.pl• Préservation de vos personnalisations :
– Seul le répertoire /home/sympa/bin/ est écrasé
Co
mité R
éseau d
es Un
iversités
11
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
12
listes.cru.fr
recherche.gouv.fr jres.org
sympa-dev@cru.fr
cru.fr
pki-fr@cru.fr
super listmaster
listmaster
owner
editor
Serveur
Robotsvirtuels
Listes
Familles
Organisation d’un serveur Sympa
Co
mité R
éseau d
es Un
iversités
13
Une organisation hiérarchique
• Mecanisme d’héritage s’applicant aux :– Fichiers de configuration et aux paramètres– Fichiers d’authorisation (scenarios)– Templates web– Messages de service (templates)
• Il est souhaitable de définir les défauts au niveau le plus haut
• Le niveau le plus haut est la distribution de Sympa (/home/sympa/bin/etc/)
Co
mité R
éseau d
es Un
iversités
14
Un robot par défaut ou pas…
• Le robot par défaut peut :1. Contenir les listes du service principal
2. Servir uniquement pour définir des défauts communs à tous les robots virtuel (dans ce cas il faut définir un paramètre host jamais utilisé)
• La solution (2) offre plus de souplesse
Co
mité R
éseau d
es Un
iversités
15
Les rôles dans Sympaau niveau global
• Listmaster du site : – défini dans sympa.conf– Gère le service au niveau système
(personnalisation, création de robots virtuel, familles,…)
• Listmaster d’un robot virtuel : – Défini dans robot.conf– Valide les créations de listes, assure le
support auprès des propriétaires de listes
Co
mité R
éseau d
es Un
iversités
16
Les rôles dans Sympaau niveau d’une liste
• Propriétaire : – Gère la population des abonnés (ajout, suppression,
bounces)– Configure la liste (paramètres, templates, scenarios)
• Propriétaire privilégié :– Gère les propriétaires– Accès à des paramètres de configuration sensibles
(send,…)• Modérateur :
– Gère les contenus de la liste (messages, documents partagés)
Co
mité R
éseau d
es Un
iversités
17
Organisation des données
• Des fichiers pour :– La configuration (globale, des listes)– Les templates– Les « spools »– Les archives
• Une base de données pour :– Les préférences utilisateurs– Les membres des listes (nombreux attributs)– Les « gérants » des listes (cache uniquement ;
référence = fichier de configuration de la liste)
Co
mité R
éseau d
es Un
iversités
18
Organisation / les répertoires
/home/sympa/bin/ # Exécutables/home/sympa/bin/etc/ # Configurations par défaut/home/sympa/etc/ # Configurations du site/home/sympa/etc/scenari/ # Scenarios d’autorisation/home/sympa/etc/mail_tt2/ # Messages de service/home/sympa/etc/web_tt2/ # Templates web/home/sympa/etc/family/ # Répertoire des modèles de familles/home/sympa/etc/mon-robot/ # Configurations robot virtuel/home/sympa/expl/ # Répertoire des listes/home/sympa/expl/maliste/ # Répretoire d’une liste/home/sympa/expl/X509r-certs/ # Certificats utilisateurs/home/sympa/spool/ # Les “spools”/home/sympa/src/ # Pour stoquer vos tar.gz…/var/bounce/ # Stockage des bounces/home/httpd/html/arc/ # Les archives web
Co
mité R
éseau d
es Un
iversités
19
Organisation / les fichiers de configuration
/etc/sympa.conf # Configuration du site/etc/wwsympa.conf # Configuration relative à l’interf. web/home/sympa/etc/topics.conf # Les catégories de listes/home/sympa/etc/edit_list.conf # Qui peut éditer quel paramètre/home/sympa/etc/auth.conf # Configuration de
l’authentification/home/sympa/etc/mon-robot/robot.conf # Configuration d’un robot virtuel/home/sympa/etc/family/ma-famille/edit_list.conf/home/sympa/etc/family/ma-famille/param_constraint.conf # Contraintes
param. listes/home/sympa/expl/maliste/config # Fichier de configuration d’une
liste
Co
mité R
éseau d
es Un
iversités
20
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
21
Les démons
archived.pl
Internal database
bounced.pl
sympa.pl
wwsympa.fcgi
spool
sympasoap.fcgi
task_manager.pl
config
templates
Co
mité R
éseau d
es Un
iversités
22
List config
Circuit d’un complexe mail
message
Sendmailroot.bin
msg
sympa.pluid sympa
outgoing auth mod
message message message message
confirm valid
confirmvalid
message
message
messagemessage mysql
Co
mité R
éseau d
es Un
iversités
23
Interactions avec la messagerie
• exim, postfix, qmail, sendmail
• sendmail sympa.pl via spool msgma-liste: “| /etc/smrsh/queue ma-liste”
-rwsr-xr-x 1 sympa sympa 23971 Oct 13 14:55 /etc/smrsh/queue*
• sendmail bounced.pl : idem, bouncequeue
Co
mité R
éseau d
es Un
iversités
24
Interactions avec la messagerie
• sympa.pl et wwsympa.pl /usr/bin/sendmail
• wwsympa.pl et sympa.pl newaliases-rwxr-xr-x 1 sympa sympa 5933 Oct 15 12:24 alias_manager.pl*
-rwsr-x--- 1 root sympa 22820 Oct 13 14:55 aliaswrapper*
sendmail.mc :define(`ALIAS_FILE', `/etc/mail/aliases,/etc/mail/sympa_aliases')dnl
• maxsmtp pour contrôler la charge du serveur• nrcpt pour optimser le groupage. Attention à ne pas
passer pour un spammeur
Co
mité R
éseau d
es Un
iversités
25
Interactions avec Syslogd
• serveur de log unix
• Voir :– syslog.conf– log_socket_type dans sympa.conf– log_level dans sympa.conf et wwsympa.conf– option –d pour chaque démon (sauf fastcgi)
• Attention à la charge induite
Co
mité R
éseau d
es Un
iversités
26
Interaction avec le systeme
MySQL ou autre SGBD pour le backend :
1. Le backend de type fichier (user_data_source file) est abandonné : perfs déplorables, manque fonctionnel, plus de support.
2. Le SGBD de référence est MySQL :• versions beta testées uniquement avec MySQL• Création et mise à jour automatique de la structure
des tables (au lancement de sympa.pl)
Co
mité R
éseau d
es Un
iversités
27
Apache
• Un uid/gid unique pour wwsympa.fcgi, archived.pl, bounced.pl and sympa.pl.
1. wwsympa.fcgi : sympa.sympa + bit s
2. Serveur apache dédié avec uid sympa
3. Virtual host + directive User dans httpd.conf1. attention borne sup pour uid/gid)
http://httpd.apache.org/docs/suexec.html#install
2. attention directive User et Goup avant FastCgiServer
4. wrapper en C
Co
mité R
éseau d
es Un
iversités
28
Apache fastcgi
FastCgiServer /home/sympa/bin/wwsympa.fcgi -processes 2
<Location /wws> SetHandler fastcgi-script </Location>
ScriptAlias /wws /home/sympa/bin/wwsympa.fcgi
• Fastcgi est requis
Co
mité R
éseau d
es Un
iversités
29
OpenSSL
• openssl : binaire de OpenSSL,
• cafile capath : bundle des certificats d’AC (fichier et répertoire). Partage avec la config https recommandée
Co
mité R
éseau d
es Un
iversités
30
OpenSSL
• key_password :mot de passe pour protéger les clés privées de chaque liste quand celle-ci dispose de certificat pour le chiffrement
• Installation d’un certificat de liste :p12topem.pl --pkcs12 cert.p12 –listname foo --robot cru.fr
Co
mité R
éseau d
es Un
iversités
31
Antivirus
• Pour ne pas traiter les bounces
• mailhost et listhost différents
• Produit supportés : uvscan, avp, fsav, sophos, clamav
• Sympa.confantivirus_path /usr/local/bin/uvscan
antivirus_args --summary --secure
antivirus_notify nobody
Co
mité R
éseau d
es Un
iversités
32
MhOnarc
• Le moteur de conversion utilisé par archived et le module de modération par le web
• Archives stokées dans un répertoire séparé (partition recommandée), voir arc_path
• Config de listeweb_archive
Access private
quota 10000
Co
mité R
éseau d
es Un
iversités
33
archived.pl
MhOnarc
sympa.pl
wwsympa.fcgi
…/list@dom/arctxt/xx
…/list@dom/msgxx.html
removerebuild
mhonarc_ressources
tt2
…/spool/outgoing
Co
mité R
éseau d
es Un
iversités
34
Co
mité R
éseau d
es Un
iversités
35
htmlarea
• Compatible IE 5.5 et + et Mozilla 1.4 et + (Gecko)
• Installer htmlarea quelque part sur le même host
• http://sf.net/projects/itools-htmlarea/
• Renseigner htmlarea_url (wwsympa.conf)
Co
mité R
éseau d
es Un
iversités
36
Structure de la base
Tables : user_table, subscriber_table, admin_table
user_table
email_user
gecos_user
password_user chiffrement réversible
cookie_delay_user permanence de session
lang_user
attributes_user cache des attributs hérités
Co
mité R
éseau d
es Un
iversités
37
Structure de la base
subscriber_table
list_subscriber Ex: sympa-fr
user_subscriber Ex: dupont@cru.fr
date_subscriber # jour depuis 1970
update_subscriber Ex: 1097056590
visibility_subscriber Ex: conceal
reception_subscriber Ex: digest
Co
mité R
éseau d
es Un
iversités
38
Structure de la base / subscriber
bounce_subscriber date de premier bounce, date de dernier bounce, nombre de bounce, type du dernier bounce, ex : 1097056590 1099888679 22 5.1.1
comment_subscriber gecos par liste
subscribed_subscriber 1 si add or sub
included_subscriber 1 si inclusion dynamique
include_sources_subscriber id de la source d’inclusion
bounce_score_subscriber euristique de désabonnement automatique, task_manager.pl
Co
mité R
éseau d
es Un
iversités
39
Structure de la base
admin_table
user_admin Ex: dupont@cru.fr
list_admin Ex: sympa-fr
role_admin owner|editor
profile_admin Ex: privileged
reception_admin Ex: nomail
comment_admin gecos
info_admin Info privée
Co
mité R
éseau d
es Un
iversités
40
Structure de la base
date_admin date création
update_admin date update
subscribed_admin 1 si definition statique
included_admin 1 si definition par include
include_sources_admin Id de la source d’incl
Co
mité R
éseau d
es Un
iversités
41
MySQL : les droits
En fonctionnement normal
• select_priv• insert_priv• update_priv• delete_priv
Initialisation ou mis à jour
• create_priv
• drop_priv
• index_priv
• alter_priv
Créer un usager avec les droits suivants :
Co
mité R
éseau d
es Un
iversités
42
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
43
Robots virtuels
• Equivalent Sympa des domaines virtuels de sendmail et des hosts virtuels d’Apache
• Une seule installation de Sympa
• Les démons servent indistinctement tout les robots
• Pas de création en ligne du robot
Co
mité R
éseau d
es Un
iversités
44
Installation messagerie
• Créer le domaine dans le DNS
• Installer un domaine virtuel sendmailvirtual-domains:virtual.org
virtusertable:@virtual.org virtual.org-%1%3
• Créer les alias virtual.org-sympa: "| ../bin/queue sympa@virtual.org"
virtual.org-listmaster: "| ../bin/queue listmaster@virtual.org"
• template list_alias.tt2 a perrsonnaliser selon la forme de vos alias
Co
mité R
éseau d
es Un
iversités
45
Installation apache
FastCgiServer /home/sympa/bin/wwsympa.fcgi -processes 3
<VirtualHost 190.213.92.1> ServerAdmin webmaster@virtual.org DocumentRoot /var/www/virtual.org ServerName listes.virtual.org
<Location /wws> SetHandler fastcgi-script </Location> ScriptAlias /wws /home/sympa/bin/wwsympa.fcgi </VirtualHost>
Co
mité R
éseau d
es Un
iversités
46
Installation robot virtuel/home/sympa/etc/virtual.org/robot.conf• http_host : comparé à $ENV{‘SERVER_NAME’}
pour déterminer quel robot solliciter.Exemple : http_host listes.virtual.org
• wwsympa_url base URL Exemple wwsympa_url http://listes.virtual.org/wws
Co
mité R
éseau d
es Un
iversités
47
Installation robot virtuel
• soap_url• cookie_domain • email • title • default_home • create_list
• lang
• log_smtp
• listmaster
• max_size
• dark_color, light_color, text_color, bg_color, error_color, selected_color, shaded_color
• Les variables suivantes peuvent être positionnée pour un virtual robot , elles remplacent les valeures par défaut spécifiées dans sympa.conf :
Co
mité R
éseau d
es Un
iversités
48
Exemple de robot.conf
http_host demo.sympa.org
wwsympa_url http://demo.sympa.org/wws
title A demo mailing list service
listmaster bid@cru.fr,dule@cru.fr
create_list public_listmaster
default_home lists
lang us
default_shared_quota 5000
soap_url http://demo.sympa.org/soap
Co
mité R
éseau d
es Un
iversités
49
Personnaliser les robots
• /home/sympa/etc/virtual.org/web_tt2/, • /home/sympa/etc/virtual.org/wws_templates/,
• /home/sympa/etc/virtual.org/mail_tt2/, • /home/sympa/etc/virtual.org/templates/,
• /home/sympa/etc/virtual.org/scenari/ • /home/sympa/etc/virtual.org/edit_list.conf• /home/sympa/etc/virtual.org/topics.conf
Co
mité R
éseau d
es Un
iversités
50
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
51
Authentification
• Sympa doit être compatible avec la politique d’authentification de l’établisssement (LDAP, SSO, Certificats X509)
• Toujours des usagers exterieurs. Comment traiter les exceptions ?
Co
mité R
éseau d
es Un
iversités
52
Authentification
• Obligation de panacher les méthodes d’authentification
• Choix du système d’authentification en fonction de l’usager concerné.
• Préserver la cohérence de l’authentification à travers les différentes interfaces.
Co
mité R
éseau d
es Un
iversités
53
Méthodes d’authentication Interface
Challenge de confirmation mail
Password (allocation par email) web
LDAP AuthN backend web
SSO: CAS
SSO: Shibboleth
Web & SOAP
Web
certificat utilisateur Mail: S/MIME
Web: HTTPS
Co
mité R
éseau d
es Un
iversités
54
Login X509
Authentification classique, backend LDAP ou Sympa
WAYF
Co
mité R
éseau d
es Un
iversités
55
Auth.conf
• Décrit les services d’authentification
• Décrit comment on choisit un service d’authentification lors du login.
• Pour chaque service, décrit comment obtenir l’email de la personne quand celle-ci est authentifiée avec un UID.
Co
mité R
éseau d
es Un
iversités
56
authentification LDAP
• Si un service d’authentification LDAP est sélectionné :
1. Bind anonymous, recherche LDAP pour collecter le user_id à partir du email (si fourniture d’un email)
2. Bind user_id+ password pour vérifier le passwd
3. Bind anonymous pour collecter le email avec le user_id (si non fourni par l’utilisateur)
Co
mité R
éseau d
es Un
iversités
57
Authentification LDAPldap host ldap1.cru.fr:392,ldap2.cru.fr:392 timeout 20 suffix dc=cru,dc=fr get_dn_by_uid_filter (uid=[sender]) get_dn_by_email (|(mail=[sender])(aliasmail=[sender])) alternative_email_attribute maildrop email_attribute mail scope sub
Co
mité R
éseau d
es Un
iversités
58
Central Authentication Service
• Yale university web Single Sign On
• Usage universitaire croissant
• Basé sur des redirections et un ticket qui doit être validé par le serveur CAS
• canal Uportal pour Sympa
• CAS est trop centralisé, cohabitation avec d’autres systèmes d’authentification difficile.
Co
mité R
éseau d
es Un
iversités
59
CAS
ClientSympa
Redirection ticket=17429
Welcomesmith@dom.ed
u
Who is he ?ticket=17429
ID=smith
Search email
for ID=smith
Email :smith@dom.ed
u
LDAP
redirection.Is that user
authenticated?
Sympa interaction with one CAS server
Co
mité R
éseau d
es Un
iversités
60
CAS 1
CAS 2
ClientSympa
Welcomesmith@dom.edu
WAYF ?
redirection.Is that user
authenticated?
User : ?Password ?
yesticket=17429Who is he ?
ticket=17429
ID=smith
Interaction with a chosen CAS server
Co
mité R
éseau d
es Un
iversités
61
CAS 1
CAS 2
ClientSympa
non blocking redirection.Is that user
authenticated ?no
Non blocking redirection.Is that user
authenticated?
yesticket=17429
Welcomesmith@dom.edu
Who is he ?ticket=17429
ID=smith
Interaction with multiple CAS servers
Co
mité R
éseau d
es Un
iversités
62
Un serveur CAS est en panne ?
• Toute redirection est sans issue
• La configuration de Sympa permet de choisir pour chaque serveur CAS si on essaye une redirection non bloquante.
• Surveiller disponibilité des serveurs CAS ?
Co
mité R
éseau d
es Un
iversités
63
“CAS logout” ?
• Sympa mémorise la méthode d’authentification utilisée pour adapter le bouton logout
• Sympa efface son cookie de session et redirige l’utilisateur sur l’URL de logout CAS
• Insuffisant car CAS ne propose pas de service de logout centralisé
Co
mité R
éseau d
es Un
iversités
64
Generic SSO
• Pour tout SSO si– un module apache en frontal d’une partie des
applications pour l’authentification– délivre à cette application une authentification dans
une variable d’environnement.– Que cette authentification soit sous forme d’un email
ou d’un id permettant de trouver l’email dans un annuaire LDAP
• Exemple « authentification basic Apache », Shibboleth, PAPI
• Sympa reste utilisable en mode anonyme
Co
mité R
éseau d
es Un
iversités
65
Generic SSO / auth.conf
• Paragraphe generic_sso• service_name (nom du service d’authentification pour
l’utilisateur)• service_id ( pour contruire l’URL avec authentification
http://listes.domaine/wws/sso_login/service_id• email_http_header
variable d’environnement contenant le email• http_header_prefix
prefix des variables d’environnement à concerver comme attribut de la personne (mise en cache dans la base)
• Si email_http_header n’est pas défini : tous les paramètres pour get_email_by_uid idem CAS
Co
mité R
éseau d
es Un
iversités
66
cas base_url https://cas.cru.fr:443 on_blocking_redirection off login_path /login service_validate_path /validate logout_path /logout auth_service_name CRU ldap_host ldap.cru.fr:392 ldap_get_email_by_uid_filter(&(uid=[uid])(objectClass=eduPerson)) ldap_timeout 10 ldap_suffix dc=cru,dc=fr ldap_scope sub ldap_email_attribute mail
ldap host ldap1.univ-nancy2.fr:392,ldap2.univ-nancy2.fr:392 timeout 20 suffix dc=univ-nancy2,dc=fr get_dn_by_uid_filter (uid=[sender]) get_dn_by_email (|(mail=[sender])(aliasmail=[sender])) alternative_email_attribute maildrop email_attribute mail scope
user_table negative_regexp (univ\-nancy2)\.fr
Co
mité R
éseau d
es Un
iversités
67
TODO authentification• Supprimer le chiffrement réversible des
mots de passe, ne stocker que l’empreinte des mots de passe.
• Plus de rappel de mot de passe, seulement une réinitialisation
• Formulaire de login en HTTPS (chiffrement du flux contenant le mot de passe)
• Bouton d’identification par certificat client par config dans les templates
Co
mité R
éseau d
es Un
iversités
68
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
69
Le contrôle d’accès
• En général les applications implémentent 2 notions, public / privé :– Droit de s’abonner, de diffuser des messages,…
• Sympa permet d’exprimer des notions plus fines en testant le contexte :– L’appartenance de l’utilisateur à un groupe – Les attributs d’un message– L’origine de la requête– Le niveau d’authentification– …
Co
mité R
éseau d
es Un
iversités
70
Gérer le contrôle d’accès
• Séparation authentification/autorisation• Définition de règles pour le contrôle d’accès :
– aux listes (subscribe, send, review, visibility,…)– au service (création de liste, catégories de listes)
• Configurable pour chaque liste (+ défauts)• Equivalence entre les 3 interfaces (mail, web,
soap)• Personnalisable grâce aux scénarios
d’autorisation (100 scénarios distribués avec Sympa)
Co
mité R
éseau d
es Un
iversités
71
Les scénarios d’autorisation
• Un scénario est évalué pour accorder/refuser l’accès à un service de Sympa :– ainsi l’interface web est adapté au profil de l’utilisateur (seules
les fonctions accessibles sont proposées)
• Un scénario est constitué d’un ensemble de règles ordonnées
• Une règle est composée de :– la condition– les méthodes d ’authentification– l’action (décision)
• Le scénario comporte un titre décrivant son fonctionnement (utilisé lors du paramétrage de la liste)
Co
mité R
éseau d
es Un
iversités
72
Exemples de scénarios...
is_editor([list->name],[sender]) smtp,smime -> do_itis_subscriber([list->name],[sender]) smtp,smime -> do_ittrue() smtp,smime -> reject
• Contexte :– Diffusion des messages
• Fonctionnalité : – Liste de discussion privée
Co
mité R
éseau d
es Un
iversités
73
Exemples de scénarios...
is_editor([list->name],[sender]) smtp,smime -> do_itis_subscriber([list->name],[sender]) smtp,smime -> do_ittrue() smtp -> request_authtrue() md5,smime -> do_it
• Contexte :– Diffusion des messages
• Fonctionnalité : – Liste de discussion privée – Confirmation pour les non abonnés
Co
mité R
éseau d
es Un
iversités
74
Exemples de scénarios...
is_editor([list->name],[sender]) smtp,md5,smime -> do_itmatch([msg_header->Content-type],/multipart/) smtp,md5,smime -> editorkeyis_subscriber([list->name],[sender]) smtp,smime -> do_ittrue() smtp -> request_authtrue() md5,smime -> do_it
• Contexte :– Diffusion des messages
• Fonctionnalité : – Liste de discussion privée– Confirmation pour les non abonnés– Modération des messages multipart
Co
mité R
éseau d
es Un
iversités
75
Exemples de scénarios...
is_editor([list->name],[sender]) smtp,md5,smime -> do_itis_subscriber([list->name],[sender]) smtp,md5,smime -> do_it
match ([remote_host],/unicaen\.fr$/) md5,smime -> do_it
match([sender],/unicaen\.fr$/) md5,smime -> do_it
true() md5,smime -> reject
• Contexte :– Accès aux archives web
• Fonctionnalité : – Autoriser l’accès depuis l’intranet– Autoriser l’accès pour les utilisateurs authentifiés
ayant une adresse email locale– Autoriser l’accès pour les abonnés, depuis n’importe
où
Co
mité R
éseau d
es Un
iversités
76
Syntaxe des scénarios (1)
• Les conditions :– is_subscriber(),is_owner(),is_editor(),is_listmaster()– equal(), match(), search()– true()
• Les variables :– [sender], [user->attr], [subscriber->attr],
[user_attributes->attr]– [list->param], [conf->param] – [remote_host], [remote_addr], [env->var]– [msg_header->field], [msg_body],[msg_part->type],
[msg_part->body], [msg_encrypted], [is_bcc] |
Co
mité R
éseau d
es Un
iversités
77
Syntaxe des scénarios (2)
• Les méthodes d’authentification :– smtp– md5– smime– pgp (bientot)
• Les actions :– do_it [,notify | quiet], reject(<tpl_name>)– request_auth, owner, editor, editorkey,
listmaster
Co
mité R
éseau d
es Un
iversités
78
Services utilisant les scénarios
• Diffusion des messages• Abonnement• Désabonnement• Ajout d’abonnés• Suppression d’abonnés• Accès à un document• Edition d’un document• Lister les abonnés
• Accès aux archives• Visibilité d’une liste• Accès aux information
sur la liste• Création d’une liste• Visibilité d’une
catégorie• …
Co
mité R
éseau d
es Un
iversités
79
Exemple de scénarioexploitant l’annuaire LDAP
• Contexte :– Droit de s’abonner à la liste étudiante feministe-l
• Fonctionnalité : – Limité l’abonnement en fonction d’un attribut LDAP de
l’utilisateur
# female_students.ldaphost ldap.utexas.edu:389, ldap2..utexas.edu:389suffix dc=utexas,dc=edufilter &((EduPersonAffiliation = student)(mail = [sender])
(EduPersonGender = female))scope sub
filter (‘female_students.ldap’,,[sender]) smtp,md5,smime -> do_it
true() smtp,md5,smime -> owner
Co
mité R
éseau d
es Un
iversités
80
Les scénariosExemple d’organisation
• Montrer l’organisation des fichiers/home/sympa/bin/etc/scenari/access_web_archive.closedaccess_web_archive.intranet…
/home/sympa/etc/scenari/include.send.headersend.intranet:ignoretopics_visibility.cru…
/home/sympa/etc/demo.sympa.org/scenari/include.subscribe.header…
/home/sympa/etc/family/mafamille/scenari/…
/home/sympa/expl/cru.fr/sympa-users/scenarisend.private_nofrench…
Co
mité R
éseau d
es Un
iversités
81
Co
mité R
éseau d
es Un
iversités
82
Scénarios / Personnalisation
• Se baser sur les scénarios existants (/home/sympa/bin/scenari/)
• Installer le nouveau scénario au niveau du site, du robot ou de la liste
• Prise en compte d’une modification sur un scénario :– touch /home/sympa/expl/maliste/config
• Inclusion include.action.header• Pour ignorer un scénario de la distribution :
– touch /home/sympa/etc/scenari/send.public:ignore
Co
mité R
éseau d
es Un
iversités
83
Intégration avec LDAP
• 3 niveaux d’intégration en fonction des besoins :– Filtres LDAP : permettent de personnaliser un
scénario– Définition dynamiques des membres et/ou
des propriétaires d’une liste– Définition d’une famille de liste à partir de
l’annuaire LDAP
• Authentification basée sur LDAP
Co
mité R
éseau d
es Un
iversités
84
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
85
L’architecture Shibboleth
• Développé par Internet2• « Colle » entre des services de Single Sign-On
locaux pour permettre de partager des ressources entre Universités
• Les 3 composants de l’architecture Shibboleth :– Identity Provider : installé dans l’organisation d’origine
de l’utilisateur ; en frontal devant le service d’authentification et la base utilisateurs
– Service Provider : installé devant la ressource web à protéger ; communique avec l’Identity Provider
– WAYF (Where Are You From) : le composant central de l’architecture, partagé par plusieurs institutions ; il guide l’utilisateur jusqu’à son Identity Provider
Co
mité R
éseau d
es Un
iversités
86
Shibboleth et SympaBesoins / Prérequis
• Besoin :– Construire des listes de diffusion inter-universitaires– Donner accès à une liste en fonction d’attributs
utilisateurs (gérés par son établissement)– Pas de gestion de comptes utilisateurs sur le serveur
de listes• Prérequis pour chaque organisme :
– Avoir un service d’authentification– Installer la partie Identity Provider de Shibboleth – Partager une nomenclature commune des attributs
utilisateurs (formations, catégorie de personnels,…)
Co
mité R
éseau d
es Un
iversités
87
Interaction entre Sympa et Shibboleth
• WWSympa délègue l’authentification à Shibboleth
• Sympa est une ressource protégée par la brique Service Provider de Shibboleth
• Shibboleth fournit des attributs utilisateurs à Sympa (adresse email requise)
• Sympa exploite les attributs Shibboleth pour :– Personnaliser l’interface web– Adapter les privilèges utilisateur
Co
mité R
éseau d
es Un
iversités
88
Zone publique
Zone àAccès restreint
login RessourceManager
Attributs
utilisateur
AttributeAuthority
HandleService
Identity Provider
WAYF
SHARSHIRE
Service Provider
identité attributs
ShibbolethSympa
Co
mité R
éseau d
es Un
iversités
89
Configuration
# Sympa configuration (auth.conf)
generic_sso
service_name InQueue Federation
service_id inqueue
http_header_prefix HTTP_SHIB
email_http_header HTTP_SHIB_EP_AFFILIATION
# Apache configuration
<Location /wws/sso_login/inqueue>
AuthType shibboleth
require affiliation ~ ^member@.+
</Location>
Co
mité R
éseau d
es Un
iversités
90
Contrôle d’accès basé sur des attributs Shibboleth
• Attributs utilisateur Shibboleth :– Hérités via des variables d’environnement– Stoqués comme des données de session dans la
base de Sympa (champ user_attribute)– Accessible depuis les scenarios
• Scenario sample rule:
# check if the user is a geology or archeology studentequal([user_attributes->SHIB_STUDY_BRANCH],’geology’) md5 -> do_itequal([user_attributes->SHIB_STUDY_BRANCH],’archeology’) md5 -> do_ittrue() smtp,md5,smime -> reject
Co
mité R
éseau d
es Un
iversités
91
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
92
Données personelles/archives
• Spammers use spam harvester• Googling (googliation) is a peril
Sympa solution :• Sympa hides emails using javascript (google
indexation is possible) or by a form (all automatic process blocked in archives)
• X-No-Archive header feld• Users can delete there own posts from archives
Co
mité R
éseau d
es Un
iversités
93
Protection des données personelles
• Mise en œuvre de la tracabilité des abonnements (demande de l’afnic S.Bortzmeyer)
• Objectif prouver l’OPT IN ou expliquer le OPT OUT
• Conserver les messages et les éléments d’authentification pour chaque abonnement
Co
mité R
éseau d
es Un
iversités
94
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
95
Listes de diffusion classiques
• ADD, DEL, SUB, UNSUBSCRIBE
• Taches administratives dupliquées pour maintenir la cohérence avec un référentiel
• Utilisation des listes comme un outil de gestion de groupes
• Abonnement de listes dans des listes (sous-listes)
Co
mité R
éseau d
es Un
iversités
96
Listes dynamiques
• Définition des listes d’abonnés directement via des sources de données quelconques du système d‘information :– fichiers locaux– autres listes locales– requêtes sql– filtres LDAP– autres listes d’un autre serveur diffusion (remote_lists
en désuétude)– URL (cgi !)
Co
mité R
éseau d
es Un
iversités
97
Dynamic mailing list
task_manager.pl
Internal database
SGBD
bounced.pl
sympa.pl
wwsympa.fcgi
TTL LDAPLDAP
fichiersfichiers
http://...
Co
mité R
éseau d
es Un
iversités
98
Include LDAP
include_ldap_query
host ldap.cru.fr,replica.cru.fr:387
suffix dc=cru, dc=fr
timeout 10
filter (&(student=math) (dc=fr))
attrs mail
select first
Co
mité R
éseau d
es Un
iversités
99
Include LDAP (contrib from Dalbec ysu.edu)
include_ldap_2level_queryhost ldap.univ.fr suffix1 ou=Groups,dc=univ,dc=fr scope1 one filter1 (&(objectClass=groupOfUniqueNames) (|
(cn=cri)) attrs1 uniquemember select1 all
First LDAP query to select a group
For each group member fetch his email adress
suffix2 [attrs1] scope2 base filter2 (objectClass=n2pers) attrs2 mail select2 first
Co
mité R
éseau d
es Un
iversités
100
Listes dynamiques / perf
Importance de l’objectif de performances• Aucune page délivrée par wwsympa.fcgi
sans évaluer toutes les listes (même lists ou help)
• Ldap_2_level_query impose une requête LDAP par abonné (des milliers)
1. Cache en base de donnée2. Gestion de la vie du cache : TTL3. Mise à jour asynchrone task_manager.pl
Co
mité R
éseau d
es Un
iversités
101
Uniquement avec include2
• Listes panachées ADD,DEL + include
• Include2 mode gestion par défaut
• Gestion des bounces
• Options d’abonnement (nomail très utile)
• Gestionnaire de groupes ?– En lecture seulement– Interrogation en SOAP (is_subscribers,
review)
Co
mité R
éseau d
es Un
iversités
102
demo
• Overview of list admin page
• List configuration overview (data_source)
• review
Co
mité R
éseau d
es Un
iversités
103
Listes dynamiques
• Définition des owners et editor de listes selon la même méthode.
• Idée : – abonnés = étudiants de maths– editor = enseignants de math– owner = responsable de la formation math
• Destiné à la gestion de listes par paquets
• Disponible dans la version 5.0
Co
mité R
éseau d
es Un
iversités
104
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
105
Pourquoi le concept de famille?
• On observe l’usage de script maison pour la création des listes
• Exemple tamu.edu : 30.000 listes
• Comment gérer les très grands nombres de listes de diffusion correspondants à des catégories de personnes ?
Co
mité R
éseau d
es Un
iversités
106
Pourquoi le concept de famille
• Dans le schéma initial, la création d’une liste on choisi un type de liste
• Le type de liste fait référence à un gabarit de config. (create_list_template/config.tt2)
• Cette info n’est pas conservée. Rien ne permet de s’assurer que la liste créée restera conforme au type de liste choisi.
Co
mité R
éseau d
es Un
iversités
107
Pourquoi le concept des familles
• Dans le cas de création de liste avec des scripts, il est impossible de gérer les ensembles de listes après leur création.– Le changement d’un détail dans la config du
paquet de liste oblige à régénérer toutes les listes et écrase les personnalisations éventuelles de chaque liste.
– On identifie pas les listes qui doivent disparaître
• Il faut un outil de gestion de familles de listes.
Co
mité R
éseau d
es Un
iversités
108
List families (Version 5)
• Les familles permettent la création et la gestion d’un très grand nombre de listes conformément à une politique
• La configuration d’une liste est complexe (une 50taine de paramètres)
• Les familles de listes simplifient la création en permettant de choisir un mode de fonctionnement sans entrer dans le détail du paramétrage
Co
mité R
éseau d
es Un
iversités
109
Family definition
Lists families in Sympa
<family><list>….</list></family>
List template param_constraint edit_list
List aList a
List aList A
Family instantiation
Data coming from information system. XML format
skeleton of configuration fileUse var that are defined in XML file required constraint for each
parameter (example review is private or owner)
For each parameter, defines who can edit it :(listmaster,privilegied owner or owner)
Co
mité R
éseau d
es Un
iversités
110
Family definition
Lists families in Sympa
<form><input type=..>…</form>
List template param_constraint edit_list
List AFamily instantiation
Data coming from web formSympa.pl –instantiate_family=ftest –input_file=data.xml
Co
mité R
éseau d
es Un
iversités
111
XML data and list templateJeu de données
<?xml version="1.0" ?> <family><list><listname>networking.ipv6</listname><family>my_profile</family><section>computer_science<section><option>networking</option></list><list><listname>…</listname><section>…</section>…</list></family>
config.tt2
subject students of [section]/[option]
title all students from department [section], course [option]
web_archive private
include_ldap_queryHost ldap.foo.edu:389,backup.foo.edusuffix dc=foo, dc=edufilter(&(section=[section])(option=[option]))attrs mail
owner_includeInclude_ldap_query…..
Co
mité R
éseau d
es Un
iversités
112
Qui modifie quoi dans la config ?
• Roles : owner, privileged owner, listmaster• Le owner de la liste a besoin de contrôler de
nombreux paramètres de sa liste• Le listmaster a besoin d’un contrôle sur le
fonctionnement de chaque famille de liste de chaque robot :– Ex :taille max d’un message d’une newsletter– Ex :Le créateur initial de la liste ne peut en abandonner
la responsabilité – ….
Co
mité R
éseau d
es Un
iversités
113
edit_list.conf
user_data_source owner,privileged_owner hiddenttl owner,privileged_owner hiddenshared_doc owner,privileged_owner writereview owner readreview privileged_owner writefooter_type owner,privileged_owner hiddenowner owner readowner.profile owner,privileged_owner readowner privileged_owner write
default listmaster write
Co
mité R
éseau d
es Un
iversités
114
param_constraint.conf
• Enumération des valeures autorisées pour une famille donnée
# very simple example# parameter edition controlsend private_smime, editor_keyweb_archive private,ownershared_doc.d_read private,ownerShared_doc.d_edit owner
Co
mité R
éseau d
es Un
iversités
115
Edition en ligne de la config
Formulaire d’édition auto-adaptatif :
• les rôles de la personne identifiée
• edit_list.conf
• param_constraint.conf
• (ordonné et coupé en plusieurs pages par paramètres interne au code)
Co
mité R
éseau d
es Un
iversités
116
Evolution d’une famille
• Le changement du jeu de données, du template ou de param_constraint entraîne la régénération des listes de la famille
• Certaines listes peuvent disparaître
• Sympa conserve les personnalisations faites via le web si elles sont compatibles avec param_constraint.conf
Co
mité R
éseau d
es Un
iversités
117
Lists families in Sympa
• Dispo en version 5.0
• Redéfinition des familles à chaque niveau– robot – site – distribution.
• Familles de listes = expression technique d’une politique de listes + création de listes par paquet
Co
mité R
éseau d
es Un
iversités
118
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
119
Les templates
• Dans Sympa, les templates permettent de séparer l’interface utilisateur du code
• Les templates sont utilisés pour définir :– l’interface web– les messages de service– les modèles de listes– les alias de messagerie
• Tous les templates sont personnalisables à différents niveaux :– site / robot / famille / liste
Co
mité R
éseau d
es Un
iversités
120
Les templates / format
• Jusqu’à la version 4.1.2, les templates utilisaient un format « propriétaire » (fichiers .tpl)
• Les versions à venir utilisent le format TT2 (http://www.tt2.org) – format proche des .tpl– migration automatique des .tpl en .tt2– Separation du HTML et des traductions– plus de divergence du nombre de templates
(auparavant un jeu par langue)
Co
mité R
éseau d
es Un
iversités
121
Les templates / organisation
• Les messages de service (mail_tt2/) :– 34 templates (message de bienvenue, fichier d’aide,
compilation des messages,…)
• Les templates web (web_tt2/) :– 67 templates : main.tt2 + bandeaux + templates
d’action
• Multi-linguisme :– [%|loc%]Chaine à traduire[%END%]– web_tt2/fr_FR/info.tt2
Co
mité R
éseau d
es Un
iversités
122
Le format TT2(voir http://www.tt2.org)
• Substitution de variables :– [% var %] ou [% struct.var %]
• Inclusions :– [% INSERT fichier %] ou [% PROCESS fic.tt2 %]
• Conditions :– [% IF var1 %]…[% ELSIF var2 %]…[%END%]
• Boucles :– [% FOREACH var IN liste %] …[% END %]
• Des filtres :– [% FILTER qencode %] Entête à encoder[%END%]
Co
mité R
éseau d
es Un
iversités
123
Exemple de message de serviceglobal_remind.tt2
Summary of your subscription (using the e-mail [% user.email %]).If you want to unsubscribe from some list, please save this mail.
Foreach list here is a mailto to use if you want to unsubscribe.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[% FOREACH l = lists %][% l %] mailto:[% conf.sympa %]?subject=sig%20[% l %]%20[% user.email %][% END %]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[% IF user.password %]
In order to authenticate on the web interface([% conf.wwsympa %])use your e-mail [% user.email %] and your password [% user.password %]
[% END %]
Co
mité R
éseau d
es Un
iversités
124
Exemple de template weblist_menu.tt2
……….[% IF is_editor %] [% IF mod_total == '0' %] No message to moderate [% ELSE %] Messages to moderate :<B> [% mod_total %]</B> [% END %] [% IF shared == 'exist' %] <BR><BR> [% IF mod_total_shared == '0' %] No document to moderate [% ELSE %] <B>Documents to moderate :<B> [% mod_total_shared %]</B> [% END %] [% END %][% END %]……….
Co
mité R
éseau d
es Un
iversités
125
Les templates / variables disponibles
• Pas (encore) de documentation exhaustive
• Se baser sur les templates distribués par défaut
Co
mité R
éseau d
es Un
iversités
126
Co
mité R
éseau d
es Un
iversités
127
Co
mité R
éseau d
es Un
iversités
128
Co
mité R
éseau d
es Un
iversités
129
Co
mité R
éseau d
es Un
iversités
130
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
131
SOAP en bref…
• « Web services » = SOAP
• SOAP = XML sur HTTP
• Appel procédural distant (alternative à XML-RPC, RMI)
• Indépendant du language de programmation
• Librairies disponibles : SOAP::Lite (Perl),Axis (Java), NuSOAP (PHP),…
Co
mité R
éseau d
es Un
iversités
132
Interface SOAP pour Sympa
• Permet d’utiliser les services de Sympa depuis une autre application
• Alternative à l’accès direct aux données de Sympa, préférable car :– Le format des données peut évoluer– L’authentification et le contrôle d’accès sont
préservés
• L’interface est principalement utilisée pour inclure un canal Sympa dans Uportal
Co
mité R
éseau d
es Un
iversités
133
SOAP dans Sympa
• Un nouveau FastCGI : sympa_soap_server.fcgi
• Accédé via Apache (versus standalone)
• Utilise la bibliothèque SOAP::Lite
• Description des services au format WSDL
• Utilisation des cookies HTTP pour maintenir la session (pb avec PHP)
Co
mité R
éseau d
es Un
iversités
134
Configuration du service SOAP
## extrait de httpd.confFastCgiServer /home/sympa/bin/sympa_soap_server.fcgi -processes 1ScriptAlias /sympasoap /home/sympa/bin/sympa_soap_server.fcgi
<Location /sympasoap> SetHandler fastcgi-script</Location>
## sympa.conf / robot.conf
soap_url http://my.server/sympasoap
Co
mité R
éseau d
es Un
iversités
135
Les services proposés
• Pour l’instant les fonctionnalités sont limitées :login, which, lists, subscribe, signoff, review
• Extensions envisagées (si utiles) : archives, création de liste, add, del,…
• Authentification par mot de passe ou par “ticket” (fonctionnalité “proxy” de CAS)
• Evolution possible vers SAML…
Co
mité R
éseau d
es Un
iversités
136
Exemple de client PHP(http://demo.sympa.org/sampleClient.php)
<?php
include('/home/sympa/bin/nusoap.php');
require_once('nusoap.php');
$soapclient->debug_flag=true;
global $soapServer;
$soapServer = "http://demo.sympa.org/wws/wsdl";
$soapclient = new soapclient($soapServer,'wsdl');
…
$res = $soapclient->call('authenticateAndRun',array($userEmail,$md5, 'subscribe', array($_GET['list'])));
if (gettype($res) == 'array') {
echo "<P ALIGN=\"center\"><FONT COLOR=\"#ff0000\">Subscription failed<BR>".$res['faultstring']." : ".$res['detail']."</FONT></P>\n";
}else {
echo "<P ALIGN=\"center\"><FONT COLOR=\"#99ccff\">Successfully subscribed</FONT></P>\n";
}
}
Co
mité R
éseau d
es Un
iversités
137
Un canal Sympa dans Uportal
• Utilisation de AXIS• Génération automatique d’un squelette (stub) à partir du
WSDL :– java org.apache.axis.wsdl.WSDL2Java -av
http://demo.sympa.org/wws/wsdl• Exemple de code client :
SympaSOAP loc = new SympaSOAPLocator();((SympaSOAPLocator)loc).setMaintainSession(true);SympaPort tmp = loc.getSympaPort();String _value = tmp.casLogin(_ticket);String _cookie = tmp.checkCookie();String[] _abonnements = tmp.which();
Co
mité R
éseau d
es Un
iversités
138
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
139
Résolution de problèmesGénéralités
• Analyser les logs de Sympa, de Apache, de Sendmail, de mysql, de OpenLDAP,…
• Tous les processus sont-ils lancés ?– /etc/rc.d/init.d/sympa status
• Démarrer sympa.pl en mode debug (-d) ou augmenter le ‘log_level’ (sympa.conf)
• Vérifier les droits d’accès sur les fichiers, les répertoires
Co
mité R
éseau d
es Un
iversités
140
Problème de réception des messages
• Les alias sont-ils correctement installés
• Utilisez-vous smrsh ?
• Les messages sont-ils déposés dans le spool de Sympa (spool/msg/) ?
• Sympa.pl est-il lancé ?
• Option --keepcopy
Co
mité R
éseau d
es Un
iversités
141
Pas de gestion automatique des alias
• Si vous n’utilisez pas sendmail, il faudra faire du « tuning » (voir FAQ)…
• Vérifiez le bit ‘SetUID’ sur aliaswrapper• Le fichier sympa_aliases a-t-il les bons accès ?• Le fichier sympa_aliases est-il connu de
sendmail ?• Les options de configure :
– --with-sendmail_aliases– --with-newaliases– --with-newaliases_arg
Co
mité R
éseau d
es Un
iversités
142
Je n’ai pas de logs…
• Avez-vous paramétré /etc/syslog.conf ?
• Redémarrer syslogd.
• Modifiez le paramètre log_socket_type.
• "_PATH_LOG not found in syslog.ph“
• Sous Solaris ‘.*' n’est pas reconnu dans syslog.conf
Co
mité R
éseau d
es Un
iversités
143
Robot virtuel non reconnu
• Vérifiez les paramètres ‘host’ et ‘http_host’ dans robot.conf
• Vérifiez que le paramètre passé à queue depuis les alias de messagerie est qualifié avec le bon nom de domaine
Co
mité R
éseau d
es Un
iversités
144
Problèmes LDAP
• Avez-vous installé le module perl-ldap ?
• Par défaut OpenLDAP limite la réponse à une requête à 500 enregistrements
Co
mité R
éseau d
es Un
iversités
145
Problème d’accès aux archives
• Vous accédez à l’interface web via un Proxy ?• WWSympa doit s’exécuter sous l’identité
‘sympa’.• Si le HTML est incorrect, essayez de
reconstruire les archives (depuis « Admin Sympa »)
• Vous pouvez personnaliser le fichier mhonarc-ressources
Co
mité R
éseau d
es Un
iversités
146
1. Disponibilité, versions2. Architecture générale et organisation de Sympa3. Interaction avec le système, structure de la base 4. Les robots virtuels5. Authentification 6. Autorisation7. Shibboleth 8. Protection des données individuelles9. Listes dynamiques10. Familles de listes11. Les templates12. Le serveur soap13. En cas de problème14. Perspectives
Co
mité R
éseau d
es Un
iversités
147
TODO
Ce chapitre est conçu pour votre information et pour tester vos réactions
• de plus en plus copieux
• préparation de la 5.0 Alpha (Décembre)
• Objectif 5.0 stable 1er trimestre 2005
Co
mité R
éseau d
es Un
iversités
148
La 5.0
• tt2• Shared :
– modération des documents– upload .zip– vision admin / vision sans privilège
• Définition par include de owner et editor• Include source distante via URL• Familles• Canaux RSS
Co
mité R
éseau d
es Un
iversités
149
Vers la version 6
• Relooker les pages web• Abonnement thématique• Prise en compte complète des alt_email• Composeur de messages MIME• Aide à la modération• Gestionnaire d’enquête• Visibilité des journaux de chaque liste• Editeur de topics• Abonnement multiple
Co
mité R
éseau d
es Un
iversités
150
Vers la version 6
• Le « bulk mailer » :– casser le groupage : verp / parsing du message– distribution spécifique pour les abonnés en erreur
(en fin de queue, verp et spool direct)– nrcpt.conf– points de reprise
• multithread• mailsig (technique de signatuer anti-spam)• PGP et PGP / S/MIME
Co
mité R
éseau d
es Un
iversités
151
Vers la version 6
• Une couche attribut formalisée• Homonymie des listes et robot virtuel• Extention des services soap• Portail multi-serveur (client soap dans
wwsympa.fcgi)• Remonté des résultats d’un scenario• Red hat• Terminer le merge sympa et wwsympa