Synthèse du projet Sympa
Résumé Exécutif
Sympa est un gestionnaire de listes de diffusion open-source (GPLv2), développé en Perl depuis 17 ans.
Initialement conçu au sein de l'université Comète-Résu, il est aujourd'hui hébergé par Renater, le réseau national de télécommunications pour la technologie, l'enseignement et la recherche en France.
Bien qu'il assure les fonctions de base d'un gestionnaire de listes, Sympa se distingue par des fonctionnalités avancées qui en font un outil puissant pour les grandes organisations.
Ses principaux atouts sont sa capacité d'intégration profonde avec les systèmes d'information existants (bases de données, annuaires LDAP, systèmes d'authentification), ses mécanismes d'industrialisation pour la création et la gestion de milliers de listes, et un système d'autorisation par scénarios extrêmement flexible et expressif.
Le projet, bien que mature et utilisé par des institutions prestigieuses (90% des universités françaises, ministères, entreprises comme Orange et Atos), fait face aux défis d'un code historique de 17 ans.
Pour y répondre, l'équipe de développement a entamé une refonte majeure du code pour la future version 7.0.
Cette version introduira une architecture modernisée, des tests unitaires, une nouvelle interface web et une migration vers Git pour faciliter les contributions externes.
La vision à long terme inclut le déploiement en mode SaaS, la diffusion de messages multi-supports (SMS, web) et un système de plugins.
Le projet lance un appel actif à la communauté pour contribuer au développement, à la documentation, au support et à la gestion du projet, offrant même un service d'hébergement gratuit pour la communauté Perl afin de promouvoir l'utilisation d'outils libres.
1. Introduction à Sympa
Définition et Origine
• Nom : Sympa est l'acronyme de "Système de Multi-postage Automatique".
• Âge : Il s'agit d'un logiciel mature, dont la première version a été publiée le 1er avril 1997, soit il y a 17 ans au moment de la présentation.
• Fonction de base : Comme Mailman ou PHPList, Sympa permet d'envoyer un seul e-mail à un serveur qui se charge de le distribuer à un grand nombre d'abonnés.
• Hébergement et Licence : Le projet est hébergé par Renater, l'équivalent français du réseau national pour la recherche et l'éducation. C'est un logiciel libre sous licence GPLv2.
• Philosophie Perl : L'équipe revendique fièrement l'utilisation de Perl, affirmant que malgré les questions sur l'utilisation d'un langage "plus moderne", Sympa reste l'un des meilleurs gestionnaires de listes de diffusion et "il fonctionne".
Statistiques et Utilisateurs Clés
Sympa est utilisé par une base d'utilisateurs majoritairement internationale, malgré son origine française.
Métrique
Chiffre Record
Contexte
Plus grande liste
1,6 million d'abonnés
Plus grand nombre d'hôtes virtuels
30 000
Sur un seul serveur, par l'hébergeur Infomaniac
Plus grand nombre de listes
32 000
Sur un seul serveur
Plus grand nombre d'abonnés
3 millions
Sur un seul serveur
Principaux utilisateurs :
• Recherche et Éducation : 90% des universités et centres de recherche en France.
• Secteur Public : Plusieurs ministères français.
• Entreprises privées : Orange, Atos.
• Hébergeurs : Infomaniac, Switch (fourni par défaut à leurs clients).
• Organisations non gouvernementales : riseup.net, NAA, UNESCO, CGT.
2. Fonctionnalités Principales et Différenciatrices
Au-delà de l'envoi d'e-mails, Sympa se distingue par des capacités avancées conçues pour les environnements complexes.
Gestion Avancée des E-mails
• Envoi en masse optimisé : Sympa permet de regrouper les e-mails par domaine et de personnaliser la fréquence d'envoi pour éviter d'être identifié comme un spammeur tout en assurant une distribution rapide.
• Support des standards (RFC) : Il prend en charge S/MIME (signature et chiffrement), DKIM et offre une protection contre DMARC, ce qui a été crucial lorsque Yahoo a modifié sa politique en avril, cassant de nombreux systèmes de listes de diffusion.
• Gestion des erreurs : La gestion des bounces est automatique et gérée par Sympa, non par l'expéditeur original. Le support de VERP (Variable Envelope Return Path) permet de traiter automatiquement les erreurs pour les adresses e-mail transférées.
• Suivi des e-mails : Un suivi respectueux de la vie privée (sans "spy pixels") permet de savoir ce qui est arrivé à un e-mail pour chaque utilisateur, en se basant sur les RFC.
• Personnalisation (Mail Merging) : Il est possible de fusionner des données utilisateur dans un e-mail pour envoyer des messages personnalisés.
• Archives Web : Sympa dispose d'archives web avec un contrôle d'accès fin.
Intégration aux Systèmes d'Information (SI)
Sympa est conçu pour s'intégrer nativement avec les briques logicielles d'un système d'information d'entreprise ou d'université.
Composant
Technologies Supportées
Serveur de messagerie (MTA)
Sendmail, Postfix, Exim
Base de données (SGBDR)
MySQL, PostgreSQL, Oracle, SQLite, Sybase ("sans espoir")
Serveur Web
Apache, lighttpd, Nginx
Sources de données (Référentiels)
Bases de données relationnelles, LDAP, fichiers plats, services web (texte brut)
Systèmes d'authentification
Natif (email/mot de passe), CAS, Shibboleth, LDAP
Industrialisation de la Gestion des Listes
Pour les environnements nécessitant la création de centaines ou de milliers de listes (par exemple, chaque année dans une université), Sympa offre des mécanismes d'automatisation.
1. Création Manuelle : Un simple formulaire web où l'utilisateur remplit les informations de base (nom, objet, propriétaire).
Les valeurs par défaut sont fournies par la configuration globale et un modèle de liste (Template Toolkit - tt2).
2. Familles de Listes : Un mécanisme pour créer des listes en masse.
Il utilise un modèle tt2 commun et un fichier XML qui définit les paramètres spécifiques de chaque liste à créer.
Une seule commande permet de générer ou de mettre à jour toutes les listes de la famille.
3. Listes Automatiques : Conçues pour les cas où il existe un très grand nombre de listes potentielles mais où seulement une fraction sera utilisée.
◦ Le nom de la liste contient lui-même les paramètres (ex: prefix-field1_value1-field2_value2).
◦ La liste n'est créée dynamiquement que lors du premier envoi d'un message à cette adresse.
◦ Une interface web a été développée pour simplifier la composition de ces adresses complexes.
4. Familles de Familles : Il est possible de créer des familles de listes automatiques, permettant une industrialisation à plusieurs niveaux.
Mécanisme d'Autorisation par Scénarios
C'est l'une des fonctionnalités les plus originales et puissantes de Sympa.
• Principe : Les autorisations pour chaque action (envoyer un message, consulter les archives, etc.) sont définies dans des fichiers appelés "scénarios" (ex: send.scenario).
• Structure d'un scénario : C'est une séquence de règles évaluées de haut en bas.
Chaque règle a la forme : test(arguments) 'auth_method' -> decision.
• Évaluation : Le traitement s'arrête à la première règle dont le test est vrai.
• Tests : De nombreux tests sont disponibles (is_subscriber, is_list_owner, etc.).
Il est possible d'ajouter des tests personnalisés via des modules Perl (custom_condition).
• Méthodes d'authentification : Permettent d'appliquer des règles différentes selon la robustesse de l'authentification (ex: smime, smtp pour le champ From:, md5 pour un utilisateur authentifié sur le web).
• Décisions : Vont au-delà du simple "oui/non". Les décisions possibles incluent do_it (accepter), reject (rejeter), owner (modération par le propriétaire), etc.
Ce système offre une grande expressivité pour définir des politiques d'accès très fines.
Capacités de Gestion de Groupes
Sympa peut être utilisé comme un gestionnaire de groupes pour des applications tierces.
• Interface SOAP (et REST en développement) : Une interface SOAP permet à d'autres applications d'interroger les données internes de Sympa (créer une liste, abonner un utilisateur, etc.).
• Intégration : Des plugins pour des applications comme DokuWiki ou LimeSurvey permettent d'interroger Sympa pour savoir à quelles listes (donc à quels groupes) un utilisateur appartient.
L'application tierce peut alors accorder des privilèges en fonction de cette appartenance.
• Hiérarchie de groupes : Sympa permet d'inclure des listes dans d'autres listes, créant ainsi des groupes plus larges.
Personnalisation Poussée
Presque tous les aspects de Sympa sont personnalisables à différents niveaux (serveur global, hôte virtuel, liste individuelle) selon un principe de cascade.
• Interface Web : Entièrement basée sur des modèles Template Toolkit.
• Messages de service : Les messages envoyés aux utilisateurs (bienvenue, etc.) peuvent être modifiés.
• Modèles de création de liste.
• Scénarios d'autorisation.
• Paramètres de liste : Il est possible de créer ses propres paramètres en plus de la centaine existante.
• Attributs utilisateur : Possibilité d'ajouter des champs personnalisés pour les utilisateurs, qui pourront être synchronisés avec LDAP ou une base de données dans une future version.
3. Architecture et Fonctionnement Technique
Le flux de traitement d'un e-mail illustre l'architecture modulaire de Sympa :
1. Réception : Un e-mail est envoyé à une liste et arrive sur le MTA entrant.
2. Traitement Initial : Le MTA transmet l'e-mail au démon sympa.pl, qui évalue les autorisations, personnalise le message, etc.
3. Stockage : Si le message est autorisé, il est stocké dans une base de données relationnelle (SGBDR). L'utilisation d'une base de données permet un accès concurrentiel sécurisé.
4. Distribution : Un démon dédié, bulk.pl, se charge exclusivement de l'envoi des e-mails.
Il lit les messages dans la base de données et ouvre de multiples sessions SMTP pour une distribution rapide et parallélisable sur plusieurs serveurs.
5. Archivage : Simultanément, une copie du message est traitée par le démon archived.pl pour être ajoutée aux archives web.
4. Le Projet Sympa : Développement et Communauté
Gouvernance et Équipe
• Développeurs principaux : Le projet est passé de 2 développeurs historiques à une équipe élargie de 5 personnes, dont 3 externes à Renater.
◦ Mark (Strasbourg) : Gourou Perl.
◦ Guillaume : Responsable sécurité, expert en bonnes pratiques. ◦ Soji (Tokyo) : Spécialiste des e-mails et des problèmes d'encodage (a mené la migration vers UTF-8).
◦ Etienne : Développeur polyglotte.
◦ David Verdin (le présentateur) : "Homme à tout faire" (documentation, gestion de communauté, présentations).
• Contributions : Le projet bénéficie de nombreuses contributions de la communauté Perl.
Défis d'un Logiciel Ancien
Avec 17 ans d'histoire, le code de Sympa est devenu très hétérogène, avec des styles de codage variés issus de nombreux contributeurs.
• Base installée : L'importante base d'utilisateurs en production impose une grande prudence lors des modifications du code.
• Dépendances : L'ajout de nouveaux modules CPAN est compliqué car les utilisateurs en production préfèrent installer via des paquets de distribution, qui doivent donc exister pour ces modules.
• Absence de tests : Historiquement, le logiciel n'avait pas de tests unitaires ; les tests étaient effectués "en direct" sur les serveurs de production.
5. L'Avenir de Sympa : Feuille de Route et Vision
Versions à Venir (6.2, 7.0, 7.1)
• Version 6.2 : Presque finalisée, elle subit actuellement des tests manuels intensifs avant une sortie en bêta.
• Version 7.0 : Il s'agit d'une refonte majeure.
◦ Nouveau code : Réécriture complète menée par Guillaume pour moderniser l'architecture.
◦ Tests unitaires : Implémentation systématique de tests. ◦ Nouvelle interface web : Plus simple, plus moderne et ergonomique, développée par un contributeur de Nouvelle-Zélande.
◦ Migration vers Git : Pour faciliter le fork et les contributions externes (par exemple sur GitHub).
• Version 7.1 et au-delà :
◦ Mode SaaS (Software as a Service).
◦ Diffusion multi-supports : Envoi de messages via SMS ou mise à jour de services web.
◦ Système de plugins : Pour permettre l'ajout de petites fonctionnalités sans attendre une intégration au cœur du logiciel.
◦ Support des adresses e-mail internationalisées.
Orientations Stratégiques
Un objectif clé est de maintenir la double capacité de Sympa :
1. Grandes installations : Capable de tourner sur des clusters en mode SaaS.
2. Petites installations : Rester simple à installer et à faire fonctionner sur un petit serveur autonome.
6. Appel à la Participation et Offres à la Communauté
Opportunités de Contribution
Le projet recherche activement de l'aide, y compris non technique :
• Développement : Correction de bugs, ajout de fonctionnalités.
• Documentation : La documentation est un wiki modifiable par tout utilisateur abonné à la liste sympa-users.
• Support : Aider les autres utilisateurs sur les listes de diffusion.
• Packaging : Créer des paquets pour différentes distributions Linux.
• Gestion de projet : Partage d'expérience sur la gestion d'un projet logiciel en pleine croissance.
Offre d'Hébergement Gratuit
Pour contrer l'utilisation de services comme Google Groups par les communautés du logiciel libre, l'équipe Sympa propose de fournir un service d'hébergement de listes de diffusion gratuit pour la communauté Perl mondiale.
L'infrastructure de Renater permet de déployer un nouvel hôte virtuel en 30 minutes.
7. Questions et Réponses Clés
• Nouvelle interface web (v7.0) : Elle sera plus simple, avec moins d'options par défaut pour ne pas submerger les nouveaux utilisateurs.
L'ergonomie sera plus moderne et proche de ce que l'on trouve sur les réseaux sociaux.
• Interface REST : Une interface REST existe déjà pour la gestion de groupes (basée sur OAuth), mais la refonte du code vise à rendre toutes les fonctionnalités de Sympa accessibles via toutes ses interfaces (ligne de commande, SOAP, REST, web et e-mail).
• Stockage des e-mails et des pièces jointes : Les e-mails des archives sont stockés de façon permanente.
L'anonymisation est un défi juridique et technique complexe.
Les pièces jointes sont stockées et accessibles via un lien.
Pour les listes qui le souhaitent, les pièces jointes volumineuses peuvent être automatiquement détachées et remplacées par un lien pour alléger les e-mails.
• Support des bases de données : MySQL est celle qui reçoit le plus d'attention car c'est la plus utilisée par l'équipe.
PostgreSQL et SQLite sont également très bien maintenus et leurs schémas sont mis à jour automatiquement.
Le support d'Oracle est plus difficile.