Decoding Thread-index/ConversationIndex email Header

0 votes
asked May 29 by thinktoday (120 points)

I have been trying to decode Thread-Index or ConversationIndex, by following this link I have build conversation code...

It works fine but problem is when finding differenceTime for childBlocks

if the first bit is '0'(added high 15 bits and the low 18 bits), results are correct for this case, but I doubt that I have mistake when 1st bit is 1

I have also refered Microsoft Documentation and tried adding high 10bits and low 23 bit when 1st bit is ‘1’.But the results are incorrect

Consider this example mentioned in this link : I have got the correct difference time, and here is flow…

Child Block Hex:0000CCBA30 Child Block Binary:0000000000000000110011001011101000110000 Length:40 Child Block Segerated:0 0000000000000001100110010111010 0011 0000 Since have 1st bit as '0' added high 15 bits and the low 18 bits: Difference Time in Binary:0000000000000000000000000000001100110010111010000000000000000000 Difference Time in milliseconds:1373896 difference Time is : 00:22:53 Child Block Result Time:Wed Jan 02 22:53:58 IST 2013
But for Conversation Index: AQHWLRNo4NaOjvXU8EODe0ZotrA8B6itzaxf ,which I used for testing...
zero paded file time : 1D62D1368000000 nano seconds : 132342800426467328 Result Header Time :2020-05-18T12:54:02.646732800Z(Got this correct) Hex:A8ADCDAC5F Child Block Binary : 1010100010101101110011011010110001011111 Length:40 Child Block Segerated:1 0101000101011011100110110101100 0101 1111 Since have 1st bit as '1' added high 10 bits and the low 23 bits: 0000000000010100010101101110011011010110000000000000000000000000 Difference Time in NanoSeconds:5725048967004160 Difference Time in milliseconds:572504896700 difference Time is : 159029:08:16 Sum of header and child nanosecond:138067849393471488 Child Block Time : 2038-07-09T18:02:19.347148800Z

Applies to: Rebex Secure Mail

1 Answer

0 votes
answered May 29 by Lukas Pokorny (116,670 points)

Hello, decoding of these Microsoft's insufficiently documented proprietary header fields is outside the scope of Rebex Secure Mail. But perhaps the following information would be useful:

In 2013, one of our users have written a parser for these headers, but then run into issues - it looks like the documentation is not entirely correct. We tried figuring it out back then, but without success. See How to interpret Thread-Index header for the old thread and parser code.

The user also asked about the issue at Microsoft's MSDN forum, but unfortunately got no reply.

commented May 29 by thinktoday (120 points)
Thanks for the reply, I have seen the old thread but, same issues resembles there : ( posted in MSDN forum too hoping for reply
commented May 29 by Lukas Pokorny (116,670 points)
Please let us know if you find out anything about this.

On a side note, have you considered using the Message-Id, In-Reply-To and References headers? Those are the standard way to resolve mail conversation threads.
commented May 29 by thinktoday (120 points)
yes, It was the first thing I used ... But, I use outlook api to get messages from Inbox, where some messages dosen't have internet message headers to read (In-Reply-To and References).
If internetMessageHeader is not available we can make individual message call with messageid$value so that mime headers are returned , but that won't be efficient..... That's why I started to decode Thread-Index
...