summaryrefslogtreecommitdiff
path: root/src/mailman/rules/docs/implicit-dest.txt
blob: e5c340dcd0ce28923b247a970c40bd16cbf02f51 (plain) (blame)
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
Implicit destination
====================

The 'implicit-dest' rule matches when the mailing list's posting address is
not explicitly mentioned in the set of message recipients.

    >>> mlist = config.db.list_manager.create(u'_xtest@example.com')
    >>> rule = config.rules['implicit-dest']
    >>> print rule.name
    implicit-dest

This rule matches messages that have implicit destination, meaning that the
mailing list's posting address isn't included in the explicit recipients.

    >>> mlist.require_explicit_destination = True
    >>> mlist.acceptable_aliases = u''
    >>> msg = message_from_string("""\
    ... From: aperson@example.org
    ... Subject: An implicit message
    ...
    ... """)
    >>> rule.check(mlist, msg, {})
    True

You can disable implicit destination checks for the mailing list.

    >>> mlist.require_explicit_destination = False
    >>> rule.check(mlist, msg, {})
    False

Even with some recipients, if the posting address is not included, the rule
will match.

    >>> mlist.require_explicit_destination = True
    >>> msg['To'] = 'myfriend@example.com'
    >>> rule.check(mlist, msg, {})
    True

Add the posting address as a recipient and the rule will no longer match.

    >>> msg['Cc'] = '_xtest@example.com'
    >>> rule.check(mlist, msg, {})
    False

Alternatively, if one of the acceptable aliases is in the recipients list,
then the rule will not match.

    >>> del msg['cc']
    >>> rule.check(mlist, msg, {})
    True
    >>> mlist.acceptable_aliases = u'myfriend@example.com'
    >>> rule.check(mlist, msg, {})
    False

A message gated from NNTP will obviously have an implicit destination.  Such
gated messages will not be held for implicit destination because it's assumed
that Mailman pulled it from the appropriate news group.

    >>> rule.check(mlist, msg, dict(fromusenet=True))
    False


Alias patterns
--------------

It's also possible to specify an alias pattern, i.e. a regular expression to
match against the recipients.  For example, we can say that if there is a
recipient in the example.net domain, then the rule does not match.

    >>> mlist.acceptable_aliases = u'^.*@example.net'
    >>> rule.check(mlist, msg, {})
    True
    >>> msg['To'] = 'you@example.net'
    >>> rule.check(mlist, msg, {})
    False