[Mailman-Developers] Re: New MM3 plugin: mailman_sieve
> On Mar 10, 2022, at 05:04, Дилян Палаузов wrote: > > Hello, > > I have published a new Mailman 3 plugin at > https://mail.aegee.org/cgit/mailman_sieve/tree/ . It generates for > each mailing list a Sieve script. When the Sieve script is evaluated > during the SMTP dialog, it would reject some emails, which otherwise > would be bounced by Mailman. Less bounces means less backscatters and > better IP reputation. > > For the record, I do the evaluation of the Sieve scripts during the > SMTP dialog with https://mail.aegee.org/cgit/aegee-milter . Since the > latter is not documented yet, you cannot use it. The mailman_sieve > plugin is not useful, unless you have software to evaluate the Sieve > Scripts during the SMTP dialog. > > This is a very first version, which does what it is supposed to do. > Some optimizations are possible, like not including the subscriber > addresses in the Sieve scripts for announce-only mailing lists. I am > not good at writing setuptools configuration. Looking at your repo, I think you’ve got all of the things right. You could keep everything in pyproject.toml though and remove setup.cfg since pyproject.toml is the new standard thing with Python packaging. > Neither do I understand > the mailman system very good right now, Also, feel free to ask questions on this list for something that you need help with :-) > creating possibly shorter > scripts. But the plugin is there to keep by IP reputation good! > > See https://mail.aegee.org/cgit/mailman_sieve/tree/README.md . This is nice! > My reading of the mm3 source code is that there is no event triggered, > when the mailing list configuration changes, like adding a new > moderator, or switching the announce-only status. In the lack of such > event triggers, the Sieve scripts are not updated. Please feel free to file issues in Gitlab for the events that you think that might be useful for this. Also, MRs are welcome ofcourse too! I’ve been thinking about ways to extend our event system beyond just the Core so, having more events emitted when the List’s configuration is updated and/or ownership change would be good to have for that use case too. Hyperkitty can fetch updates from Core using those and/or Postorius can cache certain data internally and events could invalidate them. -- thanks, Abhilash Raj (maxking) ___ Mailman-Developers mailing list -- mailman-developers@python.org To unsubscribe send an email to mailman-developers-le...@python.org https://mail.python.org/mailman3/lists/mailman-developers.python.org/ Mailman FAQ: https://wiki.list.org/x/AgA3 Security Policy: https://wiki.list.org/x/QIA9
[Mailman-Developers] Re: Creating an event catching plugin
> On Mar 8, 2022, at 12:45, Дилян Палаузов wrote: > > Hello, > > the object passed was actually an unsubscription/subscription event, > which was just pretty-printed. > > Is there any explanation, why in the code below YYY is not printed? > > when I add > >def pre_hook(self): >print('pre_HOOK') > > > pre_HOOK is also not printed, but __init__ is called, as XXX is > printed. I am not sure if you figured it out already, I see that you moved your code from pre_hook to __init__ for your plugin. Just for testing, I enabled the `print(‘hello world’)` in your plugin and in a local install and it seems to work, ``` $ mailman info Hello World GNU Mailman 3.3.6b1 (Tom Sawyer) Python 3.9.10 (main, Jan 15 2022, 11:40:53) [Clang 13.0.0 (clang-1300.0.29.3)] config file: /Users/maxking/Documents/mm3/core-workspace-2/var/etc/mailman.cfg db url: sqlite:Users/maxking/Documents/mm3/core-workspace-2/var/data/mailman.db devmode: DISABLED REST root url: http://localhost:8001/3.1/ REST credentials: restadmin:restpass ``` The configuration is like your README.md recommends ``` [plugin.mailman_sieve] class: mailman_sieve.SievePlugin enabled: yes configuration: ./sieve.cfg ``` > Greetings > Дилян > > On Tue, 2022-03-08 at 19:39 +0200, Дилян Палаузов wrote: >> Hello, >> >> can you point me to existing, open-source mailman plugins? We don’t currently have any that i know of, so this is really the first one! I am happy to see that :-) We should put up a list of community maintained plugins in a page at docs.mailman3.org so the users can actually discover them plugin. >> >> I want to write a plugin, which fires on all subscriptions, >> unsubscriptions and configuration changes. >> >> This code: >> >> def subscribe_events(e): >> print('EVENT', e) >> >> @implementer(IPlugin) >> class SievePlugin: >> def __init__(self): >> print('XXX') >> zope.event.subscribers.append(subscribe_events) >> >> def post_hook(self): >> print('YYY') >> zope.event.subscribers.append(subscribe_events) >> >> >> prints: >> XXX >> EVENT x...@example.org joined zzz.udoma.bapha.be >> EVENT ab c joined zzz.udoma.bapha.be I guess you were using `print` statements for debugging when working on the plugin, but generally, it is good to use logging library instead since print logs to stdout, which might not be set correctly in daemon processes like Mailman. >> >> or >> XXX >> EVENT x...@example.org left zzz.udoma.bapha.be >> >> on `mailman addmembers/mailman delmembers`. But it does not trigger >> a >> UnsubscriptionEvent or SubscriptionEvent. >> >> Greetings >> Дилян > > ___ > Mailman-Developers mailing list -- mailman-developers@python.org > To unsubscribe send an email to mailman-developers-le...@python.org > https://mail.python.org/mailman3/lists/mailman-developers.python.org/ > Mailman FAQ: https://wiki.list.org/x/AgA3 > > Security Policy: https://wiki.list.org/x/QIA9 -- thanks, Abhilash Raj (maxking) signature.asc Description: Message signed with OpenPGP ___ Mailman-Developers mailing list -- mailman-developers@python.org To unsubscribe send an email to mailman-developers-le...@python.org https://mail.python.org/mailman3/lists/mailman-developers.python.org/ Mailman FAQ: https://wiki.list.org/x/AgA3 Security Policy: https://wiki.list.org/x/QIA9
[Mailman-Developers] New MM3 plugin: mailman_sieve
Hello, I have published a new Mailman 3 plugin at https://mail.aegee.org/cgit/mailman_sieve/tree/ . It generates for each mailing list a Sieve script. When the Sieve script is evaluated during the SMTP dialog, it would reject some emails, which otherwise would be bounced by Mailman. Less bounces means less backscatters and better IP reputation. For the record, I do the evaluation of the Sieve scripts during the SMTP dialog with https://mail.aegee.org/cgit/aegee-milter . Since the latter is not documented yet, you cannot use it. The mailman_sieve plugin is not useful, unless you have software to evaluate the Sieve Scripts during the SMTP dialog. This is a very first version, which does what it is supposed to do. Some optimizations are possible, like not including the subscriber addresses in the Sieve scripts for announce-only mailing lists. I am not good at writing setuptools configuration. Neither do I understand the mailman system very good right now, creating possibly shorter scripts. But the plugin is there to keep by IP reputation good! See https://mail.aegee.org/cgit/mailman_sieve/tree/README.md . My reading of the mm3 source code is that there is no event triggered, when the mailing list configuration changes, like adding a new moderator, or switching the announce-only status. In the lack of such event triggers, the Sieve scripts are not updated. When the code improves, the plugin could be published in PyPi or in mailman/contrib . Greetings Дилян ___ Mailman-Developers mailing list -- mailman-developers@python.org To unsubscribe send an email to mailman-developers-le...@python.org https://mail.python.org/mailman3/lists/mailman-developers.python.org/ Mailman FAQ: https://wiki.list.org/x/AgA3 Security Policy: https://wiki.list.org/x/QIA9