There is a patch for this by Jon Carnes from 2003 that uses the special list name "post-only" for mailman 2.1 which still applies pretty cleanly to Mailman/Handlers/Moderate.py on the tip of the 2.1 branch today. I assume it could easily be adapted for the 3.0 branch.
http://<email address hidden>/msg14876.html
The patch:
*** jonc.Moderate.py Mon Jan 27 10:23:03 2003
--- Moderate.py Mon Jan 27 13:19:33 2003
***************
*** 25,28 ****
--- 25,30 ----
from Mailman import Utils
from Mailman import Message
+ from Mailman import MailList
+ from Mailman import MemberAdaptor
from Mailman import Errors
from Mailman.i18n import _
***************
*** 45,48 ****
--- 47,59 ----
^L
+ def CheckPostOnly(sender):
+ try:
+ m = MailList.MailList('post-only', lock=0)
+ return m.isMember(sender)
+ except Errors.MMListError:
+ return 0
+
+
+ ^L
def process(mlist, msg, msgdata):
if msgdata.get('approved'):
***************
*** 89,92 ****
--- 100,105 ----
# From here on out, we're dealing with non-members.
if matches_p(sender, mlist.accept_these_nonmembers):
+ return
+ if CheckPostOnly(sender):
return
if matches_p(sender, mlist.hold_these_nonmembers):
There is a patch for this by Jon Carnes from 2003 that uses the special list name "post-only" for mailman 2.1 which still applies pretty cleanly to Mailman/ Handlers/ Moderate. py on the tip of the 2.1 branch today. I assume it could easily be adapted for the 3.0 branch.
http://<email address hidden> /msg14876. html
The patch:
*** jonc.Moderate.py Mon Jan 27 10:23:03 2003
--- Moderate.py Mon Jan 27 13:19:33 2003
***************
*** 25,28 ****
--- 25,30 ----
from Mailman import Utils
from Mailman import Message
+ from Mailman import MailList
+ from Mailman import MemberAdaptor
from Mailman import Errors
from Mailman.i18n import _
***************
*** 45,48 ****
--- 47,59 ----
^L sender) : MailList( 'post-only' , lock=0) get('approved' ): these_nonmember s): sender) : these_nonmember s):
+ def CheckPostOnly(
+ try:
+ m = MailList.
+ return m.isMember(sender)
+ except Errors.MMListError:
+ return 0
+
+
+ ^L
def process(mlist, msg, msgdata):
if msgdata.
***************
*** 89,92 ****
--- 100,105 ----
# From here on out, we're dealing with non-members.
if matches_p(sender, mlist.accept_
+ return
+ if CheckPostOnly(
return
if matches_p(sender, mlist.hold_