User-associated Mailbox and Alias Support
The mail module is currently a web frontend to setup and manage generic mail forwardings (i.e. list of receive addresses mapped to a list of destination addresses). This seems a bit out of scope for a user management and Single-Sign-On software. Especially in the light of removing LDAP support, I think we should replace this feature with something else.
Currently we use the following kinds of mail forwardings:
- Personal mail aliases
- The aliases mostly but not always match the loginname
- The aliases mostly forward to a CCCV mailbox, but sometimes to an external address (usually the same as the account's mail address).
- "Mailinglists" (not in the sense of Mailman lists)
- One receive address maps to a list of personal addresses
- The destination addresses are sometimes CCCV mailboxes, sometimes external address (usually the same as the account's mail address).
- In two(?) cases a destination address does not corresponds to an existing user
- Technical mail aliases
- Forwardings to rt.cccv.de
- Forwardings to technical mailboxes
Aside from the technical/conceptual problems with the current situation I see one functional issue: Users don't see their aliases and cannot change the destination address themselves.
Proposal
After dropping LDAP support and moving user data to the DB, introduce user-associated alias objects and a built-in concept of user mailboxes:
Mailboxes are defined in the config:
MAIL_BOXES=[
{'address': '{name}@mail.cccv.de', 'required_group': 'service_mail_access'},
]
Aliases are stored in the DB. Similar to the current forwarding interface, there is an interface to create and edit aliases. Aliases do not include free-text destination addresses. Instead they are associated with user or group objects and the destination addresses are those of the connected user accounts.
Technical mail aliases should be moved to the Ansible inventory (we already have a few in there).
I don't see this happening with LDAP, so this is not a v1.x.x feature but rather a x2.x.x one.
Depends on #84 (closed)