Pourquoi Sympa par le CRU ? Les inscrits Les utilisateurs

Transcription

Pourquoi Sympa par le CRU ? Les inscrits Les utilisateurs
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
Administration d’un service de
listes de diffusion avec
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 …)
Serge Aumont & Olivier Salaün
September 2004
1
2
• 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
3
Comité Réseau des Universités
Comité Réseau des Universités
Les inscrits
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
4
1
Novembre 2004
1.
2.
3.
4.
5.
6.
7.
8.
Manuel de référence
FAQ
Archives des listes
Google site:sympa.org « mon problème »
Articles et présentations
Listes de discussion (sympa-fr, sympa-dev)
Support commercial
[email protected]
Comité Réseau des Universités
Comité Réseau des Universités
Le support
(http://www.sympa.org)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
5
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
6
Comité Réseau des Universités
Comité Réseau des Universités
Ce qui ne sera PAS abordé
aujourd’hui...
Evolution des versions
Mars 2004
• Présentation exhaustive des
fonctionnalités utilisateur
• Installation « pas à pas » de Sympa
• Fonctionnalités S/MIME
7
Juillet 2000
SOAP
Auth. CAS, Shibboleth
Gestion auto. Bounces
HTML Area
3.4.4
WWSympa inclus
S/MIME
4.1
2.7.3
8
3.4
HEAD
Fin 2004/début
Octobre 2002
2005
TT2 Include 2
Familles
AuthN
de LDAP
listes
Include
Virtual
owners
robots
Modération
Task manager
documents
CanalDocuments
RSS
partagés
Upload
Antivirus
zip
4.1.2
2
Novembre 2004
• sympa-xx.tar.gz
Comité Réseau des Universités
Comité Réseau des Universités
Distribution de Sympa
Mise à jour de votre installation
• Incompatibilités :
– indiquées dans le fichier NEWS (lignes *****)
– affiché au début du make install
– Préserve les personnalisations
– Gestion automatique des dépendances CPAN
– Maj automatique des structures de données
• Installation/Maj des modules CPAN :
– Géré automatiquement au make install
• Paquets :
• Modification de la structure de la base :
– Debian : sympa 4.1.2 dans unstable
– Mandrake : maintenu par le rectorat de Nantes
– RedHat : pas maintenu !!
– Pour MySQL mise à jour auto, au démarrage de
sympa.pl
• Préservation de vos personnalisations :
• CVS : ne pas installer une version « anonyme »
!!
– Seul le répertoire /home/sympa/bin/ est écrasé
9
10
Comité Réseau des Universités
Comité Réseau des Universités
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
11
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
Organisation d’un serveur
Sympa
Serveur
Robots
virtuels
super
listmaster
listes.cru.fr
recherche.gouv.fr
jres.org
cru.fr
listmaster
Familles
owner
Listes
[email protected]
[email protected]
editor
12
3
Novembre 2004
• Mecanisme d’héritage s’applicant aux :
–
–
–
–
Comité Réseau des Universités
Comité Réseau des Universités
Une organisation hiérarchique
Fichiers de configuration et aux paramètres
Fichiers d’authorisation (scenarios)
Templates web
Messages de service (templates)
Un robot par défaut ou pas…
•
• 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/)
•
13
La solution (2) offre plus de souplesse
14
• Listmaster du site :
– défini dans sympa.conf
– Gère le service au niveau système
(personnalisation, création de robots virtuel,
familles,…)
Comité Réseau des Universités
Comité Réseau des Universités
Les rôles dans Sympa
au niveau global
Les rôles dans Sympa
au 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,…)
• 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
15
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é)
• Modérateur :
– Gère les contenus de la liste (messages, documents
partagés)
16
4
Novembre 2004
• Des fichiers pour :
–
–
–
–
Comité Réseau des Universités
Comité Réseau des Universités
Organisation des données
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)
17
/home/sympa/bin/
/home/sympa/bin/etc/
/home/sympa/etc/
/home/sympa/etc/scenari/
/home/sympa/etc/mail_tt2/
/home/sympa/etc/web_tt2/
/home/sympa/etc/family/
/home/sympa/etc/mon-robot/
/home/sympa/expl/
/home/sympa/expl/maliste/
/home/sympa/expl/X509r-certs/
/home/sympa/spool/
/home/sympa/src/
/var/bounce/
/home/httpd/html/arc/
# Exécutables
# Configurations par défaut
# Configurations du site
# Scenarios d’autorisation
# Messages de service
# Templates web
# Répertoire des modèles de familles
# Configurations robot virtuel
# Répertoire des listes
# Répretoire d’une liste
# Certificats utilisateurs
# Les “spools”
# Pour stoquer vos tar.gz…
# Stockage des bounces
# Les archives web
18
/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
Comité Réseau des Universités
Comité Réseau des Universités
Organisation / les fichiers de
configuration
19
Organisation / les répertoires
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
20
5
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
Les démons
sympa.pl
Circuit d’un complexe mail
valid
confirm
message
wwsympa.fcgi
List config
Internal
database
spool
message
task_manager.pl
message
message
archived.pl
Sendmail
root.bin
sympa.pl
uid sympa
mysql
message
config
bounced.pl
msg
templates
message
confirm
valid
auth
message
mod
message
outgoing
message
sympasoap.fcgi
21
22
• exim, postfix, qmail, sendmail
• sendmail ⇒ sympa.pl via spool msg
ma-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
23
Comité Réseau des Universités
Comité Réseau des Universités
Interactions avec la messagerie
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
24
6
Novembre 2004
• serveur de log unix
• Voir :
Comité Réseau des Universités
Comité Réseau des Universités
Interactions avec Syslogd
– syslog.conf
– log_socket_type dans sympa.conf
– log_level dans sympa.conf et wwsympa.conf
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 :
•
•
– option –d pour chaque démon (sauf fastcgi)
• Attention à la charge induite
25
26
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.conf
1. attention borne sup pour uid/gid)
Comité Réseau des Universités
Comité Réseau des Universités
Apache
•
versions beta testées uniquement avec MySQL
Création et mise à jour automatique de la structure
des tables (au lancement de sympa.pl)
Apache fastcgi
• Fastcgi est requis
FastCgiServer /home/sympa/bin/wwsympa.fcgi -processes 2
<Location /wws>
SetHandler fastcgi-script
</Location>
ScriptAlias /wws /home/sympa/bin/wwsympa.fcgi
http://httpd.apache.org/docs/suexec.html#install
2. attention directive User et Goup avant FastCgiServer
4. wrapper en C
27
28
7
Novembre 2004
• openssl : binaire de OpenSSL,
• cafile capath : bundle des certificats d’AC
(fichier et répertoire). Partage avec la
config https recommandée
Comité Réseau des Universités
Comité Réseau des Universités
OpenSSL
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
29
30
• Pour ne pas traiter les bounces
• mailhost et listhost différents
• Produit supportés : uvscan, avp, fsav,
sophos, clamav
• Sympa.conf
antivirus_path /usr/local/bin/uvscan
antivirus_args --summary --secure
antivirus_notify nobody
31
Comité Réseau des Universités
Comité Réseau des Universités
Antivirus
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 liste
web_archive
Access private
quota 10000
32
8
Novembre 2004
…/spool/outgoing
Comité Réseau des Universités
Comité Réseau des Universités
MhOnarc
sympa.pl
archived.pl
remove
rebuild
mhonarc_ressources
wwsympa.fcgi
tt2
…/list@dom/msgxx.html
…/list@dom/arctxt/xx
33
34
• 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)
Comité Réseau des Universités
Comité Réseau des Universités
htmlarea
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
35
cache des attributs hérités
36
9
Novembre 2004
subscriber_table
list_subscriber
Ex: sympa-fr
Comité Réseau des Universités
Comité Réseau des Universités
Structure de la base
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
gecos par liste
user_subscriber
Ex: [email protected]
date_subscriber
# jour depuis 1970
comment_subscriber
subscribed_subscriber
update_subscriber
Ex: 1097056590
included_subscriber
1 si inclusion dynamique
visibility_subscriber
Ex: conceal
include_sources_subscriber
id de la source d’inclusion
reception_subscriber
Ex: digest
bounce_score_subscriber
euristique de désabonnement
automatique, task_manager.pl
37
38
user_admin
admin_table
Ex: [email protected]
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
Comité Réseau des Universités
Comité Réseau des Universités
Structure de la base
39
1 si add or sub
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
40
10
Novembre 2004
Créer un usager avec les droits suivants :
En fonctionnement normal
Initialisation ou mis à jour
•
•
•
•
•
•
•
•
select_priv
insert_priv
update_priv
delete_priv
Comité Réseau des Universités
Comité Réseau des Universités
MySQL : les droits
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create_priv
drop_priv
index_priv
alter_priv
41
42
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Robots virtuels
Installation messagerie
•
•
Créer le domaine dans le DNS
Installer un domaine virtuel sendmail
virtual-domains:virtual.org
virtusertable:@virtual.org virtual.org-%1%3
•
Créer les alias
virtual.org-sympa: "| ../bin/queue [email protected]"
virtual.org-listmaster: "| ../bin/queue [email protected]"
•
43
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
template list_alias.tt2 a perrsonnaliser
selon la forme de vos alias
44
11
Novembre 2004
FastCgiServer /home/sympa/bin/wwsympa.fcgi -processes 3
Comité Réseau des Universités
Comité Réseau des Universités
Installation apache
<VirtualHost 190.213.92.1>
ServerAdmin [email protected]
DocumentRoot /var/www/virtual.org
ServerName listes.virtual.org
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
<Location /wws>
SetHandler fastcgi-script
</Location>
ScriptAlias /wws /home/sympa/bin/wwsympa.fcgi
</VirtualHost>
45
46
• Les variables suivantes peuvent être positionnée
pour un virtual robot , elles remplacent les
valeures par défaut spécifiées dans sympa.conf :
•
•
•
•
•
•
47
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
Comité Réseau des Universités
Comité Réseau des Universités
Installation robot virtuel
Exemple de robot.conf
http_host demo.sympa.org
wwsympa_url http://demo.sympa.org/wws
title A demo mailing list service
listmaster [email protected],[email protected]
create_list public_listmaster
default_home lists
lang us
default_shared_quota 5000
soap_url
http://demo.sympa.org/soap
48
12
Novembre 2004
• /home/sympa/etc/virtual.org/web_tt2/,
Comité Réseau des Universités
Comité Réseau des Universités
Personnaliser les robots
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
• /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
49
50
• Sympa doit être compatible avec la
politique d’authentification de
l’établisssement (LDAP, SSO, Certificats
X509)
• Toujours des usagers exterieurs.
Comment traiter les exceptions ?
Comité Réseau des Universités
Comité Réseau des Universités
Authentification
51
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
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.
52
13
Novembre 2004
Challenge de confirmation
Interface
mail
Comité Réseau des Universités
Comité Réseau des Universités
Méthodes d’authentication
Login X509
Password (allocation par email) web
LDAP AuthN backend
web
SSO: CAS
SSO: Shibboleth
certificat utilisateur
Web & SOAP
Web
Mail: S/MIME
Web: HTTPS
Authentification classique,
backend LDAP ou Sympa
WAYF
53
54
• 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 celleci est authentifiée avec un UID.
55
Comité Réseau des Universités
Comité Réseau des Universités
Auth.conf
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)
56
14
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
Authentification LDAP
ldap
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
57
• 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.
58
Email :
[email protected]
Welcome
[email protected]
Search email
for ID=smith
Sympa
Who is he ?
ticket=17429
ID=smith
Comité Réseau des Universités
Comité Réseau des Universités
Sympa interaction with one CAS server
LDAP
59
Central Authentication Service
Interaction with a chosen CAS server
CAS 1
Welcome
[email protected]
Client
Client
WAYF ?
Redirection
ticket=17429
CAS
Sympa
redirection.
Is that user
authenticated?
redirection.
Is that user
authenticated?
ID=smith
yes
Who is he ?
ticket=17429
ticket=17429
User : ?
Password ?
CAS 2
60
15
Novembre 2004
no
non blocking
redirection.
Is that user
authenticated ?
Sympa
Client
yes
ticket=17429
Who is he ?
ticket=17429
Comité Réseau des Universités
Comité Réseau des Universités
Interaction with multiple CAS servers
CAS 1
CAS 2
Welcome
[email protected]
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 ?
Non blocking
redirection.
Is that user
authenticated?
ID=smith
61
62
• 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é
63
Comité Réseau des Universités
Comité Réseau des Universités
“CAS logout” ?
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
64
16
Novembre 2004
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Generic SSO / auth.conf
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
65
66
• 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
(univ\-nancy2)\.fr
Comité Réseau des Universités
Comité Réseau des Universités
TODO authentification
67
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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
68
17
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
Le contrôle d’accès
Gérer le contrôle d’accès
• En général les applications implémentent 2
notions, public / privé :
• Séparation authentification/autorisation
• Définition de règles pour le contrôle d’accès :
– Droit de s’abonner, de diffuser des messages,…
– aux listes (subscribe, send, review, visibility,…)
– au service (création de liste, catégories de listes)
• 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
…
69
70
• 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)
71
Comité Réseau des Universités
Comité Réseau des Universités
Les scénarios d’autorisation
• 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)
Exemples de scénarios...
• Contexte :
– Diffusion des messages
• Fonctionnalité :
– Liste de discussion privée
is_editor([list->name],[sender])
is_subscriber([list->name],[sender])
true()
smtp,smime
smtp,smime
smtp,smime
-> do_it
-> do_it
-> reject
72
18
Novembre 2004
• Contexte :
Comité Réseau des Universités
Comité Réseau des Universités
Exemples de scénarios...
Exemples de scénarios...
• Contexte :
– Diffusion des messages
– Diffusion des messages
• Fonctionnalité :
• Fonctionnalité :
– Liste de discussion privée
– Confirmation pour les non abonnés
– Modération des messages multipart
– Liste de discussion privée
– Confirmation pour les non abonnés
is_editor([list->name],[sender])
is_subscriber([list->name],[sender])
true()
true()
smtp,smime
smtp,smime
smtp
md5,smime
is_editor([list->name],[sender])
smtp,md5,smime
-> do_it
match([msg_header->Content-type],/multipart/) smtp,md5,smime -> editorkey
is_subscriber([list->name],[sender])
smtp,smime
-> do_it
true()
smtp
-> request_auth
true()
md5,smime
-> do_it
-> do_it
-> do_it
-> request_auth
-> do_it
73
74
• Contexte :
Comité Réseau des Universités
Comité Réseau des Universités
Exemples de scénarios...
Syntaxe des scénarios (1)
• Les conditions :
– Accès aux archives web
– is_subscriber(),is_owner(),is_editor(),is_listmaster()
– equal(), match(), search()
– true()
• 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ù
is_editor([list->name],[sender])
smtp,md5,smime
is_subscriber([list->name],[sender])
smtp,md5,smime
match ([remote_host],/unicaen\.fr$/)
md5,smime -> do_it
match([sender],/unicaen\.fr$/)
md5,smime -> do_it
true()
md5,smime
-> reject
75
• 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] |
-> do_it
-> do_it
76
19
Novembre 2004
• Les méthodes d’authentification :
Comité Réseau des Universités
Comité Réseau des Universités
Syntaxe des scénarios (2)
– smtp
– md5
– smime
– pgp (bientot)
• Les actions :
– do_it [,notify | quiet], reject(<tpl_name>)
– request_auth, owner, editor, editorkey,
listmaster
77
• Contexte :
– Droit de s’abonner à la liste étudiante feministe-l
• Fonctionnalité :
– Limité l’abonnement en fonction d’un attribut LDAP de
l’utilisateur
filter (‘female_students.ldap’,,[sender])
smtp,md5,smime
-> do_it
true()
smtp,md5,smime
-> owner
# female_students.ldap
host
ldap.utexas.edu:389, ldap2..utexas.edu:389
suffix
dc=utexas,dc=edu
filter
&((EduPersonAffiliation = student)(mail = [sender])
(EduPersonGender = female))
scope sub
79
Comité Réseau des Universités
Comité Réseau des Universités
Exemple de scénario
exploitant l’annuaire LDAP
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
78
• 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
• …
Les scénarios
Exemple d’organisation
• Montrer l’organisation des fichiers
/home/sympa/bin/etc/scenari/
access_web_archive.closed
access_web_archive.intranet
…
/home/sympa/etc/scenari/
include.send.header
send.intranet:ignore
topics_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/scenari
send.private_nofrench
…
80
20
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
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
81
82
• 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
83
Comité Réseau des Universités
Comité Réseau des Universités
Intégration avec LDAP
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
84
21
Novembre 2004
• 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 :
Comité Réseau des Universités
Comité Réseau des Universités
L’architecture Shibboleth
• Besoin :
Shibboleth et Sympa
Besoins / Prérequis
– 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
– 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
• 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,…)
85
86
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Interaction entre
Sympa et Shibboleth
Sympa
Identity
Provider
Attribute
Handle
Authority
Service
Zone
publique
login
Shibboleth
Ressource
Manager
Attributs
WAYF
utilisateur
Zone à
Accès restreint
identité
SHIRE
87
88
attributs
SHAR
Service
Provider
22
Novembre 2004
# 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
Comité Réseau des Universités
Comité Réseau des Universités
Configuration
• Scenario sample rule:
# check if the user is a geology or archeology student
equal([user_attributes->SHIB_STUDY_BRANCH],’geology’)
md5 -> do_it
equal([user_attributes->SHIB_STUDY_BRANCH],’archeology’) md5 -> do_it
true()
smtp,md5,smime -> reject
89
90
Comité Réseau des Universités
Comité Réseau des Universités
91
• 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
# Apache configuration
<Location /wws/sso_login/inqueue>
AuthType shibboleth
require affiliation ~ ^member@.+
</Location>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Contrôle d’accès basé sur des
attributs Shibboleth
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
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
92
23
Novembre 2004
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Protection des données
personelles
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
93
94
• 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)
Comité Réseau des Universités
Comité Réseau des Universités
Listes de diffusion classiques
95
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
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 !)
96
24
Novembre 2004
LDAP
LDAP
TTL
Comité Réseau des Universités
Comité Réseau des Universités
Dynamic mailing list
task_manager.pl
SGBD
Internal
database
fichiers
fichiers
bounced.pl
sympa.pl
wwsympa.fcgi
98
99
include_ldap_2level_query
host ldap.univ.fr
suffix1
ou=Groups,dc=univ,dc=fr
scope1 one
filter1 (&(objectClass=groupOfUniqueNames) (|
(cn=cri))
attrs1 uniquemember
select1 all
suffix2 [attrs1]
scope2 base
filter2
(objectClass=n2
pers)
attrs2 mail
select2 first
Comité Réseau des Universités
Comité Réseau des Universités
Include LDAP
(contrib from Dalbec ysu.edu)
For each group
member fetch
his email adress
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
http://...
97
First LDAP
query to select a
group
Include LDAP
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ée
2. Gestion de la vie du cache : TTL
3. Mise à jour asynchrone task_manager.pl
100
25
Novembre 2004
•
•
•
•
•
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 ?
Comité Réseau des Universités
Comité Réseau des Universités
Uniquement avec include2
demo
• Overview of list admin page
• List configuration overview (data_source)
• review
– En lecture seulement
– Interrogation en SOAP (is_subscribers,
review)
101
102
• 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
103
version 5.0
Comité Réseau des Universités
Comité Réseau des Universités
Listes dynamiques
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
104
26
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
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 ?
105
• 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.
106
• 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.
Comité Réseau des Universités
Comité Réseau des Universités
Pourquoi le concept des familles
107
Pourquoi le concept de famille
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
108
27
Novembre 2004
Family definition
List template
<family>
<list>….</list>
</family>
param_constraint
Family definition
List template
List a
List a
List a
List A
<form>
<input type=..>…
</form>
parameter (example review
is private or owner)
For each parameter, defines who
can edit it :(listmaster,privilegied
owner or owner)
Data coming from web form
109
param_constraint
Family instantiation
edit_list
List A
Sympa.pl –instantiate_family=ftest –
input_file=data.xml
110
Jeu 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_query
Host ldap.foo.edu:389,backup.foo.edu
suffix dc=foo, dc=edu
filter(&(section=[section])(option=[option]))
attrs mail
Comité Réseau des Universités
Comité Réseau des Universités
XML data and list template
111
Lists families in Sympa
edit_list
skeleton of configuration
file
Family instantiation
Use var that are defined in
XML file
required constraint for each
Data coming from
information system.
XML format
Comité Réseau des Universités
Comité Réseau des Universités
Lists families in Sympa
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é
– ….
owner_include
Include_ldap_query
…..
112
28
Novembre 2004
user_data_source
ttl
shared_doc
review
review
footer_type
owner
owner.profile
owner
owner,privileged_owner
owner,privileged_owner
owner,privileged_owner
owner
privileged_owner
owner,privileged_owner
owner
owner,privileged_owner
privileged_owner
hidden
hidden
write
read
write
hidden
read
read
write
default
listmaster
write
Comité Réseau des Universités
Comité Réseau des Universités
edit_list.conf
113
• Enumération des valeures autorisées pour
une famille donnée
# very simple example
# parameter edition control
send private_smime, editor_key
web_archive private,owner
shared_doc.d_read private,owner
Shared_doc.d_edit owner
114
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)
Comité Réseau des Universités
Comité Réseau des Universités
Edition en ligne de la config
115
param_constraint.conf
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
116
29
Novembre 2004
• Dispo en version 5.0
• Redéfinition des familles à chaque niveau
Comité Réseau des Universités
Comité Réseau des Universités
Lists families in Sympa
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
– robot
– site
– distribution.
• Familles de listes = expression technique
d’une politique de listes + création de listes
par paquet
117
118
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Les templates
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)
• Tous les templates sont personnalisables à
différents niveaux :
– site / robot / famille / liste
119
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
120
– 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)
30
Novembre 2004
• Les messages de service (mail_tt2/) :
Comité Réseau des Universités
Comité Réseau des Universités
Les templates / organisation
Le format TT2
(voir http://www.tt2.org)
• Substitution de variables :
– [% var %] ou [% struct.var %]
– 34 templates (message de bienvenue, fichier d’aide,
compilation des messages,…)
• Inclusions :
– [% INSERT fichier %] ou [% PROCESS fic.tt2 %]
• Les templates web (web_tt2/) :
• Conditions :
– 67 templates : main.tt2 + bandeaux + templates
d’action
– [% IF var1 %]…[% ELSIF var2 %]…[%END%]
• Boucles :
– [% FOREACH var IN liste %] …[% END %]
• Des filtres :
• Multi-linguisme :
– [%|loc%]Chaine à traduire[%END%]
– web_tt2/fr_FR/info.tt2
– [% FILTER qencode %] Entête à encoder[%END%]
121
122
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 %]
123
Comité Réseau des Universités
Comité Réseau des Universités
Exemple de message de service
global_remind.tt2
Exemple de template web
list_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 %]
……….
124
31
Novembre 2004
• Pas (encore) de documentation
exhaustive
• Se baser sur les templates distribués par
défaut
Comité Réseau des Universités
Comité Réseau des Universités
Les templates / variables
disponibles
125
126
Comité Réseau des Universités
Comité Réseau des Universités
127
128
32
Novembre 2004
Comité Réseau des Universités
Comité Réseau des Universités
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
129
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
130
• « 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),
Comité Réseau des Universités
Comité Réseau des Universités
SOAP en bref…
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
Axis (Java), NuSOAP (PHP),…
131
132
33
Novembre 2004
• 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)
Comité Réseau des Universités
Comité Réseau des Universités
SOAP dans Sympa
## extrait de httpd.conf
FastCgiServer /home/sympa/bin/sympa_soap_server.fcgi -processes 1
ScriptAlias /sympasoap /home/sympa/bin/sympa_soap_server.fcgi
<Location /sympasoap>
SetHandler fastcgi-script
</Location>
## sympa.conf / robot.conf
soap_url http://my.server/sympasoap
133
134
• 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…
Comité Réseau des Universités
Comité Réseau des Universités
Les services proposés
135
Configuration du service SOAP
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";
}
136 }
34
Novembre 2004
• Utilisation de AXIS
• Génération automatique d’un squelette (stub) à partir du
WSDL :
Comité Réseau des Universités
Comité Réseau des Universités
Un canal Sympa dans Uportal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
– 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();
137
138
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Résolution de problèmes
Généralités
139
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
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
140
35
Novembre 2004
• 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 :
Comité Réseau des Universités
Comité Réseau des Universités
Pas de gestion automatique des
alias
Je n’ai pas de logs…
•
•
•
•
•
– --with-sendmail_aliases
– --with-newaliases
– --with-newaliases_arg
141
142
• 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
Comité Réseau des Universités
Comité Réseau des Universités
Robot virtuel non reconnu
143
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
Problèmes LDAP
• Avez-vous installé le module perl-ldap ?
• Par défaut OpenLDAP limite la réponse à
une requête à 500 enregistrements
144
36
Novembre 2004
• 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 mhonarcressources
Comité Réseau des Universités
Comité Réseau des Universités
Problème d’accès aux archives
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
145
146
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
Comité Réseau des Universités
Comité Réseau des Universités
TODO
147
Disponibilité, versions
Architecture générale et organisation de Sympa
Interaction avec le système, structure de la base
Les robots virtuels
Authentification
Autorisation
Shibboleth
Protection des données individuelles
Listes dynamiques
Familles de listes
Les templates
Le serveur soap
En cas de problème
Perspectives
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
148
37
Novembre 2004
•
•
•
•
•
•
•
•
•
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
149
Comité Réseau des Universités
Comité Réseau des Universités
Vers la version 6
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
150
Comité Réseau des Universités
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
151
38

Documents pareils