[Mailman-Users] Automate Moderator Functions
Andre de Azevedo Cunha
acunha at iff.edu.br
Fri Sep 2 16:45:24 EDT 2016
Hi,
i`m trying to reject messages bigger then MAX_MESSAGE_SIZE.
I configured my Hold.py was described bellow:
replaced
hold_for_approval(mlist, msg, msgdata,
_
MessageTooBig(bodylen,_mlist.max_message_size))
with
rej = MessageTooBig(bodylen, mlist.max_message_size)
_ raise Errors.RejectMessage, rej.reason_notice_
The message was rejected, but the sender dont receive any notify about
that. The mailman vette log too. How can i solve this?
Thanks,
André
Dennis Putnam wrote:
>
>I am getting back to this and I have a question about maintenance. What
>is the correct way to modify this so that it will not get destroyed by
>updates?
There are two ways to proceed.
You can modify Mailman/Handlers/Hold.py itself, but before overwriting
it, make a "diff -u" between the base Hold.py and your modified
version to use as a patch to apply after any upgrade.
A better way is to leave Hold.py unchanged and make your own edited
version as say Mailman/Handlers/MyHold.py. Then you can replace the
base Hold.py Module with your MyHold.py by putting
GLOBAL_PIPELINE[GLOBAL_PIPELINE.index('Hold')] = 'MyHold'
in mm_cfg.py. Note that if you are going to do this, and you want also
to move MimeDel before Hold, you must either put the above line after
the lines
GLOBAL_PIPELINE.remove('MimeDel')
GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index('Hold'), 'MimeDel')
in mm_cfg.py or put it before, but then also change
GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index('Hold'), 'MimeDel')
to
GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index('MyHold'), 'MimeDel')
I recommend the former as in
#
# Put MimeDel ahead of Hold so "too big" is based on content filtered
# message.
#
GLOBAL_PIPELINE.remove('MimeDel')
GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index('Hold'), 'MimeDel')
#
# Replace Hold with local version
#
GLOBAL_PIPELINE[GLOBAL_PIPELINE.index('Hold')] = 'MyHold'
Since mm_cfg.py survives upgrades, this should survive.
>Also does this same procedure apply to other automatic rejections such
>as implicit destination?
>On 9/24/2012 8:43 PM, Mark Sapiro wrote:
>>
>> To automatically reject or discard messages that exceed the list's size
>> limit, find the section of the Mailman/Handlers/Hold.py that ends with
>> the lines
>>
>>
>> if bodylen/1024.0 > mlist.max_message_size:
>> hold_for_approval(mlist, msg, msgdata,
>> MessageTooBig(bodylen,
>> mlist.max_message_size))
>> # no return
>>
>> (there is one wrapped line in the above) and replace
>>
>> hold_for_approval(mlist, msg, msgdata,
>> MessageTooBig(bodylen,
>> mlist.max_message_size))
>>
>> with
>>
>> rej = MessageTooBig(bodylen, mlist.max_message_size))
>> raise Errors.RejectMessage, rej.reason_notice
>>
>> to reject the message or with
>>
>> raise Errors.DiscardMessage
>>
>> to discard the message. Note that this will not honor the list's
>> forward_auto_discards setting. to do that you would need to put
>>
>> from Mailman.Handlers.Moderate import do_discard
>>
>> with the other imports near the beginning of the
>> Mailman.Handlers.hold.py module and then replace the lines with
>>
>> do_discard(mlist, msg)
Yes, similar changes would apply to other holds in Hold.py.
--
Mark Sapiro <mark at msapiro.net [1]> The highway is for
gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
--
Links:
------
[1] http://mail.python.org/mailman/listinfo/mailman-users
More information about the Mailman-Users
mailing list