Feature: optionally restrict list ownership to specific domains (owner_domain) #131
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Our campus mailing list service allows a wide range of uses by our institutional community. Our default is to be open wherever possible, including the ability to share moderation and ownership tasks with people at other institutions. At the same time we are obliged to ensure that mailing list service resources are reserved for our community and not effectively given away to external parties. And we need to do that at a scale of thousands of lists and list owners.
We originally approached this need by modifying wwsympa.fcgi to implement a policy that can be stated as follows:
It was not a perfect approach but has worked well enough in practice.
With our recent work to migrate to Sympa 6.2, we have reimplemented this idea as a general purpose Sympa feature.
Description
The list definition panel features two new per-list options:
The default is an empty list, meaning no restrictions are applied.
If unset or 0, then all list owner addresses must match the owner_domain list.
The default editing permissions in edit_list.conf allow privileged owners to modify the owner_domain list, while restricting access to read-only for unprivileged owners.
The default values for owner_domain and owner_domain_min can be set site-wide in sympa.conf.
Implementation Notes
The existing validation mechanism in Sympa::List::Config only provides a way to review individual configuration file items. Also, no validation function is called at all when a configuration item is removed. This is insufficient when implementing a policy that needs to take the whole updated configuration into account.
To address this, _validate_changes() now calls a set of "global" validation functions after all per-item validation functions are complete. The owner_domain/owner_domain_min check is implemented as a
global validation function.
Files
src/lib/Sympa/List/Config.pm:
src/lib/Sympa/ListDef.pm:
src/lib/Sympa/ConfDef.pm:
mail_tt2/report.tt2:
default/edit_list.conf:
Example 1
An interest group with a unique mail domain wants to make sure that all list owners of a specific important list are associated with the group's domain.
Example 2
A large institution has a policy that all lists across the entire mailing list service must maintain at least one owner address matching a list of known institutional domains.
Limitations