usefor-usefor-04 May 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 [FWS] msg-id [FWS] CRLF
msg-id = "<" 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 /
*mqtext "." /
*mqtext mqspecial *mqtext )
DQUOTE
mqtext = atext / "." / mqspecial
mqspecial = "(" / ")" / ; same as specials except
"<" / ; "\" and DQUOTE quoted
"[" / "]" / ; "." doubled and ">" omitted
":" / ";" /
"@" / "," /
".." / "\\" / "\" DQUOTE
no-fold-literal = "[" *( mdtext / "\[" / "\]" / "\\" ) "]"
mdtext = %d33-61 / ; The rest of the US-ASCII
%d63-90 / ; characters not including
%d94-126 ; ">", "[", "]", or "\"
The msg-id 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 includes the < and >.
Observe also that in contrast to the corresponding header in
[RFC2822]:
o the syntax does not allow comments within the Message-ID header,
o it ensures that no string of characters is quoted if it was
already a <dot-atom-text> (it MUST start or end with a ".", or
contain at least one <mqspecial>),
o it ensures that no single character is prefixed by a "\" in the
form of a <quoted-pair> unless strictly necessary,
o it excludes all control characters,
o there is no possibility for ">" or WSP to occur inside a <msg-id>,
whether quoted or not, and
o even though commonly derived from <domain>s, <id-rights>s are
case-sensitive (and thus, once created, are not to be altered
during subsequent transmission or copying)
This is to simplify processing by relaying and serving agents and to
ensure interoperability with existing implementations and compliance
with [NNTP]. Thus, whereas under [RFC2822] the following <msg-id>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>s.
Also note that this updated ABNF applies wherever <msg-id> is used,
including the References header discussed in Section 3.2.2 and the
Supersedes header discussed in Section 3.2.6.
NOTE: It is RECOMMENDED in [RFC2822] that, for ensuring global
uniqueness, the <id-right> be some domain identifier within whose
scope the uniqueness of the <id-left> can be guaranteed. When
following this recommendation, any <dot-atom-text> or <no-fold-
literal> used for the <id-right> are to be interpreted as
<domain>s as described in Section 3.4.1 of [RFC2822].
[< Prev]
[TOC] [ Next >]
#Diff to first older
--- ../usefor-usefor-03/Message-ID.out April 2005
+++ ../usefor-usefor-04/Message-ID.out May 2005
@@ -9,11 +9,9 @@
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
+ message-id = "Message-ID:" SP [FWS] msg-id [FWS] CRLF
- msg-id = [FWS] msg-id-core [FWS]
-
- msg-id-core = "<" id-left "@" id-right ">"
+ msg-id = "<" id-left "@" id-right ">"
; maximum length is 250 octets
id-left = dot-atom-text / no-fold-quote
@@ -21,52 +19,58 @@
id-right = dot-atom-text / no-fold-literal
no-fold-quote = DQUOTE
- *( mqtext / mquoted-pair )
- mqspecial
- *( mqtext / mquoted-pair )
+ ( "." mqtext /
+ *mqtext "." /
+ *mqtext mqspecial *mqtext )
DQUOTE
- mqtext = %d33 / ; all of <text> except
- %d35-61 / ; controls, SP, HTAB, "\", ">"
- %d63-91 / ; and DQUOTE
- %d93-126
-
- mquoted-pair = "\\" / "\" DQUOTE
+ mqtext = atext / "." / mqspecial
mqspecial = "(" / ")" / ; same as specials except
"<" / ; "\" and DQUOTE quoted
- "[" / "]" / ; and ">" omitted
+ "[" / "]" / ; "." doubled and ">" omitted
":" / ";" /
"@" / "," /
- "." / mquoted-pair
+ ".." / "\\" / "\" DQUOTE
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.
+ The msg-id 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 that msg-id 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.
+ [RFC2822]:
+
+ o the syntax does not allow comments within the Message-ID header,
+
+ o it ensures that no string of characters is quoted if it was
+ already a <dot-atom-text> (it MUST start or end with a ".", or
+ contain at least one <mqspecial>),
+ o it ensures that no single character is prefixed by a "\" in the
+ form of a <quoted-pair> unless strictly necessary,
+
+ o it excludes all control characters,
+
+ o there is no possibility for ">" or WSP to occur inside a <msg-id>,
+ whether quoted or not, and
+
+ o even though commonly derived from <domain>s, <id-rights>s are
+ case-sensitive (and thus, once created, are not to be altered
+ during subsequent transmission or copying)
+
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,
+ ensure interoperability with existing implementations and compliance
+ with [NNTP]. Thus, whereas under [RFC2822] the following <msg-id>s
+ would be considered semantically equivalent,
<abcd@example.com>
<"abcd"@example.com>
@@ -74,9 +78,16 @@
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.
+ determine the identity of two <msg-id>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.
+ Also note that this updated ABNF applies wherever <msg-id> is used,
+ including the References header discussed in Section 3.2.2 and the
+ Supersedes header discussed in Section 3.2.6.
+
+ NOTE: It is RECOMMENDED in [RFC2822] that, for ensuring global
+ uniqueness, the <id-right> be some domain identifier within whose
+ scope the uniqueness of the <id-left> can be guaranteed. When
+ following this recommendation, any <dot-atom-text> or <no-fold-
+ literal> used for the <id-right> are to be interpreted as
+ <domain>s as described in Section 3.4.1 of [RFC2822].