Message-ID, privacy and uniqueness

Arnt Gulbrandsen <[email protected]> Fri, 29 May 2026 10:47:04 +0200
Newsgroups gmane.mail.mutt.devel
Message-ID <[email protected]>
Hi,

https://gitlab.com/muttmua/mutt/-/work_items/453 notes that some 
people consider the local hostname to be private information, and 
requests that Message-ID not contain the local hostname.

Some MUAs use the sending domain, which I don't really like. It's 
fine for your own domain, but many people use gmail addresses.

Message-ID: 
<[email protected]>
needs a LOT of entropy in the localpart in order to be safely 
unique.

However, the sending domain isn't conveniently available at that 
spot in the code.

Another alternative is to use a domain from the MUA, I like that 
better, so I suggest the below as a solution for #453. The 
repeated %r gives 120 bits of entropy while keeping the message-id 
fairly short.

I removed the time. I don't see the value of including the time, 
it's bulky and reminds me of the passage on Knuth vol 2 where he 
"attempted to create a fantastically good", etc. The best 
protection against clashing message-ids is IMO to spend the entire 
length on high-entropy randomness and avoid low-entropy components 
like the time. If we can increase the length, it's IMO better to 
spend the extra length on more entropy.

Arnt

diff --git a/init.h b/init.h
index af684866..ae3760f9 100644
--- a/init.h
+++ b/init.h
@@ -2202,7 +2202,7 @@ struct option_t MuttVars[] = {
   { "msg_format",       DT_SYN,  R_NONE, {.p="message_format"}, {.p=0} },
   /*
   */
-  { "message_id_format", DT_STR, R_NONE, {.p=&MessageIdFormat}, {.p="<%z@%f>"} },
+  { "message_id_format", DT_STR, R_NONE, {.p=&MessageIdFormat}, {.p="<%r%r%r%r%[email protected]>"} },
   /*
   ** .pp
   ** This variable describes the format of the Message-ID generated