blob: 8b351650c4f2aac861a02b492a5a5563d7355fbc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
=====
Rules
=====
Rules are applied to each message as part of a rule chain. Individual rules
simply return a boolean specifying whether the rule matches or not. Chain
links determine what happens when a rule matches.
All rules
=========
Rules are maintained in the configuration object as a dictionary mapping rule
names to rule objects.
>>> from zope.interface.verify import verifyObject
>>> from mailman.interfaces.rules import IRule
>>> for rule_name in sorted(config.rules):
... rule = config.rules[rule_name]
... print(rule_name, verifyObject(IRule, rule))
administrivia True
any True
approved True
banned-address True
dmarc-mitigation True
emergency True
implicit-dest True
loop True
max-recipients True
max-size True
member-moderation True
news-moderation True
no-subject True
nonmember-moderation True
suspicious-header True
truth True
You can get a rule by name.
>>> rule = config.rules['emergency']
>>> verifyObject(IRule, rule)
True
Rule checks
===========
Individual rules can be checked to see if they match, by running the rule's
``check()`` method. This returns a boolean indicating whether the rule was
matched or not.
>>> mlist = create_list('_xtest@example.com')
>>> msg = message_from_string("""\
... From: aperson@example.com
...
... An important message.
... """)
For example, the ``emergency`` rule just checks to see if the emergency flag
is set on the mailing list, and the message has not been pre-approved by the
list administrator.
>>> print(rule.name)
emergency
>>> mlist.emergency = False
>>> rule.check(mlist, msg, {})
False
>>> mlist.emergency = True
>>> rule.check(mlist, msg, {})
True
>>> rule.check(mlist, msg, dict(moderator_approved=True))
False
.. toctree::
:glob:
./*
|