[Mailman-Developers] Mailman headers roundup

Barry Warsaw barry at list.org
Thu Nov 3 15:35:59 CET 2011


On Nov 02, 2011, at 12:00 PM, Chris Clark wrote:

>If a header is going to contain data that is generated from non-trivial
>processing I think it would be good form to include the algorithm name in the
>header.

The idea behind the header is to enhance RFC 5064 so that the MLM can
pre-calculate Archived-At for the destination archive, without any interaction
from that archiver.  It also enables users to do the same.

Message-ID-Hash is primarily a convenience value which provides the last
component in Archived-At.  Thus Archived-At is calculated as
<base_url>/<mid_hash> where <base_url> is typically the List-Archive header
value and <mid_hash> is Message-ID-Hash.

The choice of Base 32 was deliberate.  It's seen as a trade-off between
uniqueness and (potentially <wink>) human readable.

http://wiki.list.org/display/DEV/Stable+URLs

The reason you do not want variability in the algorithm is because you want to
be able to calculate the Archived-At value given only the Message-ID and the
archiver base url.  Having to also exchange knowledge of the algorithm used
would make this less usable IMO.

Let's say I know that messages to mailman-developers are archived at
mail.python.org, gmane.org and www.mail-archive.com, and I somehow know that
your original message has Message-ID: <4EB1933E.9080707 at actian.com>, I don't
need anything else to find your message:

    >>> from hashlib import sha1
    >>> from base64 import b32encode
    >>> mid_hash = b32encode(sha1('<4EB1933E.9080707 at actian.com>').digest())
    >>> mid_hash
    'ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6'
    >>> for base in ('gmane.org', 'mail-archive.com', 'mail.python.org'):
    ...   print 'http://{0}/{1}'.format(base, mid_hash)
    ... 
    http://gmane.org/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6
    http://mail-archive.com/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6
    http://mail.python.org/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6

That's the compelling argument behind the *concept* of Message-ID-Hash, but as
you can see, it's easy to calculate with just two pieces of information, one
of which is static and the other which is fairly easy to convey.

Cheers,
-Barry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/mailman-developers/attachments/20111103/1fc07210/attachment.pgp>


More information about the Mailman-Developers mailing list