This page is intended to describe the design of alternate email feature in Sympa. Please submit any comment in sympa [dash] dev [at] cru [dot] fr or edit this page.
Many (most ?) users have multiple email addresses. With Sympa current version each user is identified with a unique email address so the same user with two different email addresses is seen as two different users.
Things that are not currently feasible with Sympa that should become possible :
* some users subscribe to mailing lists with email addresses like user+topic@domain to ease the sorting of messages in their mail folders. Sympa could consider addresses user@domain and user+topic@domain as equivalent.
Store alternate email in a cookie, as it is currently done by Sympa web interface, is a very bad idea. The first thing to do is to remove all the existing code related to alternate emails as it is proposed in version prior to 5.5
We will introduce a new altemail_table table
| email_altemail | altemail_altemail | expire_date_altemail | source_altemail |
It is probably useful to preserve the possibility to ignore altemail when evaluating a scenario but by default an altemail should have the same privileges as the original email. The way we imagine for it is to introduce a new variable in scenario conditions :
The basic rule for a private list will look like :
is_subscriber([user->email],[list]) ->smtp,md5,smime do_it
A strict private list will use
is_subscriber([user->main_email],[list]) ->smtp,md5,smime do_it
The interpretation algorithm when using [user→email] will be an iteration for each alternative email ending as soon as one of them make the condition true. Example : the following condition
match([user->email],/cru\.fr/)
will be evaluated as true is one of alternative email is on domain cru.fr . because of this specification, the following rule will probably not very useful because it will deny service to anyone having at least an alternative email in domain google.com even if the message or web service is submited using some other mail.
!match([user->email],/google\.com/) smtp,md5,smime -> reject
In such case you probably need to use [user→main_email] variable.
Currently, a user account in Sympa is removed whenever a user unsubscribes from the last list he was subscribed to. This algorithm should take to alternate email addresses into account.