This document is a description of Sympa project direction. The goal is to fix priorities and to publish it in order to collect user comments. The initial version (November 2005) describes development of project from Sympa version 5.1. We will try to keep it up to date but no guaranties.
Of course, Sympa forge server includes a bug report and feature request system that are used too.
We kindly suggest you to comment this document using the wiki feature.
Performances becomes a limitation because many sites now create thousands of lists. Many universities create lists automatically (through families) using data coming from the information system. This performances issue concerns mainly the web interface.
We already listed some problems:
In version 5.2 startup is already optimized using binary version of list config file (so initial loading of configs is much faster) and the number of which calls is limited when operation is related to a list.
We still need to improve the response time for all other request. We will explore the following directions :
List family instantiation is currently only available via the command line, as a bulk process. You provide a set of data and a family definition and sympa.pl instantiates the family to create all the lists.
We plan to extend the family features and allow list creation from the web interface and also from the mail interface (to create one-time lists).
Currently (version before 6.0) the distribution process of a particular message for one list can’t be stopped. There are a few issues with that.
It should not be too difficult to change Sympa in following way.
This architecture is implemented in version 6. See server_architecture for big services.
First, it could be very useful to separate different daemons on separate servers. This can be done already but there are some limitations because everything is not in Sympa database (configs, archives and spools).
Second, a daemon could need load balancing.
In order to ease repartition of Sympa service on multiple server, lock files should be done using a MySQL table.
memcached is a free software tool that allows storing data in RAM and share access to those data using a inet or unix socket. May be this tool can be used in order to solve sharing of data between different daemons. This solution would provide high performance and load balancing but it seems not compatible with our need of hi disponibility.
This would make the application more complex and difficult to manage using your favorite editor file, but as long as the administration web interface is complete and sophisticated this should not be a problem.
This work as started in Sympa 6.0. A new sophisticated bulk mailer is now running on our development server. It uses the database to store sets of email recipients and a new spool for “ready to send” messages. A new daemon bulk.pl submits those messages to MTAs. The new bulk mailer properties are the following.
bulk.pl without any other configuration than a copy of sympa.conf and each robot.conf so those daemons can run on different servers.kill -9 during the distribution of a message to a large list. The distribution will restart at the beginning when starting again sympa.pl and many subscriber can receive this message twice. This problem is now solved and kill -TERM stops Sympa with a very short delay even if it is distributing a message to a huge list.Some improvements of security and usability are expected.
We plan to replace password encryption with hashing (MD5 or SHA1) in version 5.5. So reminder feature will be replaced by reset password in a similar way as other web application.
The method using a “one time ticket” could be used elsewhere in Sympa. In many cases Sympa sends some URL to users, it is useful that those URL are considered as a way for authentication.
If Sympa could export passwords in a LDAP directory, it would be possible to use this LDAP directory for some other application (single sign on such as CAS).
Done:
We received a big contribution from John-Paul Robinson from University of Alabama at Birmingham. The goal of this patch is to change the Shibboleth-based authentication so that Sympa does not use email addresses as user identifier. We will introduce this contribution in main Sympa version quickly.
This section concerns the SOAP server. It is needed for some remote application acting as soap client of Sympa server to make some authentication assertion about the end user. For example a CMS with its own authentication method can request services to Sympa as proxy of the end user. That can be done if Sympa SOAP server trusts the remote application and accepts a set of assertions from this SOAP client. Sympa would use incoming variables in authorization scenario. (done)
A Sympa server could also request services from another Sympa server. Imagine that “which” action returns could tell the user about his subscriptions on another mailing list server.
DKIM is an emerging standard for message authentication based on signature. Sympa will check DKIM signature to the benefit of authorization scenario. It is also needed to verify that message modification made by Sympa (headers and body) doesn’t alter original DKIM signature. In some case Sympa could sign messages itself when authentication of the original sender is good enough.
Sympa allows you to declare an alternative_email_attribute LDAP attribute in your auth.conf file. When authenticating a user via LDAP this information is retrieved. We currently have VERY limited use for this data.
What should be done in the near future to extend this future
A lot of work has been done last year in order to allow parsing of message footer and header using all variables of Sympa templates including the subscriber email. This would make it possible to add a message footer with personalized unsubscription instructions or to use VERP for better bounce management. This needs to bypass the Sympa internal bulk mailer that saves some bandwidth. Now everything is ready to start this new development. We plan to allow both current mail grouping and mail parsing depending on the need (example use parse for unique return path only for subscribers which get bounces or every 10 messages send to the list etc.).
In addition to session attributes, user preferences and attributes could be introduced.
Some more features in the shared repository document.
ls -lR unix command.)Internals. Work has been started to rewrite an object oriented version of this code. The work needs to be finalized. …
Extending bounces notifications. See Pour une meilleurs remontée des bounces, in French.
Many spammers claim their “service” is based on opt-in but that’s false. Sometimes users claim they never subscribe to a legitimate mailing list, but in fact they did ! Subscription traceability will provide information about the users subscription, on the web interface (initial subscription message, confirmation). This is ready (nice work from Floriane Fiquet) and it will be integrated in a very near future.
The reference manual needs to be completed regarding some topics. Other documentation documents would be of interest (quick start, developers doc, list owner documentation, online documentation).
This chapter should explain the difference between subscription and inclusion. It should also explain how include2 works.
This chapter should explain how Sympa manages translations and how new translations can be added. It would also cope with common problems with encoding (mail, web, archives,..).
A new chapter should deal about list management (rename, close, import, export).
WWSympa should provide online help for owners/moderators, describing their role, tools.