================= Member moderation ================= Each user has a moderation flag. When set, and the list is set to moderate postings, then only members with a cleared moderation flag will be able to email the list without having those messages be held for approval. The 'moderation' rule determines whether the message should be moderated or not. >>> mlist = create_list('_xtest@example.com') >>> rule = config.rules['moderation'] >>> print rule.name moderation In the simplest case, the sender is not a member of the mailing list, so the moderation rule can't match. >>> msg = message_from_string("""\ ... From: aperson@example.org ... To: _xtest@example.com ... Subject: A posted message ... ... """) >>> rule.check(mlist, msg, {}) False Let's add the message author as a non-moderated member. >>> from mailman.interfaces.usermanager import IUserManager >>> from zope.component import getUtility >>> user = getUtility(IUserManager).create_user( ... 'aperson@example.org', 'Anne Person') >>> address = list(user.addresses)[0] >>> from mailman.interfaces.member import MemberRole >>> member = address.subscribe(mlist, MemberRole.member) >>> member.is_moderated False >>> rule.check(mlist, msg, {}) False Once the member's moderation flag is set though, the rule matches. >>> member.is_moderated = True >>> rule.check(mlist, msg, {}) True Non-members =========== There is another, related rule for matching non-members, which simply matches if the sender is /not/ a member of the mailing list. >>> rule = config.rules['non-member'] >>> print rule.name non-member If the sender is a member of this mailing list, the rule does not match. >>> rule.check(mlist, msg, {}) False But if the sender is not a member of this mailing list, the rule matches. >>> msg = message_from_string("""\ ... From: bperson@example.org ... To: _xtest@example.com ... Subject: A posted message ... ... """) >>> rule.check(mlist, msg, {}) True