usefor-usefor-03 April 2005
[< Prev]
[TOC] [ Next >]
3.1.3 Message-ID
The Message-ID header contains a single unique message identifier.
This document updates the <msg-id> construct from Section 3.6.4 of
[RFC2822] so as to ensure that Internet Message Format Message-IDs
are usable in widely deployed news software. The global uniqueness
requirement for <msg-id> in [RFC2822] is to be understood as applying
across all protocols using such message identifiers, and across both
Email and Netnews in particular. A revised syntax for <msg-id> is
given below, but the requirements and descriptive text from Section
3.6.4 of [RFC2822] still apply.
message-id = "Message-ID:" SP msg-id CRLF
msg-id = [FWS] msg-id-core [FWS]
msg-id-core = "<" id-left "@" id-right ">"
; maximum length is 250 octets
id-left = dot-atom-text / no-fold-quote
id-right = dot-atom-text / no-fold-literal
no-fold-quote = DQUOTE
*( mqtext / mquoted-pair )
mqspecial
*( mqtext / mquoted-pair )
DQUOTE
mqtext = %d33 / ; all of <text> except
%d35-61 / ; controls, SP, HTAB, "\", ">"
%d63-91 / ; and DQUOTE
%d93-126
mquoted-pair = "\\" / "\" DQUOTE
mqspecial = "(" / ")" / ; same as specials except
"<" / ; "\" and DQUOTE quoted
"[" / "]" / ; and ">" omitted
":" / ";" /
"@" / "," /
"." / mquoted-pair
no-fold-literal = "[" *( mdtext / "\[" / "\]" / "\\" ) "]"
[[Adjacent dots should not be allowed]]
mdtext = %d33-61 / ; The rest of the US-ASCII
%d63-90 / ; characters not including
%d94-126 ; ">", "[", "]", or "\"
The msg-id-core MUST NOT be more than 250 octets in length.
NOTE: The length restriction ensures that systems which accept
message identifiers as a parameter when retrieving an article
(e.g. [NNTP]) can rely on a bounded length.
Observe that msg-id-core includes the < and >.
Observe also that in contrast to the corresponding header in
[RFC2822], the syntax does not allow comments within the Message-ID
header, it ensures that no string of characters is quoted unless
strictly necessary (it must contain at least one mqspecial) and no
single character is prefixed by a "\" in the form of a quoted-pair
unless strictly necessary, and moreover there is no possibility for
">" or WSP to occur inside a msg-id-core, whether quoted or not.
This is to simplify processing by relaying and serving agents and to
ensure interoperability with existing implementations. Thus, whereas
under [RFC2822] the following <msg-id-core>s would be considered
semantically equivalent,
<abcd@example.com>
<"abcd"@example.com>
<"ab\cd"@example.com>
only the first of them is syntactically permitted by this standard,
and hence a simple comparison of octets will always suffice to
determine the identity of two <msg-id-core>s.
Also note that this updated ABNF applies wherever <msg-id-core> is
used, including the References header discussed in Section 3.2.1 and
the Supersedes header discussed in Section 3.2.5.
[< Prev]
[TOC] [ Next >]
#Diff to first older
--- ../usefor-usefor-02/Message-ID.out November 2004
+++ ../usefor-usefor-03/Message-ID.out April 2005
@@ -6,9 +6,9 @@
are usable in widely deployed news software. The global uniqueness
requirement for <msg-id> in [RFC2822] is to be understood as applying
across all protocols using such message identifiers, and across both
- Email and Netnews in particular. The ABNF should be used as below,
- but the requirements and descriptive text from Section 3.6.4 of
- [RFC2822] still apply.
+ Email and Netnews in particular. A revised syntax for <msg-id> is
+ given below, but the requirements and descriptive text from Section
+ 3.6.4 of [RFC2822] still apply.
message-id = "Message-ID:" SP msg-id CRLF
msg-id = [FWS] msg-id-core [FWS]
@@ -21,29 +21,30 @@
id-right = dot-atom-text / no-fold-literal
no-fold-quote = DQUOTE
- *( mqtext / "\\" / "\" DQUOTE )
+ *( mqtext / mquoted-pair )
mqspecial
- *( mqtext / "\\" / "\" DQUOTE )
+ *( mqtext / mquoted-pair )
DQUOTE
- mqtext = NO-WS-CTL / ; all of <text> except
- %d33 / ; SP, HTAB, "\", ">"
- %d35-61 / ; and DQUOTE
- %d63-91 /
+ mqtext = %d33 / ; all of <text> except
+ %d35-61 / ; controls, SP, HTAB, "\", ">"
+ %d63-91 / ; and DQUOTE
%d93-126
+ mquoted-pair = "\\" / "\" DQUOTE
+
mqspecial = "(" / ")" / ; same as specials except
"<" / ; "\" and DQUOTE quoted
"[" / "]" / ; and ">" omitted
":" / ";" /
- "@" / "\\" /
- "," / "." /
- "\" DQUOTE
+ "@" / "," /
+ "." / mquoted-pair
no-fold-literal = "[" *( mdtext / "\[" / "\]" / "\\" ) "]"
- mdtext = NO-WS-CTL / ; Non white space controls
- %d33-61 / ; The rest of the US-ASCII
+ [[Adjacent dots should not be allowed]]
+
+ mdtext = %d33-61 / ; The rest of the US-ASCII
%d63-90 / ; characters not including
%d94-126 ; ">", "[", "]", or "\"
@@ -64,7 +65,7 @@
">" or WSP to occur inside a msg-id-core, whether quoted or not.
This is to simplify processing by relaying and serving agents and to
ensure interoperability with existing implementations. Thus, whereas
- under [RFC2822] the following <msg-id-core> would be considered
+ under [RFC2822] the following <msg-id-core>s would be considered
semantically equivalent,
<abcd@example.com>
@@ -73,9 +74,9 @@
only the first of them is syntactically permitted by this standard,
and hence a simple comparison of octets will always suffice to
- determine the identity of two <msg-id-core>.
+ determine the identity of two <msg-id-core>s.
- Also note that this updated ABNF applies wherever <msg-id-core> are
+ Also note that this updated ABNF applies wherever <msg-id-core> is
used, including the References header discussed in Section 3.2.1 and
the Supersedes header discussed in Section 3.2.5.