[Mailman-Users] Writing a custom handler
mark at msapiro.net
Wed Jul 3 02:23:54 CEST 2013
On 07/02/2013 03:09 PM, Chris Nulk wrote:
> Thank you for the help. Hopefully a last question. In the
> do_discard_globalban function, how can I send the discard message to
> mailman list? Or should I? As it stands now, each list owner/admin
> would be getting the message for their list. I am thinking that as the
> site administrator and maintainer of the global ban list, I should also
> get the message.
> In the updated code, I did change the populating of the banlist in the
> Read_GlobalBan_File function. Now, it strips and lowercases the
> addresses before it checks if the address is in the banlist. Before, it
> checked then populated a stripped, lowercase version. This could have
> resulted in duplicates if the address in the banlist but the address
> checked had a different case profile.
> # Go through possible senders. Check if any of them are
> # on the global ban list
> for sender in msg.get_senders():
> if sender.lower() in banlist:
Not necessary to lowercase sender here as msg.get_senders() always
returns lowercased addresses unless called with a preserve_case argument
with a True value.
> # copied almost verbatim from Mailman/Handlers/Moderate.py
> def do_discard_globalban(mlist, msg, sender):
> # forward auto-discards to list owners?
> if mlist.forward_auto_discards:
Note that no forwarding of the discard occurs unless the list's Privacy
options... -> Sender filters -> forward_auto_discards is set to Yes.
Otherwise, no notice is sent and the only indication is a "Message
discarded, msgid: ..." entry in the 'vette' log.
You may wish to remove the above condition.
> lang = mlist.preferred_language
> nmsg = Message.UserNotification(mlist.GetOwnerEmail(),
mlist.GetOwnerEmail() returns the LISTNAME-owner address which is the
recipient of this mail. This argument can be a string with a single
address as it's value as it is here or a list of strings, each of which
is an address. So the above line could be changed to
nmsg = Message.UserNotification([
'you at example.com',
with whatever list of addresses you want, or maybe since list owners
aren't much involved with this ban list
nmsg = Message.UserNotification('you at example.com',
> _('Global Ban List Auto-discard
Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
More information about the Mailman-Users