Re: [Exim] Understanding time in message ID

Top Page
Delete this message
Reply to this message
Author: Nigel Metheringham
Date:  
To: exim-users
Subject: Re: [Exim] Understanding time in message ID
Please don't start a new message thread by replying to a message on the
list - it means that people with mail readers that can handle threads
see your message (and replies) pushed into the middle of an existing
thread.

On Mon, 2004-03-01 at 10:40, marcusv wrote:
> Can someone please explain to me, how to understand the concept behind
> an email message id.
> E.G.
>
> 1AxkPR-00048U-00-H
> 1AxkPR-00048U-00-D


Those are spool file names, not message Ids. A spool file name is made
up of a queue id, suffixed with -H (for message metadata and header
data) or -D (for body data). There may be other files for a single
message as well - ie Journal files.

[NB note that message id & queue id are not strongly differentiated in
the exim code & documentation - this is probably an oversight. The
extract I quote below uses message id where is shoudl probably be queue
id]

A message id as generated by exim is by default made up of a prefix
letter (E), the queue id, and @ symbol and the primary hostname.

A queue id is made up of 3 groups of base 62 encoded symbols - from the
source code (receive.c)
The message ID has 3 parts: tttttt-pppppp-ss. Each part is a number in
base 62. The first part is the current time, in seconds. The second
part is the current pid. Both are large enough to hold 32-bit numbers
in base 62. The third part can hold a number in the range 0-3843. It
used to be a computed sequence number, but is now the fractional
component of the current time in units of 1/2000 of a second (i.e. a
value in the range 0-1999). After a message has been received, Exim
ensures that the timer has ticked at the appropriate level before
proceeding, to avoid duplication if the pid happened to be re-used
within the same time period. It seems likely that most messages will
take at least half a millisecond to be received, so no delay will
normally be necessary. At least for some time...

There is code within exim (and I think also in exiqsumm in perl) to
decode base 62 - looking at that is your best bet.

    Nigel.


--
[ Nigel Metheringham           Nigel.Metheringham@??? ]
[ - Comments in this message are my own and not ITO opinion/policy - ]