<?xml version="1.0" encoding="US-ASCII" ?>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc0822 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0822.xml'>
<!ENTITY rfc2822 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2822.xml'>
<!ENTITY rfc0850 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0850.xml'>
<!ENTITY rfc0977 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0977.xml'>
<!ENTITY rfc1036 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1036.xml'>
<!ENTITY rfc2045 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2045.xml'>
<!ENTITY rfc2046 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2046.xml'>
<!ENTITY rfc2047 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2047.xml'>
<!ENTITY rfc2049 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2049.xml'>
<!ENTITY rfc2119 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2156 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2156.xml'>
<!ENTITY rfc2183 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2183.xml'>
<!ENTITY rfc2231 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2231.xml'>
<!ENTITY rfc2616 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml'>
<!ENTITY rfc2821 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2821.xml'>
<!ENTITY rfc5322 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5322.xml'>
<!ENTITY rfc2980 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2980.xml'>
<!ENTITY rfc3156 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3156.xml'>
<!ENTITY rfc3282 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3282.xml'>
<!ENTITY rfc3696 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3696.xml'>
<!ENTITY rfc3851 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3851.xml'>
<!ENTITY rfc3864 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3864.xml'>
<!ENTITY rfc3977 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3977.xml'>
<!ENTITY rfc3986 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml'>
<!ENTITY rfc5234 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml'>
<!ENTITY iso3166 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml2/reference.ISO.3166.1988.xml'>
]>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes" ?>

<rfc category="std" number="5536" obsoletes="1036">

<front>
<title>Netnews Article Format</title>

<author initials="K." surname="Murchison" fullname="Kenneth Murchison"
role="editor">
<organization>Carnegie Mellon University</organization>
<address>
<postal>
<street>5000 Forbes Avenue</street>
<street>Cyert Hall 285</street>
<city>Pittsburgh</city> <region>PA</region>
<code>15213</code> <country>U.S.A.</country>
</postal>
<phone>+1 412 268 2638</phone>
<email>murch@andrew.cmu.edu</email>
</address>
</author>

<author initials="C.H." surname="Lindsey" fullname="Charles H. Lindsey">
<organization>University of Manchester</organization>
<address>
<postal>
<street>5 Clerewood Avenue</street>
<street>Heald Green</street>
<street>Cheadle</street>
<region>Cheshire</region>
<code>SK8 3JU</code>
<country>U.K.</country>
</postal>
<phone>+44 161 436 6131</phone>
<email>chl@clerew.man.ac.uk</email>
</address>
</author>

<author initials="D." surname="Kohn" fullname="Dan Kohn">
<organization>FlyDash, Inc.</organization>
<address>
<postal>
<street>1741 Sunset Dr.</street>
<city>Pacific Grove</city> <region>CA</region>
<code>93950</code>
<country>U.S.A.</country>
</postal>
<phone>+1 415 233 1000</phone>
<email>dan@dankohn.com</email>
</address>
</author>

<date month="April" year="2009"/>

<area>Applications</area>
<workgroup>Usenet Format Working Group</workgroup>

<keyword>Usenet</keyword>
<keyword>Usefor</keyword>

<note title="">
 <t>
  This document may contain material from IETF Documents or IETF
  Contributions published or made publicly available before November 10,
  2008. The person(s) controlling the copyright in some of this material
  may not have granted the IETF Trust the right to allow modifications
  of such material outside the IETF Standards Process.  Without
  obtaining an adequate license from the person(s) controlling the
  copyright in such materials, this document may not be modified outside
  the IETF Standards Process, and derivative works of it may not be
  created outside the IETF Standards Process, except to format it for
  publication as an RFC or to translate it into languages other than
  English.
 </t>
</note>

<abstract>

<t>This document specifies the syntax of Netnews
articles in the context of the Internet Message Format (RFC 5322)
and Multipurpose Internet Mail Extensions (MIME) (RFC 2045).  This
document obsoletes RFC 1036, providing an updated specification to
reflect current practice and incorporating incremental changes
specified in other documents.</t>

</abstract>
</front>

<middle>
<section title="Introduction" anchor="intro">
<section title="Basic Concepts" anchor="basic">

<t>"Netnews" is a set of protocols for generating, storing, and
retrieving news "articles" (whose format is a subset of that for Email
messages), and for exchanging them amongst a readership that is
potentially widely distributed.  It is organized around "newsgroups",
with the expectation that each reader will be able to see all articles
posted to each newsgroup in which he participates.  These protocols
most commonly use a flooding algorithm, which propagates copies
throughout a network of participating servers.  Typically, only one
copy is stored per server, and each server makes it available on
demand to readers who are able to access that server.</t>

</section> <!-- basic -->

<section title="Scope">

<t>This document specifies the syntax of Netnews
articles in the context of the Internet Message Format <xref
target="RFC5322"/> and Multipurpose Internet Mail Extensions (MIME)
<xref target="RFC2045"/>.  This document obsoletes <xref
target="RFC1036"/>, updating the syntax of Netnews articles to reflect
current practice and incorporating changes and clarifications
specified in other documents such as <xref target="Son-of-1036"/>.</t>

<t>This is the first in a set of documents that obsolete <xref
target="RFC1036"/>.  This document focuses on the syntax and semantics
of Netnews articles. <xref target="RFC5537"/> is also a
Standards Track document and describes the protocol issues of Netnews
articles, independent of transport protocols such as <xref
target="RFC3977">the Network News Transfer Protocol (NNTP)</xref>.  <xref
target="Usage"/>, "Usenet Best Practice", describes implementation
recommendations to improve interoperability and usability.</t>

<t>This specification is intended as a definition of what article
content format is to be passed between systems.  Although many news
systems locally store articles in this format (which eliminates the
need for translation between formats), local storage is outside of the
scope of this standard.</t>

</section> <!-- scope -->
<section title="Requirements Notation">

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119"/>.</t>

</section> <!-- requirements -->
<section title="Syntax Notation">

<t>Header fields defined in this specification use the Augmented
Backus-Naur Form (ABNF) notation (including the Core Rules) specified
in <xref target="RFC5234"/> as well as many constructs defined in <xref
target="RFC5322"/>, <xref target="RFC2045"/> as updated by <xref
target="RFC2231"/>, and <xref target="RFC3986"/>.  Specifically:</t>

<!--[rfced] Since RFC 5322 obsoleted RFC 2822, we have updated this
   document to point to RFC 5322.

There are exceptions noted in the IANA Considerations section (where
RFC 2822 was left because it matches the IANA registry). Please let us 
know if these should be changed to RFC 5322.

However, if RFC 2822 should be referred to throughout the document, then
please add a sentence to mention the existence of RFC 5322 and
explain to the reader why it is not being used in this document.
-->

<figure>
<artwork>
token         = &lt;see RFC 2045 Section 5.1&gt;
value         = &lt;see RFC 2045 Section 5.1&gt;
parameter     = &lt;see RFC 2231 Section 7&gt;
attribute     = &lt;see RFC 2231 Section 7&gt;

FWS           = &lt;see RFC 5322 Section 3.2.2&gt;
comment       = &lt;see RFC 5322 Section 3.2.2&gt;
CFWS          = &lt;see RFC 5322 Section 3.2.2&gt;
atext         = &lt;see RFC 5322 Section 3.2.3&gt;
dot-atom-text = &lt;see RFC 5322 Section 3.2.3&gt;
phrase        = &lt;see RFC 5322 Section 3.2.5&gt;
utext         = &lt;see RFC 2822 Section 3.2.6&gt;
date-time     = &lt;see RFC 5322 Section 3.3&gt;
mailbox       = &lt;see RFC 5322 Section 3.4&gt;
mailbox-list  = &lt;see RFC 5322 Section 3.4&gt;
address-list  = &lt;see RFC 5322 Section 3.4&gt;
body          = &lt;see RFC 5322 Section 3.5&gt;
fields        = &lt;see RFC 5322 Section 3.6&gt;

IPv6address   = &lt;see RFC 3986 Section 3.2.2&gt;
IPv4address   = &lt;see RFC 3986 Section 3.2.2&gt;
			    
ALPHA         = &lt;see RFC 5234 Appendix B.1&gt;
CRLF          = &lt;see RFC 5234 Appendix B.1&gt;
DIGIT         = &lt;see RFC 5234 Appendix B.1&gt;
DQUOTE        = &lt;see RFC 5234 Appendix B.1&gt;
SP            = &lt;see RFC 5234 Appendix B.1&gt;
</artwork>
</figure>

<!--[rfced] 
   Regarding "utext": It does not appear in RFC 5322, so this has not
   been changed.  Please let us know how this particular reference
   should be updated.  We note that RFC 5335 extends the 2822 "utext".
-->

<t>Additionally, <xref target="message-id"/> specifies a stricter
definition of &lt;msg&nbhy;id&gt; than the syntax in Section 3.6.4 of <xref
target="RFC5322"/>.</t>

</section> <!-- syntax -->
<section title="Definitions">



<t>An "article" is the unit of Netnews, analogous to an <xref
target="RFC5322"/> "message".  A "proto-article" is one that has not
yet been injected into the news system.  In contrast to an article,
a proto-article may lack some mandatory header fields.
</t>

<t>A "message identifier" (<xref target="message-id"/>) is a unique
identifier for an article, usually supplied by the user agent
that posted it or, failing that, by the "news server".  It
distinguishes the article from every other article ever posted
anywhere.  Articles with the same message identifier are treated as if
they are the same article regardless of any differences in the body or
header fields.</t>

<t>A "newsgroup" is a forum
having a name and that is intended for articles on a specific topic.
An article is "posted to" a single newsgroup or several newsgroups.
When an article is posted to more than one newsgroup, it is said to be
"crossposted"; note that this differs from posting the same text as
part of each of several articles, one per newsgroup.</t>

<t>A newsgroup may be "moderated", in which case submissions are not
posted directly, but mailed to a "moderator" for consideration and
possible posting.  Moderators are typically human but may be
implemented partially or entirely in software.</t>

<t>A "poster" is the person or software that composes and submits a
potentially compliant article to a user agent.</t>

<t>A "reader" is the person or software reading Netnews articles.</t>

<t>A "followup" is an article containing a response to the contents of
an earlier article, its "precursor".  Every followup includes a
"References" header field identifying that precursor (but note that
non-followup articles may also use a References header field).</t>

<t>A "control message" is an article that is marked as containing
control information; a news server receiving such an article may
(subject to the policies observed at that site) take actions beyond
just filing and passing on the article.</t>

<t>A news server is software that may accept articles from a user
agent, and/or make articles available to user agents, and/or
exchange articles with other news servers.</t>

<t>A "user agent" is software that may help posters submit
proto-articles to a news server, and/or fetch articles from a news
server and present them to a reader, and/or assist the reader in
creating articles and followups.</t>

<t>The generic term "agent" is used when describing requirements that
apply to both user agents and news servers.</t>

<t>An agent is said to "generate" a construct if it did not exist
before the agent created it.  Examples are when a user agent creates
a message from text and addressing information supplied by a user, or
when a news server creates an "Injection-Info" header field for a newly
posted message.</t>

<t>An agent is said to "accept" a construct if some other entity
generates it and passes it to the agent in question, and the agent
processes it without treating it as a format or protocol error.</t>

</section> <!-- defs -->
<section title="Structure of This Document">

<t>This document uses a cite-by-reference methodology, rather than
repeating the contents of other standards, which could
otherwise result in subtle differences and interoperability
challenges.  Although this document is as a result rather short, it
requires complete understanding and implementation of the normative
references to be compliant.</t>

<t><xref target="format"/> defines the format of Netnews articles. <xref
target="newsheaders"/> details the header fields necessary to make an article
suitable for the Netnews environment.</t>

</section> <!-- structure -->
</section> <!-- intro -->

<section title="Format" anchor="format">

<section title="Base" anchor="base">

<t>An article is said to be conformant to this specification if it
conforms to the format specified in Section 3 of <xref target="RFC5322"/> 
and to the additional requirements of this specification.</t>

<t>An article that uses the obsolete syntax specified in Section 4 of
<xref target="RFC5322"/> is NOT conformant to this specification,
except for the following two cases:

<list style="symbols">

<t>Articles are conformant if they use the &lt;obs-phrase&gt; construct
(use of a phrase like "John Q. Public" without the use of quotes,
see Section 4.1 of <xref target="RFC5322"/>), but agents MUST NOT generate
productions of such syntax.</t>

<t>Articles are conformant if they use the "GMT" &lt;zone&gt;, as
specified in <xref target="date"/>.</t>
</list></t>

<t>This document, and specifications that build upon it, specify how
to handle conformant articles. Handling of non-conformant articles
is outside the scope of this specification.</t>

<t>Agents conforming to this specification MUST generate only conformant
articles.</t>

<t>The text below uses ABNF to specify restrictions on the syntax
specified in <xref target="RFC5322"/>; this grammar is intended to be more
restrictive than the <xref target="RFC5322"/> grammar.  Articles must
conform to the ABNF specified in <xref target="RFC5322"/> and also to
the restrictions specified here, both those that are expressed as text
and those that are expressed as ABNF.</t>

<t><list><t>
NOTE: Other specifications use the term "header" as a synonym
for what <xref target ="RFC5322"/> calls "header field".  This
document follows the terminology in Section 2 of <xref target
="RFC5322"/> in using the terms "line", "header field", "header field
name", "header field body", and "folding", based on a belief that
consistent terminology among specifications that depend on each other
makes the specifications easier to use in the long run.
</t></list></t>

</section> <!-- base -->
<section title="Header Fields" anchor="headers">

<t>All header fields in a Netnews article are compliant with <xref
target="RFC5322"/>; this specification, however, is less permissive
in what can be generated and accepted by agents.  The syntax
allowed for Netnews article headers is a strict subset of the Internet Message
Format headers, making all headers compliant with this specification
inherently compliant with <xref target="RFC5322"/>.  Note however that
the converse is not guaranteed to be true in all cases.</t>

<t>General rules that apply to all header fields (even those documented in
<xref target="RFC5322"/> and <xref target="RFC2045"/>) are listed
below, and those that apply to specific header fields are described in the
relevant sections of this document.</t>

<t><list style="symbols">
<t>All agents MUST generate header fields so that at least one space
immediately follows the ':' separating the header field name and the
header field body (for compatibility with deployed software, including
<xref target="RFC3977">NNTP</xref> servers).  News
agents MAY accept header fields that do not contain the required
space.</t>

<t>Every line of a header field body (including the first and
any that are subsequently folded) MUST contain at least one
non-whitespace character.

<list style="empty">
<t>NOTE: This means that no header field body defined by or referenced by
this document can be empty.  As a result, rather than using the
&lt;unstructured&gt; syntax from Section 3.2.5 of <xref
target="RFC5322"/>, this document uses a stricter definition:

<figure>
<artwork>
unstructured    =  *WSP utext *( [FWS] utext ) *WSP
</artwork>
</figure></t>

<t>NOTE: The <xref target="RFC5322"/> specification sometimes uses
[FWS] at the beginning or end of ABNF describing header field content.
This specification uses *WSP in such cases, also in cases where this
specification redefines constructs from <xref target="RFC5322"/>.  This
is done for consistency with the restriction described here, but the
restriction applies to all header fields, not just those where ABNF is
defined in this document.</t>
</list></t>

<t>Compliant software MUST NOT generate (but MAY accept) header field lines of
more than 998 octets.  This is the only limit on the length of a
header field line prescribed by this standard.  However, specific rules to
the contrary may apply in particular cases (for example, according to
<xref target="RFC2047"/>, lines of a header field containing
encoded words are limited to 76 octets).  <xref
target="Usage"/> includes suggested limits for
convenience of display by user agents.

<list style="empty">
<t>NOTE: As stated in <xref target="RFC5322"/>, there is NO
restriction on the number of lines into which a header field may be
split, and hence there is NO restriction on the total length of a
header field (in particular it may, by suitable folding, be made to
exceed the 998-octet restriction pertaining to a single header field
line).</t>
</list></t>

<t>The character set for header fields is US-ASCII.  Where the use of
non-ASCII characters is required, they MUST be encoded using the MIME
mechanisms defined in <xref target="RFC2047"/> and <xref
target="RFC2231"/>.</t>

</list></t>

</section> <!-- headers -->
<section title="MIME Conformance" anchor="MIME">

<t>User agents MUST meet the definition of MIME conformance in <xref
target="RFC2049"/> and MUST also support <xref target="RFC2231"/>.
This level of MIME conformance provides support for
internationalization and multimedia in message bodies <xref
target="RFC2045"/>, <xref target="RFC2046"/>, and <xref
target="RFC2231"/>, and support for internationalization of header fields
<xref target="RFC2047"/> and <xref target="RFC2231"/>.  Note that <xref
target="Errata"/> currently exist for <xref target="RFC2046"/> and
<xref target="RFC2231"/>.</t>

<t>For the purposes of Section 5 of <xref target="RFC2047"/>, all
header fields defined in <xref target="newsheaders"/> of this standard are to
be considered as "extension message header fields",
permitting the use of <xref target="RFC2047"/> encodings within any
&lt;unstructured&gt; header field, or within any &lt;comment&gt; or
&lt;phrase&gt; permitted within any structured header field.</t>

<t>User agents MAY accept and generate other MIME extension header fields,
and in particular SHOULD accept Content-Disposition <xref
target="RFC2183"/> and Content-Language <xref target="RFC3282"/>.</t>

</section> <!-- MIME -->
</section> <!-- format -->

<section title="News Header Fields" anchor="newsheaders">

<t>The following news header fields extend those defined in Section 3.6 of
<xref target="RFC5322"/>:</t>

<figure>
<artwork>
fields          =/ *( approved /
                      archive /
                      control /
                      distribution /
                      expires /
                      followup-to /
                      injection-date /
                      injection-info /
                      lines /
                      newsgroups /
                      organization /
                      path /
                      summary /
                      supersedes /
                      user-agent /
                      xref )
</artwork>
</figure>

<t>Each of these header fields may occur at most once in a news
article.</t>

<t> The following header fields defined in this document do not allow
   &lt;comment&gt;s (i.e., they use FWS rather than CFWS).</t>

<figure>
<artwork>
Control
Distribution
Followup-To
Lines
Newsgroups
Path
Supersedes
Xref
</artwork>
</figure>

<t> This also applies to the following header field defined in <xref
target="RFC5322"/>:</t>

<figure>
<artwork>
Message-ID
</artwork>
</figure>

<t> Most of these header fields are mainly of interest to news servers,
and news servers often need to process these fields very rapidly.
Thus, some header fields prohibit &lt;comment&gt;s.</t>

<section title="Mandatory Header Fields" anchor="mandatory">

<t>Each Netnews article conformant with this specification MUST have
exactly one of each of the following header fields: Date, From, Message-ID,
Newsgroups, Path, and Subject.</t>

<section title="Date" anchor="date">

<t>The Date header field is the same as that specified in Sections 3.3 and
3.6.1 of <xref target="RFC5322"/>, with the added restrictions detailed
above in <xref target="headers"/>.  However, the use of "GMT" as a
time zone (part of &lt;obs-zone&gt;), although deprecated,
is widespread in Netnews articles today.  Therefore, agents MUST accept
&lt;date-time&gt; constructs that use the "GMT" zone.</t>

<figure>
<artwork>
orig-date       =  "Date:" SP date-time CRLF
</artwork>
</figure>

<t><list style="empty">
<t>NOTE: This specification does not change <xref target="RFC5322"/>,
which says that agents MUST NOT generate &lt;date-time&gt; constructs
that include any zone names defined by &lt;obs-zone&gt;.</t>
</list></t>

<t>Software that accepts dates with unknown timezones SHOULD treat
such timezones as equivalent to "-0000" when comparing dates, as
specified in Section 4.3 of <xref target="RFC5322"/>.</t>

<t>Also note that these requirements apply wherever &lt;date-time&gt;
is used, including Injection-Date and Expires (Sections <xref
target="injection-date" format="counter"/> and <xref target="expires" format="counter"/>,
respectively).</t>

</section> <!-- date -->

<section title="From" anchor="from">

<t>The From header field is the same as that specified in Section 3.6.2 of
<xref target="RFC5322"/>, with the added restrictions detailed above in
<xref target="headers"/>.</t>

<figure>
<artwork>
from            =  "From:" SP mailbox-list CRLF
</artwork>
</figure>

</section> <!-- from -->

<section title="Message-ID" anchor="message-id">

<t>The Message-ID header field contains a unique message
identifier.  Netnews is more dependent on message identifier
uniqueness and fast comparison than Email is, and some news software
and standards <xref target="RFC3977"/>
might have trouble with the full range of possible &lt;msg&nbhy;id&gt;s
permitted by <xref target="RFC5322"/>.  This section therefore
restricts the syntax of &lt;msg&nbhy;id&gt; as compared to Section 3.6.4 of
<xref target="RFC5322"/>.  The global uniqueness requirement for
&lt;msg&nbhy;id&gt; in <xref target="RFC5322"/> is to be understood as
applying across all protocols using such message identifiers, and
across both Email and Netnews in particular.</t>

<figure>
<artwork>
message-id      =  "Message-ID:" SP *WSP msg-id *WSP CRLF

msg-id          =  "&lt;" msg-id-core "&gt;"
                   ; maximum length is 250 octets

msg-id-core     =  id-left "@" id-right

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
                   "&lt;" /            ; "\" 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         ; "&gt;", "[", "]", or "\"
</artwork>
</figure>

<t>The msg-id MUST NOT be more than 250 octets in length.</t>

<t><list>
<t>NOTE: The length restriction ensures that systems that accept
message identifiers as a parameter when referencing an article
(e.g., <xref target="RFC3977"/>) can rely on a bounded
length.</t>
</list></t>

<t>Observe that msg-id includes the &lt; and &gt;.</t>

<t>Observe also that in contrast to the corresponding header field in <xref
target="RFC5322"/>:</t>

<t><list style="symbols">
<t>The syntax does not allow comments within the
Message-ID header field.</t>


<t>The syntax ensures that no string of characters is quoted if it was
already a &lt;dot-atom-text&gt; (it MUST start or end with a ".", or contain
at least one &lt;mqspecial&gt;).</t>

<t>It also ensures that no single character is prefixed by a "\" in the
form of a &lt;quoted-pair&gt; unless strictly necessary.</t>

<t>The syntax excludes all control characters.</t>

<t>There is no possibility for "&gt;" or WSP to occur inside a
&lt;msg&nbhy;id&gt;, whether quoted or not.</t>

<t>Even though commonly derived from &lt;domain&gt;s,
&lt;id-rights&gt;s are case-sensitive (and thus, once created, are not
to be altered during subsequent transmission or copying)</t>
</list></t>

<t>This is to simplify processing by news servers and to
ensure interoperability with existing implementations and compliance
with <xref target="RFC3977"/>.  Thus, whereas under <xref
target="RFC5322"/> the following &lt;msg&nbhy;id&gt;s would be considered
semantically equivalent:

<figure>
<artwork>
&lt;ab.cd@example.com&gt;
&lt;"ab.cd"@example.com&gt;
&lt;"ab.\cd"@example.com&gt;
</artwork>
</figure>

only the first is syntactically permitted by this standard, and hence a simple
comparison of octets will always suffice to determine the identity of
two &lt;msg&nbhy;id&gt;s.</t>

<t>Also note that this updated ABNF applies wherever
&lt;msg&nbhy;id&gt; is used, including the References header field
discussed in <xref target="references"/> and the Supersedes header field
discussed in <xref target="supersedes"/>.</t>

<t>Some software will try to match the &lt;id-right&gt; of a
&lt;msg&nbhy;id&gt; in a case-insensitive fashion; some will match it in a
case-sensitive fashion.  Implementations MUST NOT generate a
Message-ID where the only difference from another Message-ID is the
case of characters in the &lt;id-right&gt; part.</t>

<t>When generating a &lt;msg&nbhy;id&gt;, implementations SHOULD use a
domain name as the &lt;id-right&gt;.</t>

<t><list>
<t>NOTE: Section 3.6.4 of <xref target="RFC5322"/> recommends that the
&lt;id-right&gt; should be a domain name or a domain literal.  Domain
literals are troublesome since many IP addresses are not globally
unique; domain names are more likely to generate unique Message-IDs.</t> 
</list></t>

</section> <!-- message-id -->

<section title="Newsgroups" anchor="newsgroups">

<t>The Newsgroups header field specifies the newsgroup(s) to which the
article is posted.</t>

<figure>
<artwork>
newsgroups      =  "Newsgroups:" SP newsgroup-list CRLF

newsgroup-list  =  *WSP newsgroup-name
                   *( [FWS] "," [FWS] newsgroup-name ) *WSP

newsgroup-name  =  component *( "." component )

component       =  1*component-char

component-char  =  ALPHA / DIGIT / "+" / "-" / "_"
</artwork>
</figure>

<t>Not all servers support optional FWS in the list of newsgroups.  In
particular, folding the Newsgroups header field over several lines has
been shown to harm propagation significantly.  Optional FWS in the
&lt;newsgroup-list&gt; SHOULD NOT be generated, but MUST be accepted.</t>

<t>A &lt;component&gt; SHOULD NOT consist solely of digits and
SHOULD NOT contain uppercase letters.  Such &lt;component&gt;s MAY be
used only to refer to existing groups that do not conform to this
naming scheme, but MUST NOT be used otherwise.

<list><t>
NOTE: All-digit &lt;component&gt;s conflict with one widely used storage
scheme for articles.  Mixed-case groups cause confusion between
systems with case-sensitive matching and systems with case-insensitive
matching of &lt;newsgroup-name&gt;s.
</t></list>
</t>

<t>&lt;component&gt;s beginning with underline ("_") are reserved for use by
future versions of this standard and SHOULD NOT be generated by
user agents (whether in header fields or in newgroup control
messages as defined by <xref target="RFC5537"/>).
However, such names MUST be accepted by news servers.</t>

<t>&lt;component&gt;s beginning with "+" and "-" are reserved for private
use and SHOULD NOT be generated by user agents (whether in
header fields or in newgroup control messages <xref
target="RFC5537"/>) without a private prior agreement to do so.
However, such names MUST be accepted by news servers.</t>

<t> The following &lt;newsgroup-name&gt;s are reserved and MUST NOT
be used as the name of a newsgroup:

<list style="symbols">
<t>Groups whose first (or only) &lt;component&gt; is "example"</t>
<t>The group "poster"</t>
</list>
</t>

<t>The following &lt;newsgroup-name&gt;s have been used for specific
purposes in various implementations and protocols and therefore MUST
NOT be used for the names of normal newsgroups.  They MAY be used for
their specific purpose or by local agreement.

<list style="symbols">
<t>Groups whose first (or only) component is "to"</t>
<t>Groups whose first (or only) component is "control"</t>
<t>Groups that contain (or consist only of) the component "all"</t>
<t>Groups that contain (or consist only of) the component "ctl"</t>
<t>The group "junk"</t>
</list>
</t>

<t><list style="empty"><t>
NOTE: "example.*" is reserved for examples in this and other
standards; "poster" has a special meaning in the Followup-To header
field; "to.*" is reserved for certain point-to-point communications in
conjunction with the "ihave" control message as defined in <xref
target="RFC5537"/>; "control.*" and "junk" have special
meanings in some news servers; "all" is used as a wildcard in some
implementations; and "ctl" was formerly used to indicate a
&lt;control-command&gt; within the Newsgroups header field.
</t></list></t>

</section> <!-- newsgroups -->

<section title="Path" anchor="path">

<t>The Path header field indicates the route taken by an article since
its injection into the Netnews system. Each agent that processes an
article is required to prepend at least one &lt;path-identity&gt; to this
header field body. 
This is primarily so that news servers are able to avoid
sending articles to sites already known to have them, in particular
the site they came from. Additionally, it permits gathering statistics 
and tracing the route articles take in moving over the network.</t>


<figure>
<artwork>
path            =  "Path:" SP *WSP path-list tail-entry *WSP CRLF

path-list       =  *( path-identity [FWS] [path-diagnostic] "!" )

path-diagnostic =  diag-match / diag-other / diag-deprecated

diag-match      =  "!"		; another "!"

diag-other      =  "!." diag-keyword [ "." diag-identity ] [FWS]

diag-deprecated =  "!" IPv4address [FWS]

diag-keyword    =  1*ALPHA	; see [RFC5537]

diag-identity   =  path-identity / IPv4address / IPv6address

tail-entry      =  path-nodot
                   ; may be the string "not-for-mail"

path-identity   =  ( 1*( label "." ) toplabel ) / path-nodot

path-nodot      =  1*( alphanum / "-" / "_" )	; legacy names

label           =  alphanum [ *( alphanum / "-" ) alphanum ]

toplabel        =  ( [ label *( "-" ) ] ALPHA *( "-" ) label ) /
                   ( label *( "-" ) ALPHA [ *( "-" ) label ] ) /
                   ( label 1*( "-" ) label )

alphanum        =  ALPHA / DIGIT	; compare [RFC3696]
</artwork>
</figure>

<t>A &lt;path-identity&gt; is a name identifying a site.  It takes the
form of a domain name having two or more components separated by dots,
or a single name with no dots (&lt;path-nodot&gt;).</t>

<t>Each &lt;path-identity&gt; in the &lt;path-list&gt; (which does
not include the &lt;tail-entry&gt;) indicates, from right to left, the
successive agents through which the article has passed.  The use
of the &lt;diag-match&gt;, which appears as "!!", indicates that the
agent to its left verified the identity of the agent to its right
before accepting the article (whereas the &lt;path-delimiter&gt; "!"
implies no such claim).</t>

<t><list style="empty">
<t>NOTE: Historically, the &lt;tail-entry&gt; indicated the name of
the sender.  If not used for this purpose, the string "not-for-mail"
is often used instead (since at one time the whole path could be
used as a mail address for the sender).</t>

<t>NOTE: Although case-insensitive, it is intended that the
&lt;diag-keyword&gt;s should be in uppercase, to distinguish them
from the &lt;path-identity&gt;s, which are traditionally in lowercase.</t>
</list></t>

<t>A &lt;path-diagnostic&gt; is an item inserted into the Path header
field for purposes other than to indicate the name of a site.  The use
of these is described in <xref target="RFC5537"/>.</t>

<t><list style="empty">
<t>NOTE: One usage of a &lt;path-diagnostic&gt; is to record an IP
address.  The fact that &lt;IPv6address&gt;es are allowed means that the
colon (:) is permitted; note that this may cause interoperability
problems at older sites that regard ":" as a &lt;path-delimiter&gt;
and have neighbors whose names have 4 or fewer characters, and where
all the characters are valid HEX digits.</t>

<t>NOTE: Although &lt;IPv4address&gt;es have occasionally been used in
the past (usually with a diagnostic intent), their continued use is
deprecated (though it is still acceptable in the form of the
&lt;diag-deprecated&gt;).</t>
</list></t>

</section> <!-- path -->

<section title="Subject" anchor="subject">

<t>The Subject header field is the same as that specified in Section 3.6.5
of <xref target="RFC5322"/>, with the added restrictions detailed above
in <xref target="headers"/>.  Further discussion of the content of the
Subject header field appears in <xref
target="RFC5537"/> and <xref
target="Usage"/>.</t>

<figure>
<artwork>
subject         =  "Subject:" SP unstructured CRLF
</artwork>
</figure>

</section> <!-- subject -->

</section> <!-- mandatory -->

<section title="Optional Header Fields" anchor="optional">

<t>None of the header fields appearing in this section are required to appear
in every article, but some of them may be required in certain types of
articles.  Further discussion of these requirements
appears in <xref target="RFC5537"/> and <xref
target="Usage"/>.</t>

<t>The header fields Comments, Keywords, Reply-To, and Sender are used in
Netnews articles in the same circumstances and with the same meanings as
those specified in <xref target="RFC5322"/>, with the added restrictions
detailed above in <xref target="headers"/>.  Multiple occurrences of the
Keywords header field are not permitted.</t>

<figure>
<artwork>
comments        =  "Comments:" SP unstructured CRLF

keywords        =  "Keywords:" SP phrase *("," phrase) CRLF

reply-to        =  "Reply-To:" SP address-list CRLF

sender          =  "Sender:" SP mailbox CRLF

</artwork>
</figure>

<t>The MIME header fields MIME-Version, Content-Type, Content-Transfer-Encoding,
Content-Disposition, and Content-Language are used in Netnews articles in
the same circumstances and with the same meanings as those specified in
<xref target="RFC2045"/>, <xref target="RFC2183"/>, and <xref
target="RFC3282"/>, with the added restrictions detailed above in <xref
target="headers"/>.</t>

<t>All remaining news header fields are described below.</t>

<section title="Approved" anchor="approved">

<t>The Approved header field indicates the mailing addresses (and possibly
the full names) of the persons or entities approving the article for
posting.  Its principal uses are in moderated articles and in group
control messages; see <xref target="RFC5537"/>.</t>

<figure>
<artwork>
approved        =  "Approved:" SP mailbox-list CRLF
</artwork>
</figure>

</section> <!-- approved -->

<section title="Archive" anchor="archive">

<t>The Archive header field provides an indication of the poster's intent
regarding preservation of the article in publicly accessible long-term
or permanent storage.</t>

<figure>
<artwork>
archive         =  "Archive:" SP [CFWS] ("no" / "yes")
                   *( [CFWS] ";" [CFWS] archive-param ) [CFWS] CRLF
                   
archive-param   =  parameter
</artwork>
</figure>

<t>The presence of an Archive header field in an article with a field
body of "no" indicates that the poster does not permit redistribution
from publicly accessible long-term or permanent archives.  A field
body of "yes" indicates that the poster permits such
redistribution.</t>

<t>No &lt;parameter&gt;s are currently defined; if present, they can
be ignored.  Further discussion of the use of the Archive header
field appears in <xref target="Usage"/>.</t>

</section> <!-- archive -->

<section title="Control" anchor="control">

<t>The Control header field marks the article as a control message and
specifies the desired actions (in addition to the usual actions of storing
and/or relaying the article).</t>

<figure>
<artwork>
control         =  "Control:" SP *WSP control-command *WSP CRLF

control-command =  verb *( 1*WSP argument )

verb            =  token

argument        =  1*( %x21-7E )
</artwork>
</figure>

<t>The verb indicates what action should be taken, and the argument(s)
(if any) supply details.  In some cases, the &lt;body&gt; (as defined
in <xref target="RFC5322"/>) of the article may also contain details.
The legal verbs and respective arguments are discussed in the
companion document, <xref target="RFC5537"/>.</t>

<t>An article with a Control header field MUST NOT also have a Supersedes
header field.</t>

</section> <!-- control -->

<section title="Distribution" anchor="distribution">

<t>The Distribution header field specifies geographic or organizational
limits on an article's propagation.</t>

<figure>
<artwork>
distribution    =  "Distribution:" SP dist-list CRLF

dist-list       =  *WSP dist-name
                   *( [FWS] "," [FWS] dist-name ) *WSP

dist-name       =  ALPHA / DIGIT
                   *( ALPHA / DIGIT / "+" / "-" / "_" )
</artwork>
</figure>

<t>The &lt;dist-name&gt;s "world" and "local" are reserved.  "world"
indicates unlimited distribution and SHOULD NOT be used explicitly,
since it is the default when the Distribution header field is absent
entirely.  "local" is reserved for indicating distribution only to the
local site, as defined by local software configuration.</t>

<t>"All" MUST NOT be used as a &lt;dist-name&gt;.  &lt;dist-name&gt;s
SHOULD contain at least three characters, except when they are
two-letter country codes drawn from <xref target="ISO3166-1"/>.
&lt;dist-name&gt;s are case-insensitive (i.e., "US", "Us", "uS", and
"us" all specify the same distribution).</t>

<t>Optional FWS in the &lt;dist-list&gt; SHOULD NOT be generated, but MUST be
accepted.</t>

</section> <!-- distribution -->

<section title="Expires" anchor="expires">

<t> The Expires header field specifies a date and time when the poster
deems the article to be no longer relevant and could usefully be
removed ("expired").</t>

<t><list>
<t>NOTE: This header field is useful when the poster desires an
unusually long or an unusually short expiry time.</t>
</list></t>

<figure>
<artwork>
expires         =  "Expires:" SP date-time CRLF
</artwork>
</figure>

<t>See the remarks under <xref target="date"/> regarding the syntax
of &lt;date&nbhy;time&gt; and the requirements and recommendations to
which it is subject.</t>

<t><list>
<t>NOTE: The Expires header field is also sometimes used in Email with
a similar meaning; see <xref target="RFC2156"/>.</t>
</list></t>

</section> <!-- expires -->

<section title="Followup-To" anchor="followup-to">

<t>The Followup-To header field specifies to which newsgroup(s) the
poster has requested that followups are to be posted.  The Followup-To
header field SHOULD NOT appear in a message, unless its content is
different from the content of the Newsgroups header field.</t>

<figure>
<artwork>
followup-to     =  "Followup-To:" SP ( newsgroup-list / poster-text )
                   CRLF

poster-text     =  *WSP %d112.111.115.116.101.114 *WSP
                   ; "poster" in lowercase
</artwork>
</figure>

<t>The syntax is the same as that of the <xref
target="newsgroups">Newsgroups</xref> header field, with the exception
that the keyword "poster" requests that followups should be emailed
directly to the article's poster (using the addresses contained in the
Reply-To header field if one exists, otherwise using the addresses
contained in the From header field) rather than posted to any
newsgroups. Agents MUST generate the keyword "poster" in lowercase,
but MAY choose to recognize case-insensitive forms such as
"Poster".</t>

<t>As in the <xref target="newsgroups">Newsgroups</xref> header
field, optional FWS in the &lt;newsgroup-list&gt; SHOULD NOT be
generated, but MUST be accepted.</t>

</section> <!-- followup-to -->

<section title="Injection-Date" anchor="injection-date">

<t>The Injection-Date header field contains the date and time that the
article was injected into the network.  Its purpose is to enable news
servers, when checking for "stale" articles, to use a
&lt;date-time&gt; that was added by a news server at injection time
rather than one added by the user agent at message composition
time.</t>

<t>This header field MUST be inserted whenever an article is
injected.  However, software that predates this standard does not use
this header, and therefore agents MUST accept articles without the
Injection-Date header field.</t>

<figure>
<artwork>
injection-date  =  "Injection-Date:" SP date-time CRLF

</artwork>
</figure>

<t>See the remarks under <xref target="date"/>  regarding the syntax
of &lt;date&nbhy;time&gt; and the requirements and recommendations to which
it is subject.</t>

<t><list>
<t>NOTE: Since clocks on various agents are not necessarily synchronized, the
&lt;date-time&gt; in this header field might not be a later value than
that in the Date header field.  Agents MUST NOT alter a pre-existing Date
header field when adding an Injection-Date header field.</t>
</list></t>

<t>This header field is intended to replace the currently used but
undocumented "NNTP-Posting-Date" header field, whose use is now
deprecated.</t>

</section> <!-- injection-date -->

<section title="Injection-Info" anchor="injection-info">

<t>The Injection-Info header field contains information provided by
the injecting news server as to how an article entered the Netnews 
system; it assists in tracing the article's true origin.  It can also specify
one or more addresses where complaints concerning the poster of the
article may be sent.</t>

<figure>
<artwork>
injection-info  =  "Injection-Info:" SP [CFWS] path-identity
                   [CFWS] *( ";" [CFWS] parameter ) [CFWS] CRLF
</artwork>
</figure>

<t><list>
<t>NOTE: The syntax of &lt;parameter&gt; (Section 5.1 of <xref target="RFC2045"/>,
as amended by <xref target="RFC2231"/>), taken in conjunction with the
folding rules of <xref target="RFC0822"/> (note: not RFC 2822), effectively allows [CFWS]
to occur on either side of the "=" inside a &lt;parameter&gt;.</t>
</list></t>

<t>The following table gives the &lt;attribute&gt; and the format of
the &lt;value&gt; for each &lt;parameter&gt; defined for use with this
header field.  At most, one occurrence of each such &lt;parameter&gt; is
allowed.</t>

<figure>
<artwork>
&lt;attribute&gt;              format of &lt;value&gt;
--------------------     -----------------
"posting-host"           a &lt;host-value&gt;
"posting-account"        any &lt;value&gt;
"logging-data"           any &lt;value&gt;
"mail-complaints-to"     an &lt;address-list&gt;
</artwork>
</figure>

<t>where</t>

<figure>
<artwork>
host-value      =  dot-atom-text / IPv4address / IPv6address /
                   (dot-atom-text ":" ( IPv4address / IPv6address ))
</artwork>
</figure>

<t><list>
<t>NOTE: Since any such &lt;host-value&gt; or
&lt;address-list&gt; also has to be a syntactically correct
&lt;value&gt;, it will usually be necessary to encapsulate it as a
&lt;quoted-string&gt;, for example: 

<figure>
<artwork>
    posting-host = "posting.example.com:192.0.2.1"
</artwork>
</figure>
</t></list></t>

<t>Other &lt;attribute&gt;s SHOULD NOT be used unless defined in extensions
to this standard.  If non-standards-based &lt;attribute&gt;s are used, they
MUST begin with an "x-".</t>

<t>Although comments and folding of whitespace are permitted throughout
the Injection-Info header field, folding SHOULD NOT be used within any
&lt;parameter&gt;.  Folding SHOULD only occur before or after the ";"
separating &lt;parameter&gt;s, and comments SHOULD only be used
following the last &lt;parameter&gt;.

<list>
<t>NOTE: Some of this information has previously been sent in
non-standardized header fields such as NNTP-Posting-Host, X-Trace,
X-Complaints-To, and others.  Once a news server generates an
Injection-Info header field, it should have no need to send these
non-standard header fields.</t>
</list></t>

<t>The "posting-host" &lt;parameter&gt; specifies the Fully Qualified
  Domain Name (FQDN) and/or IP address
(IPv4address or IPv6address) of the host from which the news server
received the article.

<list style="empty">
<t>NOTE: If the "posting-host" &lt;parameter&gt; fails to
deterministically identify the host (e.g., dynamic IP address
allocation), the "posting-account" or "logging-data"
&lt;parameter&gt; may provide additional information about the true
origin of the article.</t>
</list>
</t>

<t>The "posting-account" &lt;parameter&gt; identifies the source from
which that news server received the article, in a notation that can be
interpreted by the news server administrator.  This notation can
include any information the administrator deems pertinent.  In order
to limit the exposure of personal data, it SHOULD be given in a form
that cannot be interpreted by other sites.  However, to make it useful
for rate limiting and abuse detection, two messages posted from the
same source SHOULD have the same value of "posting-account", and two
messages from different sources SHOULD have differing values of
"posting-account". The exact definition of "source" is left to the
discretion of the news server administrator.</t>

<t>The "logging-data" &lt;parameter&gt; contains information
(typically a session number or other non-persistent means of
identifying a posting account) that will enable the true origin of
the article to be determined by reference to logging information kept
by the news server.</t>

<t>The "mail-complaints-to" &lt;parameter&gt; specifies one or more
mailboxes for sending complaints concerning the behavior of the poster
of the article.</t>

<t>It is a matter of local policy which of the above
&lt;parameter&gt;s to include. Some pieces of information have privacy
implications; this is discussed in <xref
target="Usage"/>.</t>

</section> <!-- injection-info -->

<section title="Organization" anchor="organization">

<t>The Organization header field is a short phrase identifying the poster's
organization.</t>

<figure>
<artwork>
organization    =  "Organization:" SP unstructured CRLF
</artwork>
</figure>

<t><list style="empty">
<t>NOTE: There is no "s" in Organization.</t>
</list></t>

</section> <!-- organization -->

<section title="References" anchor="references">

<t>The References header field is the same as that specified in Section
3.6.4 of <xref target="RFC5322"/>, with the added restrictions detailed
above in <xref target="headers"/> and those listed below:</t>

<t><list style="symbols">
<t>The updated &lt;msg&nbhy;id&gt; construct defined in <xref
target="message-id"/> MUST be used.</t>

<t>Message identifiers MUST be separated with CFWS.</t>

<t>Comments in CFWS between message identifiers can cause
interoperability problems, so comments SHOULD NOT be generated but
MUST be accepted.</t>
</list></t>

<figure>
<artwork>
references      =  "References:" SP [CFWS] msg-id *(CFWS msg-id)
                   [CFWS] CRLF
</artwork>
</figure>

</section> <!-- references -->

<section title="Summary" anchor="summary">

<t>The Summary header field is a short phrase summarizing the article's
content.</t>

<figure>
<artwork>
summary         =  "Summary:" SP unstructured CRLF
</artwork>
</figure>

</section> <!-- summary -->

<section title="Supersedes" anchor="supersedes">

<t>The Supersedes header field contains a message identifier specifying an
article to be superseded upon the arrival of this one.  An article
containing a Supersedes header field is equivalent to a "cancel" <xref
target="RFC5537"/> control message for the specified
article, followed immediately by the new article without the
Supersedes header field.</t>

<figure>
<artwork>
supersedes      =  "Supersedes:" SP *WSP msg-id *WSP CRLF
</artwork>
</figure>

<t><list>
<t>NOTE: There is no "c" in Supersedes.</t>

<t>NOTE: The Supersedes header field defined here has no connection
with the Supersedes header field that sometimes appears in Email
messages converted from X.400 according to <xref target="RFC2156"/>;
in particular, the syntax here permits only one &lt;msg&nbhy;id&gt; in
contrast to the multiple &lt;msg&nbhy;id&gt;s in that Email version.</t>
</list></t>

</section> <!-- supersedes -->

<section title="User-Agent" anchor="user-agent">

<t>The User-Agent header field contains information about the user agent
(typically a newsreader) generating the article, for statistical
purposes and tracing of standards violations to specific software in
need of correction.  It is intended that this header field be suitable for
use in Email.</t>

<figure>
<artwork>
user-agent      =  "User-Agent:" SP 1*product [CFWS] CRLF

product         =  [CFWS] token [ [CFWS] "/" product-version ]

product-version =  [CFWS] token
</artwork>
</figure>

<t>This header field MAY contain multiple &lt;product&gt; tokens
identifying the user agent and any subproducts that form a
significant part of it, listed in order of their significance for
identifying the application.

<list>
<t>NOTE: Some of this information has previously been sent in
non-standardized header fields such as X-Newsreader, X-Mailer,
X-Posting-Agent, X-Http-User-Agent, and others.  Once a user agent
generates a User-Agent header field, it should have no need to send
these non-standard header fields.</t>

<t>NOTE: <xref target="RFC2616"/> describes a similar facility for the
HTTP protocol.  The Netnews article format differs in that "{" and "}" are
allowed in tokens (&lt;product&gt; and &lt;product-version&gt;) and
comments are permitted wherever whitespace is allowed.</t>
</list>
</t>

</section> <!-- user-agent -->

<section title="Xref" anchor="xref">

<t>The Xref header field indicates where an article was filed by the last
news server to process it.  User agents often use the information in
the Xref header field to avoid multiple processing of crossposted
articles.</t>

<figure>
<artwork>
xref            =  "Xref:" SP *WSP server-name
                   1*( FWS location ) *WSP CRLF

server-name     =  path-identity
                   
location        =  newsgroup-name ":" article-locator

article-locator =  1*( %x21-27 / %x29-3A / %x3C-7E )
                   ; US-ASCII printable characters
                   ; except '(' and ';'
</artwork>
</figure>

<t>The &lt;server-name&gt; is included so that software can determine which
news server generated the header field.  
The locations specify where the article is filed -- i.e., under which
newsgroups (which may differ from those in the Newsgroups header 
field), and where under those newsgroups.
The exact
form of an &lt;article-locator&gt; is implementation-specific.</t>

<t><list>
<t>NOTE: The traditional form of an &lt;article-locator&gt; (as
required by <xref target="RFC3977"/>) is a decimal
number, with articles in each newsgroup numbered consecutively
starting from 1.</t>
</list></t>

</section> <!-- xref -->

</section> <!-- optional -->

<section title="Obsolete Header Fields" anchor="obsolete">

<t>The header fields Date-Received, Posting-Version, and Relay-Version
defined in <xref target="RFC0850"/>, as well as Also-Control, Article-Names,
Article-Updates, and See-Also defined in <xref target="Son-of-1036"/>
are declared obsolete.  See the cited specification documents for
further information on their original use.</t>

<t>These header fields MUST NOT be generated and SHOULD be ignored.</t>

<section title="Lines" anchor="lines">

<t>The Lines header field indicates the number of lines in the
&lt;body&gt; (as defined in <xref target="RFC5322"/>) of the article.</t>

<figure>
<artwork>
lines           =  "Lines:" SP *WSP 1*DIGIT *WSP CRLF
</artwork>
</figure>

<t> The line count is the number of CRLF separators in the
&lt;body&gt;.</t>

<t>Historically, this header field was used by the <xref
target="RFC3977">NNTP</xref> 
overview facility, but its use for this purpose is now deprecated.
As a result, this header field is to be regarded as obsolescent, and it is
likely to be removed entirely in a future version of this standard.
All agents SHOULD ignore it and SHOULD NOT generate it.
</t>

</section> <!-- lines -->
</section> <!-- obsolete -->
</section> <!-- newsheaders -->

<section title="Internationalization Considerations">

<t>Internationalization of Netnews article header fields and bodies is
provided using the MIME mechanisms discussed in <xref target="MIME"/>.
Note that the generation of internationalized &lt;newsgroup-name&gt;s
for use in header fields is not addressed in this document.</t>

</section>
<section title="Security Considerations">

<t>The Netnews article format specified in this document does not provide
any security services, such as confidentiality, authentication of
sender, or non-repudiation.  Instead, such services need to be layered
above, using such protocols as S/MIME <xref target="RFC3851"/> or
PGP/MIME (Pretty Good Privacy / MIME) <xref target="RFC3156"/>, or below, using secure versions of
news transport protocols.  Additionally, several currently
non-standardized protocols such as <xref target="PGPVERIFY"/> may
be standardized in the near future.</t>

<t>Message identifiers (<xref target="message-id"/>) in Netnews
articles are required to be unique; articles may be refused (in
server-to-server transfer) if the identifier has already been seen.
If a malicious agent can predict the identifier of an article, it can
preempt the article by posting its own article (possibly to a quite
different group) with the same message identifier, thereby preventing
the target article from propagating.  Therefore, agents that generate
message identifiers for Netnews articles SHOULD ensure that they are
unpredictable.</t>

<t>MIME security considerations are discussed in <xref
target="RFC2046"/>.  Note that the full range of encodings allowed for
parameters in <xref target="RFC2046"/> and <xref target="RFC2231"/>
permits constructs that simple parsers may fail to parse correctly;
examples of hard-to-parse constructs are:</t>

<figure>
<artwork>
Content-Type: multipart/mixed
  (; boundary=foo ; xyz=");bOuNdArY*=''next%20part(")

Content-Type: multipart/digest;
  boundary (not=me) = ("yes ;-) simple (foo;bar") ; x-foo = xyzzy
</artwork>
</figure>

<t>Such deficiencies in parsing may be used as part of an attack.</t>

<t>Further security considerations are discussed in <xref
target="RFC5537"/>.</t>

</section>

<section title="IANA Considerations">
<t>IANA has registered the following header fields in the
Permanent Message Header Field Repository, in accordance with the
procedures set out in <xref target="RFC3864"/>.

<list style="empty">
<t>Header field name: Also-Control <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/> 
Specification document(s): <xref target="Son-of-1036"/> (Section 6.15)</t>

<t>Header field name: Approved <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/> 
Specification document(s): This document (<xref target="approved"/>)</t>

<t>Header field name: Archive <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="archive"/>)</t>

<t>Header field name: Article-Names <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/> 
Specification document(s): <xref target="Son-of-1036"/> (Section 6.17)</t>

<t>Header field name: Article-Updates <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/> 
Specification document(s): <xref target="Son-of-1036"/> (Section 6.18)</t>

<t>Header field name: Comments <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="optional"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.5)</t>

<!-- [rfced] This is one of several header field names in this section
where there specification lists RFC 2822. We have left it because it
appears on
http://www.iana.org/assignments/message-headers/perm-headers.html
as such. Should they all be changed to RFC 5322? -->

<t>Header field name: Control <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="control"/>)</t>

<t>Header field name: Date <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="date"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.1)</t>

<t>Header field name: Date-Received <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): <xref target="RFC0850"/> (Section 2.2.4)</t>

<t>Header field name: Distribution <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="distribution"/>)</t>

<t>Header field name: Expires <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="expires"/>)</t>

<t>Header field name: Followup-To <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="followup-to"/>)</t>

<t>Header field name: From <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="from"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.2)</t>

<t>Header field name: Injection-Date <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="injection-date"/>)</t>

<t>Header field name: Injection-Info <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="injection-info"/>)</t>

<t>Header field name: Keywords <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="optional"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.5)</t>

<t>Header field name: Lines <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: deprecated <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="lines"/>)
 <vspace blankLines='0'/>
Related information: <xref target="RFC3977"/> (Section
8.1)</t> 

<t>Header field name: Message-ID <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="message-id"/>)
 <vspace blankLines='0'/>
Related information: <xref target="RFC2822"/> (Section 3.6.4)</t>

<t>Header field name: Newsgroups <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="newsgroups"/>)</t>

<t>Header field name: NNTP-Posting-Date <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): none</t>

<t>Header field name: NNTP-Posting-Host <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): <xref target="RFC2980"/> (Section 3.4.1)</t>

<t>Header field name: Organization <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="organization"/>)</t>

<t>Header field name: Path <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="path"/>)</t>

<t>Header field name: Posting-Version <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): <xref target="RFC0850"/> (Section 2.1.2)</t>

<t>Header field name: References <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="references"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.4)</t>

<t>Header field name: Relay-Version <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): <xref target="RFC0850"/> (Section 2.1.1)</t>

<t>Header field name: Reply-To <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="optional"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.2)</t>

<t>Header field name: See-Also <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: obsoleted <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/> 
Specification document(s): <xref target="Son-of-1036"/> (Section 6.16)</t>

<t>Header field name: Sender <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="optional"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.2)</t>

<t>Header field name: Subject <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="subject"/>),
 <vspace blankLines='0'/> <xref target="RFC2822"/> (Section 3.6.5)</t>

<t>Header field name: Summary <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="summary"/>)</t>

<t>Header field name: Supersedes <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="supersedes"/>)</t>

<t>Header field name: User-Agent <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="user-agent"/>)
 <vspace blankLines='0'/>
Related information: <xref target="RFC2616"/> (Section 14.43)</t>

<t>Header field name: Xref <vspace blankLines='0'/>
Applicable protocol: netnews <vspace blankLines='0'/>
Status: standard <vspace blankLines='0'/>
Author/change controller: IETF <vspace blankLines='0'/>
Specification document(s): This document (<xref target="xref"/>)</t>

</list></t>

</section>
</middle>

<back>
<references title="Normative References">
&rfc2045;
&rfc2046;
&rfc2047;
&rfc2049;
&rfc2119;
&rfc2183;
&rfc2231;
&rfc2822;
&rfc5322;
&rfc3282;
&rfc3986;
&rfc5234;

<reference anchor="RFC5537">
	<front>
<title>Netnews Architecture and Protocols</title>
	<author initials="R" surname="Allbery" fullname="Russ Allbery"
		role="editor">
<organization/>
</author>
	<author initials="C" surname="Lindsey" fullname="Charles Lindsey">
<organization/>
</author>
<date month="April" year="2009"/>
</front>
<seriesInfo name="RFC" value="5537"/>
</reference>

</references>

<references title="Informative References">
&rfc0822;
&rfc0850;
&rfc1036;
&rfc2156;
&rfc2616;
&rfc2980;
&rfc3156;
&rfc3696;
&rfc3851;
&rfc3864;
&rfc3977;

<reference anchor="Usage">
<front>
<title>Usenet Best Practice</title>
<author initials="C" surname="Lindsey" fullname="C. Lindsey">
<organization/>
</author>
<date month="March" year="2005"/>
</front>
<seriesInfo name="Work in" value="Progress"/>
</reference>

<reference anchor="ISO3166-1">
<front>
<title>ISO 3166-1:1997. Codes for the representation of names of
countries and their subdivisions -- Part 1: Country codes</title>
<author>
<organization abbrev="ISO">International Organization for
Standardization</organization></author>
<date year="1997"/>
</front>
</reference>

<reference anchor="Son-of-1036">
<front>
<title>News Article Format and Transmission</title>

<author fullname="Henry Spencer" initials="H." surname="Spencer">
<organization/>
</author>
<date year="1994" month="June"/>
</front>
<format type="TXT"
target="ftp://ftp.zoo.toronto.edu/pub/news.txt.Z"/>


</reference>

<reference anchor="PGPVERIFY" target="ftp://ftp.isc.org/pub/pgpcontrol/README.html">
<front>
<title>Authentication of Usenet Group Changes (pgpverify)</title>

<author fullname="David Lawrence" initials="D." surname="Lawrence">
<organization/>
</author>
<date year="1999" month="June" day="16"/>
</front>
<format type="HTML"
target="ftp://ftp.isc.org/pub/pgpcontrol/README.html"/>
</reference>

<reference anchor="Errata" target="http://www.rfc-editor.org/errata.php">
<front>
<title>RFC Editor Errata</title>
<author>
<organization/>
</author>
<date year=""/>
</front>
<format type="HTML" target="http://www.rfc-editor.org/errata.php"/>
</reference>

</references>

<section title="Acknowledgments">

<t>As this document is the result of an eight-year effort, the number
of people that have contributed to its content are too numerous to
mention individually.  Many thanks go out to all past and present
members of the USEFOR Working Group of the Internet Engineering Task
Force (IETF) and its accompanying mailing list.</t>

</section>

<section title="Differences from RFC 1036 and Its Derivatives">

<t>This appendix contains a list of changes that have been made in the
Netnews article format from earlier standards, specifically <xref
target="RFC1036"/>.

<list style="symbols">
<t>The <xref target="RFC5322"/> conventions for parenthesis-enclosed
&lt;comment&gt;s in header fields are supported in all newly defined
header fields and in header fields inherited from <xref
target="RFC5322"/>.  They are, however, still disallowed for
performance and/or compatibility reasons in the Control, Distribution,
Followup-To, Lines, Message-ID, Newsgroups, Path, Supersedes, and Xref
header fields.</t>
<t>Multiple addresses are allowed in the From header field.</t>
<t>[FWS] is permitted in Newsgroups header fields.</t>
<t>An enhanced syntax for the Path header field enables the injection
point of, and the route taken by, an article to be determined with
more precision.</t>
<t>Only one (1) message identifier is allowed in the Supersedes header
field.</t>
<t>MIME is recognized as an integral part of Netnews.</t>
<t>There is a new Injection-Date header field to make the
rejection of stale articles more precise and to minimize
spurious rejections.</t>
<t>There are several new optional header fields defined, notably
Archive, Injection-Info, and User-Agent, leading to increased
functionality.</t>
<t>Certain header fields, notably Lines,
have been deprecated or made obsolete (<xref target="obsolete"/>).</t>
<t>The convention to interpret subjects starting
with the word "cmsg" as a control message was removed.</t>
<t>There are numerous other small changes, clarifications, and
enhancements.</t>
</list></t>

</section>

<section title="Differences from RFC 5322">
<!--[rfced] Note that this has been updated from RFC 2822, which is
obsolete, to RFC 5322, which replaces it. Please let us know if 
the title of this appendix should mirror that of 
Appendix B, i.e., "Differences from RFC 822 aand Its Derivatives".

Also let us know if there are any other changes that should be made to
reflect the newer RFC 5322.
-->

<t>This appendix lists the differences between the syntax allowed by
the Netnews article format (this document) as compared to the Internet
Message Format, as specified in <xref target="RFC5322"/>.</t>

<t>The Netnews article format is a strict subset of the Internet
Message Format; all Netnews articles conform to the syntax of
<xref target="RFC5322"/>.</t>

<t>The following restrictions are important:

<list style="symbols">
<t>A SP (space) is REQUIRED after the colon (':') following a header field
name.</t>

<t>A more restricted syntax of &lt;msg&nbhy;id&gt; (to be used by the Message-ID,
References, and Supersedes header fields) is defined.</t>

<t>The length of a &lt;msg&nbhy;id&gt; MUST NOT exceed 250 octets.</t>

<t>Comments are not allowed in the Message-ID header field.</t>

<t>The CFWS between &lt;msg&nbhy;id&gt;s in the References header field is not
optional.</t>

<t>It is legal for a parser to reject obsolete syntax, except that:

<list style="symbols">
<t>The &lt;obs-phrase&gt; construct MUST be accepted.</t>

<t>The obsolete &lt;zone&gt; "GMT" MUST be accepted within a
&lt;date&nbhy;time&gt;.</t>
</list></t>

<t>Every line of a header field body (including the first and any that
are subsequently folded) MUST contain at least one non-whitespace
character.  This means that an empty header field body is illegal.</t>
</list></t>
</section>

</back>
</rfc>
