sympa-community / sympa

Sympa, Mailing List Management Software
https://www.sympa.community/sympa
GNU General Public License v2.0
237 stars 94 forks source link

proposal for invite.owner with auth #1790

Open taggart opened 5 months ago

taggart commented 5 months ago

I would like to have a version of the "invite" scenari for owner but with authentication. Currently "invite.owner" could be abused by someone forging mail from the owner address, and having an auth version would prevent this.

It could maybe be argued that "invite.owner" should require auth by default. I think that is probably a good idea, but that may come as a surprise to users not expecting it (and automation/form processing people may have written taking advantage of it). Also depending on naming some migration might be required between releases. There may also be use cases where this auth is not required and just adds extra steps (non-public email systems?)

We have the examples of {add,del}.owner vs {add,del}.auth, but also send.owner vs send.ownerauth to use as reference. I think this new scenari could be named either "invite.auth" or "invite.ownerauth", I guess I would lean toward the former. Based on the others, here is probably what it should look like:

title.gettext invite perform by list owner with authentication       

is_owner([listname],[sender])  smtp -> request_auth
is_listmaster([sender])        smtp -> request_auth
is_owner([listname],[sender])  md5,smime -> do_it     
is_listmaster([sender])        md5,smime -> do_it
true()                         smtp,md5,smime -> reject(reason='invite_ownerauth')

(I left "perform" like it is in invite.owner, but they could both be changed to "performed"). Let me know what you think of this, or if I can help in any way. Thanks!

taggart commented 5 months ago

Thinking about this more...

Does sympa have any policy about scenari changes? Looking at the default scenari it seems they don't change very often, so maybe it has not come up much?

If sympa were to decide to start requiring auth for things like add/del/invite, what would the potential migration look like?

If users provide their own version of a scenari in the etc/scenari directory with an identical name, sympa will prefer that version over the default/scenari version. So I can think of a couple ways this could be handled:

modify existing scenari

Using invite.owner as an example, if we add the auth requirement to the existing file:

introduce scenari changes with new files, migrate to them

In the case, for our example invite.owner with auth, we would create a new file named something like invite.ownerauth.

This is all using my example for invite, but probably you can tell I am trying to think about this generically because I think it's probably time that sympa move away from some of this older scenari behavior that is now a problem. In particular many of the public scenari should no longer be options on new installs and need a migration path for existing installs. So sorry if this is an abuse of the issue tracker, free free to make it a separate issue or move it some place else. Thanks

ikedas commented 5 months ago

I +1 to add invite.ownerauth.

Having too many scenarios is troubling. I think it is a flaw in the current design that we have to have as many options as there are all possible conditions, but we have to live with this for the time being.