[Mailman-Users] Letting newsgroup messages into members-only lists

Jerry Stratton jerry at sandiego.edu
Tue Feb 26 23:18:30 CET 2002


A few people once asked about letting gatewayed newsgroup postings 
through to members-only lists automatically. I think I have this (and 
would appreciate comments on what I've done).

Note that this opens up the possibility of spam: all a spammer has to 
do is add a "Newsgroup:" header with the correct newsgroup, and their 
messages will get through. (But then technically, all they had to do 
in the past was find a member, and set their messages from that 
member. Since they don't do the latter, I'm not too worried about 
this one.)

This is for Mailman 2.0.8.

In ~/Mailman/Handlers/ there is a file called 'Hold.py'. This 
apparently is what does the work of shunting inappropriate mail off 
to administrators for approval.

In it, there is a section that says:

     if mlist.member_posting_only:
         posters = Utils.List2Dict(map(string.lower, mlist.posters))
         if not mlist.IsMember(sender) and \
            not Utils.FindMatchingAddresses(sender, posters):
             # the sender is neither a member of the list, nor in the list of
             # explicitly approved posters
             hold_for_approval(mlist, msg, msgdata, NonMemberPost)
             # no return

This is fairly obvious (assuming I've parsed it correctly): if 
member_posting_only is set for the list, then hold all messages 
unless they come from a member or are on the list of valid posters.

Change it to:

     if mlist.member_posting_only:
         if mlist.gateway_to_news:
             needgroup = string.lower(mlist.linked_newsgroup)
             newsgroup = string.lower(msg.getheader('newsgroups'))

         posters = Utils.List2Dict(map(string.lower, mlist.posters))
         if not mlist.IsMember(sender) and \
            not (mlist.gateway_to_news and needgroup and 
newsgroup==needgroup) and \
            not Utils.FindMatchingAddresses(sender, posters):
             # the sender is neither a member of the list, nor in the list of
             # explicitly approved posters
             # nor is it from the gatewayed newsgroup
             hold_for_approval(mlist, msg, msgdata, NonMemberPost)
             # no return

This, if "gateway_to_news" is set, grabs the newsgroup name that 
gatewaying is set for, and if one is available, also grabs the value 
of the Newsgroup: header in the message. It adds one more "unless" to 
the "hold all messages unless" logic: unless gatewaying is set up and 
there is a newsgroup set for gatewaying and the value of the 
newsgroup header matches the newsgroup we're gatewaying to.

Note that crossposted messages will not get through--but they will be 
available for administrative approval. I see this as a feature, not a 
bug :*)

Jerry
-- 
jerry at sandiego.edu
http://www.sandiego.edu/~jerry/
Serra 188B/x8773
--
The more restrictions there are, the poorer the people become. The 
greater the government¹s power, the more chaotic the nation would 
become. The more the ruler imposes laws and prohibitions on his 
people, the more frequently evil deeds would occur.
--The Silence of the Wise: The Sayings of Lao Zi




More information about the Mailman-Users mailing list