Administrivia¶
The administrivia rule matches when the message contains some common email
commands in the Subject:
header or first few lines of the payload. This
is used to catch messages posted to the list which should have been sent to
the -request
robot address.
>>> from mailman.app.lifecycle import create_list
>>> mlist = create_list('_xtest@example.com')
>>> mlist.administrivia = True
>>> from mailman.config import config
>>> rule = config.rules['administrivia']
>>> print(rule.name)
administrivia
For example, if the Subject:
header contains the word unsubscribe
, the
rule matches.
>>> from mailman.testing.helpers import (specialized_message_from_string
... as message_from_string)
>>> msg_1 = message_from_string("""\
... From: aperson@example.com
... Subject: unsubscribe
...
... """)
>>> rule.check(mlist, msg_1, {})
True
Similarly, if the body of the message contains the word subscribe
in the
first few lines of text, the rule matches.
>>> msg_2 = message_from_string("""\
... From: aperson@example.com
... Subject: I wish to join your list
...
... subscribe
... """)
>>> rule.check(mlist, msg_2, {})
True
In both cases, administrivia checking can be disabled.
>>> mlist.administrivia = False
>>> rule.check(mlist, msg_1, {})
False
>>> rule.check(mlist, msg_2, {})
False
To make the administrivia heuristics a little more robust, the rule actually
looks for a minimum and maximum number of arguments, so that it really does
seem like a mis-addressed email command. In this case, the confirm
command requires at least one argument. We don’t give that here so the rule
will not match.
>>> mlist.administrivia = True
>>> msg = message_from_string("""\
... From: aperson@example.com
... Subject: confirm
...
... """)
>>> rule.check(mlist, msg, {})
False
But a real confirm
message will match.
>>> msg = message_from_string("""\
... From: aperson@example.com
... Subject: confirm 12345
...
... """)
>>> rule.check(mlist, msg, {})
True
We don’t show all the other possible email commands, but you get the idea.
Non-administrivia¶
Of course, messages that don’t contain administrivia, don’t match the rule.
>>> msg = message_from_string("""\
... From: aperson@example.com
... Subject: examine
...
... persuade
... """)
>>> rule.check(mlist, msg, {})
False
Also, only text/plain
parts are checked for administrivia, so any email
commands in other content type subparts are ignored.
>>> msg = message_from_string("""\
... From: aperson@example.com
... Subject: some administrivia
... Content-Type: text/x-special
...
... subscribe
... """)
>>> rule.check(mlist, msg, {})
False