draft-ietf-usefor-usepro-02.txt   draft-ietf-usefor-usepro-03.txt 
INTERNET-DRAFT Charles H. Lindsey INTERNET-DRAFT Charles H. Lindsey
Usenet Format Working Group University of Manchester Usenet Format Working Group University of Manchester
December 2004 February 2005
News Article Architecture and Protocols News Article Architecture and Protocols
<draft-ietf-usefor-usepro-02.txt> <draft-ietf-usefor-usepro-03.txt>
Status of this Memo Status of this Memo
By submitting this Internet-Draft, I certify that any applicable By submitting this Internet-Draft, I certify that any applicable
patent or other IPR claims of which I am aware have been patent or other IPR claims of which I am aware have been
disclosed, or will be disclosed, and any of which I become aware disclosed, or will be disclosed, and any of which I become aware
will be disclosed, in accordance with RFC 3668. will be disclosed, in accordance with RFC 3668.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 34 skipping to change at page 1, line 34
documents at any time. It is inappropriate to use Internet-Drafts documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in as reference material or to cite them other than as "work in
progress." progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.html. http://www.ietf.org/ietf/1id-abstracts.html.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire in June 2005. This Internet-Draft will expire in August 2005.
Abstract Abstract
This Draft, together with its companion draft [USEFOR], are This Draft, together with its companion draft [USEFOR], are
intended as standards track documents, together obsoleting RFC intended as standards track documents, together obsoleting RFC
1036, which itself dates from 1987. 1036, which itself dates from 1987.
This Standard defines the architecture of Netnews systems and This Standard defines the architecture of Netnews systems and
specifies the requirements to be met by software which originates, specifies the requirements to be met by software which originates,
distributes, stores and displays Netnews articles. distributes, stores and displays Netnews articles.
skipping to change at page 2, line 5 skipping to change at page 2, line 5
technology is now in widespread use for other purposes. technology is now in widespread use for other purposes.
Backward compatibility has been a major goal of this endeavour, but Backward compatibility has been a major goal of this endeavour, but
where this standard and earlier documents or practices conflict, this where this standard and earlier documents or practices conflict, this
standard should be followed. In most such cases, current practice is standard should be followed. In most such cases, current practice is
already compatible with these changes. already compatible with these changes.
A companion Current Best Practice document [USEAGE], addressing A companion Current Best Practice document [USEAGE], addressing
requirements which are present for Social rather than Normative requirements which are present for Social rather than Normative
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
reasons is in preparation. reasons is in preparation.
[The use of the words "this standard" within this document when [The use of the words "this standard" within this document when
referring to itself does not imply that this draft yet has pretensions referring to itself does not imply that this draft yet has pretensions
to be a standard, but rather indicates what will become the case if and to be a standard, but rather indicates what will become the case if and
when it is accepted as an RFC with the status of a proposed or draft when it is accepted as an RFC with the status of a proposed or draft
standard.] standard.]
[Remarks enclosed in square brackets and aligned with the left margin, [Remarks enclosed in square brackets and aligned with the left margin,
skipping to change at page 2, line 33 skipping to change at page 2, line 33
Table of Contents Table of Contents
1. Introduction .................................................. 4 1. Introduction .................................................. 4
1.1. Basic Concepts ............................................ 4 1.1. Basic Concepts ............................................ 4
1.2. Objectives ................................................ 5 1.2. Objectives ................................................ 5
1.3. Historical Outline ........................................ 5 1.3. Historical Outline ........................................ 5
2. Definitions, Notations and Conventions ........................ 6 2. Definitions, Notations and Conventions ........................ 6
2.1. Definitions ............................................... 6 2.1. Definitions ............................................... 6
2.2. Defining the Architecture ................................. 7 2.2. Defining the Architecture ................................. 7
2.3. Header Properties ......................................... 8 2.3. Variant Headers ........................................... 8
2.3.1. Inheritable Headers ................................... 8
2.3.2. Variant Headers ....................................... 9
2.4. Textual Notations ......................................... 9 2.4. Textual Notations ......................................... 9
3. Changes to the existing protocols ............................. 10 3. Changes to the existing protocols ............................. 9
3.1. Principal Changes ......................................... 10 3.1. Principal Changes ......................................... 10
3.2. Transitional Arrangements ................................. 11 3.2. Transitional Arrangements ................................. 10
4. Transport ..................................................... 12 4. Transport ..................................................... 11
5. Definition of new Media Types ................................. 12 5. Definition of new Media Types ................................. 12
5.1. Application/news-transmission ............................. 12 5.1. Application/news-transmission ............................. 12
5.2. Message/news obsoleted .................................... 13 5.2. Message/news obsoleted .................................... 13
5.3. Application/news-groupinfo ................................ 14 5.3. Application/news-groupinfo ................................ 13
5.4. Application/news-checkgroups .............................. 15 5.4. Application/news-checkgroups .............................. 14
6. Control Messages .............................................. 15 6. Control Messages .............................................. 15
6.1. Digital Signature of Headers .............................. 16 6.1. Digital Signature of Headers .............................. 16
6.2. Group Control Messages .................................... 17 6.2. Group Control Messages .................................... 16
6.2.1. The 'newgroup' Control Message ........................ 17 6.2.1. The 'newgroup' Control Message ........................ 16
6.2.1.1. The Body of the 'newgroup' Control Message ........ 17 6.2.1.1. The Body of the 'newgroup' Control Message ........ 17
6.2.1.2. Initial Articles .................................. 18 6.2.1.2. Initial Articles .................................. 17
6.2.1.3. Example ........................................... 19 6.2.1.3. Example ........................................... 18
6.2.2. The 'rmgroup' Control Message ......................... 19 6.2.2. The 'rmgroup' Control Message ......................... 19
6.2.2.1. Example ........................................... 20 6.2.2.1. Example ........................................... 19
6.2.3. The 'mvgroup' Control Message ......................... 20 6.2.3. The 'mvgroup' Control Message ......................... 19
6.2.3.1. Example ........................................... 21 6.2.3.1. Example ........................................... 21
6.2.4. The 'checkgroups' Control Message ..................... 22 6.2.4. The 'checkgroups' Control Message ..................... 21
6.3. Cancel .................................................... 23 6.3. Cancel .................................................... 23
6.4. Ihave, sendme ............................................. 24 6.4. Ihave, sendme ............................................. 23
6.5. Obsolete control messages. ............................... 25
7. Duties of Various Agents ...................................... 25
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
6.5. Obsolete control messages. ............................... 26
7. Duties of Various Agents ...................................... 26
7.1. General principles to be followed ......................... 26 7.1. General principles to be followed ......................... 26
7.2. Duties of an Injecting Agent .............................. 27 7.2. Duties of an Injecting Agent .............................. 26
7.2.1. Proto-articles ........................................ 27 7.2.1. Proto-articles ........................................ 27
7.2.2. Procedure to be followed by Injecting Agents .......... 28 7.2.2. Procedure to be followed by Injecting Agents .......... 27
7.2.3. Procedure for Forwarding to a Moderator ............... 30 7.2.3. Procedure for Forwarding to a Moderator ............... 30
7.3. Duties of a Relaying Agent ................................ 31 7.3. Duties of a Relaying Agent ................................ 30
7.3.1. Path-Header Example ................................... 33 7.3.1. Path-Header Example ................................... 33
7.4. Duties of a Serving Agent ................................. 34 7.4. Duties of a Serving Agent ................................. 34
7.5. Duties of a Posting Agent ................................. 35 7.5. Duties of a Posting Agent ................................. 35
7.6. Duties of a Followup Agent ................................ 36 7.6. Duties of a Followup Agent ................................ 36
7.7. Duties of a Reading Agent ................................. 37 7.7. Duties of a Reading Agent ................................. 37
7.8. Duties of a Moderator ..................................... 37 7.8. Duties of a Moderator ..................................... 37
7.9. Duties of a Gateway ....................................... 39 7.9. Duties of a Gateway ....................................... 39
7.9.1. Duties of an Outgoing Gateway ......................... 40 7.9.1. Duties of an Outgoing Gateway ......................... 40
7.9.2. Duties of an Incoming Gateway ......................... 41 7.9.2. Duties of an Incoming Gateway ......................... 41
7.9.3. Example ............................................... 43 7.9.3. Example ............................................... 43
8. Security and Related Considerations ........................... 44 8. Security and Related Considerations ........................... 44
8.1. Leakage ................................................... 44 8.1. Leakage ................................................... 44
8.2. Attacks ................................................... 44 8.2. Attacks ................................................... 44
8.2.1. Denial of Service ..................................... 44 8.2.1. Denial of Service ..................................... 44
8.2.2. Compromise of System Integrity ........................ 46 8.2.2. Compromise of System Integrity ........................ 46
8.3. Liability ................................................. 47 8.3. Liability ................................................. 47
9. IANA Considerations ........................................... 47 9. IANA Considerations ........................................... 47
10. References ................................................... 47 10. References ................................................... 48
11. Acknowledgements ............................................. 49 11. Acknowledgements ............................................. 49
12. Contact Address .............................................. 49 12. Contact Address .............................................. 49
Appendix A.1 - A-News Article Format .............................. 49 Appendix A.1 - A-News Article Format .............................. 49
Appendix A.2 - Early B-News Article Format ........................ 50 Appendix A.2 - Early B-News Article Format ........................ 50
Appendix A.3 - Obsolete Control Messages .......................... 50 Appendix A.3 - Obsolete Control Messages .......................... 51
Appendix B - Notices .............................................. 51 Appendix B - Notices .............................................. 51
Appendix C - Change Log ........................................... 52 Appendix C - Change Log ........................................... 52
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
[This draft [USEPRO] and its partner [USEFOR] are an interim stage in [This draft [USEPRO] and its partner [USEFOR] are an interim stage in
the splitting into two parts of the earlier draft [ARTICLE]. There is a the splitting into two parts of the earlier draft [ARTICLE]. There is a
certain amount of material - basic concepts, definitions, etc - which certain amount of material - basic concepts, definitions, etc - which
ultimately need occur in only one of the documents, and further such ultimately need occur in only one of the documents, and further such
material which may not be needed at all (e.g. terms currently defined material which may not be needed at all (e.g. terms currently defined
which in the event may not get used). For the moment, all such material which in the event may not get used). For the moment, all such material
has been retained in the present draft (it being, in any case, easier to has been retained in the present draft (it being, in any case, easier to
take unwanted stuff out than to put new stuff in). It has also to be take unwanted stuff out than to put new stuff in). It has also to be
decided, for such material which is needed by both documents, which one decided, for such material which is needed by both documents, which one
(the "Primary") should contain it and which one should incorporate it by (the "Primary") should contain it and which one should incorporate it by
reference (essentially, this draft is written so that it could be the reference (essentially, this draft is written so that it could be the
Primary).] Primary).]
[Again, references in this document to sections which ultimately are
expected to be in [USEFOR] are still to the old sections in [ARTICLE],
since [USEFOR] is not stabilized enough to refer to specific sections in
it yet. These references can be recognized by being prefixed with "a-".
These references can be fixed up later as we find the proper places for
them to point to. In any case, there will doubtless be more toing and
froing of texts between the two documents before we are done.]
1. Introduction 1. Introduction
1.1. Basic Concepts 1.1. Basic Concepts
"Netnews" is a set of protocols for generating, storing and "Netnews" is a set of protocols for generating, storing and
retrieving news "articles" (which resemble email messages) and for retrieving news "articles" (which resemble email messages) and for
exchanging them amongst a readership which is potentially widely exchanging them amongst a readership which is potentially widely
distributed. It is organized around "newsgroups", with the distributed. It is organized around "newsgroups", with the
expectation that each reader will be able to see all articles posted expectation that each reader will be able to see all articles posted
to each newsgroup in which he participates. These protocols most to each newsgroup in which he participates. These protocols most
skipping to change at page 5, line 4 skipping to change at page 4, line 53
upon the Netnews protocols, with the newsgroups being organized into upon the Netnews protocols, with the newsgroups being organized into
recognized "hierarchies". Anybody can join (it is simply necessary recognized "hierarchies". Anybody can join (it is simply necessary
to negotiate an exchange of articles with one or more other to negotiate an exchange of articles with one or more other
participating hosts). participating hosts).
A "policy" is a rule intended to facilitate the smooth operation of a A "policy" is a rule intended to facilitate the smooth operation of a
network by establishing parameters which restrict behaviour that, network by establishing parameters which restrict behaviour that,
whilst technically unexceptionable, would nevertheless contravene whilst technically unexceptionable, would nevertheless contravene
some accepted standard of "Good Netkeeping". Since the ultimate some accepted standard of "Good Netkeeping". Since the ultimate
beneficiaries of a network are its human readers, who will be less beneficiaries of a network are its human readers, who will be less
News Article Architecture and Protocols December 2004
tolerant of poorly designed interfaces than mere computers, articles tolerant of poorly designed interfaces than mere computers, articles
in breach of established policy can cause considerable annoyance to in breach of established policy can cause considerable annoyance to
their recipients. their recipients.
News Article Architecture and Protocols February 2005
1.2. Objectives 1.2. Objectives
The purpose of this present standard is to define the overall The purpose of this present standard is to define the overall
architecture and the protocols to be used for Netnews in general, and architecture and the protocols to be used for Netnews in general, and
for Usenet in particular, and to set standards to be followed by for Usenet in particular, and to set standards to be followed by
software that implements those protocols. A companion standard software that implements those protocols. A companion standard
[USEFOR] sets out the canonical format of news articles exchanged [USEFOR] sets out the canonical format of news articles exchanged
between the various agents comprising that architecture. between the various agents comprising that architecture. In this
standard, references to sections in the companion [USEFOR] are
prefixed with "F-".
It is NOT the purpose of this standard to settle matters of policy, It is NOT the purpose of this standard to settle matters of policy,
nor aspects of software behaviour which do not impinge upon the nor aspects of software behaviour which do not impinge upon the
generation, transmission, storage and reception of articles, nor how generation, transmission, storage and reception of articles, nor how
the authority of various agencies to create such policies and to the authority of various agencies to create such policies and to
exercise control or oversight of the various parts of Usenet is exercise control or oversight of the various parts of Usenet is
established. For these purposes, a separate Best Current Practice established. For these purposes, a separate Best Current Practice
document [USEAGE] is being provided. document [USEAGE] is being provided.
Nevertheless, it is assumed that such agencies with the necessary Nevertheless, it is assumed that such agencies with the necessary
skipping to change at page 6, line 5 skipping to change at page 6, line 5
A Draft popularly referred to as "Son of 1036" [Son-of-1036] was A Draft popularly referred to as "Son of 1036" [Son-of-1036] was
written in 1994 by Henry Spencer. Much is taken directly from Son of written in 1994 by Henry Spencer. Much is taken directly from Son of
1036, and it is hoped that we have followed its spirit and 1036, and it is hoped that we have followed its spirit and
intentions. intentions.
[It is anticipated that [Son-of-1036] will shortly be published as an [It is anticipated that [Son-of-1036] will shortly be published as an
informational RFC (for purposes of historical documentation only), in informational RFC (for purposes of historical documentation only), in
which case most historical information can be removed from this draft, which case most historical information can be removed from this draft,
including the whole of Appendix A.1 and Appendix A.2.] including the whole of Appendix A.1 and Appendix A.2.]
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
2. Definitions, Notations and Conventions 2. Definitions, Notations and Conventions
2.1. Definitions 2.1. Definitions
An "article" is the unit of news, synonymous with an [RFC 2822] An "article" is the unit of news, synonymous with an [RFC 2822]
"message". A "proto-article" (7.2.1) is one that has been created by "message". A "proto-article" (7.2.1) is one that has been created by
a "posting agent" but has not yet been injected into a Netnews system a "posting agent" but has not yet been injected into a Netnews system
system by an "injecting agent". It may lack some otherwise mandatory system by an "injecting agent". It may lack some otherwise mandatory
headers. headers.
A "message identifier" (a-5.3) is a unique identifier for an article, A "message identifier" (F-3.1.3) is a unique identifier for an
usually supplied by the posting agent which posted it or, failing article, usually supplied by the posting agent which posted it or,
that, by the injecting agent. It distinguishes the article from every failing that, by the injecting agent. It distinguishes the article
other article ever posted anywhere. Articles with the same message from every other article ever posted anywhere. Articles with the same
identifier are treated as if they are the same article regardless of message identifier are treated as if they are the same article
any differences in the body or headers. regardless of any differences in the body or headers.
A "newsgroup" is a single news forum, a logical bulletin board, A "newsgroup" is a single news forum, a logical bulletin board,
having a name and nominally intended for articles on a specific having a name and nominally intended for articles on a specific
topic. An article is "posted to" a single newsgroup or several topic. An article is "posted to" a single newsgroup or several
newsgroups. When an article is posted to more than one newsgroup, it newsgroups. When an article is posted to more than one newsgroup, it
is said to be "crossposted"; note that this differs from posting the is said to be "crossposted"; note that this differs from posting the
same text as part of each of several articles, one per newsgroup. same text as part of each of several articles, one per newsgroup.
A newsgroup may be "moderated", in which case submissions are not A newsgroup may be "moderated", in which case submissions are not
posted directly, but mailed to a "moderator" for consideration and posted directly, but mailed to a "moderator" for consideration and
possible posting. Moderators are typically human but may be possible posting. Moderators are typically human but may be
implemented partially or entirely in software. implemented partially or entirely in software.
A "hierarchy" is the set of all newsgroups whose names share a first A "hierarchy" is the set of all newsgroups whose names share a first
component (as defined in a-5.5). The term "sub-hierarchy" is also component (as defined in F-3.1.5). The term "sub-hierarchy" is also
used where several initial components are shared. used where several initial components are shared.
A "poster" is the person or software that composes a possibly A "poster" is the person or software that composes a possibly
compliant article for submission to a posting agent. The poster is compliant article for submission to a posting agent. The poster is
synonymous with [RFC 2822]'s author. synonymous with [RFC 2822]'s author.
A "reader" is the person or software reading news articles. A "reader" is the person or software reading news articles.
[Alternative-1.] [Alternative-1.]
skipping to change at page 7, line 5 skipping to change at page 7, line 5
to it, or which is otherwise intended to be grouped with it for to it, or which is otherwise intended to be grouped with it for
purposes of display (e.g. as a part of a multipart posting such as a purposes of display (e.g. as a part of a multipart posting such as a
FAQ). FAQ).
[Alternative-2.] [Alternative-2.]
A "followup" to an earlier article (its "precursor") is one intended A "followup" to an earlier article (its "precursor") is one intended
to be grouped with that article for purposes of display (e.g. because to be grouped with that article for purposes of display (e.g. because
it is a response to its contents or is a part of a multipart posting it is a response to its contents or is a part of a multipart posting
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
such as a FAQ). such as a FAQ).
[End of alternatives] [End of alternatives]
An (email) "address" is the mailbox [RFC 2822] (or more particularly An (email) "address" is the mailbox [RFC 2822] (or more particularly
the addr-spec within that mailbox) which directs the delivery of an the addr-spec within that mailbox) which directs the delivery of an
email to its intended recipient, who is said to "own" that address. email to its intended recipient, who is said to "own" that address.
An article's "reply address" is the address to which mailed replies
should be sent. This is the address specified in the article's From-
header (a-5.2), unless it also has a Reply-To-header (a-6.1).
A "sender" is the person or software (usually, but not always, the A "sender" is the person or software (usually, but not always, the
same as the poster) responsible for the operation of the posting same as the poster) responsible for the operation of the posting
agent or, which amounts to the same thing, for passing the article to agent or, which amounts to the same thing, for passing the article to
the injecting agent. the injecting agent.
[Is the definition in RFC 2822 sufficient?] [Is the definition in RFC 2822 sufficient?]
A "control message" is an article which is marked as containing A "control message" is an article which is marked as containing
control information; a "serving agent" (and in some cases a "relaying control information; a "serving agent" (and in some cases a "relaying
agent") receiving such an article may (subject to the policies agent") receiving such an article may (subject to the policies
observed at that site) take actions beyond just filing and passing on observed at that site) take actions beyond just filing and passing on
the article. the article.
2.2. Defining the Architecture 2.2. Defining the Architecture
A Netnews system is a distributed database composed of "agents" of A Netnews system is a distributed database composed of "agents" of
various types which, acting together according to the protocols various types which, acting together according to the protocols
defined in section 7 of this standard, causes articles to be defined in section 7 of this standard, causes articles to be
propagated throughout the system and to be made available to its propagated throughout the system and to be made available to its
readers. The protocols ensure that all copies of a given article, readers. The protocols ensure that all copies of a given article,
wherever stored, are identical apart from those headers defined as wherever stored, are identical apart from those headers defined as
variant (a-4.2.5.3). variant (2.3).
A "posting agent" is the software that assists posters to prepare A "posting agent" is the software that assists posters to prepare
proto-articles in compliance with [USEFOR]. The proto-article is proto-articles in compliance with [USEFOR]. The proto-article is
then passed on to an "injecting agent" for final checking and then passed on to an "injecting agent" for final checking and
injection into the news stream. If the article is not compliant, or injection into the news stream. If the article is not compliant, or
is rejected by the injecting agent, then the posting agent informs is rejected by the injecting agent, then the posting agent informs
the poster with an explanation of the error. the poster with an explanation of the error.
A "reading agent" is software which presents articles to a reader. A "reading agent" is software which presents articles to a reader.
[Alternative-1.] [Alternative-1.]
A "followup agent" is a combination of reading agent and posting A "followup agent" is a combination of reading agent and posting
agent that aids in the preparation and posting of a followup. agent that aids in the preparation and posting of a followup.
[Alternative-2.] [Alternative-2.]
A "followup agent" is a combination of reading agent and posting A "followup agent" is a combination of reading agent and posting
agent that aids in the preparation and posting of an article which is agent that aids in the preparation and posting of an article which is
a response to some precursor. a response to some precursor.
News Article Architecture and Protocols December 2004
[End of alternatives] [End of alternatives]
An "injecting agent" takes the finished article from the posting An "injecting agent" takes the finished article from the posting
agent (often via the NNTP "POST" command), performs some final checks agent (often via the NNTP "POST" command), performs some final checks
and passes it on to a "relaying agent" for general distribution. It and passes it on to a "relaying agent" for general distribution. It
is expected to bear some responsibility towards the rest of the is expected to bear some responsibility towards the rest of the
News Article Architecture and Protocols February 2005
network for the behaviour of its posters (and provision is therefore network for the behaviour of its posters (and provision is therefore
made for it to be easily contactable by email). made for it to be easily contactable by email).
[That provision is expected to go into USEFOR.]
A "relaying agent" is software which receives allegedly compliant A "relaying agent" is software which receives allegedly compliant
articles from injecting agents and/or other relaying agents, and articles from injecting agents and/or other relaying agents, and
possibly passes copies on to other relaying agents and "serving possibly passes copies on to other relaying agents and "serving
agents". agents".
A "serving agent" receives an article from a relaying agent and files A "serving agent" receives an article from a relaying agent and files
it in a "news database". It also provides an interface for reading it in a "news database". It also provides an interface for reading
agents to access the news database. agents to access the news database.
A "news database" is the set of articles and related structural A "news database" is the set of articles and related structural
information stored by a serving agent and made available for access information stored by a serving agent and made available for access
by reading agents. by reading agents.
A "gateway" is software which receives news articles and converts A "gateway" is software which receives news articles and converts
them to messages of some other kind (e.g. mail to a mailing list), or them to messages of some other kind (e.g. mail to a mailing list), or
vice versa; in essence it is a translating relaying agent that vice versa; in essence it is a translating relaying agent that
straddles boundaries between different methods of message exchange. straddles boundaries between different methods of message exchange.
The most common type of gateway connects newsgroup(s) to mailing The most common type of gateway connects newsgroup(s) to mailing
list(s), either unidirectionally or bidirectionally, but there are list(s), either unidirectionally or bidirectionally, but there are
also gateways between news networks using this standard's news format also gateways between news networks using the [USEFOR] news format
and those using other formats. and those using other formats.
Posting, reading and followup agents (which are usually just Posting, reading and followup agents (which are usually just
different services provided by the same piece of software) are known different services provided by the same piece of software) are known
collectively as "user agents". collectively as "user agents".
2.3. Header Properties 2.3. Variant Headers
There are two special properties that may apply to particular
headers, namely: "inheritable", and "variant". When a header is
defined, in this (or any future) standard, as having one (or possibly
more) of these properties, it is subject to special treatment, as
indicated below.
2.3.1. Inheritable Headers
Subject only to the overriding ability of the poster to determine the
contents of the headers in a proto-article, headers with the
inheritable property MUST be copied by followup agents (perhaps with
some modification) into the followup article, and headers without
that property MUST NOT be so copied.
The following headers (see [USEFOR] for their definitions) are
classified as "inheritable":
o Newsgroups (a-5.5) - copied from the precursor, subject to any
News Article Architecture and Protocols December 2004
Followup-To-header.
o Subject (a-5.4) - often modified by prefixing with "Re: ", but
otherwise copied from the precursor.
o References (a-6.10) - copied from the precursor, with the
addition of the precursor's Message-ID.
o Distribution (a-6.6) - copied from the precursor.
NOTE: The Keywords-header is not inheritable, though some older
newsreaders treated it as such.
2.3.2. Variant Headers
Headers with the variant property may differ between (or even be Headers with the variant property may differ between (or even be
completely absent from) copies of the same article as stored or completely absent from) copies of the same article as stored or
relayed throughout a Netnews system. The manner of the difference (or relayed throughout a Netnews system. The manner of the difference (or
absence) MUST be as specified in this (or some future) standard. absence) MUST be as specified in this (or some future) standard.
Typically, these headers are modified as articles are propagated, or Typically, these headers are modified as articles are propagated, or
they reflect the status of the article on a particular serving agent, they reflect the status of the article on a particular serving agent,
or cooperating group of such agents. The variant header MAY be placed or cooperating group of such agents. A variant header MAY be placed
anywhere within the headers (though placing it first is recommended). anywhere within the headers (though placing it first is recommended).
The following headers (see [USEFOR] for their definitions) are The following headers are classified as "variant":
classified as "variant": o Path (F-3.1.6) - augmented at each relaying agent that an article
o Path (a-5.6) - augmented at each relaying agent that an article
passes through. passes through.
o Xref (a-6.16) - used to keep track of the article locators of o Xref (F-3.2.10) - used to keep track of the <article-locator>s of
crossposted articles so that reading agents serviced by a crossposted articles so that reading agents serviced by a
particular serving agent can mark such articles as read. particular serving agent can mark such articles as read.
o Injection-Info (F-3.2.13) is also considered variant in some
special situations involving reinjection (7.2 and 7.2.2).
News Article Architecture and Protocols February 2005
2.4. Textual Notations 2.4. Textual Notations
This standard contains explanatory NOTEs using the following format. This standard contains explanatory NOTEs using the following format.
These may be skipped by persons interested solely in the content of These may be skipped by persons interested solely in the content of
the specification. The purpose of the notes is to explain why choices the specification. The purpose of the notes is to explain why choices
were made, to place them in context, or to suggest possible were made, to place them in context, or to suggest possible
implementation techniques. implementation techniques.
NOTE: While such explanatory notes may seem superfluous in NOTE: While such explanatory notes may seem superfluous in
skipping to change at page 10, line 4 skipping to change at page 9, line 32
"US-ASCII" is short for "the ANSI X3.4 character set" [ANSI X3.4]. "US-ASCII" is short for "the ANSI X3.4 character set" [ANSI X3.4].
US-ASCII is a 7 bit character set. Please note that this standard US-ASCII is a 7 bit character set. Please note that this standard
requires that all agents be 8 bit clean; that is, they must accept requires that all agents be 8 bit clean; that is, they must accept
and transmit data without changing or omitting the 8th bit. and transmit data without changing or omitting the 8th bit.
Certain words, when capitalized, are used to define the significance Certain words, when capitalized, are used to define the significance
of individual requirements. The key words "MUST", "REQUIRED", of individual requirements. The key words "MUST", "REQUIRED",
"SHOULD", "RECOMMENDED", "MAY" and "OPTIONAL", and any of those words "SHOULD", "RECOMMENDED", "MAY" and "OPTIONAL", and any of those words
associated with the word "NOT", are to be interpreted as described in associated with the word "NOT", are to be interpreted as described in
News Article Architecture and Protocols December 2004
[RFC 2119]. [RFC 2119].
NOTE: The use of "MUST" or "SHOULD" implies a requirement that NOTE: The use of "MUST" or "SHOULD" implies a requirement that
would or could lead to interoperability problems if not would or could lead to interoperability problems if not
followed. followed.
NOTE: A requirement imposed on a relaying or serving agent NOTE: A requirement imposed on a relaying or serving agent
regarding some particular article should be understood as regarding some particular article should be understood as
applying only if that article is actually accepted for applying only if that article is actually accepted for
processing (since any agent may always reject any article processing (since any agent may always reject any article
skipping to change at page 10, line 36 skipping to change at page 10, line 4
possible conflict with "Real World" entities and people the top level possible conflict with "Real World" entities and people the top level
domain ".example" is used in all sample domains and addresses. The domain ".example" is used in all sample domains and addresses. The
hierarchy "example.*" is also used as a sample hierarchy. hierarchy "example.*" is also used as a sample hierarchy.
Information on the ".example" top level domain is in [RFC 2606]. Information on the ".example" top level domain is in [RFC 2606].
3. Changes to the existing protocols 3. Changes to the existing protocols
This standard prescribes many changes, clarifications and new This standard prescribes many changes, clarifications and new
features since the protocols described in [RFC 1036] and [Son-of- features since the protocols described in [RFC 1036] and [Son-of-
1036]. It is the intention that they can be assimilated into Usenet 1036]. It is the intention that they can be assimilated into Usenet
News Article Architecture and Protocols February 2005
as it presently operates without major interruption to the service, as it presently operates without major interruption to the service,
though some of the new features may not begin to show benefit until though some of the new features may not begin to show benefit until
they become widely implemented. This section summarizes the main they become widely implemented. This section summarizes the main
changes, and comments on some features of the transition. changes, and comments on some features of the transition.
3.1. Principal Changes 3.1. Principal Changes
o The [RFC 2822] conventions for parenthesis-enclosed comments in o The [RFC 2822] conventions for parenthesis-enclosed <comment>s in
headers are supported. headers are supported.
o Whitespace is permitted in Newsgroups-headers, permitting folding o Whitespace is permitted in Newsgroups headers, permitting folding
of such headers. Indeed, all headers can now be folded. of such headers. Indeed, all headers can now be folded.
o An enhanced syntax for the Path-header enables the injection o An enhanced syntax for the Path header enables the injection
point of and the route taken by an article to be determined with point of and the route taken by an article to be determined with
certainty. certainty.
o Large parts of MIME are recognized as an integral part of o MIME is recognized as an integral part of Netnews.
Netnews.
o There is a new Control message 'mvgroup' to facilitate moving a o There is a new Control message 'mvgroup' to facilitate moving a
group to a different place (name) in a hierarchy. group to a different place (name) in a hierarchy.
o There is a new mandatory Injection-Date-header to facilitate the o There is a new mandatory Injection-Date header to facilitate the
rejection of stale articles. rejection of stale articles.
o There are several new optional headers defined, notably Archive, o There are several new optional headers defined, notably Archive,
Complaints-To, Injection-Info, Mail-Copies-To, Posted-And-Mailed Complaints-To, Injection-Info, Mail-Copies-To, Posted-And-Mailed
and User-Agent, leading to increased functionality. and User-Agent, leading to increased functionality.
o Certain headers and Control messages (a-Appendix A.3 and Appendix o Certain headers and Control messages (F-3.3 and Appendix A.3)
A.3) have been made obsolete. have been made obsolete.
News Article Architecture and Protocols December 2004
o Distributions are expected to be checked at the receiving end, as o Distributions are expected to be checked at the receiving end, as
well as the sending end, of a relaying link. well as the sending end, of a relaying link.
o There are numerous other small changes, clarifications and o There are numerous other small changes, clarifications and
enhancements. enhancements.
3.2. Transitional Arrangements 3.2. Transitional Arrangements
An important distinction must be made between serving and relaying An important distinction must be made between serving and relaying
agents, which are responsible for the distribution and storage of agents, which are responsible for the distribution and storage of
news articles, and user agents, which are responsible for news articles, and user agents, which are responsible for
skipping to change at page 11, line 32 skipping to change at page 10, line 56
new features are already supported. Contrariwise, there are a great new features are already supported. Contrariwise, there are a great
number of implementations of user agents, installed on a vastly number of implementations of user agents, installed on a vastly
greater number of small sites. Therefore, the new functionality has greater number of small sites. Therefore, the new functionality has
been designed so that existing user agents may continue to be used, been designed so that existing user agents may continue to be used,
although the full benefits may not be realised until a substantial although the full benefits may not be realised until a substantial
proportion of them have been upgraded. proportion of them have been upgraded.
In the list which follows, care has been taken to distinguish the In the list which follows, care has been taken to distinguish the
implications for both kinds of agent. implications for both kinds of agent.
o [RFC 2822] style comments in headers do not affect serving and o [RFC 2822] style <comment>s in headers do not affect serving and
relaying agents (note that the Message-ID-, Newsgroups-, relaying agents (note that the Message-ID, Newsgroups,
Distribution- and Path-headers do not contain them). They are Distribution and Path headers do not contain them). They are
unlikely to hinder their proper display in existing reading unlikely to hinder their proper display in existing reading
agents except in the case of the References-header in agents agents except in the case of the References header in agents
News Article Architecture and Protocols February 2005
which thread articles. Therefore, it is provided that they SHOULD which thread articles. Therefore, it is provided that they SHOULD
NOT be generated except where permitted by the previous NOT be generated except where permitted by the previous
standards. standards.
o Because of its importance to all serving agents, the extension o Because of its importance to all serving agents, the extension
permitting whitespace and folding in Newsgroups-headers SHOULD permitting whitespace and folding in Newsgroups headers SHOULD
NOT be used until it has been widely deployed amongst relaying NOT be used until it has been widely deployed amongst relaying
agents. User agents are unaffected. agents. User agents are unaffected.
o The new style of Path-header is already consistent with the o The new style of Path header is already consistent with the
previous standards. However, the intention is that relaying previous standards. However, the intention is that relaying
agents should eventually reject articles in the old style, and so agents should eventually reject articles in the old style, and so
this possibility should be offered as a configurable option in this possibility should be offered as a configurable option in
relaying agents. User agents are unaffected. relaying agents. User agents are unaffected.
o The introduction of MIME reflects a practice that is already o The introduction of MIME reflects a practice that is already
widespread. Articles in strict compliance with the previous widespread. Articles in strict compliance with the previous
standards (using strict US-ASCII) will be unaffected. Many user standards (using strict US-ASCII) will be unaffected. Many user
agents already support it, at least to the extent of widely used agents already support it, at least to the extent of widely used
charsets such as ISO-8859-1. Users expecting to read articles charsets such as ISO-8859-1. Users expecting to read articles
using other charsets will need to acquire suitable reading using other charsets will need to acquire suitable reading
agents. It is not intended, in general, that any single user agents. It is not intended, in general, that any single user
agent will be able to display every charset known to IANA, but agent will be able to display every charset known to IANA, but
all such agents MUST support US-ASCII. Serving and relaying all such agents MUST support US-ASCII. Serving and relaying
agents are not affected. agents are not affected.
o The new Control: mvgroup command will need to be implemented in o The new Control: mvgroup command will need to be implemented in
serving agents. For the benefit of older serving agents it is serving agents. For the benefit of older serving agents it is
News Article Architecture and Protocols December 2004
therefore RECOMMENDED that it be followed shortly by a therefore RECOMMENDED that it be followed shortly by a
corresponding newgroup command and it MUST always be followed by corresponding newgroup command and it MUST always be followed by
a rmgroup command for the old group after a reasonable overlap a rmgroup command for the old group after a reasonable overlap
period. An implementation of the mvgroup command as an alias for period. An implementation of the mvgroup command as an alias for
the newgroup command would thus be minimally conforming. User the newgroup command would thus be minimally conforming. User
agents are unaffected. agents are unaffected.
o Provision is made for relaying and serving agents to use the o Provision is made for relaying and serving agents to use the Date
Date-header in the case of articles injected through existing header in the case of articles injected through existing agents
agents which do not provide an Injection-Date-header. which do not provide an Injection-Date header.
o All the headers newly introduced by this standard can safely be o All the headers newly introduced by this standard can safely be
ignored by existing software, albeit with loss of the new ignored by existing software, albeit with loss of the new
functionality. functionality.
4. Transport 4. Transport
As in this standard's predecessors, the exact means used to transmit As in this standard's predecessors, the exact means used to transmit
articles from one host to another is not specified. NNTP [NNTP] is articles from one host to another is not specified. NNTP [NNTP] is
the most common transmission method on the Internet, but much the most common transmission method on the Internet, but much
transmission takes place entirely independent of the Internet. Other transmission takes place entirely independent of the Internet. Other
methods in use include the UUCP protocol [RFC 976] extensively used methods in use include the UUCP protocol [RFC 976] extensively used
in the early days of Usenet, FTP, downloading via satellite, tape in the early days of Usenet, FTP, downloading via satellite, tape
archives, and physically delivered magnetic and optical media. archives, and physically delivered magnetic and optical media.
Transmission paths for news articles MUST treat news articles as Transmission paths for news articles MUST treat news articles as
uninterpreted sequences of octets, excluding the values 0 (US-ASCII uninterpreted sequences of octets, excluding the values 0 (US-ASCII
NUL) and 13 and 10 (US-ASCII CR and LF, which MUST ONLY appear in the NUL) and 13 and 10 (US-ASCII CR and LF, which MUST ONLY appear in the
combination CRLF which denotes a line separator). combination CRLF which denotes a line separator).
News Article Architecture and Protocols February 2005
NOTE: this corresponds to the range of octets permitted for MIME NOTE: this corresponds to the range of octets permitted for MIME
"8bit data" [RFC 2045]. Thus raw binary data cannot be "8bit data" [RFC 2045]. Thus raw binary data cannot be
transmitted in an article body except by the use of a Content- transmitted in an article body except by the use of a Content-
Transfer-Encoding such as base64. Transfer-Encoding such as base64.
In particular, transmission paths MUST convey all headers (including In particular, transmission paths MUST convey all headers (including
body part headers and headers within message/rfc822 objects) intact, body part headers and headers within message/rfc822 objects) intact,
even if they contain octets in the range 128 to 255. These even if they contain octets in the range 128 to 255. These
requirements include the transmissiom paths between posting agents, requirements include the transmissiom paths between posting agents,
injecting agents, relaying agents, serving agents and reading agents, injecting agents, relaying agents, serving agents and reading agents,
skipping to change at page 13, line 4 skipping to change at page 12, line 32
5. Definition of new Media Types 5. Definition of new Media Types
This standard defines (or redefines) several new Media Types, which This standard defines (or redefines) several new Media Types, which
require to be registered with IANA as provided for in [RFC 2048]. require to be registered with IANA as provided for in [RFC 2048].
5.1. Application/news-transmission 5.1. Application/news-transmission
The Media Type "application/news-transmission" is intended for the The Media Type "application/news-transmission" is intended for the
encapsulation of complete news articles where the intention is that encapsulation of complete news articles where the intention is that
the recipient should then inject them into Netnews. This Application the recipient should then inject them into Netnews. This Application
News Article Architecture and Protocols December 2004
type provides one of the methods for mailing articles to moderators type provides one of the methods for mailing articles to moderators
(see 7.2.2) and it is also the preferred method when sending to an (see 7.2.2) and it is also the preferred method when sending to an
email-to-news gateway (see 7.9.2). email-to-news gateway (see 7.9.2).
NOTE: The benefit of such encapsulation is that it removes NOTE: The benefit of such encapsulation is that it removes
possible conflict between news and email headers and it provides possible conflict between news and email headers and it provides
a convenient way of "tunnelling" a news article through a a convenient way of "tunnelling" a news article through a
transport medium that does not support 8bit characters. transport medium that does not support 8bit characters.
The MIME Media Type definition of "application/news-transmission" is: The MIME Media Type definition of "application/news-transmission" is:
skipping to change at page 13, line 36 skipping to change at page 13, line 4
the article transmitted MAY be supplied the article transmitted MAY be supplied
(perhaps en route) to ensure correct (perhaps en route) to ensure correct
transmission over some 7bit transport transmission over some 7bit transport
medium. medium.
Security considerations: A news article may be a "control message", Security considerations: A news article may be a "control message",
which could have effects on the recipient which could have effects on the recipient
host's system beyond just storage of the host's system beyond just storage of the
article. However, such control messages article. However, such control messages
also occur in normal news flow, so most also occur in normal news flow, so most
hosts will already be suitably defended hosts will already be suitably defended
News Article Architecture and Protocols February 2005
against undesired effects. against undesired effects.
Published specification: [USEPRO] Published specification: [USEPRO]
Body part: A complete article or proto-article, ready Body part: A complete article or proto-article, ready
for injection into Netnews, or a batch of for injection into Netnews, or a batch of
such articles in the batch format described such articles in the batch format described
in section 6.4. in section 6.4.
NOTE: It is likely that the recipient of an "application/news- NOTE: It is likely that the recipient of an "application/news-
transmission" will be a specialized gateway (e.g. a moderator's transmission" will be a specialized gateway (e.g. a moderator's
submission address) able to accept articles with only one of the submission address) able to accept articles with only one of the
skipping to change at page 14, line 4 skipping to change at page 13, line 32
When the parameter "relay" is used, or implied, the body part MAY be When the parameter "relay" is used, or implied, the body part MAY be
a batch of articles to be transmitted together, in which case the a batch of articles to be transmitted together, in which case the
batch format defined in section 6.4 MUST be used. batch format defined in section 6.4 MUST be used.
5.2. Message/news obsoleted 5.2. Message/news obsoleted
The Media Type "message/news", as previously registered with IANA, is The Media Type "message/news", as previously registered with IANA, is
hereby declared obsolete. It was never widely implemented, and its hereby declared obsolete. It was never widely implemented, and its
default treatment as "application/octet-stream" by agents that did default treatment as "application/octet-stream" by agents that did
News Article Architecture and Protocols December 2004
not recognize it was counter productive. The Media Type not recognize it was counter productive. The Media Type
"message/rfc822" SHOULD be used in its place. "message/rfc822" SHOULD be used in its place.
5.3. Application/news-groupinfo 5.3. Application/news-groupinfo
The "application/news-groupinfo" is used in conjunction with the The "application/news-groupinfo" is used in conjunction with the
"newgroup" (6.2.1) and "mvgroup" (6.2.3) control messages. The "newgroup" (6.2.1) and "mvgroup" (6.2.3) control messages. The
newsgroup-name in the newsgroups-line MUST agree with the newsgroup- <newsgroup-name> in the <newsgroups-line> MUST agree with the
name in the "newgroup" or "mvgroup" control message. The Media Type <newsgroup-name> in the "newgroup" or "mvgroup" control message. The
"application/news-groupinfo" MUST NOT be used except as a part of Media Type "application/news-groupinfo" MUST NOT be used except as a
such control messages. part of such control messages.
The "application/news-groupinfo" body part contains brief information The "application/news-groupinfo" body part contains brief information
about a newsgroup, i.e. the group's name, it's newsgroup-description about a newsgroup, i.e. the group's name, it's <newsgroup-
and the moderation-flag. description> and the <moderation-flag>.
NOTE: The presence of the newsgroups-tag "For your newsgroups NOTE: The presence of the <newsgroups-tag> "For your newsgroups
file:" is intended to make the whole newgroup message compatible file:" is intended to make the whole newgroup message compatible
with current practice as described in [Son-of-1036]. with current practice as described in [Son-of-1036].
The MIME Media Type definition of "application/news-groupinfo" is: The MIME Media Type definition of "application/news-groupinfo" is:
MIME type name: application MIME type name: application
MIME subtype name: news-groupinfo MIME subtype name: news-groupinfo
Required parameters: none Required parameters: none
Disposition: by default, inline Disposition: by default, inline
Encoding considerations: "7bit" or "8bit" is sufficient and MUST be Encoding considerations: "7bit" or "8bit" is sufficient and MUST be
used to maintain compatibility. used to maintain compatibility.
Security considerations: this type MUST NOT be used except as part Security considerations: this type MUST NOT be used except as part
News Article Architecture and Protocols February 2005
of a control message for the creation or of a control message for the creation or
modification of a Netnews newsgroup modification of a Netnews newsgroup
Published specification: [USEPRO] Published specification: [USEPRO]
The content of the "application/news-groupinfo" body part is defined The content of the "application/news-groupinfo" body part is defined
as: as:
groupinfo-body = [ newsgroups-tag CRLF ] groupinfo-body = [ newsgroups-tag CRLF ]
newsgroups-line CRLF newsgroups-line CRLF
newsgroups-tag = %x46.6F.72 SP %x79.6F.75.72 SP newsgroups-tag = %x46.6F.72 SP %x79.6F.75.72 SP
skipping to change at page 14, line 58 skipping to change at page 14, line 29
; case sensitive ; case sensitive
; "For your newsgroups file:" ; "For your newsgroups file:"
newsgroups-line = newsgroup-name newsgroups-line = newsgroup-name
[ 1*HTAB newsgroup-description ] [ 1*HTAB newsgroup-description ]
[ 1*WSP moderation-flag ] [ 1*WSP moderation-flag ]
newsgroup-description newsgroup-description
= utext *( *WSP utext ) = utext *( *WSP utext )
moderation-flag = %x28.4D.6F.64.65.72.61.74.65.64.29 moderation-flag = %x28.4D.6F.64.65.72.61.74.65.64.29
; case sensitive "(Moderated)" ; case sensitive "(Moderated)"
The newsgroup-description MUST NOT contain any occurrence of the The <newsgroup-description> MUST NOT contain any occurrence of the
string "(Moderated)" within it. Although optional, the newsgroups- string "(Moderated)" within it. Although optional, the <newsgroups-
tag SHOULD be included until such time as this standard has been tag> SHOULD be included until such time as this standard has been
News Article Architecture and Protocols December 2004
widely adopted, to ensure compatibility with present practice. widely adopted, to ensure compatibility with present practice.
Moderated newsgroups MUST be marked by appending the case sensitive Moderated newsgroups MUST be marked by appending the case sensitive
text " (Moderated)" at the end. It is NOT recommended that the text " (Moderated)" at the end. It is NOT recommended that the
moderator's email address be included in the newsgroup-description as moderator's email address be included in the <newsgroup-description>
has sometimes been done. as has sometimes been done.
NOTE: There is no provision for the use of charsets other than NOTE: There is no provision for the use of charsets other than
US-ASCII within a newsgroup-description. Such a facility may be US-ASCII within a <newsgroup-description>. Such a facility may
provided in a future extension to this standard. be provided in a future extension to this standard.
[That may seem harsh, but if we make any such provision now, it will [That may seem harsh, but if we make any such provision now, it will
make life more complicated and restrict our freedom when it comes to the make life more complicated and restrict our freedom when it comes to the
proposed I18N extension. Therefore I resisted the temptation to include proposed I18N extension. Therefore I resisted the temptation to include
any charset parameter with this Media Type. Note that this also applies any charset parameter with this Media Type. Note that this also applies
to the checkgroups message further on.] to the checkgroups message further on.]
5.4. Application/news-checkgroups 5.4. Application/news-checkgroups
The "application/news-checkgroups" Media Type is used in conjunction The "application/news-checkgroups" Media Type is used in conjunction
with the "checkgroups" control message (6.2.4). It MUST NOT be used with the "checkgroups" control message (6.2.4). It MUST NOT be used
except as a part of such control messages. except as a part of such control messages.
The "application/news-checkgroups" body part contains a complete list The "application/news-checkgroups" body part contains a complete list
of all the newsgroups in a (sub)hierarchy, their newsgroup- of all the newsgroups in a (sub)hierarchy, their <newsgroup-
descriptions and their moderation status. description>s and their moderation status.
The MIME Media Type definition of "application/news-checkgroups" is: The MIME Media Type definition of "application/news-checkgroups" is:
MIME type name: application MIME type name: application
News Article Architecture and Protocols February 2005
MIME subtype name: news-checkgroups MIME subtype name: news-checkgroups
Required parameters: none Required parameters: none
Disposition: by default, inline Disposition: by default, inline
Encoding considerations: "7bit" or "8bit" is sufficient and MUST be Encoding considerations: "7bit" or "8bit" is sufficient and MUST be
used to maintain compatibility. used to maintain compatibility.
Security considerations: this type MUST NOT be used except as part Security considerations: this type MUST NOT be used except as part
of a checkgroups control message of a checkgroups control message
Published specification: [USEPRO] Published specification: [USEPRO]
The content of the "application/news-checkgroups" body part is The content of the "application/news-checkgroups" body part is
skipping to change at page 15, line 57 skipping to change at page 15, line 28
checkgroups-body = *( valid-group CRLF ) checkgroups-body = *( valid-group CRLF )
valid-group = newsgroups-line ; see 5.3 valid-group = newsgroups-line ; see 5.3
6. Control Messages 6. Control Messages
The following sections document the control messages. "Message" is The following sections document the control messages. "Message" is
used herein as a synonym for "article" unless context indicates used herein as a synonym for "article" unless context indicates
otherwise. otherwise.
Each control message comprises a verb, which indicates the action to Each <control-command> comprises a <verb>, which indicates the action
be taken, and argument(s), which supply the details. In some cases to be taken, and <argument>(s), which supply the details (see F-
the body of the article may also supply details. The following 3.2.4). The following sections contain syntactic definitions for the
<verb>, <argument>s, and possibly the body, for each type of control
News Article Architecture and Protocols December 2004 message.
[The term <control-command> is now used to denote the syntactic object
sections contain syntactic definitions for the verb, arguments, and within the Control header, to distinguish it from "control message",
possibly the body, for each type of control message. which refers to the whole article.]
The Newsgroups-header of each control message SHOULD include the The Newsgroups header of each control message SHOULD include the
newsgroup-name(s) for the group(s) affected (i.e. groups to be <newsgroup-name>(s) for the group(s) affected (i.e. groups to be
created, modified or removed, or containing articles to be canceled). created, modified or removed, or containing articles to be canceled).
This is to ensure that the message propagates to all sites which This is to ensure that the message propagates to all sites which
receive (or would receive) that group(s). It MAY include other receive (or would receive) that group(s). It MAY include other
newsgroup-names so as to improve propagation (but this practice may <newsgroup-name>s so as to improve propagation (but this practice may
cause the control message to propagate also to places where it is cause the control message to propagate also to places where it is
unwanted, or even cause it not to propagate where it should, so it unwanted, or even cause it not to propagate where it should, so it
should not be used without good reason). should not be used without good reason).
NOTE: Propagation is controlled by relaying agents, and it may NOTE: Propagation is controlled by relaying agents, and it may
be necessary for relaying agents to take special steps to ensure be necessary for relaying agents to take special steps to ensure
that control messages such as newgroup messages for not-yet- that control messages such as newgroup messages for not-yet-
existent newsgroups are propagated correctly (see 7.3). existent newsgroups are propagated correctly (see 7.3).
[The first of those paragraphs was originally scheduled to be moved to
USEFOR (and it may yet be so moved). It has been reinstated here (at
least temporarily) to make sure that it does not get overlooked.]
The presence of a Subject-content starting with the string "cmsg " The presence of a Subject header whose content starts with the string
and followed by a <control-message> was construed under [RFC 1036] as "cmsg " followed by a <control-command> was construed under [RFC
a request to perform that control action (even if no genuine Control 1036] as a request to perform that control action (even if no genuine
header was present). Indeed, some implementations went further and Control header was present). Indeed, some implementations went
added the implied Control header before injecting. Likewise, the further and added the implied Control header before injecting.
presence of a newsgroup-name ending in ".ctl" in the Newsgroups Likewise, the presence of a <newsgroup-name> ending in ".ctl" in the
header caused the Subject header content (not starting with "cmsg" in Newsgroups header caused the Subject header content (not starting
this case) to be interpreted as a <control-message>. with "cmsg" in this case) to be interpreted as a <control-command>.
News Article Architecture and Protocols February 2005
All these practices are now declared to be Obsolete, and Subject All these practices are now declared to be Obsolete, and Subject
headers MUST NOT now be interpreted as <control-message>s under any headers MUST NOT now be interpreted as <control-command>s under any
circumstances. circumstances.
The descriptions below set out REQUIREMENTS to be followed by sites The descriptions below set out REQUIREMENTS to be followed by sites
that receive control messages and choose to honour them. However, that receive control messages and choose to honour them. However,
nothing in these descriptions should be taken as overriding the right nothing in these descriptions should be taken as overriding the right
of any such site, in accordance with its local policy, to refuse to of any such site, in accordance with its local policy, to refuse to
honour any particular control message, or to refer it to an honour any particular control message, or to refer it to an
administrator for approval (either as a class or on a case-by-case administrator for approval (either as a class or on a case-by-case
basis). basis).
6.1. Digital Signature of Headers 6.1. Digital Signature of Headers
It is most desirable that group control messages (6.2) in particular It is most desirable that group control messages (6.2) in particular
be authenticated by incorporating them within some digital signature be authenticated by incorporating them within some digital signature
scheme that encompasses other headers closely associated with them scheme that encompasses other headers closely associated with them
(including at least the Approved-, Message-ID- and Date-headers). At (including at least the Approved, Message-ID and Date headers). At
the time of writing, this is usually done by means of a protocol the time of writing, this is usually done by means of a protocol
known as "PGPverify" ([PGPVERIFY]), and continued usage of this is known as "PGPverify" ([PGPVERIFY]), and continued usage of this is
encouraged at least as an interim measure. encouraged at least as an interim measure.
News Article Architecture and Protocols December 2004
However, PGPverify is not considered suitable for standardization in However, PGPverify is not considered suitable for standardization in
its present form, for various technical reasons. It is therefore its present form, for various technical reasons. It is therefore
expected that an early extension to this standard will provide a expected that an early extension to this standard will provide a
robust and general purpose digital authentication mechanism with robust and general purpose digital authentication mechanism with
applicability to all situations requiring protection against applicability to all situations requiring protection against
malicious use of, or interference with, headers. That extension malicious use of, or interference with, headers. That extension
would also address other Netnews security issues. would also address other Netnews security issues.
6.2. Group Control Messages 6.2. Group Control Messages
"Group control messages" are the sub-class of control messages that "Group control messages" are the sub-class of control messages that
request some update to the configuration of the groups known to a request some update to the configuration of the groups known to a
serving agent, namely "newgroup", "rmgroup", "mvgroup" and serving agent, namely "newgroup", "rmgroup", "mvgroup" and
"checkgroups", plus any others created by extensions to this "checkgroups", plus any others created by extensions to this
standard. standard.
All of the group control messages MUST have an Approved-header All of the group control messages MUST have an Approved header
(a-6.14) which, in those hierarchies where appropriate administrative (F-3.2.8) which, in those hierarchies where appropriate
agencies exist (see 1.1), identifies the appropriate person or entity administrative agencies exist (see 1.1), identifies the appropriate
as authorized by those agencies. The authorized person or entity person or entity as authorized by those agencies. The authorized
SHOULD adhere to the conventions and restrictions on the format of person or entity SHOULD adhere to the conventions and restrictions on
newsgroup-names established for those hierarchies (see a-5.5). the format of <newsgroup-name>s established for those hierarchies
(see F-3.1.5).
[But that reference presumes some changes in the current USEFOR.]
6.2.1. The 'newgroup' Control Message 6.2.1. The 'newgroup' Control Message
control-message =/ Newgroup-message control-command =/ Newgroup-command
Newgroup-message = "newgroup" Newgroup-arguments Newgroup-command = "newgroup" Newgroup-arguments
Newgroup-arguments = CFWS newsgroup-name [ CFWS newgroup-flag ] Newgroup-arguments = CFWS newsgroup-name [ CFWS newgroup-flag ]
newgroup-flag = "moderated" newgroup-flag = "moderated"
News Article Architecture and Protocols February 2005
The "newgroup" control message requests that the specified group be The "newgroup" control message requests that the specified group be
created or changed. When the request is honoured, if the newgroup- created or have its moderation status or <newsgroups-line> changed.
flag "moderated" is present then the status of the group SHOULD be When the request is honoured, if the <newgroup-flag> "moderated" is
marked as moderated, and vice versa. "Moderated" is the only such present then the status of the group SHOULD be marked as moderated,
flag defined by this standard; other flags MAY be defined for use in and vice versa. "Moderated" is the only such flag defined by this
cooperating subnets, but newgroup messages containing them MUST NOT standard; other flags MAY be defined for use in cooperating subnets,
be acted on outside of those subnets. but newgroup messages containing them MUST NOT be acted on outside of
those subnets.
NOTE: Specifically, some alternative flags such as "y" and "m", NOTE: Specifically, some alternative flags such as "y" and "m",
which are sent and recognized by some current software, are NOT which are sent and recognized by some current software, are NOT
part of this standard. Moreover, some existing implementations part of this standard. Moreover, some existing implementations
treat any flag other than "moderated" as indicating an treat any flag other than "moderated" as indicating an
unmoderated newsgroup. Both of these usages are contrary to this unmoderated newsgroup. Both of these usages are contrary to this
standard and control messages with such non-standard flags standard and control messages with such non-standard flags
should be ignored. should be ignored.
6.2.1.1. The Body of the 'newgroup' Control Message 6.2.1.1. The Body of the 'newgroup' Control Message
The body of the newgroup message contains the following subparts, The body of the newgroup message contains the following subparts,
preferably in the order shown: preferably in the order shown:
1. An "application/news-groupinfo" part (5.3) containing the name and 1. An "application/news-groupinfo" part (5.3) containing the name and
newsgroups-line of the group. This part MUST be present and SHOULD <newsgroups-line> (5.3) of the group. This part MUST be present
be used to update any copy of the newsgroups-line (5.3) maintained and SHOULD be used to update any copy of the <newsgroups-line>
maintained by the serving agent.
News Article Architecture and Protocols December 2004
by the serving agent.
2. Other parts containing useful information about the background of 2. Other parts containing useful information about the background of
the newgroup message (typically of type "text/plain"). the newgroup message (typically of type "text/plain").
3. Parts containing initial articles for the newsgroup. See section 3. Parts containing initial articles for the newsgroup. See section
6.2.1.2 for details. 6.2.1.2 for details.
In the event that there is only the single (i.e. application/news- In the event that there is only the single (i.e. application/news-
groupinfo) subpart present, it will suffice to include a "Content- groupinfo) subpart present, it will suffice to include a "Content-
Type: application/news-groupinfo" amongst the headers of the control Type: application/news-groupinfo" amongst the headers of the control
message. Otherwise, a "Content-Type: multipart/mixed" header will be message. Otherwise, a "Content-Type: multipart/mixed" header will be
needed, and each separate part will then need its own Content-Type- needed, and each separate part will then need its own Content-Type
header. header.
6.2.1.2. Initial Articles 6.2.1.2. Initial Articles
Some subparts of a "newgroup" or "mvgroup" control message MAY Some subparts of a "newgroup" or "mvgroup" control message MAY
contain an initial set of articles to be posted to the affected contain an initial set of articles to be posted to the affected
newsgroup as soon as it has been created or modified. These parts are newsgroup as soon as it has been created or modified. These parts are
identified by having the Media Type "application/news-transmission", identified by having the Media Type "application/news-transmission",
possibly with the parameter "usage=inject". The body of each such possibly with the parameter "usage=inject". The body of each such
part should be a complete proto-article, ready for posting. This part should be a complete proto-article, ready for posting. This
feature is intended for the posting of charters, initial FAQs and the feature is intended for the posting of charters, initial FAQs and the
like to the newly formed group. like to the newly formed group.
The Newsgroups-header of the proto-article MUST include the The Newsgroups header of the proto-article MUST include the
newsgroup-name of the newly created or modified group. It MAY include <newsgroup-name> of the newly created or modified group. It MAY
other newsgroup-names. If the proto-article includes a Message-ID- include other <newsgroup-name>s. If the proto-article includes a
header, the message identifier in it MUST be different from that of
any existing article and from that of the control message as a whole. News Article Architecture and Protocols February 2005
Alternatively such a message identifier MAY be derived by the
injecting agent when the proto-article is posted. The proto-article Message-ID header, the message identifier in it MUST be different
SHOULD include the header "Distribution: local". from that of any existing article and from that of the control
message as a whole. Alternatively such a message identifier MAY be
derived by the injecting agent when the proto-article is posted. The
proto-article SHOULD include the header "Distribution: local".
The proto-article SHOULD be injected at the serving agent that The proto-article SHOULD be injected at the serving agent that
processes the control message AFTER the newsgroup in question has processes the control message AFTER the newsgroup in question has
been created or modified. It MUST NOT be injected if the newsgroup been created or modified. It MUST NOT be injected if the newsgroup
is not, in fact, created (for whatever reason). It MUST NOT be is not, in fact, created (for whatever reason). It MUST NOT be
submitted to any relaying agent for transmission beyond the serving submitted to any relaying agent for transmission beyond the serving
agent(s) upon which the newsgroup creation has just been effected (in agent(s) upon which the newsgroup creation has just been effected (in
other words, it is to be treated as having a "Distribution: local" other words, it is to be treated as having a "Distribution: local"
header, whether such a header is actually present or not). header, whether such a header is actually present or not).
NOTE: It is not precluded that the proto-article is itself a NOTE: It is not precluded that the proto-article is itself a
control message or other type of special article, to be control message or other type of special article, to be
activated only upon creation of the new newsgroup. However, activated only upon creation of the new newsgroup. However,
except as might arise from that possibility, any except as might arise from that possibility, any
"application/news-transmission" within some nested "multipart/*" "application/news-transmission" within some nested "multipart/*"
structure within the proto-article is not to be activated. structure within the proto-article is not to be activated.
News Article Architecture and Protocols December 2004
6.2.1.3. Example 6.2.1.3. Example
A "newgroup" with its charter: A "newgroup" with its charter:
From: "example.all Administrator" <admin@noc.example> From: "example.all Administrator" <admin@noc.example>
Newsgroups: example.admin.info,example.admin.announce Newsgroups: example.admin.info,example.admin.announce
Date: 27 Feb 2002 12:50:22 +0200 Date: 27 Feb 2002 12:50:22 +0200
Subject: cmsg newgroup example.admin.info moderated Subject: cmsg newgroup example.admin.info moderated
Approved: admin@noc.example Approved: admin@noc.example
Control: newgroup example.admin.info moderated Control: newgroup example.admin.info moderated
skipping to change at page 19, line 37 skipping to change at page 19, line 4
example.admin.info About the example.* groups (Moderated) example.admin.info About the example.* groups (Moderated)
--nxtprt --nxtprt
Content-Type: application/news-transmission Content-Type: application/news-transmission
Newsgroups: example.admin.info Newsgroups: example.admin.info
From: "example.all Administrator" <admin@noc.example> From: "example.all Administrator" <admin@noc.example>
Subject: Charter for example.admin.info Subject: Charter for example.admin.info
Message-ID: <charter-example.admin.info-20020227@noc.example> Message-ID: <charter-example.admin.info-20020227@noc.example>
Distribution: local Distribution: local
News Article Architecture and Protocols February 2005
Content-Type: text/plain; charset=us-ascii Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit Content-Transfer-Encoding: 7bit
The group example.admin.info contains regularly posted The group example.admin.info contains regularly posted
information on the example.* hierarchy. information on the example.* hierarchy.
--nxtprt-- --nxtprt--
6.2.2. The 'rmgroup' Control Message 6.2.2. The 'rmgroup' Control Message
control-message =/ Rmgroup-message control-command =/ Rmgroup-command
Rmgroup-message = "rmgroup" Rmgroup-arguments Rmgroup-command = "rmgroup" Rmgroup-arguments
Rmgroup-arguments = CFWS newsgroup-name Rmgroup-arguments = CFWS newsgroup-name
The "rmgroup" control message requests that the specified group be The "rmgroup" control message requests that the specified group be
removed from the list of valid groups. The Media Type of the body is removed from the list of valid groups. The Media Type of the body is
unspecified; it MAY contain anything, usually an explanatory text. unspecified; it MAY contain anything, usually an explanatory text.
NOTE: It is entirely proper for a serving agent to retain the NOTE: It is entirely proper for a serving agent to retain the
group until all the articles in it have expired, provided that group until all the articles in it have expired, provided that
it ceases to accept new articles. it ceases to accept new articles.
News Article Architecture and Protocols December 2004
6.2.2.1. Example 6.2.2.1. Example
From: "example.all Administrator" <admin@noc.example> From: "example.all Administrator" <admin@noc.example>
Newsgroups: example.admin.obsolete, example.admin.announce Newsgroups: example.admin.obsolete, example.admin.announce
Date: 4 Apr 2002 22:04 -0900 (PST) Date: 4 Apr 2002 22:04 -0900 (PST)
Subject: cmsg rmgroup example.admin.obsolete Subject: cmsg rmgroup example.admin.obsolete
Message-ID: <rm-example.admin.obsolete-20020404@noc.example> Message-ID: <rm-example.admin.obsolete-20020404@noc.example>
Approved: admin@noc.example Approved: admin@noc.example
Control: rmgroup example.admin.obsolete Control: rmgroup example.admin.obsolete
The group example.admin.obsolete is obsolete. Please remove it The group example.admin.obsolete is obsolete. Please remove it
from your system. from your system.
6.2.3. The 'mvgroup' Control Message 6.2.3. The 'mvgroup' Control Message
control-message =/ Mvgroup-message control-command =/ Mvgroup-command
Mvgroup-message = "mvgroup" Mvgroup-arguments Mvgroup-command = "mvgroup" Mvgroup-arguments
Mvgroup-arguments = CFWS newsgroup-name CFWS newsgroup-name Mvgroup-arguments = CFWS newsgroup-name CFWS newsgroup-name
[ CFWS newgroup-flag ] [ CFWS newgroup-flag ]
The "mvgroup" control message requests that the group specified by The "mvgroup" control message requests that the group specified by
the first (old-)newsgroup-name be moved to that specified by the the first (old-)newsgroup-name be moved to that specified by the
second (new-)newsgroup-name. Thus it is broadly equivalent to a second (new-)newsgroup-name. Thus it is broadly equivalent to a
"newgroup" control message for the second group followed by a "newgroup" control message for the second group followed by a
"rmgroup" control message for the first group. "rmgroup" control message for the first group.
The message body contains an "application/news-groupinfo" part (5.3) The message body contains an "application/news-groupinfo" part (5.3)
containing machine- and human-readable information about the new containing machine- and human-readable information about the new
group, and possibly other subparts as for a "newgroup" control group, and possibly other subparts as for a "newgroup" control
message. The information conveyed in the "application/news-groupinfo" message. The information conveyed in the "application/news-groupinfo"
body part, notably its newsgroups-line (5.3), is applied to the new body part, notably its <newsgroups-line> (5.3), is applied to the new
group. group.
News Article Architecture and Protocols February 2005
When this message is received, the new group is created (if it does When this message is received, the new group is created (if it does
not exist already) as for a "newgroup" control message, and SHOULD in not exist already) as for a "newgroup" control message, and SHOULD in
any case be made moderated if a newgroup-flag "moderated" is present, any case be made moderated if a <newgroup-flag> "moderated" is
and vice versa. At the same time, arrangements SHOULD be made to present, and vice versa. At the same time, arrangements SHOULD be
remove the old group (as with a "rmgroup" control message), but only made to remove the old group (as with a "rmgroup" control message),
after a suitable overlap period to allow the network to adjust to the but only after a suitable overlap period to allow the network to
new arrangement. adjust to the new arrangement.
At the same time as a serving agent acts upon this message, all At the same time as a serving agent acts upon this message, all
injecting agents associated with that serving agent SHOULD inhibit injecting agents associated with that serving agent SHOULD inhibit
the posting of new articles to the old group (preferably with some the posting of new articles to the old group (preferably with some
indication to the poster that the new group should have been used). indication to the poster that the new group should have been used).
Relaying agents, however, MUST continue to propagate such articles Relaying agents, however, MUST continue to propagate such articles
during the overlap period. during the overlap period.
NOTE: It is to be expected that different serving agents will NOTE: It is to be expected that different serving agents will
act on this message at different points of time, users of the act on this message at different points of time, users of the
old group will have to become accustomed to the new arrangement, old group will have to become accustomed to the new arrangement,
and followups to already established threads will likely and followups to already established threads will likely
continue under the old group. Therefore, there needs to be an continue under the old group. Therefore, there needs to be an
overlap period during which articles may continue to be accepted overlap period during which articles may continue to be accepted
News Article Architecture and Protocols December 2004
by relaying and serving agents in either group. This standard by relaying and serving agents in either group. This standard
does not specify any standard period of overlap (though it would does not specify any standard period of overlap (though it would
be expected to be expressed in days rather than in months). The be expected to be expressed in days rather than in months). The
inhibition of injection of new articles to the old group may inhibition of injection of new articles to the old group may
seem draconian, but it is the surest way to prevent the seem draconian, but it is the surest way to prevent the
changeover from dragging on indefinitely. changeover from dragging on indefinitely.
Since the "mvgroup" control message is newly introduced in this Since the "mvgroup" control message is newly introduced in this
standard and may not be widely implemented initially, it SHOULD be standard and may not be widely implemented initially, it SHOULD be
followed shortly afterwards by a corresponding "newgroup" control followed shortly afterwards by a corresponding "newgroup" control
message; and again, after a reasonable overlap period, it MUST be message; and again, after a reasonable overlap period, it MUST be
followed by a "rmgroup" control message for the old group. followed by a "rmgroup" control message for the old group.
In order to facilitate a smooth changeover, serving agents MAY In order to facilitate a smooth changeover, serving agents MAY
arrange to service requests for access to the old group by providing arrange to service requests for access to the old group by providing
access to the new group, which would then contain, or appear to access to the new group, which would then contain, or appear to
contain, all articles posted to either group (including, ideally, the contain, all articles posted to either group (including, ideally, the
pre-changeover articles from the old one). Nevertheless, if this pre-changeover articles from the old one). Nevertheless, if this
feature is implemented, the articles themselves, as supplied to feature is implemented, the articles themselves, as supplied to
reading agents, MUST NOT be altered in any way (and, in particular, reading agents, MUST NOT be altered in any way (and, in particular,
their Newsgroups-headers MUST contain exactly those newsgroups their Newsgroups headers MUST contain exactly those newsgroups
present when they were injected). On the other hand, the Xref-header present when they were injected). On the other hand, the Xref header
MAY contain entries for either group (or even both). (F-3.2.10) MAY contain entries for either group (or even both).
NOTE: Some serving agents that use an "active" file permit an NOTE: Some serving agents that use an "active" file permit an
entry of the form "oldgroup xxx yyy =newgroup", which enables entry of the form "oldgroup xxx yyy =newgroup", which enables
any articles arriving for oldgroup to be diverted to newgroup, any articles arriving for oldgroup to be diverted to newgroup,
thus providing a simple implementation of this feature. However, thus providing a simple implementation of this feature. However,
it is known that not all current serving agents will find it is known that not all current serving agents will find
implementation so easy (especially in the short term) which is implementation so easy (especially in the short term) which is
why it is not mandated by this standard. Nevertheless, its why it is not mandated by this standard. Nevertheless, its
eventual implementation in all serving agents is to be eventual implementation in all serving agents is to be
considered highly desirable. considered highly desirable.
News Article Architecture and Protocols February 2005
On the other hand, it is recognized that this feature would On the other hand, it is recognized that this feature would
likely not be implementable if the new group was already in likely not be implementable if the new group was already in
existence with existing articles in it. This situation should existence with existing articles in it. This situation should
not normally arise except when there is already some confusion not normally arise except when there is already some confusion
as to which groups are, or are not, supposed to exist in that as to which groups are, or are not, supposed to exist in that
hierarchy. Note that the "mvgroup" control message is not really hierarchy. Note that the "mvgroup" control message is not really
intended to be used for merging two existing groups. intended to be used for merging two existing groups.
6.2.3.1. Example 6.2.3.1. Example
From: "example.all Administrator" <admin@noc.example> From: "example.all Administrator" <admin@noc.example>
Newsgroups: example.oldgroup,example.newgroup,example.admin.announce Newsgroups: example.oldgroup,example.newgroup,example.admin.announce
Date: 30 Apr 2002 22:04 -0500 (EST) Date: 30 Apr 2002 22:04 -0500 (EST)
Subject: cmsg mvgroup example.oldgroup example.newgroup moderated Subject: cmsg mvgroup example.oldgroup example.newgroup moderated
Message-ID: <mvgroup-example.oldgroup-20020430@noc.example> Message-ID: <mvgroup-example.oldgroup-20020430@noc.example>
Approved: admin@noc.example Approved: admin@noc.example
Control: mvgroup example.oldgroup example.newgroup moderated Control: mvgroup example.oldgroup example.newgroup moderated
News Article Architecture and Protocols December 2004
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=nxt Content-Type: multipart/mixed; boundary=nxt
--nxt --nxt
Content-Type: application/news-groupinfo Content-Type: application/news-groupinfo
For your newsgroups file: For your newsgroups file:
example.newgroup The new replacement group (Moderated) example.newgroup The new replacement group (Moderated)
--nxt --nxt
skipping to change at page 22, line 44 skipping to change at page 22, line 5
This group (formerly known as example.oldgroup) is for the This group (formerly known as example.oldgroup) is for the
discussion of examples. discussion of examples.
--nxt-- --nxt--
6.2.4. The 'checkgroups' Control Message 6.2.4. The 'checkgroups' Control Message
The "checkgroups" control message contains a list of all the valid The "checkgroups" control message contains a list of all the valid
groups in a complete hierarchy. groups in a complete hierarchy.
control-message =/ Checkgroup-message News Article Architecture and Protocols February 2005
Checkgroup-message = "checkgroups" Checkgroup-arguments
control-command =/ Checkgroup-command
Checkgroup-command = "checkgroups" Checkgroup-arguments
Checkgroup-arguments= [ chkscope ] [ chksernr ] Checkgroup-arguments= [ chkscope ] [ chksernr ]
chkscope = 1*( CFWS ["!"] newsgroup-name ) chkscope = 1*( CFWS ["!"] newsgroup-name )
chksernr = CFWS "#" 1*DIGIT chksernr = CFWS "#" 1*DIGIT
A "checkgroups" message applies to any (sub-)hierarchy with a prefix A "checkgroups" message applies to any (sub-)hierarchy with a prefix
listed in the chkscope parameter, provided that the rightmost listed in the <chkscope> argument, provided that the rightmost
matching newsgroup-name in the list is not immediately preceded by a matching <newsgroup-name> in the list is not immediately preceded by
"!". If no chkscope parameter is given, it applies to all a "!". If no <chkscope> argument is given, it applies to all
hierarchies for which group statements appear in the body of the hierarchies for which group statements appear in the body of the
message. message.
NOTE: Some existing software does not support the "chkscope" NOTE: Some existing software does not support the <chkscope>
parameter. Thus a "checkgroups" message SHOULD also contain the argument. Thus a "checkgroups" message SHOULD also contain the
groups of other subhierarchies the sender is not responsible groups of other subhierarchies the sender is not responsible
for. "New" software MUST ignore groups which do not fall within for. "New" software MUST ignore groups which do not fall within
the <chkscope> argument of the "checkgroups" message.
News Article Architecture and Protocols December 2004 The <chksernr> argument is a serial number, which can be any positive
the chkscope parameter of the "checkgroups" message.
The chksernr parameter is a serial number, which can be any positive
integer (e.g. just numbered or the date in YYYYMMDD). It SHOULD integer (e.g. just numbered or the date in YYYYMMDD). It SHOULD
increase by an arbitrary value with every change to the group list increase by an arbitrary value with every change to the group list
and MUST NOT ever decrease. and MUST NOT ever decrease.
NOTE: This was added to circumvent security problems in NOTE: This was added to circumvent security problems in
situations where the Date-header cannot be authenticated. situations where the Date header cannot be authenticated.
Example: Example:
Control: checkgroups de !de.alt #248 Control: checkgroups de !de.alt #248
which includes the whole of the 'de.*' hierarchy, with the exception which includes the whole of the 'de.*' hierarchy, with the exception
of its 'de.alt.*' sub-hierarchy. of its 'de.alt.*' sub-hierarchy.
The body of the message has the Media Type "application/news- The body of the message has the Media Type "application/news-
checkgroups" (5.4). It asserts that the valid-groups it lists are checkgroups" (5.4). It asserts that the <valid-group>s it lists are
the only newsgroups in the specified hierarchies. the only newsgroups in the specified hierarchies.
NOTE: The checkgroups message is intended to synchronize the NOTE: The "checkgroups" message is intended to synchronize the
list of newsgroups stored by a serving agent, and their list of newsgroups stored by a serving agent, and their
newsgroup-descriptions, with the lists stored by other serving <newsgroup-description>s, with the lists stored by other serving
agents throughout the network. However, it might be inadvisable agents throughout the network. However, it might be inadvisable
for the serving agent actually to create or delete any for the serving agent actually to create or delete any
newsgroups without first obtaining the approval of its newsgroups without first obtaining the approval of its
administrators for such proposed actions. administrators for such proposed actions.
NOTE: The possibility of removing a complete hierarchy by means NOTE: The possibility of removing a complete hierarchy by means
of an "invalidation" line beginning with a '!' in the of an "invalidation" line beginning with a '!' in the
checkgroups-body is no longer provided by this standard. The checkgroups-body is no longer provided by this standard. The
intent of the feature was widely misunderstood and it was intent of the feature was widely misunderstood and it was
misused more often than it was used correctly. The same effect, misused more often than it was used correctly. The same effect,
if required, can now be obtained by the use of an appropriate if required, can now be obtained by the use of an appropriate
chkscope argument in conjunction with an empty checkgroups-body. <chkscope> argument in conjunction with an empty <checkgroups-
body>.
News Article Architecture and Protocols February 2005
6.3. Cancel 6.3. Cancel
The cancel message requests that a target article be "canceled", i.e. The "cancel" message requests that a target article be "canceled",
be withdrawn from circulation or access. i.e. be withdrawn from circulation or access.
control-message =/ Cancel-message control-command =/ Cancel-command
Cancel-message = "cancel" Cancel-arguments Cancel-command = "cancel" Cancel-arguments
Cancel-arguments = CFWS msg-id [CFWS] Cancel-arguments = CFWS msg-id [CFWS]
The argument identifies the article to be cancelled by its message The argument identifies the article to be cancelled by its message
identifier. The body SHOULD contain an indication of why the identifier. The body SHOULD contain an indication of why the
cancellation was requested. The cancel message SHOULD be posted to cancellation was requested. The "cancel" message SHOULD be posted to
the same newsgroup, with the same distribution, as the article it is the same newsgroup(s), with the same distribution(s), as the article
attempting to cancel. it is attempting to cancel.
News Article Architecture and Protocols December 2004
A serving agent that elects to honour a cancel message SHOULD make A serving agent that elects to honour a "cancel" message SHOULD make
the article unavailable for relaying or serving (perhaps by deleting the article unavailable for relaying or serving (perhaps by deleting
it completely). If the target article is unavailable, and the it completely). If the target article is unavailable, and the
acceptability of the cancel message cannot be established without it, acceptability of the "cancel" message cannot be established without
activation of the cancel message SHOULD be delayed until the target it, activation of the "cancel" message SHOULD be delayed until the
article has been seen. See also sections 7.3 and 7.4. target article has been seen. See also sections 7.3 and 7.4.
NOTE: It is expected that the security extension envisaged in NOTE: It is expected that the security extension envisaged in
section 6.1 will make more detailed provisions for establishing section 6.1 will make more detailed provisions for establishing
whether honouring a particular cancel message is in order. In whether honouring a particular "cancel" message is in order. In
particular, it is likely that there will be provision for the particular, it is likely that there will be provision for the
digital signature of 3rd party cancels (i.e. those issued other digital signature of 3rd party cancels (i.e. those issued other
than by the sender, the moderator, or the injector). than by the sender, the moderator, or the injector).
NOTE: A cancel submitted by the poster for an article in a NOTE: A cancel submitted by the poster for an article in a
moderated group will be forwarded to the moderator of that moderated group will be forwarded to the moderator of that
group, and it is up to that moderator to act upon it (7.8). group, and it is up to that moderator to act upon it (7.8).
NOTE: The former requirement [RFC 1036] that the From and/or NOTE: The former requirement [RFC 1036] that the From and/or
Sender-headers of the cancel message should match those of the Sender headers of the "cancel" message should match those of the
original article has been removed from this standard, since it original article has been removed from this standard, since it
only encouraged cancel issuers to conceal their true identity, only encouraged cancel issuers to conceal their true identity,
and it was not usually checked or enforced by canceling and it was not usually checked or enforced by canceling
software. Therefore, both the From and/or Sender-headers and software. Therefore, both the From and/or Sender headers and
any Approved-header should now relate to the entity responsible any Approved header should now relate to the entity responsible
for issuing the cancel message. for issuing the "cancel" message.
6.4. Ihave, sendme 6.4. Ihave, sendme
The "ihave" and "sendme" control messages implement a crude batched The "ihave" and "sendme" control messages implement a crude batched
predecessor of the NNTP [NNTP] protocol. They are largely obsolete on predecessor of the NNTP [NNTP] protocol. They are largely obsolete on
the Internet, but still see use in conjunction with some transport the Internet, but still see use in conjunction with some transport
protocols such as UUCP, especially for backup feeds that normally are protocols such as UUCP, especially for backup feeds that normally are
active only when a primary feed path has failed. There is no active only when a primary feed path has failed. There is no
requirement for relaying agents that do not support such transport requirement for relaying agents that do not support such transport
protocols to implement them. protocols to implement them.
News Article Architecture and Protocols February 2005
NOTE: The ihave and sendme messages defined here have ABSOLUTELY NOTE: The ihave and sendme messages defined here have ABSOLUTELY
NOTHING TO DO WITH NNTP, despite similarities of terminology. NOTHING TO DO WITH NNTP, despite similarities of terminology.
The two messages share the same syntax: The two messages share the same syntax:
control-message =/ Ihave-message control-command =/ Ihave-command
Ihave-message = "ihave" Ihave-arguments Ihave-command = "ihave" Ihave-argument
Ihave-arguments = relayer-name Ihave-argument = relayer-name
control-message =/ Sendme-message control-command =/ Sendme-command
Sendme-message = "sendme" Sendme-arguments Sendme-command = "sendme" Sendme-argument
Sendme-arguments = Ihave-arguments Sendme-argument = Ihave-argument
relayer-name = path-identity ; see a-5.6.1 relayer-name = path-identity ; see a-5.6.1
ihave-body = *( msg-id CRLF ) ihave-body = *( msg-id CRLF )
sendme-body = ihave-body sendme-body = ihave-body
News Article Architecture and Protocols December 2004 The body of the message consists of a list of <msg-id>s, one per
line. [RFC 1036] also permitted the list of <msg-id>s to appear in
The body of the message consists of a list of msg-ids, one per line. the Ihave- or Sendme-argument with the syntax
[RFC 1036] also permitted the list of msg-ids to appear in the Ihave- Ihave-argument = [FWS] *( msg-id FWS ) [relayer-name]
or Sendme-arguments with the syntax
Ihave-arguments = [FWS] *( msg-id FWS ) [relayer-name]
but this form SHOULD NOT now be used, though relaying agents MAY but this form SHOULD NOT now be used, though relaying agents MAY
recognize and process it for backward compatibility. recognize and process it for backward compatibility.
The ihave message states that the named relaying agent has received The "ihave" message states that the named relaying agent has received
articles with the specified message identifiers, which may be of articles with the specified message identifiers, which may be of
interest to the relaying agents receiving the ihave message. The interest to the relaying agents receiving the ihave message. The
sendme message requests that the agent receiving it send the articles "sendme" message requests that the agent receiving it send the
having the specified message identifiers to the named relaying agent. articles having the specified message identifiers to the named
relaying agent.
Upon receipt of the sendme message, the receiving agent sends the Upon receipt of the sendme message, the receiving agent sends the
article(s) requested, often (especially when the transport protocol article(s) requested, often (especially when the transport protocol
is UUCP) in the form of one or more batches, each containing several is UUCP) in the form of one or more batches, each containing several
articles. The usual form of a batch is defined by the following articles. The usual form of a <batch> is defined by the following
syntax (which is also used in the application/news transmission media syntax (which is also used in the application/news transmission media
type (5.1)). type (5.1)).
batch = 1*( batch-header article ) batch = 1*( batch-header article )
batch-header = "#!" SP rnews SP article-size CRLF batch-header = "#!" SP rnews SP article-size CRLF
rnews = %x72.6E.65.77.73 ; case sensitive "rnews" rnews = %x72.6E.65.77.73 ; case sensitive "rnews"
article-size = 1*DIGIT article-size = 1*DIGIT
Thus a batch is a sequence of articles, each prefixed by a header Thus a <batch> is a sequence of articles, each prefixed by a header
line that includes its size. The article-size is a decimal count of line that includes its size. The <article-size> is a decimal count of
the octets in the article, counting each CRLF as one octet regardless the octets in the article, counting each CRLF as one octet regardless
of how it is actually represented. of how it is actually represented.
NOTE: Despite the similarity of this format to an executable NOTE: Despite the similarity of this format to an executable
UNIX script, it is EXTREMELY unwise to feed such a batch into a UNIX script, it is EXTREMELY unwise to feed such a batch into a
command interpreter in anticipation of it running a command command interpreter in anticipation of it running a command
named "rnews"; the security implications of so doing would be named "rnews"; the security implications of so doing would be
disastrous. disastrous.
News Article Architecture and Protocols February 2005
These control messages are normally sent essentially as point-to- These control messages are normally sent essentially as point-to-
point messages, by using newsgroup-names in the Newsgroups-header of point messages, by using <newsgroup-name>s in the Newsgroups header
the form "to." followed by one (or possibly more) components in the of the form "to." followed by one (or possibly more) <component>s in
form of a relayer-name (see section a-5.5.1 which forbids "to" as the the form of a <relayer-name> (see section a-5.5.1 which forbids "to"
first component of a newsgroup-name). The control message SHOULD then as the first <component> of a <newsgroup-name>). The control message
be delivered ONLY to the relaying agent(s) identified by that SHOULD then be delivered ONLY to the relaying agent(s) identified by
relayer-name, and any relaying agent receiving such a message which that <relayer-name>, and any relaying agent receiving such a message
includes its own relayer-name MUST NOT propagate it further. Each which includes its own <relayer-name> MUST NOT propagate it further.
pair of relaying agent(s) sending and receiving these messages MUST Each pair of relaying agent(s) sending and receiving these messages
be immediate neighbors, exchanging news directly with each other. MUST be immediate neighbours, exchanging news directly with each
Each relaying agent advertises its new arrivals to the other using other. Each relaying agent advertises its new arrivals to the other
ihave messages, and each uses sendme messages to request the articles using "ihave" messages, and each uses "sendme" messages to request
it lacks. the articles it lacks.
[Assumes forbidden newsgroup-names will be in USEFOR.]
To reduce overhead, ihave and sendme messages SHOULD be sent To reduce overhead, ihave and sendme messages SHOULD be sent
relatively infrequently and SHOULD contain reasonable numbers of relatively infrequently and SHOULD contain reasonable numbers of
message identifiers. If ihave and sendme are being used to implement message identifiers. If ihave and sendme are being used to implement
a backup feed, it may be desirable to insert a delay between a backup feed, it may be desirable to insert a delay between
News Article Architecture and Protocols December 2004
reception of an ihave and generation of a sendme, so that a slightly reception of an ihave and generation of a sendme, so that a slightly
slow primary feed will not cause large numbers of articles to be slow primary feed will not cause large numbers of articles to be
requested unnecessarily via sendme. requested unnecessarily via sendme.
6.5. Obsolete control messages. 6.5. Obsolete control messages.
The following control messages (as described in Appendix A.3) are The following control messages (as described in Appendix A.3) are
declared obsolete by this standard: declared obsolete by this standard:
sendsys sendsys
version version
whogets whogets
senduuname senduuname
7. Duties of Various Agents 7. Duties of Various Agents
The following section sets out the duties of various agents involved The following section sets out the duties of various agents involved
in the creation, relaying and serving of Usenet articles. Insofar as in the creation, relaying and serving of Netnews articles. Insofar as
these duties are described as sequences of steps to be followed, it these duties are described as sequences of steps to be followed, it
should be understood that it is the effect of these sequences that is should be understood that it is the effect of these sequences that is
important, and implementations may use any method that gives rise to important, and implementations may use any method that gives rise to
that same effect. that same effect.
In this section, the word "trusted", as applied to the source of some In this section, the word "trusted", as applied to the source of some
article, means that an agent processing that article has verified, by article, means that an agent processing that article has verified, by
some means, the identity of that source (which may be another agent some means, the identity of that source (which may be another agent
or a poster). or a poster).
NOTE: In many implementations, a single agent may perform NOTE: In many implementations, a single agent may perform
various combinations of the injecting, relaying and serving various combinations of the injecting, relaying and serving
functions. Its duties are then the union of the various duties functions. Its duties are then the union of the various duties
concerned. concerned.
News Article Architecture and Protocols February 2005
7.1. General principles to be followed 7.1. General principles to be followed
There are two important principles that news implementors (and There are two important principles that news implementors (and
administrators) need to keep in mind. The first is the well-known administrators) need to keep in mind. The first is the well-known
Internet Robustness Principle: Internet Robustness Principle:
Be liberal in what you accept, and conservative in what you Be liberal in what you accept, and conservative in what you
send. send.
However, in the case of news there is an even more important However, in the case of news there is an even more important
principle, derived from a much older code of practice, the principle, derived from a much older code of practice, the
Hippocratic Oath (we may thus call this the Hippocratic Principle): Hippocratic Oath (we may thus call this the Hippocratic Principle):
First, do no harm. First, do no harm.
It is VITAL to realize that decisions which might be merely It is VITAL to realize that decisions which might be merely
suboptimal in a smaller context can become devastating mistakes when suboptimal in a smaller context can become devastating mistakes when
amplified by the actions of thousands of hosts within a few minutes. amplified by the actions of thousands of hosts within a few minutes.
News Article Architecture and Protocols December 2004
In the case of gateways, the primary corollary to this is: In the case of gateways, the primary corollary to this is:
Cause no loops. Cause no loops.
7.2. Duties of an Injecting Agent 7.2. Duties of an Injecting Agent
An Injecting Agent is responsible for taking a proto-article from a An Injecting Agent is responsible for taking a (proto-)article from a
posting agent and either forwarding it to a moderator or injecting it posting (or other) agent and either forwarding it to a moderator or
into the relaying system for access by readers. injecting it into the relaying system for access by readers.
As such, an injecting agent is considered responsible for ensuring As such, an injecting agent is considered responsible for ensuring
that any article it injects conforms with the rules of [USEFOR]. that any article it injects conforms with the rules of [USEFOR].
In the normal course of events, an article that has already been In the normal course of events, an article that has already been
injected into a Netnews network will never pass through another injected into a Netnews network will never pass through another
injecting agent. So, if an injecting agent receives an otherwise injecting agent. So, if an injecting agent receives an otherwise
valid article that has already been injected (as evidenced by the valid article that has already been injected (as evidenced by the
presence of an Injection-Date-header, an Injection-Info-header, or presence of an Injection-Date header, an Injection-Info header, or
more thath one '%' path-delimiter in a Path-header) it MAY choose to more than one '%' <path-delimiter> in a Path header) it MAY choose to
reject it, but otherwise SHOULD cause it to be relayed, as it stands, reject it, but otherwise SHOULD cause it to be relayed, as it stands,
by a relaying agent (7.3). by a relaying agent (7.3).
In exceptional circumstances (e.g. as part of some complex gatewaying In exceptional circumstances (e.g. as part of some complex gatewaying
process, or where a relaying agent considers it essential for process, or where a relaying agent considers it essential for
fulfilling its responsibility towards the rest of the network) an fulfilling its responsibility towards the rest of the network) an
already injected article MAY be "reinjected" into the network. This already injected article MAY be "reinjected" into the network. This
standard does not prescribe any such circumstance; rather this is a standard does not prescribe any such circumstance; rather this is a
matter of policy to be determined by the administrators of each matter of policy to be determined by the administrators of each
injecting agent, who have the responsibility to ensure that no harm injecting agent, who have the responsibility to ensure that no harm
arises. In all other circumstances, unintented reinjection is to be arises. In all other circumstances, unintented reinjection is to be
avoided (see 7.9). Nevertheless, in order to preserve the integrity avoided (see 7.9). Nevertheless, in order to preserve the integrity
of the network in these special cases, this standard does set out the of the network in these special cases, this standard does set out the
correct way to reinject. correct way to reinject (see special provisions in 7.2.2 Steps 3, 4,
7 and 9).
News Article Architecture and Protocols February 2005
It is usual for an injecting agent to be closely associated with a It is usual for an injecting agent to be closely associated with a
serving agent, thus giving it access to the list (7.4) showing the serving agent, thus giving it access to the list (7.4) showing the
moderation status of the newsgroups it is likely to handle. In the moderation status of the newsgroups it is likely to handle. In the
event that it does not have such an associated serving agent, it MUST event that it does not have such an associated serving agent, it MUST
maintain that list itself. maintain that list itself.
7.2.1. Proto-articles 7.2.1. Proto-articles
A proto-article SHOULD NOT be propagated in that form to other than A proto-article SHOULD NOT be propagated in that form to other than
injecting agents. injecting agents.
A proto-article has the same format as a normal article except that A proto-article has the same format as a normal article except that
some of the following mandatory headers MAY be omitted: Message-Id- some of the following mandatory headers MAY be omitted: Message-Id,
header, Date-header, Path-header (and even From-header if the Date, Path (and even From if the particular injecting agent can
particular injecting agent can derive that information from other derive that information from other sources). However, if it is
sources). However, if it is intended to offer the proto-article to intended to offer the proto-article to two or more injecting agents
two or more injecting agents in parallel, then it is only the Path- in parallel, then it is only the Path header that MAY be omitted.
header that MAY be omitted. The headers that can be omitted MUST NOT The headers that can be omitted MUST NOT contain invalid values; they
contain invalid values; they MUST either be correct or not present at MUST either be correct or not present at all.
all.
News Article Architecture and Protocols December 2004
[Maybe omit that last sentence.] [Maybe omit that last sentence.]
NOTE: An article that is offered for reinjection has, by NOTE: An article that is offered for reinjection has, by
definition, already been injected once, and is not therefore to definition, already been injected once, and is not therefore to
be considered as a proto-article. Hence a genuine proto-article be considered as a proto-article. Hence a genuine proto-article
will not contain any Injection-Date-header nor any '%' path- will not contain any Injection-Date header nor any '%' <path-
delimiter in its Path-header. It MAY contain path-identities delimiter> in its Path header. It MAY contain <path-identity>s
with other path-delimiters in the pre-injection portion of its with other <path-delimiter>s in the pre-injection portion of its
Path-header (a-5.6.3). Path header (a-5.6.3).
[Assuming relevant mention of <path-delimiter> conventions in USEFOR.]
7.2.2. Procedure to be followed by Injecting Agents 7.2.2. Procedure to be followed by Injecting Agents
An injecting agent receives proto-articles from posting and followup An injecting agent receives (proto-)articles from posting and
agents. It verifies them, adds headers where required, and then followup agents. It verifies them, adds headers where required, and
either forwards them to a moderator or injects them by passing them then either forwards them to a moderator or injects them by passing
to serving or relaying agents. It MUST NOT forward an already them to serving or relaying agents. It MUST NOT forward an already
injected article to a moderator. injected article to a moderator.
An injecting agent processes articles as follows: An injecting agent processes articles as follows:
1. It MUST remove any Injection-Info- or Complaints-To-header already 1. It MUST remove any Injection-Info or Complaints-To header already
present (though it might be useful to copy them to suitable X- present (though it might be useful to copy them to suitable X-
headers). It SHOULD likewise remove any NNTP-Posting-Host, X-Trace headers). It SHOULD likewise remove any NNTP-Posting-Host, X-
or other undocumented tracing header. Trace, or other non-standard tracing header.
2. It SHOULD verify that the article is from a trusted source. 2. It SHOULD verify that the article is from a trusted source, and
However, it MAY allow articles in which headers contain unverified MAY reject articles in which headers contain unverified email
email addresses, that is, addresses which are not known to be addresses, that is, addresses which are not known to be valid for
valid for the trusted source, and notably so if they end in the trusted source, though it would be perverse to reject
".invalid". intentionally unverifiable addresses such as those ending in
".invalid" (7.5).
3. It SHOULD reject any article whose Date-header (a-5.1) is more News Article Architecture and Protocols February 2005
3. It SHOULD reject any article whose Date header (F-3.1.2) is more
than 24 hours into the future (and MAY use a margin less than that than 24 hours into the future (and MAY use a margin less than that
24 hours). It MUST, except when reinjecting, reject any article 24 hours). It MUST (except when reinjecting) reject any article
with an Injection-Date-header already present (and SHOULD do with an Injection-Date header already present (and SHOULD do
likewise with any NNTP-Posting-Date-header). It MAY when likewise with any NNTP-Posting-Date header). When reinjecting it
reinjecting, but only if there is no Injection-Date-header MAY, in the absence of any Injection-Date header, reject any
present, reject any article whose Date-header appears to be stale article whose Date header appears to be stale (e.g. more than 72
(e.g. more than 72 hours into the past). hours into the past).
4. It MUST reject any article that does not have the proper mandatory 4. It MUST reject any article that does not have the proper mandatory
headers for a proto-article (or, when reinjecting, all the headers for a proto-article (except, when reinjecting, for the
mandatory headers other than Injection-Date), or which contains Injection-Date header), or which contains any header that does not
any header that does not have legal contents. It SHOULD reject have legal contents. It SHOULD reject any article which contains
any article which contains any header deprecated for Netnews (a- any header deprecated for Netnews (F-3). It SHOULD reject any
4.2.1). It SHOULD reject any article whose Newsgroups-header does article whose Newsgroups header does not contain at least one
not contain at least one newsgroup-name for an existing group (as <newsgroup-name> for an existing group (as listed by its
listed by its associated serving agent) and it MAY reject any associated serving agent) and it MAY reject any <newsgroup-name>
newsgroup-name which, although syntactically correct, violates a which, although syntactically correct, violates a policy
policy restriction established, for some (sub-)hierarchy, by an restriction established, for some (sub-)hierarchy, by an agency
agency with the appropriate authority (1.2). Observe that with the appropriate authority (1.2). Observe that crossposting
crossposting to unknown newsgroups is not precluded provided at to unknown newsgroups is not precluded provided at least one of
least one of those in the Newsgroups-header is listed. those in the Newsgroups header is listed.
[The reference to F-3 presupposes some mention of deprecated headers in
News Article Architecture and Protocols December 2004 there.]
NOTE: This ability to reject newsgroup-names in breach of NOTE: This ability to reject <newsgroup-name>s in breach of
established policy does not extend to relaying agents, though it established policy does not extend to relaying agents, though it
might be reasonable for posting agents to do it. might be reasonable for posting agents to do it.
5. If the article is rejected (for reasons given above, or for other 5. If the article is rejected (for reasons given above, or for other
formatting errors or matters of site policy) the posting agent formatting errors or matters of site policy) the posting agent
SHOULD be informed (such as via an NNTP 44x response code) that SHOULD be informed (such as via an NNTP 44x response code) that
posting has failed and the article MUST NOT then be processed posting has failed and the article MUST NOT then be processed
further. further.
6. The Message-ID, Date and From-headers (and their contents) MUST be 6. The Message-ID, Date and From headers (and their contents) MUST be
added when not already present (but that situation could not arise added when not already present. A User-Agent header MAY be added
during reinjection). A User-Agent-header MAY be added (or an (or an already present User-Agent header MAY be augmented) so as
already present User-Agent-header MAY be augmented) so as to to identify the software (e.g. "INN/1.7.2") used by the injecting
identify the software (e.g. "INN/1.7.2") used by the injecting
agent. agent.
NOTE: The Message-ID, Date and From headers will already be
present during reinjection.
7. The injecting agent MUST NOT alter the body of the article in any 7. The injecting agent MUST NOT alter the body of the article in any
way (including any change of Content-Transfer-Encoding). It MAY, way (including any change of Content-Transfer-Encoding). It MAY
except when reinjecting, add other headers not already provided by (except when reinjecting) add other headers not already provided
the poster, but SHOULD NOT alter, delete, or reorder any existing by the poster, but SHOULD NOT alter, delete, or reorder any
header, with the specific exception of "tracing" headers such as existing header, with the specific exception of "tracing" headers
Injection-Info and Complaints-To, which are to be removed as such as Injection-Info and Complaints-To, which are to be removed
already mentioned. It MAY also, as an interim measure pending as already mentioned. It MAY also, as an interim measure pending
widespread adoption of the newly introduced (a-5.5) folding widespread adoption of the newly introduced (F-3.1.5) folding
whitespace, reformat the Newsgroups- and any Followup-To-header by whitespace, reformat the Newsgroups and any Followup-To header by
removing any such whitespace inserted by the posting agent. removing any such whitespace inserted by the posting agent.
8. If the Newsgroups-header contains one or more moderated groups and News Article Architecture and Protocols February 2005
the article does NOT contain an Approved-header, the injecting
[Again, presupposes some mention in F-3.1.5.]
8. If the Newsgroups header contains one or more moderated groups and
the article does NOT contain an Approved header, the injecting
agent MUST forward it to a moderator as specified in section 7.2.3 agent MUST forward it to a moderator as specified in section 7.2.3
below. below.
9. Otherwise, a Path-header with a tail-entry (a-5.6.3) MUST be 9. Otherwise, a Path header with a <tail-entry> (F-3.1.6) MUST be
correctly added if not already present. During reinjection, the correctly added if not already present. During reinjection, the
existing Path-header SHOULD be retained. existing Path header SHOULD be retained.
10.It MUST then prepend the path-identity of the injecting agent and 10.It MUST then prepend the <path-identity> of the injecting agent
a '%' path-delimiter (which serves to separate the pre-injection and a '%' <path-delimiter> (which serves to separate the pre-
and post-injection regions of the Path-content) to the Path- injection and post-injection regions of the Path header) to the
content; this SHOULD then be followed by CRLF and WSP if it would content of the Path header; this SHOULD then be followed by CRLF
otherwise result in a line longer than 79 characters. The and WSP if it would otherwise result in a line longer than 79
prepended path-identity MUST be an FQDN mailable address (a- characters. The prepended <path-identity> MUST be an FQDN
5.6.2). This could result in more that one '%' path-delimiter in mailable address (a-5.6.2). See a-5.6.4 for the significance of
the case of reinjection. See a-5.6.4 for the significance of the the various <path-delimiter>s.
various path-delimiters.
11.An Injection-Info-header (a-6.19) SHOULD be added, identifying the NOTE: This could result in more that one '%' <path-delimiter> in
trusted source of the article, and a suitable Complaints-To-header the case of reinjection.
(a-6.20) MAY be added. Each injecting agent SHOULD use a [There are unresolved issues with regard to the Path header; hence the
consistent form of the Injection-Info-header for all articles continued reference to [ARTICLE] above.]
emanating from the same or similar origins.
News Article Architecture and Protocols December 2004 11. An Injection-Info header (F-3.2.13) SHOULD be added, identifying
the trusted source of the article, and a suitable Complaints-To
header (a-6.20) MAY be added. Each injecting agent SHOULD use a
consistent form of the Injection-Info header for all articles
emanating from the same or similar origins.
[There are unresolved issues concerning the Complaints-To header, so the
above step may yet be reworded in terms of a parameter of the
Injection-Info header.]
NOTE: The step above is the only place in which an Injection- NOTE: The step above is the only place in which an Injection-
Info- or Complaints-To-header is to be created. It follows that Info or Complaints-To header is to be created. It follows that
these headers MUST NOT be created, replaced, changed or deleted these headers MUST NOT be created, replaced, changed or deleted
by any other agent (except during reinjection, in which case by any other agent (except during reinjection, in which case
they will always relate to the latest injection and can, to that they will always relate to the latest injection and are, to that
extent, be regarded as variant headers). extent, regarded as variant headers).
12.The injecting agent MUST then add an Injection-Date-header (a-5.7) 12.The injecting agent MUST then add an Injection-Date header (F-
if one is not already present, but it MUST NOT alter, or delete, 3.1.7) if one is not already present, but it MUST NOT alter, or
an already present Injection-Date-header (and likewise SHOULD NOT delete, an already present Injection-Date header (and likewise
alter, or delete, an already present NNTP-Posting-Date-header). SHOULD NOT alter, or delete, an already present NNTP-Posting-Date
Finally, it forwards the article to one or more relaying or header). Finally, it forwards the article to one or more relaying
serving agents, and the injection process is to be considered or serving agents, and the injection process is to be considered
complete. complete.
NOTE: The step above is the only place where an Injection-Date- NOTE: The step above is the only place where an Injection-Date
header is to be created It follows that it MUST NOT subsequently header is to be created It follows that it MUST NOT subsequently
be replaced, changed or deleted by any other agent, even during be replaced, changed or deleted by any other agent, even during
reinjection. reinjection.
News Article Architecture and Protocols February 2005
7.2.3. Procedure for Forwarding to a Moderator 7.2.3. Procedure for Forwarding to a Moderator
An injecting agent forwards ar article to a moderator as follows: An injecting agent forwards ar article to a moderator as follows:
1. It MUST forward it to the moderator of the first (leftmost) 1. It MUST forward it to the moderator of the first (leftmost)
moderated group listed in the Newsgroups-header via email (see 7.8 moderated group listed in the Newsgroups header, customarily via
for how that moderator may forward it to further moderators). email, (see 7.8 for how that moderator may forward it to further
There are two possibilities for doing this: moderators). There are two possibilities for doing this:
(a) The complete article is encapsulated (headers and all) within (a) The complete article is encapsulated (headers and all) within
the email, preferably using the Content-Type the email, preferably using the Content-Type
"application/news-transmission" (5.1) with any usage "application/news-transmission" (5.1) with any usage
parameter set to "moderate". Moreover, there SHOULD NOT be parameter set to "moderate". Moreover, there SHOULD NOT be
more than one encapsulated article within the one email. more than one encapsulated article within the one email.
This method has the advantage of removing any possible This method has the advantage of removing any possible
conflict between Netnews and Email headers, or of changes to conflict between Netnews and Email headers, or of changes to
those headers during transport through email. those headers during transport through email.
(b) The article is sent as an email as it stands, with the (b) The article is sent as an email as it stands, with the
addition of such extra headers (e.g. a To-header) as are addition of such extra headers (e.g. a To header) as are
necessary for an email. The existing Message-ID-header SHOULD necessary for an email. The existing Message-ID header SHOULD
be retained. be retained.
Although both of these methods have seen use in the past, the Although both of these methods have seen use in the past, the
preponderance of current usage on Usenet has been for method (b) preponderance of current usage on Usenet has been for method (b)
and many moderators are ill-prepared to deal with method (a). and many moderators are ill-prepared to deal with method (a).
Therefore, method (a) SHOULD NOT be used until such time as the Therefore, method (a) SHOULD NOT be used until such time as the
majority of moderators are able to accept it. majority of moderators are able to accept it.
2. This standard does not prescribe how the email address of the 2. This standard does not prescribe how the email address of the
moderator is to be determined, that being a matter of policy to be moderator is to be determined, that being a matter of policy to be
arranged by the agency responsible for the oversight of each arranged by the agency responsible for the oversight of each
hierarchy. Nevertheless, there do exist various agents worldwide hierarchy. Nevertheless, there do exist various agents worldwide
which provide the service of forwarding to moderators, and the which provide the service of forwarding to moderators, and the
News Article Architecture and Protocols December 2004
address to use with them is obtained as follows: address to use with them is obtained as follows:
(a) Each '.' in the newsgroup-name is replaced with a '-'. (a) Each '.' in the <newsgroup-name> is replaced with a '-'.
(b) The result of these operations is used as the local-part of (b) The result of these operations is used as the <local-part> of
the mailbox of the agent. For example, articles intended for the <mailbox> of the agent. For example, articles intended
"news.announce.important" would be emailed to "news- for "news.announce.important" would be emailed to "news-
announce-important@forwardingagent.example". announce-important@forwardingagent.example".
7.3. Duties of a Relaying Agent 7.3. Duties of a Relaying Agent
A Relaying Agent accepts injected articles from injecting and other A Relaying Agent accepts injected articles from injecting and other
relaying agents and passes them on to relaying or serving agents relaying agents and passes them on to relaying or serving agents
according to mutually agreed policy. Relaying agents SHOULD accept according to mutually agreed policy. Relaying agents SHOULD accept
articles ONLY from trusted agents. articles ONLY from trusted agents.
An article SHOULD NOT be relayed unless the sending agent has been An article SHOULD NOT be relayed unless the sending agent has been
configured to supply and the receiving agent to receive at least one configured to supply and the receiving agent to receive at least one
of the newsgroup-names in its Newsgroups-header and at least one of of the <newsgroup-name>s in its Newsgroups header and at least one of
the distributions in its Distribution-header, if any. Exceptionally, the <dist-name>s in its Distribution header, if any. Exceptionally,
News Article Architecture and Protocols February 2005
ALL relaying agents are deemed willing to supply or accept the ALL relaying agents are deemed willing to supply or accept the
distribution "world", and NO relaying agent should supply or accept <dist-name> "world", and NO relaying agent should supply or accept
the distribution "local". the <dist-name> "local".
However, if the particular implementation does not relay non-existent However, if the particular implementation does not relay non-existent
newsgroups, even when included in the Newsgroups-header and implied newsgroups, even when included in the Newsgroups header and implied
(e.g. by some "wild card" notation) in the configuration tables, then (e.g. by some "wild card" notation) in the configuration tables, then
the agent MUST examine all group control messages (6.2) in order to the agent MUST examine all group control messages (6.2) in order to
ensure that relaying of those messages proceeds normally. ensure that relaying of those messages proceeds normally.
NOTE: Although it would seem redundant to filter out unwanted NOTE: Although it would seem redundant to filter out unwanted
distributions at both ends of a relaying link (and it is clearly distributions at both ends of a relaying link (and it is clearly
more efficient to do so at the sending end), many sending sites more efficient to do so at the sending end), many sending sites
have been reluctant, historically speaking, to apply such have been reluctant, historically speaking, to apply such
filters (except to ensure that distributions local to their own filters (except to ensure that distributions local to their own
site or cooperating subnet did not escape); moreover they tended site or cooperating subnet did not escape); moreover they tended
skipping to change at page 31, line 56 skipping to change at page 31, line 36
possible distributions so that they could feed on to their possible distributions so that they could feed on to their
clients in all possible geographical (or organizational) clients in all possible geographical (or organizational)
regions. regions.
Therefore, it is desirable to provide facilities for rejecting Therefore, it is desirable to provide facilities for rejecting
unwanted distributions at the receiving end. Indeed, it may be unwanted distributions at the receiving end. Indeed, it may be
simpler to do so locally than to inform each sending site of simpler to do so locally than to inform each sending site of
what is required, especially in the case of specialized what is required, especially in the case of specialized
distributions (for example for control messages, such as cancels distributions (for example for control messages, such as cancels
from certain issuers) which might need to be added at short from certain issuers) which might need to be added at short
notice. The possibility for reading agents to filter notice. A similar possibility for reading agents to filter
distributions has been provided (7.7) for the same reason. distributions is also suggested in [USEAGE]) for the same
reason.
News Article Architecture and Protocols December 2004
In order to avoid unnecessary relaying, an article SHOULD NOT be In order to avoid unnecessary relaying, an article SHOULD NOT be
relayed if the path-identity of the receiving agent (or some known relayed if the <path-identity> of the receiving agent (or some known
alias thereof) appears in its Path-header. alias thereof) appears in its Path header.
A relaying agent processes articles as follows: A relaying agent processes articles as follows:
1. It MUST establish the trusted identity of the source of the 1. It MUST establish the trusted identity of the source of the
article and compare it with the leftmost path-identity of the article and compare it with the leftmost <path-identity> of the
Path-content. If it matches it MUST then prepend its own path- Path header's content. If it matches it MUST then prepend its own
identity and a '/' path-delimiter to the Path-content; this SHOULD <path-identity> and a '/' <path-delimiter> to that content; this
then be followed by CRLF and WSP if it would otherwise result in a SHOULD then be followed by CRLF and WSP if it would otherwise
line longer than 79 characters. If it does not match then it result in a line longer than 79 characters. If it does not match
prepends instead two entries to the Path-content; firstly the true then it prepends instead two entries to that content; firstly the
established path-identity of the source followed by a '?' path- true established <path-identity> of the source followed by a '?'
delimiter, and then, to the left of that, its own path-identity <path-delimiter>, and then, to the left of that, its own <path-
followed by a '/' path-delimiter as usual. This prepending of two identity> followed by a '/' <path-delimiter> as usual. This
entries SHOULD NOT be done if the provided and established prepending of two entries SHOULD NOT be done if the provided and
identities match. See a-5.6.4 for the significance of the various established identities match. See a-5.6.4 for the significance of
path-delimiters. the various <path-delimiter>s.
News Article Architecture and Protocols February 2005
[All subject to unresolved issues concerning the Path header.]
NOTE: In order to prevent overloading, relaying agents should NOTE: In order to prevent overloading, relaying agents should
not routinely query an external entity (such as a DNS-server) in not routinely query an external entity (such as a DNS-server) in
order to verify an article (though a local cache of the required order to verify an article (though a local cache of the required
information might usefully be consulted). information might usefully be consulted).
2. It MUST examine the Injection-Date-header (or, if that is absent, 2. It MUST examine the Injection-Date header (or, if that is absent,
the Date-header) and reject the article as stale (a-5.7) if that the Date header) and reject the article as stale (F-3.1.7) if that
predates the earliest articles of which it normally keeps record, predates the earliest articles of which it normally keeps record,
or if it is more than 24 hours into the future (the margin MAY be or if it is more than 24 hours into the future (the margin MAY be
less than that 24 hours). less than that 24 hours).
3. It SHOULD reject any article that does not include all the 3. It SHOULD reject any article that does not include all the
mandatory headers (section a-5). mandatory headers (section F-3.1).
4. It MAY reject any article whose headers do not have legal 4. It MAY reject any article whose headers do not have legal
contents. contents.
5. It SHOULD reject any article that has already been sent to it (a 5. It SHOULD reject any article that has already been sent to it (a
database of message identifiers of recent messages is usually kept database of message identifiers of recent messages is usually kept
and matched against). and matched against).
NOTE: Even though commonly derived from the domain name of the NOTE: Even though commonly derived from the domain name of the
originating site (and domain names are case-insensitive), a originating site (and domain names are case-insensitive), a
message identifier MUST NOT be altered in any way during message identifier MUST NOT be altered in any way during
transport, or when copied (as into a References-header), and transport, or when copied (as into a References header), and
thus a simple (case-sensitive) comparison of octets will always thus a simple (case-sensitive) comparison of octets will always
suffice to recognize that same message identifier wherever it suffice to recognize that same message identifier wherever it
subsequently reappears. subsequently reappears.
NOTE: These requirements are to be contrasted with those of the NOTE: These requirements are to be contrasted with those of the
un-normalized msg-ids defined by [RFC 2822], which may perfectly un-normalized msg-ids defined by [RFC 2822], which may perfectly
legitimately become normalized (or vice versa) during transport legitimately become normalized (or vice versa) during transport
or copying in email systems. or copying in email systems.
News Article Architecture and Protocols December 2004 NOTE: Some old software may treat message identifiers that
differ only in case within their <id-right> part as equivalent,
and implementors of agents that generate message identifiers
should be aware of this.
6. It SHOULD reject any article that matches an already received 6. It SHOULD reject any article that matches an already received
cancel message (or an equivalent Supersedes-header) issued by its cancel message (or an equivalent Supersedes header) issued by its
poster or by some other trusted entity. poster or by some other trusted entity.
7. It MAY reject any article without an Approved-header posted to 7. It MAY reject any article without an Approved header posted to
newsgroups known to be moderated (this practice is strongly newsgroups known to be moderated (this practice is strongly
recommended, but the information necessary to do so may not be recommended, but the information necessary to do so may not be
available to all agents). available to all agents).
8. It MAY delete any Xref-header that is present. 8. It MAY delete any Xref header that is present.
News Article Architecture and Protocols February 2005
9. Finally, it passes the articles on to neighbouring relaying and 9. Finally, it passes the articles on to neighbouring relaying and
serving agents. serving agents.
If the article is rejected as being invalid, unwanted or unacceptable If the article is rejected as being invalid, unwanted or unacceptable
due to site policy, the agent that passed the article to the relaying due to site policy, the agent that passed the article to the relaying
agent SHOULD be informed (such as via an NNTP 43x response code) that agent SHOULD be informed (such as via an NNTP 43x response code) that
relaying failed. In order to prevent a large number of error messages relaying failed. In order to prevent a large number of error messages
being sent to one location, relaying agents MUST NOT inform any other being sent to one location, relaying agents MUST NOT inform any other
external entity that an article was not relayed UNLESS that external external entity that an article was not relayed UNLESS that external
entity has explicitly requested that it be informed of such errors. entity has explicitly requested that it be informed of such errors.
Relaying agents MUST NOT alter, delete or rearrange any part of an Relaying agents MUST NOT alter, delete or rearrange any part of an
article expect for headers designated as variant (2.3.2). In article except for headers designated as variant (2.3). In
particular particular
o they MUST NOT create or augment a User-Agent-header in order to o they MUST NOT create or augment a User-Agent header in order to
identify themselves; identify themselves;
o they MUST NOT rewrite the Newsgroups-header in any way, even if o they MUST NOT rewrite the Newsgroups header in any way, even if
some supposedly non-existent newsgroup is included; some supposedly non-existent newsgroup is included;
o they MUST NOT refold any header (i.e. they must pass on the o they MUST NOT refold any header (i.e. they must pass on the
folding as received), even to remove FWS from a Newsgroups- folding as received), even to remove FWS from a Newsgroups
header; header;
o they MUST NOT alter the Date-header or the Injection-Date-header; o they MUST NOT alter the Date header or the Injection-Date header;
o they MUST NOT delete any unrecognized header whose header-name is o they MUST NOT delete any unrecognized header whose header-name is
syntactically correct (whether or not it is registered with IANA syntactically correct (whether or not it is registered with IANA
[RFC 3864]); [RFC 3864]);
o they MUST NOT change the Content-Transfer-Encoding of the body or o they MUST NOT change the Content-Transfer-Encoding of the body or
any body part. any body part.
7.3.1. Path-Header Example 7.3.1. Path-Header Example
Path: foo.isp.example/ Path: foo.isp.example/
foo-server/bar.isp.example?10.123.12.2/old.site.example! foo-server/bar.isp.example?10.123.12.2/old.site.example!
barbaz/baz.isp.example%dialup123.baz.isp.example!not-for-mail barbaz/baz.isp.example%dialup123.baz.isp.example!not-for-mail
NOTE: That article was injected into the news stream by NOTE: That article was injected into the news stream by
baz.isp.example (complaints may be addressed to baz.isp.example (complaints may be addressed to
abuse@baz.isp.example). The injector has taken care to record abuse@baz.isp.example). The injector has taken care to record
that it got it from dialup123.baz.isp.example. "not-for-mail" is that it got it from dialup123.baz.isp.example. "not-for-mail" is
a dummy tail-entry, though sometimes a real userid is put there. a dummy <tail-entry>, though sometimes a real userid is put
there.
News Article Architecture and Protocols December 2004
The article was relayed, perhaps by UUCP, to the machine known, The article was relayed, perhaps by UUCP, to the machine known,
at least to old.site.example, as "barbaz". at least to old.site.example, as "barbaz".
Barbaz relayed it to old.site.example, which does not yet Barbaz relayed it to old.site.example, which does not yet
conform to this standard (hence the '!' path-delimiter). So one conform to this standard (hence the '!' <path-delimiter). So one
cannot be sure that it really came from barbaz. cannot be sure that it really came from barbaz.
Old.site.example relayed it to a site claiming to have the IP Old.site.example relayed it to a site claiming to have the IP
address [10.123.12.2], and claiming (by using the '/' path- address [10.123.12.2], and claiming (by using the '/' <path-
delimiter) to have verified that it came from old.site.example. delimiter>) to have verified that it came from old.site.example.
News Article Architecture and Protocols February 2005
[10.123.12.2] relayed it to "foo-server" which, not being [10.123.12.2] relayed it to "foo-server" which, not being
convinced that it truly came from [10.123.12.2], did a reverse convinced that it truly came from [10.123.12.2], did a reverse
lookup on the actual source and concluded it was known as lookup on the actual source and concluded it was known as
bar.isp.example (that is not to say that [10.123.12.2] was not a bar.isp.example (that is not to say that [10.123.12.2] was not a
correct IP address for bar.isp.example, but simply that that correct IP address for bar.isp.example, but simply that that
connection could not be substantiated by foo-server). Observe connection could not be substantiated by foo-server). Observe
that foo-server has now added two entries to the Path. that foo-server has now added two entries to the Path.
"foo-server" is a locally significant name within the complex "foo-server" is a locally significant name within the complex
site of many machines run by foo.isp.example, so the latter site of many machines run by foo.isp.example, so the latter
should have no problem recognizing foo-server and using a '/' should have no problem recognizing foo-server and using a '/'
path-delimiter. Presumably foo.isp.example then delivered the <path-delimiter>. Presumably foo.isp.example then delivered the
article to its direct clients. article to its direct clients.
It appears that foo.isp.example and old.site.example decided to It appears that foo.isp.example and old.site.example decided to
fold the line, on the grounds that it seemed to be getting a fold the line, on the grounds that it seemed to be getting a
little too long. little too long.
7.4. Duties of a Serving Agent 7.4. Duties of a Serving Agent
A Serving Agent takes an article from a relaying or injecting agent A Serving Agent takes an article from a relaying or injecting agent
and files it in a "news database". It also provides an interface for and files it in a "news database". It also provides an interface for
reading agents to access the news database. This database is normally reading agents to access the news database. This database is normally
indexed by newsgroup with articles in each newsgroup identified by an indexed by newsgroup with articles in each newsgroup identified by an
article-locator (usually in the form of a decimal number - see a- <article-locator> (usually in the form of a decimal number - see F-
6.16). 3.2.10).
A serving agent MUST maintain a list of the newsgroups it stores in A serving agent MUST maintain a list of the newsgroups it stores in
its news database showing the moderation status of each one (see its news database showing the moderation status of each one (see
6.2.1), and SHOULD include in that list all groups likely to be 6.2.1), and SHOULD include in that list all groups likely to be
crossposted to from those groups (e.g. all other groups in the same crossposted to from those groups (e.g. all other groups in the same
hierarchy(ies)). hierarchy(ies)).
NOTE: Since control messages are often of interest, but should NOTE: Since control messages are often of interest, but should
not be displayed as normal articles in regular newsgroups, it is not be displayed as normal articles in regular newsgroups, it is
common for serving agents to make them available in a pseudo- common for serving agents to make them available in a pseudo-
newsgroup named "control" or in a pseudo-newsgroup in a sub- newsgroup named "control" or in a pseudo-newsgroup in a sub-
hierarchy under "control." (e.g. "control.cancel"). hierarchy under "control." (e.g. "control.cancel").
A serving agent MAY decline to accept an article if the Path-content A serving agent MAY decline to accept an article if the Path header
contains some path-identity whose articles the serving agent does not contains some <path-identity> whose articles the serving agent does
want, as a matter of local policy. not want, as a matter of local policy.
News Article Architecture and Protocols December 2004
NOTE: This last facility is sometimes used to detect and decline NOTE: This last facility is sometimes used to detect and decline
control messages (notably cancel messages) which have been control messages (notably cancel messages) which have been
deliberately seeded with a path-identity to be "aliased out" by deliberately seeded with a <path-identity> to be "aliased out"
sites not wishing to act upon them. by sites not wishing to act upon them.
[INN at least does this. It might be argued that it is not necessary to [INN at least does this. It might be argued that it is not necessary to
mention it here.] mention it here.]
A serving agent processes articles as follows: A serving agent processes articles as follows:
News Article Architecture and Protocols February 2005
1. It MUST establish the trusted identity of the source of the 1. It MUST establish the trusted identity of the source of the
article and modify the Path-header as for a relaying agent (7.3). article and modify the Path header as for a relaying agent (7.3).
2. It MUST examine the Injection-Date-header (or, if that is absent, 2. It MUST examine the Injection-Date header (or, if that is absent,
the Date-header) and reject the article as stale (a-5.7) if that the Date header) and reject the article as stale (F-3.1.7) if that
predates the earliest articles of which it normally keeps record, predates the earliest articles of which it normally keeps record,
or if it is more than 24 hours into the future (the margin MAY be or if it is more than 24 hours into the future (the margin MAY be
less than that 24 hours). less than that 24 hours).
3. It MUST reject any article that does not include all the mandatory 3. It MUST reject any article that does not include all the mandatory
headers (section a-5), or which contains any header that does not headers (section F-3.1), or which contains any header that does
have legal contents. not have legal contents.
4. It SHOULD reject any article that has already been sent to it (a 4. It SHOULD reject any article that has already been sent to it (a
database of message identifiers of recent articles is usually kept database of message identifiers of recent articles is usually kept
and matched against). and matched against).
5. It SHOULD reject any article that matches an already received 5. It SHOULD reject any article that matches an already received
cancel message (or an equivalent Supersedes-header) issued by its cancel message (or an equivalent Supersedes header) issued by its
poster or by some other trusted entity. poster or by some other trusted entity.
6. It MUST reject any article without an Approved-header posted to 6. It MUST reject any article without an Approved header posted to
any newsgroup listed as moderated. any newsgroup listed as moderated.
7. It MUST remove any Xref-header (a-6.16) from each article. It 7. It MUST remove any Xref header (F-3.2.10) from each article. It
then MAY (and usually will) generate a fresh Xref-header. then MAY (and usually will) generate a fresh Xref header.
8. Finally, it stores the article in its news database. 8. Finally, it stores the article in its news database.
Serving agents MUST NOT create new newsgroups simply because an Serving agents MUST NOT create new newsgroups simply because an
unrecognized newsgroup-name occurs in a Newsgroups-header (see a- unrecognized <newsgroup-name> occurs in a Newsgroups header (see
7.2.1 for the correct method of newsgroup creation). 6.2.1 for the correct method of newsgroup creation).
Serving agents MUST NOT alter, delete or rearrange any part of an Serving agents MUST NOT alter, delete or rearrange any part of an
article in any other way. The list of particular cases given for article in any other way. The list of particular cases given for
relaying agents (7.3) applies here also. relaying agents (7.3) applies here also.
7.5. Duties of a Posting Agent 7.5. Duties of a Posting Agent
A Posting Agent is used to assist the poster in creating a valid A Posting Agent is used to assist the poster in creating a valid
proto-article and forwarding it to an injecting agent. proto-article and forwarding it to an injecting agent.
Postings agents SHOULD ensure that proto-articles they create are Postings agents SHOULD ensure that proto-articles they create are
valid according to [USEFOR] and other applicable policies. In valid according to [USEFOR] and other applicable policies. In
particular, they MUST NOT create any Injection-Date-, Injection-Info- particular, they MUST NOT create any Injection-Date, Injection-Info
or Complaints-To header.
News Article Architecture and Protocols December 2004
or Complaints-To-header. Contrary to [RFC 2822], which implies that the mailbox(es) in the
From header should be that of the poster(s), a poster who does not,
for whatever reason, wish to use his own mailbox MAY use any mailbox
ending in the top level domain ".invalid" [RFC 2606].
Contrary to [RFC 2822], which states that the mailbox(es) in the From News Article Architecture and Protocols February 2005
header is that of the poster(s), a poster who does not, for whatever
reason, wish to use his own mailbox MAY use any mailbox ending in the
top level domain ".invalid" [RFC 2606].
Posting agents meant for use by ordinary posters SHOULD reject any Posting agents meant for use by ordinary posters SHOULD reject any
attempt to post an article which cancels or Supersedes another attempt to post an article which cancels or Supersedes another
article of which the poster is not the author or sender. article of which the poster is not the author or sender.
7.6. Duties of a Followup Agent 7.6. Duties of a Followup Agent
A Followup Agent is a special case of a posting agent, and as such is A Followup Agent is a special case of a posting agent, and as such is
bound by all the posting agent's requirements. Followup agents MUST bound by all the posting agent's requirements. Followup agents MUST
create valid followups and are subject to special requirements create valid followups and are subject to special requirements
involving certain inheritable (2.3.1) and other headers. Wherever in involving the Newsgroups, Subject, Distribution and References
the following it is stated that, "by default", a header is to be headers. Wherever in the following it is stated that, "by default",
taken from some header in the precursor, it means that its initial a header is to be "inherited" from one of those headers in the
content is to be copied from the content of that precursor header. precursor, it means that its initial content is to be copied from the
However, posters MAY then override that default before posting if content of that precursor header. However, posters MAY then override
they so wish. that default before posting if they so wish.
NOTE: The Keywords header is not inheritable, though some older
newsreaders treated it as such.
NOTE: There is no provision in this standard for a followup to NOTE: There is no provision in this standard for a followup to
have more than one precursor (though it might be permitted in have more than one precursor (though it might be permitted in
some future extension). some future extension).
1. The Newsgroups-header (a-5.5) SHOULD by default be taken from the 1. The Newsgroups header (F-3.1.5) SHOULD by default be inherited
precursor's Followup-To-header if present, and otherwise from the from the precursor's Followup-To header if present, and otherwise
precursor's Newsgroups-header. However, if the content of that from the precursor's Newsgroups header. However, if the content of
Followup-To-header consists of "poster" (and the user does not that Followup-To header consists of "poster" (and the user does
override it), then the followup MUST NOT be posted but, rather, is not override it), then the followup MUST NOT be posted but,
to be emailed to the precursor's poster. rather, is to be emailed to the precursor's poster.
2. The Subject-header SHOULD by default be taken from that of the 2. The Subject header SHOULD by default be inherited from that of the
precursor. The case sensitive string "Re: " MAY be prepended to precursor. The case sensitive string "Re: " MAY be prepended to
its Subject-Content unless it already begins with that string. its Subject-Content unless it already begins with that string.
3. The Distribution-header (a-6.6) SHOULD by default be taken from 3. The Distribution header (F-3.2.6) SHOULD by default be inherited
the precursor's Distribution-header, if any. from the precursor's Distribution header, if any.
4. If the precursor did not have a References-header (a-6.10), the 4. If the precursor did not have a References header (F-3.2.1), the
followup's References-content MUST be taken from the Message-ID- content of the followup's References header MUST be inherited from
content of the precursor. A followup to an article which already that of the Message-ID header of the precursor. A followup to an
had a References-header MUST have a References-header comprising article which already had a References header MUST have a
the precursor's References-content (subject to trimming as References header comprising the precursor's References header
described below) followed by CFWS and the Message-ID-content of (subject to trimming as described below) followed by CFWS and the
the precursor. Message-ID header content of the precursor.
Followup agents MAY trim References-headers which have grown to If the resulting References header is excessively long, it MAY be
excessive length, but the first and last message identifiers from trimmed, but the first and the last two message identifiers MUST
the precursor MUST NOT be removed. NOT be removed.
News Article Architecture and Protocols December 2004 5. If the precursor contains a Mail-Copies-To header (a-6.8), the
actions to be taken, in accordance with the content of the header,
(and subject to manual override by the poster) are as follows:
5. If the precursor contains a Mail-Copies-To-header (a-6.8), the News Article Architecture and Protocols February 2005
actions to be taken, in accordance with the Mail-Copies-To-
content, (and subject to manual override by the poster) are as
follows:
"nobody" (or when the header is absent) "nobody" (or when the header is absent)
The followup agent SHOULD NOT email a copy of a posted The followup agent SHOULD NOT email a copy of a posted
followup to the poster of the precursor. followup to the poster of the precursor.
"poster" "poster"
The followup agent SHOULD (if it has the necessary The followup agent SHOULD (if it has the necessary
capability) email a copy of a posted followup, which MUST capability) email a copy of a posted followup, which MUST
then be sent to the address(es) in the Reply-To-header, and then be sent to the address(es) in the Reply-To header, and
in the absence of that to the address(es) in the From- in the absence of that to the address(es) in the From
header. header.
a copy-addr a <copy-addr>
The followup agent SHOULD likewise email a copy of a posted The followup agent SHOULD likewise email a copy of a posted
followup, which SHOULD then be sent to the copy-addr. followup, which SHOULD then be sent to the <copy-addr>.
[There are still unresolved issues concerning the Mail-Copies-To header,
hence the continuing reference to [ARTICLE].]
When emailing a copy, the followup agent SHOULD also include a When emailing a copy, the followup agent SHOULD also include a
"Posted-And-Mailed: yes" header (a-6.9). "Posted-And-Mailed: yes" header (a-6.9).
[There are still unresolved issues concerning the Posted-And-Mailed
header, hence the continuing reference to [ARTICLE].]
Followup agents SHOULD NOT attempt to send email to any address Followup agents SHOULD NOT attempt to send email to any address
ending in ".invalid". ending in ".invalid".
7.7. Duties of a Reading Agent 7.7. Duties of a Reading Agent
A reading agent downloads articles from a serving agent, as directed A reading agent downloads articles from a serving agent, as directed
by the reader, and displays them (or processes them in some other by the reader, and displays them to the reader (or processes them in
manner), subject to any limitations of the reading agent, such as some other manner). It SHOULD also have the capability to show the
availability of charsets, and having first decoded any Content- raw article exactly as received.
Transfer-Encodings, encoded-words, etc. It SHOULD also have the
capability to show the raw article exactly as received.
It MAY present lists of articles available for display, and MAY It MAY present lists of articles available for display, and MAY
structure those lists so as to show the relationships between the structure those lists so as to show the relationships between the
articles, as determined by the References-, Subject-, Date- and articles, as determined by the References, Subject, Date and other
other-headers (see [USEAGE] for some usual methods of doing this). headers (see [USEAGE] for some usual methods of doing this).
[This whole section may yet get omitted] [This whole section may yet get omitted]
7.8. Duties of a Moderator 7.8. Duties of a Moderator
A Moderator receives news articles by email, decides whether to A Moderator receives news articles, customarily by email, decides
accept them and, if so, either injects them into the news stream or whether to approve them and, if so, either injects them into the news
forwards them to further moderators. stream or forwards them to further moderators.
Articles will be received by the moderator either encapsulated as an Articles will be received by the moderator either encapsulated as an
object of Content-Type application/news-transmission (or possibly object of Content-Type application/news-transmission (or possibly
encapsulated but without an explicit Content-Type-header), or else encapsulated but without an explicit Content-Type header), or else
directly as an email already containing all the headers appropriate directly as an email already containing all the headers appropriate
for a Netnews article (see 7.2.2). Moderators SHOULD be prepared to for a Netnews article (see 7.2.2). Moderators SHOULD be prepared to
accept articles in either format. accept articles in either format.
News Article Architecture and Protocols December 2004
A moderator processes an article, as submitted to any newsgroup that A moderator processes an article, as submitted to any newsgroup that
he moderates, as follows: he moderates, as follows:
News Article Architecture and Protocols February 2005
1. He decides, on the basis of whatever moderation policy applies to 1. He decides, on the basis of whatever moderation policy applies to
his group, whether to accept or reject the article. He MAY do this his group, whether to approve or reject the article. He MAY do
manually, or else partially or wholly with the aid of appropriate this manually, or else partially or wholly with the aid of
software for whose operation he is then responsible. If the appropriate software for whose operation he is then responsible.
article is a cancel nessage (6.3) issued by the poster of an If the article is a cancel nessage (6.3) issued by the poster of
earlier article, then he is expected to cancel that earlier an earlier article, then he is expected to cancel that earlier
article (in which case there is no more to be done). He MAY article (in which case there is no more to be done). He MAY
modify the article if that is in accordance with the applicable modify the article if that is in accordance with the applicable
moderation policy (and in particular he MAY remove redundant moderation policy (and in particular he MAY remove redundant
headers and add Comments and other informational headers). He headers and add Comments and other informational headers). He
also needs to be aware if any change he makes to the article will also needs to be aware if any change he makes to the article will
invalidate some authentication check provided by the poster or by invalidate some authentication check provided by the poster or by
an earlier moderator. an earlier moderator.
If the article is rejected, then it normally fails for all the If the article is rejected, then it normally fails for all the
newsgroups for which it was intended. If it is accepted, the newsgroups for which it was intended. If it is approved, the
moderator proceeds with the following steps. moderator proceeds with the following steps.
2. If the Newsgroups-header contains further moderated newsgroups for 2. If the Newsgroups header contains further moderated newsgroups for
which approval has not already been given, he adds an indication which approval has not already been given, he adds an indication
(identifying both himself and the name of the group) that he (identifying both himself and the name of the group) that he
approves the article, and then forwards it to the moderator of the approves the article, and then forwards it to the moderator of the
leftmost unapproved group (which, if this standard has been leftmost unapproved group (which, if this standard has been
followed correctly, will generally be the next moderated group to followed correctly, will generally be the next moderated group to
the right of his own). There are two ways to do this: the right of his own). There are two ways to do this:
(a) He emails it to the submission address of the next moderator (a) He emails it to the submission address of the next moderator
(see section 7.2.2 for the proper method of doing this), or (see section 7.2.2 for the proper method of doing this), or
(b) he rotates the newsgroup-names in the Newsgroups-header to (b) he rotates the <newsgroup-name>s in the Newsgroups header to
the left so that the targeted group is the leftmost moderated the left so that the targeted group is the leftmost moderated
group in that header, and injects it as below (thus causing group in that header, and injects it again (thus causing the
the injecting agent to email it to the correct moderator). injecting agent to forward it to the correct moderator).
However, he MUST first ensure that the article contains no However, he MUST first ensure that the article contains no
Approved-header. Approved header.
NOTE: This standard does not prescribe how a moderator's NOTE: This standard does not prescribe how a moderator's
approval is to be indicated (though a future standard may do approval is to be indicated (though a future standard may do
so). Possible methods include adding an Approved header (or a so). Possible methods include adding an Approved header (or a
similar but differently named header if method (b) is being similar but differently named header if method (b) is being
used) listing all the approvals made so far, or adding a used) listing all the approvals made so far, or adding a
separate header for each individual approval (the header X-Auth separate header for each individual approval (the header X-Auth
is sometimes used for this purpose). The approval may also be is sometimes used for this purpose). The approval may also be
confirmed with some form of digital signature (a-7.1). confirmed with some form of digital signature (6.1).
3. If the Newsgroups-header contains no further unapproved moderated 3. If the Newsgroups header contains no further unapproved moderated
groups, he adds an Approved-header (a-6.14) identifying himself groups, he adds an Approved header (F-3.2.8) identifying himself
and, insofar as is possible, all the other moderators who have and, insofar as is possible, all the other moderators who have
approved the article. He thus assumes responsibility for having approved the article. He thus assumes responsibility for having
ensured that the article was acceptable to the moderators of all ensured that the article was approved by the moderators of all the
the moderated groups involved. moderated groups involved.
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
4. The Date-header SHOULD be retained. Any Injection-Date-header 4. The Date header SHOULD be retained. Any Injection-Date header
already present (though there should be none) MUST be removed. already present (though there should be none) MUST be removed.
Exceptionally, if it is known that the injecting agent does not Exceptionally, if it is known that the injecting agent does not
yet support the Injection-Date-header and the Date-header appears yet support the Injection-Date header and the Date header appears
to be stale (a-5.7) for reasons understood by the moderator (e.g. to be stale (F-3.1.7) for reasons understood by the moderator
delays in the moderation process) he MAY substitute the current (e.g. delays in the moderation process) he MAY substitute the
date. The Message-ID-header SHOULD also be retained unless it is current date. The Message-ID header SHOULD also be retained unless
obviously non-compliant with this standard. it is obviously non-compliant with this standard.
NOTE: A message identifier created by a conforming posting or NOTE: A message identifier created by a conforming posting or
injecting agent, or even by a mail user agent conforming to [RFC injecting agent, or even by a mail user agent conforming to [RFC
2822], may reasonably be supposed to be conformant (and will, in 2822], may reasonably be supposed to be conformant (and will, in
any case, be caught by the injecting agent if it is not). any case, be caught by the injecting agent if it is not).
5. Any variant headers (2.3.2) MUST be removed, except that a Path- 5. Any variant headers (2.3) MUST be removed, except that a Path
header MAY be truncated to only its pre-injection region (a- header MAY be truncated to only its pre-injection region (a-
5.6.3). Any Injection-Info-header (a-6.19) or Complaints-To- 5.6.3). Any Injection-Info header (F-3.2.13) or Complaints-To
header (a-6.20) SHOULD be removed (and if they are not, the header (a-6.20) SHOULD be removed (and if they are not, the
injecting agent will do so, as required in 7.2.2). injecting agent will do so, as required in 7.2.2).
6. He then causes the article to be injected, having first observed 6. He then causes the article to be injected, having first observed
all the duties of a posting agent. all the duties of a posting agent.
NOTE: This standard does not prescribe how the moderator or NOTE: This standard does not prescribe how the moderator or
moderation policy for each newsgroup is established; rather it moderation policy for each newsgroup is established; rather it
assumes that whatever agencies are responsible for the relevant assumes that whatever agencies are responsible for the relevant
network or hierarchy (1.1) will have made appropriate network or hierarchy (1.1) will have made appropriate
skipping to change at page 39, line 58 skipping to change at page 39, line 58
news article and injects it into a news system. These are handled news article and injects it into a news system. These are handled
separately below. separately below.
The primary dictat for a gateway is: The primary dictat for a gateway is:
Above all, prevent loops. Above all, prevent loops.
Transformation of an article into another medium stands a very high Transformation of an article into another medium stands a very high
chance of discarding or interfering with the protection inherent in chance of discarding or interfering with the protection inherent in
the news system against duplicate articles. The most common problem the news system against duplicate articles. The most common problem
caused by gateways is "spews," gateway loops that cause previously caused by gateways is "spews", gateway loops that cause previously
posted articles to be reinjected repeatedly into Usenet. To prevent posted articles to be reinjected repeatedly into Usenet. To prevent
this, a gateway MUST take precautions against loops, as detailed this, a gateway MUST take precautions against loops, as detailed
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
below. below.
If bidirectional gatewaying (both an incoming and an outgoing If bidirectional gatewaying (both an incoming and an outgoing
gateway) is being set up between Netnews and some other medium, the gateway) is being set up between Netnews and some other medium, the
incoming and outgoing gateways SHOULD be coordinated to avoid incoming and outgoing gateways SHOULD be coordinated to avoid
unintended reinjection of gated articles. Circular gatewaying unintended reinjection of gated articles. Circular gatewaying
(gatewaying a message into another medium and then back into Netnews) (gatewaying a message into another medium and then back into Netnews)
SHOULD NOT be done; encapsulation of the article SHOULD be used SHOULD NOT be done; encapsulation of the article SHOULD be used
instead where this is necessary. instead where this is necessary.
skipping to change at page 40, line 46 skipping to change at page 40, line 46
is a simple gateway and injecting agent that correctly handles is a simple gateway and injecting agent that correctly handles
crossposting to other moderated groups and otherwise passes all crossposting to other moderated groups and otherwise passes all
traffic. traffic.
7.9.1. Duties of an Outgoing Gateway 7.9.1. Duties of an Outgoing Gateway
From the perspective of Netnews, an outgoing gateway is just a From the perspective of Netnews, an outgoing gateway is just a
special type of reading agent. The exact nature of what the outgoing special type of reading agent. The exact nature of what the outgoing
gateway will need to do to articles depends on the medium to which gateway will need to do to articles depends on the medium to which
the articles are being gated. The operation of the outgoing gateway the articles are being gated. The operation of the outgoing gateway
is only subject to additional constraints in the presence of one or is subject to additional constraints due to the possibility of one or
more corresponding incoming gateways back from that medium to more corresponding incoming gateways back from that medium to
Netnews, since this opens the possibility of loops. Netnews, since this opens the possibility of loops.
In general, the following practices are recommended for all outgoing In general, the following practices are recommended for all outgoing
gateways, regardless of whether there is known to be a related gateways, regardless of whether there is known to be a related
incoming gateway, both as a precautionary measure and as a guideline incoming gateway, both as a precautionary measure and as a guideline
to quality of implementation. to quality of implementation.
1. The message identifier of the news article should be preserved if 1. The message identifier of the news article should be preserved if
at all possible, preferably as or within the corresponding unique at all possible, preferably as or within the corresponding unique
identifier of the other medium, but if not at least as a comment identifier of the other medium, but if not at least as a comment
in the message. This helps greatly with preventing loops. in the message. This helps greatly with preventing loops.
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
2. The Date and Injection-Date of the news article should also be 2. The Date and Injection-Date of the news article should also be
preserved if possible, for similar reasons. preserved if possible, for similar reasons.
3. The message should be tagged in some way so as to prevent its 3. The message should be tagged in some way so as to prevent its
reinjection into Netnews. This may be impossible to do without reinjection into Netnews. This may be impossible to do without
knowledge of potential incoming gateways, but it is better to try knowledge of potential incoming gateways, but it is better to try
to provide some indication even if not successful; at the least, a to provide some indication even if not successful; at the least, a
human-readable indication that the article should not be gated human-readable indication that the article should not be gated
back to Netnews can help locate a human problem. back to Netnews can help locate a human problem.
4. Netnews control messages should not be gated to another medium 4. Netnews control messages should not be gated to another medium
unless they would somehow be meaningful in that medium. unless they would somehow be meaningful in that medium.
5. Changes MAY be made to the Content-Transfer-Encoding of some or 5. Changes MAY be made to the Content-Transfer-Encoding of some or
all parts of the body, and even to the charsets specified in all parts of the body, and even to the charsets specified in
encoded-words or in Content-Type-headers, but such changes SHOULD <encoded-word>s or in Content-Type headers, but such changes
NOT be made unless absolutely necessary. SHOULD NOT be made unless absolutely necessary.
7.9.2. Duties of an Incoming Gateway 7.9.2. Duties of an Incoming Gateway
The incoming gateway has the serious responsibility of ensuring that The incoming gateway has the serious responsibility of ensuring that
all of the requirements of this standard are met by the articles that all of the requirements of this standard are met by the articles that
it forms. In addition to its special duties as a gateway, it bears it forms. In addition to its special duties as a gateway, it bears
all of the duties and responsibilities of an injecting agent as well, all of the duties and responsibilities of an injecting agent as well,
and additionally has the same responsibility of a relaying agent to and additionally has the same responsibility of a relaying agent to
reject articles that it has already gatewayed. reject articles that it has already gatewayed.
skipping to change at page 41, line 46 skipping to change at page 41, line 46
the message, but at the very least a gateway, when given a copy of a the message, but at the very least a gateway, when given a copy of a
message it has already gated identical except for trace headers (like message it has already gated identical except for trace headers (like
Received in Email or Path in Netnews) MUST NOT gate the message Received in Email or Path in Netnews) MUST NOT gate the message
again. An incoming gateway SHOULD take precautions against having again. An incoming gateway SHOULD take precautions against having
this rule bypassed by modifications of the message that can be this rule bypassed by modifications of the message that can be
anticipated. anticipated.
News articles prepared by gateways MUST be legal news articles. In News articles prepared by gateways MUST be legal news articles. In
particular, they MUST include all of the mandatory headers, MUST particular, they MUST include all of the mandatory headers, MUST
fully conform to the restrictions on said headers, and SHOULD exclude fully conform to the restrictions on said headers, and SHOULD exclude
any deprecated headers (a-4.2.1). This often requires that a gateway any deprecated headers (F-3). This often requires that a gateway
function not only as a relaying agent, but also partly as a posting function not only as a relaying agent, but also partly as a posting
agent, aiding in the synthesis of a conforming article from non- agent, aiding in the synthesis of a conforming article from non-
conforming input. conforming input.
[Presupposes suitable mention of deprecated headers in USEFOR.]
Incoming gateways MUST NOT pass control messages (articles containing Incoming gateways MUST NOT pass control messages (articles containing
a Control- or Supersedes-header) without removing or renaming that a Control or Supersedes header) without removing or renaming that
header. Gateways MAY, however, generate their own cancel messages, header. Gateways MAY, however, generate their own cancel messages,
under the general allowance for injecting agents to cancel their own under the general allowance for injecting agents to cancel their own
messages ([USEAGE]). If a gateway receives a message that it can messages ([USEAGE]). If a gateway receives a message that it can
determine is a valid equivalent of a cancel message in the medium it determine is a valid equivalent of a cancel message in the medium it
is gatewaying, it SHOULD discard that message without gatewaying it, is gatewaying, it SHOULD discard that message without gatewaying it,
generate a corresponding cancel message of its own, and inject that generate a corresponding cancel message of its own, and inject that
cancel message. cancel message.
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
Incoming gateways MUST NOT inject control messages other than Incoming gateways MUST NOT inject control messages other than
cancels. Encapsulation SHOULD be used instead of gatewaying, when cancels. Encapsulation SHOULD be used instead of gatewaying, when
direct posting is not possible or desirable. direct posting is not possible or desirable.
NOTE: It is not unheard of for mail-to-news gateways to be used NOTE: It is not unheard of for mail-to-news gateways to be used
to post control messages, but encapsulation should be used for to post control messages, but encapsulation should be used for
these cases instead. Gateways by their very nature are these cases instead. Gateways by their very nature are
particularly prone to loops. Spews of normal articles are bad particularly prone to loops. Spews of normal articles are bad
enough; spews of control messages with special significance to enough; spews of control messages with special significance to
the news system, possibly resulting in high processing load or the news system, possibly resulting in high processing load or
even email sent for every message received, are catastrophic. It even email sent for every message received, are catastrophic. It
is far preferable to construct a system specifically for posting is far preferable to construct a system specifically for posting
control messages that can do appropriate consistency checks and control messages that can do appropriate consistency checks and
authentication of the originator of the message. authentication of the originator of the message.
If there is a message identifier that fills a role similar to that of If there is a message identifier that fills a role similar to that of
the Message-ID-header in news, it SHOULD be used in the formation of the Message-ID header in news, it SHOULD be used in the formation of
the message identifier of the news article, perhaps with the message identifier of the news article, perhaps with
transformations required to meet the uniqueness requirement of transformations required to meet the uniqueness requirement of
Netnews and with the removal of any comments so as to comply with the Netnews and with the removal of any comments so as to comply with the
syntax in section a-5.3. Such transformations SHOULD be designed so syntax in section F-3.1.3. Such transformations SHOULD be designed so
that two messages with the same identifier generate the same that two messages with the same identifier generate the same
Message-ID-header. Message-ID header.
NOTE: Message identifiers play a central role in the prevention NOTE: Message identifiers play a central role in the prevention
of duplicates, and their correct use by gateways will do much to of duplicates, and their correct use by gateways will do much to
prevent loops. Netnews does, however, require that message prevent loops. Netnews does, however, require that message
identifiers be unique, and therefore message identifiers from identifiers be unique, and therefore message identifiers from
other media may not be suitable for use without modification. A other media may not be suitable for use without modification. A
balance must be struck by the gateway between preserving balance must be struck by the gateway between preserving
information used to prevent loops and generating unique message information used to prevent loops and generating unique message
identifiers. identifiers.
skipping to change at page 42, line 56 skipping to change at page 42, line 56
NOTE: Consider the example of two gateways of a given mailing NOTE: Consider the example of two gateways of a given mailing
list into the world-wide Usenet newsgroups, both of which list into the world-wide Usenet newsgroups, both of which
preserve the email message identifier. Each newsgroup may then preserve the email message identifier. Each newsgroup may then
receive a portion of the messages (different sites seeing receive a portion of the messages (different sites seeing
different portions). In these cases, where there is no one different portions). In these cases, where there is no one
"official" gateway, some other method of generating message "official" gateway, some other method of generating message
identifiers has to be used to avoid collisions. It would identifiers has to be used to avoid collisions. It would
obviously be preferable for there to be only one gateway which obviously be preferable for there to be only one gateway which
crossposts, but this may not be possible to coordinate. crossposts, but this may not be possible to coordinate.
If no date information is available, the gateway MAY supply a Date- If no date information is available, the gateway MAY supply a Date
header with the gateway's current date. If no injection-date header with the gateway's current date. If no injection-date
information is available, the gateway MUST supply an Injection-Date- information is available, the gateway MUST supply an Injection-Date
header with whatever date information is available, and otherwise header with whatever date information is available, and otherwise
with the gateway's current date. If only partial information is with the gateway's current date. If only partial information is
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
available (e.g. date but not time), this SHOULD be fleshed out to a available (e.g. date but not time), this SHOULD be fleshed out to a
full Date- and/or Injection-Date-header by adding default values full Date and/or Injection-Date header by adding default values
rather than discarding this information. Only in very exceptional rather than discarding this information. Only in very exceptional
circumstances should Date information be discarded, as it plays an circumstances should Date information be discarded, as it plays an
important role in preventing reinjection of old messages. important role in preventing reinjection of old messages.
An incoming gateway MUST add a Sender-header to the news article it An incoming gateway MUST add a Sender header to the news article it
forms containing the mailbox of the administrator of the gateway. forms containing the <mailbox> of the administrator of the gateway.
Problems with the gateway may be reported to this mailbox. The Problems with the gateway may be reported to this <mailbox>. The
display-name portion of this mailbox SHOULD indicate that the entity <display-name> portion of this <mailbox> SHOULD indicate that the
responsible for injection of the message is a gateway. If the entity responsible for injection of the message is a gateway. If the
original message already had a Sender-header, it SHOULD be renamed so original message already had a Sender header, it SHOULD be renamed so
that its contents can be preserved. that its contents can be preserved.
7.9.3. Example 7.9.3. Example
To illustrate the type of precautions that should be taken against To illustrate the type of precautions that should be taken against
loops, here is an example of the measures taken by one particular loops, here is an example of the measures taken by one particular
combination of mail-to-news and news-to-mail gateways at Stanford combination of mail-to-news and news-to-mail gateways at Stanford
University designed to handle bidirectional gatewaying between University designed to handle bidirectional gatewaying between
mailing lists and unmoderated groups. mailing lists and unmoderated groups.
1. The news-to-mail gateway preserves the message identifier of the 1. The news-to-mail gateway preserves the message identifier of the
news article in the generated email message. The mail-to-news news article in the generated email message. The mail-to-news
gateway likewise preserves the email message identifier provided gateway likewise preserves the email message identifier provided
that it is syntactically valid for Netnews. This allows the news that it is syntactically valid for Netnews. This allows the news
system's built-in suppression of duplicates to serve as the first system's built-in suppression of duplicates to serve as the first
line of defense against loops. line of defense against loops.
2. The news-to-mail gateway adds an X-Gateway-header to all messages 2. The news-to-mail gateway adds an X-Gateway header to all messages
it generates. The mail-to-news gateway discards any incoming it generates. The mail-to-news gateway discards any incoming
messages containing this header. This is robust against mailing messages containing this header. This is robust against mailing
list managers that replace the message identifier, and against any list managers that replace the message identifier, and against any
number of email hops, provided that the other message headers are number of email hops, provided that the other message headers are
preserved. preserved.
3. The mail-to-news gateway inserts the host name from which it 3. The mail-to-news gateway inserts the host name from which it
received the email message in the pre-injection region of the Path received the email message in the pre-injection region of the Path
(a-5.6.3). The news-to-mail gateway refuses to gateway any (a-5.6.3). The news-to-mail gateway refuses to gateway any
message that contains the list server name in the pre-injection message that contains the list server name in the pre-injection
region of its Path-header. This is robust against any amount of region of its Path header. This is robust against any amount of
munging of the message headers by the mailing list, provided that munging of the message headers by the mailing list, provided that
the email only goes through one hop. the email only goes through one hop.
4. The mail-to-news gateway is designed never to generate bounces to 4. The mail-to-news gateway is designed never to generate bounces to
the envelope sender. Instead, articles that are rejected by the the envelope sender. Instead, articles that are rejected by the
news server (for reasons not warranting silent discarding of the news server (for reasons not warranting silent discarding of the
message) result in a bounce message sent to an errors address message) result in a bounce message sent to an errors address
known not to forward to any mailing lists, so that they can be known not to forward to any mailing lists, so that they can be
handled by the news administrators. handled by the news administrators.
These precautions have proven effective in practice at preventing These precautions have proven effective in practice at preventing
loops for this particular application (bidirectional gatewaying loops for this particular application (bidirectional gatewaying
between mailing lists and locally distributed newsgroups where both between mailing lists and locally distributed newsgroups where both
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
gateways can be designed together). General gatewaying to world-wide gateways can be designed together). General gatewaying to world-wide
newsgroups poses additional difficulties; one must be very wary of newsgroups poses additional difficulties; one must be very wary of
strange configurations, such as a newsgroup gated to a mailing list strange configurations, such as a newsgroup gated to a mailing list
which is in turn gated to a different newsgroup. which is in turn gated to a different newsgroup.
8. Security and Related Considerations 8. Security and Related Considerations
There is no security. Don't fool yourself. Usenet is a prime example There is no security. Don't fool yourself. Usenet is a prime example
of an Internet Adhocratic-Anarchy; that is, an environment in which of an Internet Adhocratic-Anarchy; that is, an environment in which
trust forms the basis of all agreements. It works. trust forms the basis of all agreements. It works.
8.1. Leakage 8.1. Leakage
Articles which are intended to have restricted distribution are Articles which are intended to have restricted distribution are
dependent on the goodwill of every site receiving them. The dependent on the goodwill of every site receiving them. The
"Archive: no" header (a-6.12) is available as a signal to automated "Archive: no" header (F-3.2.11) is available as a signal to automated
archivers not to file an article, but that cannot be guaranteed. archivers not to file an article, but that cannot be guaranteed.
The Distribution-header makes provision for articles which should not The Distribution header makes provision for articles which should not
be propagated beyond a cooperating subnet. The key security word here be propagated beyond a cooperating subnet. The key security word here
is "cooperating". When a machine is not configured properly, it may is "cooperating". When a machine is not configured properly, it may
become uncooperative and tend to distribute all articles. become uncooperative and tend to distribute all articles.
The flooding algorithm is extremely good at finding any path by which The flooding algorithm is extremely good at finding any path by which
articles can leave a subnet with supposedly restrictive boundaries, articles can leave a subnet with supposedly restrictive boundaries,
and substantial administrative effort is required to avoid this. and substantial administrative effort is required to avoid this.
Organizations wishing to control such leakage are strongly advised to Organizations wishing to control such leakage are strongly advised to
designate a small number of official gateways to handle all news designate a small number of official gateways to handle all news
exchange with the outside world (however, making such gateways too exchange with the outside world (however, making such gateways too
skipping to change at page 45, line 5 skipping to change at page 45, line 5
to their precursors, or which quote their precursors in full with the to their precursors, or which quote their precursors in full with the
addition of minimal extra material (especially if this process is addition of minimal extra material (especially if this process is
iterated), and by crossposting to, or setting followups to, totally iterated), and by crossposting to, or setting followups to, totally
unrelated newsgroups. unrelated newsgroups.
Many have argued that "spam", massively multiposted (and to a lesser Many have argued that "spam", massively multiposted (and to a lesser
extent massively crossposted) articles, usually for advertising extent massively crossposted) articles, usually for advertising
purposes, also constitutes a DoS attack in its own regard. This may purposes, also constitutes a DoS attack in its own regard. This may
be so. be so.
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
Such articles intended to deny service, or other articles of an Such articles intended to deny service, or other articles of an
inflammatory nature, may also have their From or Reply-To addresses inflammatory nature, may also have their From or Reply-To addresses
set to valid but incorrect email addresses, thus causing large set to valid but incorrect email addresses, thus causing large
volumes of email to descend on the true owners of those addresses. volumes of email to descend on the true owners of those addresses.
Similar effects could be caused by any email header which could cause Similar effects could be caused by any email header which could cause
every reading agent receiving it to take some externally visible every reading agent receiving it to take some externally visible
action. For example, the Disposition-Notification-To-header defined action. For example, the Disposition-Notification-To header defined
in [RFC 2298] could cause huge numbers of acknowledgements to be in [RFC 2298] could cause huge numbers of acknowledgements to be
emailed to an unsuspecting third party (for which reason [RFC 2298] emailed to an unsuspecting third party (for which reason [RFC 2298]
declares that that header SHOULD NOT be used in Netnews). declares that that header SHOULD NOT be used in Netnews).
It is a violation of this standard for a poster to use as his address It is a violation of this standard for a poster to use as his address
a mailbox which he is not entitled to use. Even addresses with an a <mailbox> which he is not entitled to use. Even addresses with an
invalid local-part but a valid domain can cause disruption to the invalid <local-part> but a valid <domain> can cause disruption to the
administrators of such domains. Posters who wish to remain anonymous administrators of such domains. Posters who wish to remain anonymous
or to prevent automated harvesting of their addresses, but who do not or to prevent automated harvesting of their addresses, but who do not
care to take the additional precautions of using more sophisticated care to take the additional precautions of using more sophisticated
anonymity measures, should avoid that violation by the use of anonymity measures, should avoid that violation by the use of
addresses ending in the ".invalid" top-level-domain (see 7.5). addresses ending in the ".invalid" top-level-domain (see 7.5).
A malicious poster may also prevent his article being seen at a A malicious poster may also prevent his article being seen at a
particular site by preloading that site into the Path-header (a- particular site by preloading that site into the Path header (F-
5.6.1) and may thus prevent the true owner of a forged From or 3.1.6) and may thus prevent the true owner of a forged From or
Reply-To address from ever seeing it. Reply-To address from ever seeing it.
A malicious complainer may submit a modified copy of an article (e.g. A malicious complainer may submit a modified copy of an article (e.g.
with an altered Injection-Info-header) to the administrator of an with an altered Injection-Info header) to the administrator of an
injecting agent in an attempt to discredit the author of that article injecting agent in an attempt to discredit the author of that article
and even to have his posting privileges removed. Administrators and even to have his posting privileges removed. Administrators
should therefore obtain a genuine copy of the article from their own should therefore obtain a genuine copy of the article from their own
serving agent before taking such precipitate action. serving agent before taking such precipitate action.
Administrative agencies with responsibility for establishing policies Administrative agencies with responsibility for establishing policies
in particular hierarchies can and should set bounds upon the in particular hierarchies can and should set bounds upon the
behaviour that is considered acceptable within those hierarchies (for behaviour that is considered acceptable within those hierarchies (for
example by promulgating charters for individual newsgroups, and other example by promulgating charters for individual newsgroups, and other
codes of conduct). codes of conduct).
Whilst this standard places an onus upon injecting agents to bear Whilst this standard places an onus upon injecting agents to bear
responsibility for the misdemeanours of their posters (which includes responsibility for the misdemeanours of their posters (which includes
non-adherence to established policies of the relevant hierarchies as non-adherence to established policies of the relevant hierarchies as
provided in section 7.2), and to provide assistance to the rest of provided in section 7.2), and to provide assistance to the rest of
the network by making proper use of the Injection-Info- (a-6.19) and the network by making proper use of the Injection-Info (F-3.2.13) and
Complaints-To- (a-6.20) headers, it makes no provision for Complaints-To (a-6.20) headers, it makes no provision for
enforcement, which may in consequence be patchy. Nevertheless, enforcement, which may in consequence be patchy. Nevertheless,
injecting sites which persistently fail to honour their injecting sites which persistently fail to honour their
responsibilities or to comply with generally accepted standards of responsibilities or to comply with generally accepted standards of
behaviour are likely to find themselves blacklisted, with their behaviour are likely to find themselves blacklisted, with their
articles refused propagation and even subject to cancellation, and articles refused propagation and even subject to cancellation, and
other relaying sites would be well advised to withdraw peering other relaying sites would be well advised to withdraw peering
arrangements from them. arrangements from them.
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
8.2.2. Compromise of System Integrity 8.2.2. Compromise of System Integrity
The posting of unauthorized (as determined by the policies of the The posting of unauthorized (as determined by the policies of the
relevant hierarchy) control messages can cause unwanted newsgroups to relevant hierarchy) control messages can cause unwanted newsgroups to
be created, or wanted ones removed, from serving agents. be created, or wanted ones removed, from serving agents.
Administrators of such agents SHOULD therefore take steps to verify Administrators of such agents SHOULD therefore take steps to verify
the authenticity of such control messages, either by manual the authenticity of such control messages, either by manual
inspection (particularly of the Approved-header) or by checking any inspection (particularly of the Approved header) or by checking any
digital signatures that may be provided (see a-7.1). In addition, digital signatures that may be provided (see 6.1). In addition, they
they SHOULD periodically compare the newsgroups carried against any SHOULD periodically compare the newsgroups carried against any
regularly issued checkgroups messages, or against lists maintained by regularly issued checkgroups messages, or against lists maintained by
trusted servers and accessed by out-of-band protocols such as FTP or trusted servers and accessed by out-of-band protocols such as FTP or
HTTP. HTTP.
Malicious cancel messages (6.3) can cause valid articles to be Malicious cancel messages (6.3) can cause valid articles to be
removed from serving agents. Administrators of such agents SHOULD removed from serving agents. Administrators of such agents SHOULD
therefore take steps to verify that they originated from the therefore take steps to verify that they originated from the
(apparent) poster, the injector or the moderator of the article, or (apparent) poster, the injector or the moderator of the article, or
that in other cases they came from a place that is trusted to work that in other cases they came from a place that is trusted to work
within established policies and customs. Such steps SHOULD include within established policies and customs. Such steps SHOULD include
the checking of any digital signatures, or other security devices, the checking of any digital signatures, or other security devices,
that may be provided (see a-7.1). Articles containing Supersedes- that may be provided (see 6.1). Articles containing Supersedes
headers (a-6.15) are effectively cancel messages, and SHOULD be headers (F-3.2.5) are effectively cancel messages, and SHOULD be
subject to the same checks. Currently, many sites choose to ignore subject to the same checks. Currently, many sites choose to ignore
all cancel messages on account of the difficulty of conducting such all cancel messages on account of the difficulty of conducting such
checks. checks.
Improperly configured serving agents can allow articles posted to Improperly configured serving agents can allow articles posted to
moderated groups onto the net without first being approved by the moderated groups onto the net without first being approved by the
moderator. Injecting agents SHOULD verify that moderated articles moderator. Injecting agents SHOULD verify that moderated articles
were received from one of the entities given in their Approved- were received from one of the entities given in their Approved
headers and/or check any digital signatures that may be provided (see headers and/or check any digital signatures that may be provided (see
a-7.1). 6.1).
The filename parameter of the Archive-header (a-6.12) can be used to The filename parameter of the Archive header (F-3.2.11) can be used
attempt to store archived articles in inappropriate locations. to attempt to store archived articles in inappropriate locations.
Archiving sites should be suspicious of absolute filename parameters, Archiving sites should be suspicious of absolute filename parameters,
as opposed to those relative to some location of the archiver's as opposed to those relative to some location of the archiver's
choosing. choosing.
[This parameter may yet be removed from USEFOR.]
There may be weaknesses in particular implementations that are There may be weaknesses in particular implementations that are
subject to malicious exploitation. In particular, it has not been subject to malicious exploitation. In particular, it has not been
unknown for complete shell scripts to be included within Control- unknown for complete shell scripts to be included within Control
headers. Implementors need to be aware of this. headers. Implementors need to be aware of this.
Reading agents should be chary of acting automatically upon MIME Reading agents should be chary of acting automatically upon MIME
objects with an "application" Content-Type that could change the objects with an "application" Content-Type that could change the
state of that agent, except in contexts where such applications are state of that agent, except in contexts where such applications are
specifically expected (see a-6.21). Even the Content-Type specifically expected (as in 5). Even the Content-Type "text/html"
"text/html" could have unexpected side effects on account of embedded could have unexpected side effects on account of embedded objects,
objects, especially embedded executable code or URLs that invoke especially embedded executable code or URIs that invoke non-news
non-news protocols such as HTTP [RFC 2616]. It is therefore protocols such as HTTP [RFC 2616]. It is therefore generally
generally recommended that reading agents do not enable the execution recommended that reading agents do not enable the execution of such
of such code (since it is extremely unlikely to have a valid
News Article Architecture and Protocols December 2004 News Article Architecture and Protocols February 2005
application within Netnews) and that they only honour URLs referring code (since it is extremely unlikely to have a valid application
to other parts of the same article. within Netnews) and that they only honour URIs referring to other
parts of the same article.
Non-printable characters embedded in article bodies may have Non-printable characters embedded in article bodies may have
surprising effects on printers or terminals, notably by reconfiguring surprising effects on printers or terminals, notably by reconfiguring
them in undesirable ways which may become apparent only after the them in undesirable ways which may become apparent only after the
reading agent has terminated. reading agent has terminated.
8.3. Liability 8.3. Liability
There is a presumption that a poster who sends an article to Usenet There is a presumption that a poster who sends an article to Usenet
intends it to be stored on a multitude of serving agents, and has intends it to be stored on a multitude of serving agents, and has
therefore given permission for it to be copied to that extent. therefore given permission for it to be copied to that extent.
Nevertheless, Usenet is not exempt from the Copyright laws, and it Nevertheless, Usenet is not exempt from the Copyright laws, and it
should not be assumed that permission has been given for the article should not be assumed that permission has been given for the article
to be copied outside of Usenet, nor for its permanent archiving to be copied outside of Usenet, nor for its permanent archiving
contrary to any Archive-header that may be present. contrary to any Archive header that may be present.
Posters also need to be aware that they are responsible if they Posters also need to be aware that they are responsible if they
breach Copyright, Libel, Harassment or other restrictions relating to breach Copyright, Libel, Harassment or other restrictions relating to
material that they post, and that they may possibly find themselves material that they post, and that they may possibly find themselves
liable for such breaches in jurisdictions far from their own. Serving liable for such breaches in jurisdictions far from their own. Serving
agents may also be liable in some jurisdictions, especially if the agents may also be liable in some jurisdictions, especially if the
breach has been explicitly drawn to their attention. breach has been explicitly drawn to their attention.
Users who are concerned about such matters should seek advice from Users who are concerned about such matters should seek advice from
competent legal authorities. competent legal authorities.
9. IANA Considerations 9. IANA Considerations
IANA is requested to register the following media types, described IANA is requested to register the following media types, described
elsewhere in this standard, for use with the Content-Type-header, in elsewhere in this standard, for use with the Content-Type header, in
the IETF tree in accordance with the procedures set out in [RFC the IETF tree in accordance with the procedures set out in [RFC
2048]. 2048].
application/news-transmission (5.1) application/news-transmission (5.1)
application/news-groupinfo (5.3) application/news-groupinfo (5.3)
application/news-checkgroups (5.4) application/news-checkgroups (5.4)
IANA is also requested to change the status of the following media IANA is also requested to change the status of the following media
type to "OBSOLETE". type to "OBSOLETE".
message/news (5.2) message/news (5.2)
NOTE: "Application/news-transmission" is an update, with NOTE: "Application/news-transmission" is an update, with
clarification and additional optional parameters, to an existing clarification and additional optional parameters, to an existing
registration. "Message/rfc822" should now be used in place of registration. "Message/rfc822" should now be used in place of
the obsoleted "message/news". the obsoleted "message/news".
News Article Architecture and Protocols February 2005
10. References 10. References
[To Do: Split this section into Normative and Informative references. [To Do: Split this section into Normative and Informative references.
This will probably be delayed until the final draft, for technical This will probably be delayed until the final draft, for technical
reasons.] reasons.]
News Article Architecture and Protocols December 2004
[ANSI X3.4] "American National Standard for Information Systems - [ANSI X3.4] "American National Standard for Information Systems -
Coded Character Sets - 7-Bit American National Standard Code for Coded Character Sets - 7-Bit American National Standard Code for
Information Interchange (7-Bit ASCII)", ANSI X3.4, 1986. Information Interchange (7-Bit ASCII)", ANSI X3.4, 1986.
[ARTICLE] Charles H. Lindsey, "News Article Format and Transmission", [ARTICLE] Charles H. Lindsey, "News Article Format and Transmission",
draft-ietf-usefor-article-format-*.txt. draft-ietf-usefor-article-format-*.txt.
[NNTP] Clive D.W. Feather, "Network News Transport Protocol", draft- [NNTP] Clive D.W. Feather, "Network News Transport Protocol", draft-
ietf-nntpext-base-*.txt. ietf-nntpext-base-*.txt.
skipping to change at page 48, line 54 skipping to change at page 49, line 4
[RFC 2822] P. Resnick, "Internet Message Format", RFC 2822, April [RFC 2822] P. Resnick, "Internet Message Format", RFC 2822, April
2001. 2001.
[RFC 3864] G. Klyne, M. Nottingham, and J. Mogul, "Registration [RFC 3864] G. Klyne, M. Nottingham, and J. Mogul, "Registration
procedures for message header fields", RFC 3864. procedures for message header fields", RFC 3864.
[RFC 850] Mark R. Horton, "Standard for interchange of Usenet [RFC 850] Mark R. Horton, "Standard for interchange of Usenet
messages", RFC 850, June 1983. messages", RFC 850, June 1983.
[RFC 976] Mark R. Horton, "UUCP mail interchange format standard", [RFC 976] Mark R. Horton, "UUCP mail interchange format standard",
News Article Architecture and Protocols February 2005
RFC 976, February 1986. RFC 976, February 1986.
[Son-of-1036] Henry Spencer, "News article format and transmission", [Son-of-1036] Henry Spencer, "News article format and transmission",
<ftp://ftp.zoo.toronto.edu/pub/news.txt.Z>, June 1994. <ftp://ftp.zoo.toronto.edu/pub/news.txt.Z>, June 1994.
[USEAGE] draft-ietf-usefor-useage-*.txt. [USEAGE] draft-ietf-usefor-useage-*.txt.
News Article Architecture and Protocols December 2004
[USEFOR] C. H. Lindsey et al, "News Article Format", draft-ietf- [USEFOR] C. H. Lindsey et al, "News Article Format", draft-ietf-
usefor-usefor-format-*.txt. usefor-usefor-format-*.txt.
[USEPRO] This Standard. [USEPRO] This Standard.
11. Acknowledgements 11. Acknowledgements
TBD TBD
12. Contact Address 12. Contact Address
skipping to change at page 49, line 46 skipping to change at page 50, line 5
Comments on this draft should preferably be sent to the mailing list Comments on this draft should preferably be sent to the mailing list
of the Usenet Format Working Group at of the Usenet Format Working Group at
ietf-usefor@imc.org. ietf-usefor@imc.org.
Appendix A.1 - A-News Article Format Appendix A.1 - A-News Article Format
The obsolete "A News" article format consisted of exactly five lines The obsolete "A News" article format consisted of exactly five lines
of header information, followed by the body. For example: of header information, followed by the body. For example:
News Article Architecture and Protocols February 2005
Aeagle.642 Aeagle.642
news.misc news.misc
cbosgd!mhuxj!mhuxt!eagle!jerry cbosgd!mhuxj!mhuxt!eagle!jerry
Fri Nov 19 16:14:55 1982 Fri Nov 19 16:14:55 1982
Usenet Etiquette - Please Read Usenet Etiquette - Please Read
body body
body body
body body
The first line consisted of an "A" followed by an article ID The first line consisted of an "A" followed by an article ID
(analogous to a message identifier and used for similar purposes). (analogous to a message identifier and used for similar purposes).
The second line was the list of newsgroups. The third line was the The second line was the list of newsgroups. The third line was the
path. The fourth was the date, in the format above (all fields fixed path. The fourth was the date, in the format above (all fields fixed
width), resembling an Internet date but not quite the same. The fifth width), resembling an Internet date but not quite the same. The fifth
News Article Architecture and Protocols December 2004
was the subject. was the subject.
This format is documented for archeological purposes only. Articles This format is documented for archeological purposes only. Articles
MUST NOT be generated in this format. MUST NOT be generated in this format.
Appendix A.2 - Early B-News Article Format Appendix A.2 - Early B-News Article Format
The obsolete pseudo-Internet article format, used briefly during the The obsolete pseudo-Internet article format, used briefly during the
transition between the A News format and the modern format, followed transition between the A News format and the modern format, followed
the general outline of a MAIL message but with some non-standard the general outline of a MAIL message but with some non-standard
skipping to change at page 50, line 31 skipping to change at page 50, line 45
Title: Usenet Etiquette -- Please Read Title: Usenet Etiquette -- Please Read
Article-I.D.: eagle.642 Article-I.D.: eagle.642
Posted: Fri Nov 19 16:14:55 1982 Posted: Fri Nov 19 16:14:55 1982
Received: Fri Nov 19 16:59:30 1982 Received: Fri Nov 19 16:59:30 1982
Expires: Mon Jan 1 00:00:00 1990 Expires: Mon Jan 1 00:00:00 1990
body body
body body
body body
The From-header contained the information now found in the Path- The From header contained the information now found in the Path
header, plus possibly the full name now typically found in the From- header, plus possibly the full name now typically found in the From
header. The Title-header contained what is now the Subject-content. header. The Title header contained what is now the content of the
The Posted-header contained what is now the Date-content. The Subject header. The Posted header contained what is now the content
Article-I.D.-header contained an article ID, analogous to a message of the Date header. The Article-I.D. header contained an article ID,
identifier and used for similar purposes. The Newsgroups- and analogous to a message identifier and used for similar purposes. The
Expires-headers were approximately as now. The Received-header Newsgroups and Expires headers were approximately as now. The
contained the date when the latest relaying agent to process the Received header contained the date when the latest relaying agent to
article first saw it. All dates were in the above format, with all process the article first saw it. All dates were in the above format,
fields fixed width, resembling an Internet date but not quite the with all fields fixed width, resembling an Internet date but not
same. quite the same.
This format is documented for archeological purposes only. Articles This format is documented for archeological purposes only. Articles
MUST NOT be generated in this format. MUST NOT be generated in this format.
News Article Architecture and Protocols February 2005
Appendix A.3 - Obsolete Control Messages Appendix A.3 - Obsolete Control Messages
This present standard obsoletes certain control messages defined in This present standard obsoletes certain control messages defined in
[RFC 1036] (see 6.5), all of which had the effect of requesting a [RFC 1036] (see 6.5), all of which had the effect of requesting a
description of a relaying or serving agent's software, or its peering description of a relaying or serving agent's software, or its peering
arrangements with neighbouring sites, to be emailed to the article's arrangements with neighbouring sites, to be emailed to the article's
reply address. Whilst of some utility when Usenet was much smaller reply address. Whilst of some utility when Usenet was much smaller
than it is now, they had become no more than a tool for the malicious than it is now, they had become no more than a tool for the malicious
sending of mailbombs. Moreover, many organizations now consider sending of mailbombs. Moreover, many organizations now consider
information about their internal connectivity to be confidential. information about their internal connectivity to be confidential.
version version
sendsys sendsys
whogets whogets
senduuname senduuname
News Article Architecture and Protocols December 2004
"Version" requested details of the transport software in use at a "Version" requested details of the transport software in use at a
site. "Sendsys" requested the full list of newsgroups taken, and the site. "Sendsys" requested the full list of newsgroups taken, and the
peering arrangements. "Who gets" was similar, but restricted to a peering arrangements. "Who gets" was similar, but restricted to a
named newsgroup. "Senduuname" resembled "sendsys" but restricted to named newsgroup. "Senduuname" resembled "sendsys" but restricted to
the list of peers connected by UUCP. the list of peers connected by UUCP.
Historically, a checkgroups body consisting of one or two lines, the Historically, a checkgroups body consisting of one or two lines, the
first of the form "-n newsgroup", caused check-groups to apply to first of the form "-n newsgroup", caused check-groups to apply to
only that single newsgroup. only that single newsgroup.
Historically, an article posted to a newsgroup whose name had exactly Historically, an article posted to a newsgroup whose name had exactly
three components of which the third was "ctl" signified that article three components of which the third was "ctl" signified that article
was to be taken as a control message. The Subject-header specified was to be taken as a control message. The Subject header specified
the actions, in the same way the Control-header does now. the actions, in the same way the Control header does now.
These forms are documented for archeological purposes only; they MUST These forms are documented for archeological purposes only; they MUST
NO LONGER be used. NO LONGER be used.
Appendix B - Notices Appendix B - Notices
Intellectual Property Intellectual Property
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to Intellectual Property Rights or other rights that might be claimed to
skipping to change at page 51, line 45 skipping to change at page 52, line 5
on the procedures with respect to rights in RFC documents can be on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79. found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
News Article Architecture and Protocols February 2005
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf- this standard. Please address the information to the IETF at ietf-
ipr@ietf.org. ipr@ietf.org.
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2004). This document is subject Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights. except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
News Article Architecture and Protocols December 2004
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Appendix C - Change Log Appendix C - Change Log
[This Appendix is to be removed prior to final publication.] [This Appendix is to be removed prior to final publication.]
For version 01 For version 01
skipping to change at page 52, line 36 skipping to change at page 52, line 52
7.4 introductory and final paragraphs; 7.4 introductory and final paragraphs;
7.9.1 Step 5. 7.9.1 Step 5.
2 A section on "Duties of a Reading Agent" (7.8) has been added. 2 A section on "Duties of a Reading Agent" (7.8) has been added.
3 Some demotions MUST -> SHOULD -> MAY, as noted in pseudo- 3 Some demotions MUST -> SHOULD -> MAY, as noted in pseudo-
comments, have been made or proposed in sections comments, have been made or proposed in sections
7.3 7.3
7.3 Step 4. 7.3 Step 4.
4 Part of the procedure for examining Path-headers by relaying 4 Part of the procedure for examining Path headers by relaying
agents has been moved to serving agents, as explained in agents has been moved to serving agents, as explained in
pseudo-comments in section 7.4. pseudo-comments in section 7.4.
5 Some renumbering of sections and minor textual clarifications. 5 Some renumbering of sections and minor textual clarifications.
For version 02 For version 02
News Article Architecture and Protocols February 2005
1 2nd para. of a-7 temporarily reinstated in section 6. 1 2nd para. of a-7 temporarily reinstated in section 6.
2 Para. in section 6 relating to propagation of control messages 2 Para. in section 6 relating to propagation of control messages
and local policy removed to [USEAGE].] and local policy removed to [USEAGE].]
News Article Architecture and Protocols December 2004
3 Requirement for some relaying agents to examine control messages 3 Requirement for some relaying agents to examine control messages
for non-existent groups for non-existent groups
6 6
7.3 7.3
4 Text regarding "aliasing out" brought into line with actual 4 Text regarding "aliasing out" brought into line with actual
practice. practice.
7.3 7.3
5 More realistic wording regarding the expectations of reading 5 More realistic wording regarding the expectations of reading
skipping to change at line 2918 skipping to change at page 53, line 51
6 6
10 NOTE regarding not altering message indentifiers during 10 NOTE regarding not altering message indentifiers during
transport or copying added (formerly in a-5.3). transport or copying added (formerly in a-5.3).
7.3 7.3
11 All mention of MIME-style parameters and extension-parameters 11 All mention of MIME-style parameters and extension-parameters
removed. removed.
3.1 3.1
7.6 7.6
For version 03
1 The term "inheritable header" is no longer defined. Instead, the
term "inherited' is used in place of "taken" when defining the
actions of a followup agent.
7.6
News Article Architecture and Protocols February 2005
2 Consequent changes to "variant header", and also mention of
Injection-Info as sometimes variant.
2.3
3 The term "reply address" is no longer defined.
4 References now made to sections within USEFOR using "F-..."
notation.
5 Cross-references to sections within USEFOR added. Consistent use
of <...> around all mentions of syntactic objects. All
occurrences of "Foobar-header" changed to "Foobar header". Many
other minor textual changes.
6 <control-message> changed to <control-command>, to avoid
confusion with "control message", which signifies the complete
article containing the <control-command>.
7 <ihave-arguments> has been changed to <ihave-argument> (since
the earlier practice of multiple arguments is now deprecated).
Likewise <sendme-argument>.
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/