[ mailman-Patches-573505 ] usenet threading improvements

SourceForge.net noreply at sourceforge.net
Wed Oct 22 19:54:58 EDT 2003

Patches item #573505, was opened at 2002-06-25 07:59
Message generated for change (Comment added) made by mundaun
You can respond by visiting: 

Category: mail delivery
Group: Mailman 2.0.x
Status: Open
Resolution: None
Priority: 1
Submitted By: Mark Weaver (mdw21)
Assigned to: Nobody/Anonymous (nobody)
Summary: usenet threading improvements

Initial Comment:
Basically message-id munging for all messages.

Might be 
better as an option?  This helps with threading in usenet gating, as 
what happens is this:

someone sends a mail with message-
id foo at bar.com
gating replaces the message-id with 
mailman.123.456.list at list.com
list member replies via mail, 
"in-reply-to" header is set to the foo at bar.com
now when the 
message is gated it can't thread because in-reply-to: (which is 
translated into references:) is wrong.

Solution is to munge 
all message-ids.  Doesn't really do any harm AFAICT.


Comment By: Michael Stucki (mundaun)
Date: 2003-10-23 01:54

Logged In: YES 

we had exactly the same problem. However we run mailman 
2.1.2 where things seem to have changed, so I am now writing 
down the required steps for more recent releases... 
I had to copy the munging code from 
Mailman/Queue/NewsRunner.py to 
block 1: 
# Matches our Mailman crafted Message-IDs.  See 
mcre = re.compile(r""" 
    <mailman.                                     # match the prefix 
    \d+.                                          # serial number 
    \d+.                                          # time in seconds since epoch 
    \d+.                                          # pid 
    (?P<listname>[^@]+)                           # list's internal_name() 
    @                                             # localpart at dom.ain 
    (?P<hostname>[^>]+)                           # list's host_name 
    >                                             # trailer 
    """, re.VERBOSE) 
block 2: 
    hackmsgid = 1 
    if msgid: 
        mo = mcre.search(msgid) 
        if mo: 
            lname, hname = mo.group('listname', 'hostname') 
            if lname == mlist.internal_name() and hname == 
                hackmsgid = 0 
    if hackmsgid: 
        del msg['message-id'] 
        msg['Message-ID'] = Utils.unique_message_id(mlist) 
After that, my biggest problem was that I applied the changes 
but mailman didn't follow them. I finally recognised that I had to 
restart the qrunner daemon (which wasn't there in older 
Hope this helps 
- michael 


Comment By: Nicolas Marchildon (elecnix)
Date: 2003-01-16 06:11

Logged In: YES 

I solved the problem by adding the munging code to
DeliverToList, in HandlerAPI.py, right before the message is
sent in the delivery pipeline, and removed it from
ToUsenet.py and CookHeaders.py. This way, the Message-ID
header is calculated only once, and used for all the steps
of the pipeline.

Nicolas Marchildon


Comment By: Nicolas Marchildon (elecnix)
Date: 2003-01-16 05:21

Logged In: YES 

The submitted patch does not do what it should to. The calls
to time.time() will not return the same thing as in
ToUsenet.py. I don't know much about the internals of
Mailman, and not much either about Python, so I don't really
know where to store the "correct" message ID so that it is
generated once, and used in both places.


You can respond by visiting: 

More information about the Mailman-coders mailing list