Subj : message-id To : All From : andrew clarke Date : Mon Oct 28 2002 03:24 pm Document: message-id.txt Version: 001 Date: 2002-10-28 Message-ID A new standard for unique message identifiers October 28, 2002 andrew clarke 3:633/285.4@FidoNet mail@ozzmosis.com Status of this document ----------------------- This document is a FidoNet Standards Proposal (FSP). This document specifies an optional FidoNet standard protocol for the FidoNet community, and requests discussion and suggestions for improvements. This document is released to the public domain, and may be used, copied or modified for any purpose whatever. Rationale --------- FTS-9 MSGIDs are not unique enough to be accurately relied upon. In particular you the operator of a system runs the risk of generating duplicate MSGIDs when using two or more different programs concurrently that generate one, particularly when those programs use C's time(NULL) function as a seed value to generate the hex value of the MSGID, which is quite common. time(NULL) can differ greatly between implementations. There is also the chance of generating duplicate MSGIDs if the system time is repeated, eg. switching from daylight saving time to normal time. To the author's knowledge the "no two messages from a given system may have the same serial number within a three years" (sic) clause in FTS-9 has been largely ignored by implementation that perform duplicate message detection based on the MSGIDs described by FTS-9. Message-ID ---------- A Message-ID consists of [\x01Message-ID:][space][YYYY][MM][DD][HH][MM][SS][RR...][space][address][newli ne] Where: [\01Message-ID:] is the ASCII character 1 followed by the string, "Message-ID:" (where the double-quotes are not part of the string). [space] is the ASCII character 30. [YYYY] is the current year. [MM] is the current month. [DD] is the current day. [HH] is the current hour. [MM] is the current minute. [SS] is the current second. [RR]... is a random alphanumeric sequence containing only the characters "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890" and whose length may be between 2 and 20 characters. [space] is the ASCII character 30. [address] is the origination address of the message. [newline] is the ASCII character 13. This format is similar to that used in Internet mail. General ------- If a Message-ID is to be generated, all the information listed above must be present. The year must contain the century. The month, day, hour, minute and second must have a leading zero if their values are less than 10. The year, month, day, hour, minute and second must be in decimal. The Message-ID control line should be placed before the text body of the message in which it appears. An existing Message-ID line should never be stripped from a message passing through an intermediate system. No system should ever add a Message-ID or modify an existing Message-ID contained in a message not originating on that system. Implementations that perform dupe-checking must perform their comparisons on the entire string from the first [space] until the [newline]. Implementations that generate a Message-ID may also optionally generate a MSGID conforming to the FTS-9 standard for systems that do not recognise the Message-ID. Example ------- An example of a valid Message-ID control line is as follows: \01Message-ID: 20021028011631AHh7j12h91j1 3:633/285.4@fidonet --- Msged/NT 6.1.1 * Origin: Blizzard of Ozz, Mt Eliza, Victoria, Australia (3:633/285.4) .