[Mailman-Developers] Re: New MM3 plugin: mailman_sieve

2022-03-10 Thread Abhilash Raj


> 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

2022-03-10 Thread Abhilash Raj


> 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

2022-03-10 Thread Дилян Палаузов
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