Subject: RE: Take 2: References/In-Reply-To replacement text

From: "Larry Osterman (Exchange)" <[email-masked]>
Date: Tue, 25 May 1999 10:01:33 -0700

> 
>   | Though other algorithms will work, it is 
>   | RECOMMENDED that the right hand side contain some domain 
> identifier 
>   | (either of the host itself or otherwise) such that the 
> generator of 
>   | the message identifier can guarantee the uniqueness of 
> the left hand 
>   | side within the scope of that domain.
> 
> Why is this just recommended?   I always thought that was the whole
> point of the message-id syntax, and that nothing else has a hope of
> working.   The domain name used must be one in which the generator of
> the message-id can guarantee that the local part (of the 
> message-id) is
> unique (so that the whole thing is then unique).   That can 
> be a host name,
> or a higher level domain name (or even a domain literal (IP 
> address) though
> that is harder to do correctly).  I had never conceived of 
> the domain name
> part of the message-id being something about which there was 
> any debate
> or difference of opinion.  Is there?
> 

The reason this is just recommended is that there are message-id generation
algorithms that guarantee universal uniqueness regardless of the rhs.  For
example, Exchange generates the LHS of the message-id based on the 128 bit
UUID of the message store concatenated with the 48bit ID of the message -
this combination is guaranteed to be unique, even if the RHS isn't.  For
compatibility reasons, Exchange uses the DNS name of the server as retrieved
from gethostbyname() as the rhs, however, for whatever reason, the default
configuration of NT doesn't populate the DNS domain (don't ask, it's fixed
in W2K), so it is not uncommon to get message ID's like:
	Message-ID: <8BB128650D00D211BAEF00A0C9C74EB902E9E8@TOTO>

In this case, the LHS of the ID is universally unique, even though the RHS
isn't a FQDN.  So the text is simply stating that if your generation
algorithm can guarantee uniqueness in the LHS, the thing on the RHS doesn't
HAVE to be a domain name, it could be anything (even the developers initials
:))

Thomas Oscar Theodore Osterman
Sent from toto-laptop.dns.microsoft.com running NT5 and Outlook 2000
and Exchange Server 5.5.  Please notify the sender of any difficulties

---

From: Robert Elz <[email-masked]>
Date: Wed, 26 May 1999 23:07:57 +1000

Date:        Tue, 25 May 1999 10:01:33 -0700
    From:        "Larry Osterman (Exchange)" <[email-masked]>
    Message-ID:  <01D6C7224936D211BA450000F805D53805421639@TOTO>

  | The reason this is just recommended is that there are message-id generation
  | algorithms that guarantee universal uniqueness regardless of the rhs.

Surely this could only work if everyone is using a compatible algorithm.
That's just fine within one domain, but surely you aren't attempting
to tell me that I couldn't generate the same message-id LHS using some
completely different method?

  | For
  | example, Exchange generates the LHS of the message-id based on the 128 bit
  | UUID of the message store concatenated with the 48bit ID of the message -
  | this combination is guaranteed to be unique, even if the RHS isn't.

I don't believe that for a second.   How is it guaranteed to be unique?
What's to stop me having a message-store with the same uuid and a message
with the same 48bit id (not using exchange, and hence not using whatever
algorithm it uses to get the what seem to be unique numbers) and then
encoding it the same way (and adding "@TOTO" to the end - which I assume
here is done just to meet the syntax requirements).

  | For
  | compatibility reasons, Exchange uses the DNS name of the server as retrieved
  | from gethostbyname() as the rhs,

That's not just a compatability reason, even if you think it is - doing that
means you can guarantee uniqueness, because within that host your message
generation algorithm is fixed (or can be arranged to be so), and you can
arrange it any way that you like which generates locally unique numbers.
if you desire, you could even be having them globally unique amongst the
universe of all exchange users in the world - but to claim this is globally
unique amongst all the other (unspecified) algorithms that could exist is
a bit hard for me to swallow.

  | In this case, the LHS of the ID is universally unique, even though the RHS
  | isn't a FQDN.  So the text is simply stating that if your generation
  | algorithm can guarantee uniqueness in the LHS, the thing on the RHS doesn't
  | HAVE to be a domain name, it could be anything (even the developers initials
  | :))

I understood that.   I still fail to see how any algorithm can guarantee 
uniqueness in the face of other undefined algorithms using the same space
of identifiers, but with totally different generation methods.   Make it
long enough and the chances of a collision are small, but non-zero.

Eg: my local id-generation algorithm might just be to take the character
string "01D6C7224936D211BA450000F805D538054" and then append a 5 digit
message sequence number to it.   If this happened to be the 21639'th
message that I had sent, and I was using that algorithm, would not the
message ID I generated be just the same as the one on the message you
sent (as far as the LHS goes).   Of course, mine wouldn't be saying "@TOTO"
because I put my domain there, and my I-D's don't pretend to be unique
globally, just within my domain.   But if we were all preending that the
LHS itself was to be globally unique, and the "@domain" part is just there
to meed some absurd syntax requirement in some old RFC, then I could be
generating "@TOTO" too (I used to watch the lone ranger as a kid...) and
our two messages would just happen to have the same message-id.   That
doesn't sound anything like unique to me.   There's certainly nothing in
822 (or 822bis) which prohibits my algorithm...

kre