1.1 --- a/RFC3977 Sun Aug 29 17:28:58 2010 +0200
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,6998 +0,0 @@
1.4 -
1.5 -Network Working Group C. Feather
1.6 -Request for Comments: 3977 THUS plc
1.7 -Obsoletes: 977 October 2006
1.8 -Updates: 2980
1.9 -Category: Standards Track
1.10 -
1.11 -
1.12 - Network News Transfer Protocol (NNTP)
1.13 -
1.14 -Status of This Memo
1.15 -
1.16 - This document specifies an Internet standards track protocol for the
1.17 - Internet community, and requests discussion and suggestions for
1.18 - improvements. Please refer to the current edition of the "Internet
1.19 - Official Protocol Standards" (STD 1) for the standardization state
1.20 - and status of this protocol. Distribution of this memo is unlimited.
1.21 -
1.22 -Copyright Notice
1.23 -
1.24 - Copyright (C) The Internet Society (2006).
1.25 -
1.26 -Abstract
1.27 -
1.28 - The Network News Transfer Protocol (NNTP) has been in use in the
1.29 - Internet for a decade, and remains one of the most popular protocols
1.30 - (by volume) in use today. This document is a replacement for
1.31 - RFC 977, and officially updates the protocol specification. It
1.32 - clarifies some vagueness in RFC 977, includes some new base
1.33 - functionality, and provides a specific mechanism to add standardized
1.34 - extensions to NNTP.
1.35 -
1.36 -Table of Contents
1.37 -
1.38 - 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.39 - 1.1. Author's Note . . . . . . . . . . . . . . . . . . . . . . 4
1.40 - 2. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.41 - 3. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . 6
1.42 - 3.1. Commands and Responses . . . . . . . . . . . . . . . . . 6
1.43 - 3.1.1. Multi-line Data Blocks . . . . . . . . . . . . . . . . 8
1.44 - 3.2. Response Codes . . . . . . . . . . . . . . . . . . . . . 9
1.45 - 3.2.1. Generic Response Codes . . . . . . . . . . . . . . . 10
1.46 - 3.2.1.1. Examples . . . . . . . . . . . . . . . . . . . . 12
1.47 - 3.3. Capabilities and Extensions . . . . . . . . . . . . . . . 14
1.48 - 3.3.1. Capability Descriptions . . . . . . . . . . . . . . . 14
1.49 - 3.3.2. Standard Capabilities . . . . . . . . . . . . . . . . 15
1.50 - 3.3.3. Extensions . . . . . . . . . . . . . . . . . . . . . 16
1.51 - 3.3.4. Initial IANA Register . . . . . . . . . . . . . . . . 18
1.52 - 3.4. Mandatory and Optional Commands . . . . . . . . . . . . . 20
1.53 -
1.54 -
1.55 -
1.56 -Feather Standards Track [Page 1]
1.57 -
1.58 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.59 -
1.60 -
1.61 - 3.4.1. Reading and Transit Servers . . . . . . . . . . . . . 21
1.62 - 3.4.2. Mode Switching . . . . . . . . . . . . . . . . . . . 21
1.63 - 3.5. Pipelining . . . . . . . . . . . . . . . . . . . . . . . 22
1.64 - 3.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 23
1.65 - 3.6. Articles . . . . . . . . . . . . . . . . . . . . . . . . 24
1.66 - 4. The WILDMAT Format . . . . . . . . . . . . . . . . . . . . . 25
1.67 - 4.1. Wildmat Syntax . . . . . . . . . . . . . . . . . . . . . 26
1.68 - 4.2. Wildmat Semantics . . . . . . . . . . . . . . . . . . . . 26
1.69 - 4.3. Extensions . . . . . . . . . . . . . . . . . . . . . . . 27
1.70 - 4.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 27
1.71 - 5. Session Administration Commands . . . . . . . . . . . . . . . 28
1.72 - 5.1. Initial Connection . . . . . . . . . . . . . . . . . . . 28
1.73 - 5.2. CAPABILITIES . . . . . . . . . . . . . . . . . . . . . . 29
1.74 - 5.3. MODE READER . . . . . . . . . . . . . . . . . . . . . . . 32
1.75 - 5.4. QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.76 - 6. Article Posting and Retrieval . . . . . . . . . . . . . . . . 35
1.77 - 6.1. Group and Article Selection . . . . . . . . . . . . . . . 36
1.78 - 6.1.1. GROUP . . . . . . . . . . . . . . . . . . . . . . . . 36
1.79 - 6.1.2. LISTGROUP . . . . . . . . . . . . . . . . . . . . . . 39
1.80 - 6.1.3. LAST . . . . . . . . . . . . . . . . . . . . . . . . 42
1.81 - 6.1.4. NEXT . . . . . . . . . . . . . . . . . . . . . . . . 44
1.82 - 6.2. Retrieval of Articles and Article Sections . . . . . . . 45
1.83 - 6.2.1. ARTICLE . . . . . . . . . . . . . . . . . . . . . . . 46
1.84 - 6.2.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . 49
1.85 - 6.2.3. BODY . . . . . . . . . . . . . . . . . . . . . . . . 51
1.86 - 6.2.4. STAT . . . . . . . . . . . . . . . . . . . . . . . . 53
1.87 - 6.3. Article Posting . . . . . . . . . . . . . . . . . . . . . 56
1.88 - 6.3.1. POST . . . . . . . . . . . . . . . . . . . . . . . . 56
1.89 - 6.3.2. IHAVE . . . . . . . . . . . . . . . . . . . . . . . . 58
1.90 - 7. Information Commands . . . . . . . . . . . . . . . . . . . . 61
1.91 - 7.1. DATE . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.92 - 7.2. HELP . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.93 - 7.3. NEWGROUPS . . . . . . . . . . . . . . . . . . . . . . . . 63
1.94 - 7.4. NEWNEWS . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.95 - 7.5. Time . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.96 - 7.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 66
1.97 - 7.6. The LIST Commands . . . . . . . . . . . . . . . . . . . . 66
1.98 - 7.6.1. LIST . . . . . . . . . . . . . . . . . . . . . . . . 67
1.99 - 7.6.2. Standard LIST Keywords . . . . . . . . . . . . . . . 69
1.100 - 7.6.3. LIST ACTIVE . . . . . . . . . . . . . . . . . . . . . 70
1.101 - 7.6.4. LIST ACTIVE.TIMES . . . . . . . . . . . . . . . . . . 71
1.102 - 7.6.5. LIST DISTRIB.PATS . . . . . . . . . . . . . . . . . . 72
1.103 - 7.6.6. LIST NEWSGROUPS . . . . . . . . . . . . . . . . . . . 73
1.104 - 8. Article Field Access Commands . . . . . . . . . . . . . . . . 73
1.105 - 8.1. Article Metadata . . . . . . . . . . . . . . . . . . . . 74
1.106 - 8.1.1. The :bytes Metadata Item . . . . . . . . . . . . . . 74
1.107 - 8.1.2. The :lines Metadata Item . . . . . . . . . . . . . . 75
1.108 - 8.2. Database Consistency . . . . . . . . . . . . . . . . . . 75
1.109 -
1.110 -
1.111 -
1.112 -Feather Standards Track [Page 2]
1.113 -
1.114 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.115 -
1.116 -
1.117 - 8.3. OVER . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.118 - 8.4. LIST OVERVIEW.FMT . . . . . . . . . . . . . . . . . . . . 81
1.119 - 8.5. HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.120 - 8.6. LIST HEADERS . . . . . . . . . . . . . . . . . . . . . . 87
1.121 - 9. Augmented BNF Syntax for NNTP . . . . . . . . . . . . . . . . 90
1.122 - 9.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 90
1.123 - 9.2. Commands . . . . . . . . . . . . . . . . . . . . . . . . 92
1.124 - 9.3. Command Continuation . . . . . . . . . . . . . . . . . . 93
1.125 - 9.4. Responses . . . . . . . . . . . . . . . . . . . . . . . . 93
1.126 - 9.4.1. Generic Responses . . . . . . . . . . . . . . . . . . 93
1.127 - 9.4.2. Initial Response Line Contents . . . . . . . . . . . 94
1.128 - 9.4.3. Multi-line Response Contents . . . . . . . . . . . . 94
1.129 - 9.5. Capability Lines . . . . . . . . . . . . . . . . . . . . 95
1.130 - 9.6. LIST Variants . . . . . . . . . . . . . . . . . . . . . . 96
1.131 - 9.7. Articles . . . . . . . . . . . . . . . . . . . . . . . . 97
1.132 - 9.8. General Non-terminals . . . . . . . . . . . . . . . . . . 97
1.133 - 9.9. Extensions and Validation . . . . . . . . . . . . . . . . 99
1.134 - 10. Internationalisation Considerations . . . . . . . . . . . . .100
1.135 - 10.1. Introduction and Historical Situation . . . . . . . . . .100
1.136 - 10.2. This Specification . . . . . . . . . . . . . . . . . . .101
1.137 - 10.3. Outstanding Issues . . . . . . . . . . . . . . . . . . .102
1.138 - 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .103
1.139 - 12. Security Considerations . . . . . . . . . . . . . . . . . . .103
1.140 - 12.1. Personal and Proprietary Information . . . . . . . . . .104
1.141 - 12.2. Abuse of Server Log Information . . . . . . . . . . . . .104
1.142 - 12.3. Weak Authentication and Access Control . . . . . . . . .104
1.143 - 12.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . .104
1.144 - 12.5. UTF-8 Issues . . . . . . . . . . . . . . . . . . . . . .105
1.145 - 12.6. Caching of Capability Lists . . . . . . . . . . . . . . .106
1.146 - 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .107
1.147 - 14. References . . . . . . . . . . . . . . . . . . . . . . . . .110
1.148 - 14.1. Normative References . . . . . . . . . . . . . . . . . .110
1.149 - 14.2. Informative References . . . . . . . . . . . . . . . . .110
1.150 - A. Interaction with Other Specifications . . . . . . . . . . . .112
1.151 - A.1. Header Folding . . . . . . . . . . . . . . . . . . . . .112
1.152 - A.2. Message-IDs . . . . . . . . . . . . . . . . . . . . . . .112
1.153 - A.3. Article Posting . . . . . . . . . . . . . . . . . . . . .114
1.154 - B. Summary of Commands . . . . . . . . . . . . . . . . . . . . .115
1.155 - C. Summary of Response Codes . . . . . . . . . . . . . . . . . .117
1.156 - D. Changes from RFC 977 . . . . . . . . . . . . . . . . . . . .121
1.157 -
1.158 -1. Introduction
1.159 -
1.160 - This document specifies the Network News Transfer Protocol (NNTP),
1.161 - which is used for the distribution, inquiry, retrieval, and posting
1.162 - of Netnews articles using a reliable stream-based mechanism. For
1.163 - news-reading clients, NNTP enables retrieval of news articles that
1.164 -
1.165 -
1.166 -
1.167 -
1.168 -Feather Standards Track [Page 3]
1.169 -
1.170 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.171 -
1.172 -
1.173 - are stored in a central database, giving subscribers the ability to
1.174 - select only those articles they wish to read.
1.175 -
1.176 - The Netnews model provides for indexing, cross-referencing, and
1.177 - expiration of aged messages. NNTP is designed for efficient
1.178 - transmission of Netnews articles over a reliable full duplex
1.179 - communication channel.
1.180 -
1.181 - Although the protocol specification in this document is largely
1.182 - compatible with the version specified in RFC 977 [RFC977], a number
1.183 - of changes are summarised in Appendix D. In particular:
1.184 -
1.185 - o the default character set is changed from US-ASCII [ANSI1986] to
1.186 - UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8);
1.187 -
1.188 - o a number of commands that were optional in RFC 977 or that have
1.189 - been taken from RFC 2980 [RFC2980] are now mandatory; and
1.190 -
1.191 - o a CAPABILITIES command has been added to allow clients to
1.192 - determine what functionality is available from a server.
1.193 -
1.194 - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
1.195 - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
1.196 - document are to be interpreted as described in RFC 2119 [RFC2119].
1.197 -
1.198 - An implementation is not compliant if it fails to satisfy one or more
1.199 - of the MUST requirements for this protocol. An implementation that
1.200 - satisfies all the MUST and all the SHOULD requirements for its
1.201 - protocols is said to be "unconditionally compliant"; one that
1.202 - satisfies all the MUST requirements but not all the SHOULD
1.203 - requirements for NNTP is said to be "conditionally compliant".
1.204 -
1.205 - For the remainder of this document, the terms "client" and "client
1.206 - host" refer to a host making use of the NNTP service, while the terms
1.207 - "server" and "server host" refer to a host that offers the NNTP
1.208 - service.
1.209 -
1.210 -1.1. Author's Note
1.211 -
1.212 - This document is written in XML using an NNTP-specific DTD. Custom
1.213 - software is used to convert this to RFC 2629 [RFC2629] format, and
1.214 - then the public "xml2rfc" package to further reduce this to text,
1.215 - nroff source, and HTML.
1.216 -
1.217 - No perl was used in producing this document.
1.218 -
1.219 -
1.220 -
1.221 -
1.222 -
1.223 -
1.224 -Feather Standards Track [Page 4]
1.225 -
1.226 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.227 -
1.228 -
1.229 -2. Notation
1.230 -
1.231 - The following notational conventions are used in this document.
1.232 -
1.233 - UPPERCASE indicates literal text to be included in the
1.234 - command.
1.235 -
1.236 - lowercase indicates a token described elsewhere.
1.237 -
1.238 - [brackets] indicate that the enclosed material is optional.
1.239 -
1.240 - elliptical indicates that the argument may be repeated any
1.241 - ... marks number of times (it must occur at least once).
1.242 -
1.243 - vertical|bar indicates a choice of two mutually exclusive
1.244 - arguments (exactly one must be provided).
1.245 -
1.246 - The name "message-id" for a command or response argument indicates
1.247 - that it is the message-id of an article as described in Section 3.6,
1.248 - including the angle brackets.
1.249 -
1.250 - The name "wildmat" for an argument indicates that it is a wildmat as
1.251 - defined in Section 4. If the argument does not meet the requirements
1.252 - of that section (for example, if it does not fit the grammar of
1.253 - Section 4.1), the NNTP server MAY place some interpretation on it
1.254 - (not specified by this document) or otherwise MUST treat it as a
1.255 - syntax error.
1.256 -
1.257 - Responses for each command will be described in tables listing the
1.258 - required format of a response followed by the meaning that should be
1.259 - ascribed to that response.
1.260 -
1.261 - The terms "NUL", "TAB", "LF", "CR, and "space" refer to the octets
1.262 - %x00, %x09, %x0A, %x0D, and %x20, respectively (that is, the octets
1.263 - with those codes in US-ASCII [ANSI1986] and thus in UTF-8 [RFC3629]).
1.264 - The term "CRLF" or "CRLF pair" means the sequence CR immediately
1.265 - followed by LF (that is, %x0D.0A). A "printable US-ASCII character"
1.266 - is an octet in the range %x21-7E. Quoted characters refer to the
1.267 - octets with those codes in US-ASCII (so "." and "<" refer to %x2E and
1.268 - %x3C) and will always be printable US-ASCII characters; similarly,
1.269 - "digit" refers to the octets %x30-39.
1.270 -
1.271 - A "keyword" MUST consist only of US-ASCII letters, digits, and the
1.272 - characters dot (".") and dash ("-") and MUST begin with a letter.
1.273 - Keywords MUST be at least three characters in length.
1.274 -
1.275 -
1.276 -
1.277 -
1.278 -
1.279 -
1.280 -Feather Standards Track [Page 5]
1.281 -
1.282 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.283 -
1.284 -
1.285 - Examples in this document are not normative but serve to illustrate
1.286 - usages, arguments, and responses. In the examples, a "[C]" will be
1.287 - used to represent the client host and an "[S]" will be used to
1.288 - represent the server host. Most of the examples do not rely on a
1.289 - particular server state. In some cases, however, they do assume that
1.290 - the currently selected newsgroup (see the GROUP command,
1.291 - Section 6.1.1) is invalid; when so, this is indicated at the start of
1.292 - the example. Examples may use commands or other keywords not defined
1.293 - in this specification (such as an XENCRYPT command). These will be
1.294 - used to illustrate some point and do not imply that any such command
1.295 - is defined elsewhere or needs to exist in any particular
1.296 - implementation.
1.297 -
1.298 - Terms that might be read as specifying details of a client or server
1.299 - implementation, such as "database", are used simply to ease
1.300 - description. Provided that implementations conform to the protocol
1.301 - and format specifications in this document, no specific technique is
1.302 - mandated.
1.303 -
1.304 -3. Basic Concepts
1.305 -
1.306 -3.1. Commands and Responses
1.307 -
1.308 - NNTP operates over any reliable bi-directional 8-bit-wide data stream
1.309 - channel. When the connection is established, the NNTP server host
1.310 - MUST send a greeting. The client host and server host then exchange
1.311 - commands and responses (respectively) until the connection is closed
1.312 - or aborted. If the connection used is TCP, then the server host
1.313 - starts the NNTP service by listening on a TCP port. When a client
1.314 - host wishes to make use of the service, it MUST establish a TCP
1.315 - connection with the server host by connecting to that host on the
1.316 - same port on which the server is listening.
1.317 -
1.318 - The character set for all NNTP commands is UTF-8 [RFC3629]. Commands
1.319 - in NNTP MUST consist of a keyword, which MAY be followed by one or
1.320 - more arguments. A CRLF pair MUST terminate all commands. Multiple
1.321 - commands MUST NOT be on the same line. Unless otherwise noted
1.322 - elsewhere in this document, arguments SHOULD consist of printable US-
1.323 - ASCII characters. Keywords and arguments MUST each be separated by
1.324 - one or more space or TAB characters. Command lines MUST NOT exceed
1.325 - 512 octets, which includes the terminating CRLF pair. The arguments
1.326 - MUST NOT exceed 497 octets. A server MAY relax these limits for
1.327 - commands defined in an extension.
1.328 -
1.329 - Where this specification permits UTF-8 characters outside the range
1.330 - of U+0000 to U+007F, implementations MUST NOT use the Byte Order Mark
1.331 - (U+FEFF, encoding %xEF.BB.BF) and MUST use the Word Joiner (U+2060,
1.332 - encoding %xE2.91.A0) for the meaning Zero Width No-Break Space in
1.333 -
1.334 -
1.335 -
1.336 -Feather Standards Track [Page 6]
1.337 -
1.338 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.339 -
1.340 -
1.341 - command lines and the initial lines of responses. Implementations
1.342 - SHOULD apply these same principles throughout.
1.343 -
1.344 - The term "character" means a single Unicode code point.
1.345 - Implementations are not required to carry out Unicode normalisation.
1.346 - Thus, U+0084 (A-dieresis) is one character, while U+0041 U+0308 (A
1.347 - composed with dieresis) is two; the two need not be treated as
1.348 - equivalent.
1.349 -
1.350 - Commands may have variants; if so, they use a second keyword
1.351 - immediately after the first to indicate which variant is required.
1.352 - The only such commands in this specification are LIST and MODE. Note
1.353 - that such variants are sometimes referred to as if they were commands
1.354 - in their own right: "the LIST ACTIVE" command should be read as
1.355 - shorthand for "the ACTIVE variant of the LIST command".
1.356 -
1.357 - Keywords are case insensitive; the case of keywords for commands MUST
1.358 - be ignored by the server. Command and response arguments are case or
1.359 - language specific only when stated, either in this document or in
1.360 - other relevant specifications.
1.361 -
1.362 - In some cases, a command involves more data than just a single line.
1.363 - The further data may be sent either immediately after the command
1.364 - line (there are no instances of this in this specification, but there
1.365 - are in extensions such as [NNTP-STREAM]) or following a request from
1.366 - the server (indicated by a 3xx response).
1.367 -
1.368 - Each response MUST start with a three-digit response code that is
1.369 - sufficient to distinguish all responses. Certain valid responses are
1.370 - defined to be multi-line; for all others, the response is contained
1.371 - in a single line. The initial line of the response MUST NOT exceed
1.372 - 512 octets, which includes the response code and the terminating CRLF
1.373 - pair; an extension MAY specify a greater maximum for commands that it
1.374 - defines, but not for any other command. Single-line responses
1.375 - consist of an initial line only. Multi-line responses consist of an
1.376 - initial line followed by a multi-line data block.
1.377 -
1.378 - An NNTP server MAY have an inactivity autologout timer. Such a timer
1.379 - SHOULD be of at least three minutes' duration, with the exception
1.380 - that there MAY be a shorter limit on how long the server is willing
1.381 - to wait for the first command from the client. The receipt of any
1.382 - command from the client during the timer interval SHOULD suffice to
1.383 - reset the autologout timer. Similarly, the receipt of any
1.384 - significant amount of data from a client that is sending a multi-line
1.385 - data block (such as during a POST or IHAVE command) SHOULD suffice to
1.386 - reset the autologout timer. When the timer expires, the server
1.387 - SHOULD close the connection without sending any response to the
1.388 - client.
1.389 -
1.390 -
1.391 -
1.392 -Feather Standards Track [Page 7]
1.393 -
1.394 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.395 -
1.396 -
1.397 -3.1.1. Multi-line Data Blocks
1.398 -
1.399 - A multi-line data block is used in certain commands and responses.
1.400 - It MUST adhere to the following rules:
1.401 -
1.402 - 1. The block consists of a sequence of zero or more "lines", each
1.403 - being a stream of octets ending with a CRLF pair. Apart from
1.404 - those line endings, the stream MUST NOT include the octets NUL,
1.405 - LF, or CR.
1.406 -
1.407 - 2. In a multi-line response, the block immediately follows the CRLF
1.408 - at the end of the initial line of the response. When used in any
1.409 - other context, the specific command will define when the block is
1.410 - sent.
1.411 -
1.412 - 3. If any line of the data block begins with the "termination octet"
1.413 - ("." or %x2E), that line MUST be "dot-stuffed" by prepending an
1.414 - additional termination octet to that line of the block.
1.415 -
1.416 - 4. The lines of the block MUST be followed by a terminating line
1.417 - consisting of a single termination octet followed by a CRLF pair
1.418 - in the normal way. Thus, unless it is empty, a multi-line block
1.419 - is always terminated with the five octets CRLF "." CRLF
1.420 - (%x0D.0A.2E.0D.0A).
1.421 -
1.422 - 5. When a multi-line block is interpreted, the "dot-stuffing" MUST
1.423 - be undone; i.e., the recipient MUST ensure that, in any line
1.424 - beginning with the termination octet followed by octets other
1.425 - than a CRLF pair, that initial termination octet is disregarded.
1.426 -
1.427 - 6. Likewise, the terminating line ("." CRLF or %x2E.0D.0A) MUST NOT
1.428 - be considered part of the multi-line block; i.e., the recipient
1.429 - MUST ensure that any line beginning with the termination octet
1.430 - followed immediately by a CRLF pair is disregarded. (The first
1.431 - CRLF pair of the terminating CRLF "." CRLF of a non-empty block
1.432 - is, of course, part of the last line of the block.)
1.433 -
1.434 - Note that texts using an encoding (such as UTF-16 or UTF-32) that may
1.435 - contain the octets NUL, LF, or CR other than a CRLF pair cannot be
1.436 - reliably conveyed in the above format (that is, they violate the MUST
1.437 - requirement above). However, except when stated otherwise, this
1.438 - specification does not require the content to be UTF-8, and therefore
1.439 - (subject to that same requirement) it MAY include octets above and
1.440 - below 128 mixed arbitrarily.
1.441 -
1.442 - This document does not place any limit on the length of a line in a
1.443 - multi-line block. However, the standards that define the format of
1.444 - articles may do so.
1.445 -
1.446 -
1.447 -
1.448 -Feather Standards Track [Page 8]
1.449 -
1.450 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.451 -
1.452 -
1.453 -3.2. Response Codes
1.454 -
1.455 - Each response MUST begin with a three-digit status indicator. These
1.456 - are status reports from the server and indicate the response to the
1.457 - last command received from the client.
1.458 -
1.459 - The first digit of the response broadly indicates the success,
1.460 - failure, or progress of the previous command:
1.461 -
1.462 - 1xx - Informative message
1.463 - 2xx - Command completed OK
1.464 - 3xx - Command OK so far; send the rest of it
1.465 - 4xx - Command was syntactically correct but failed for some reason
1.466 - 5xx - Command unknown, unsupported, unavailable, or syntax error
1.467 -
1.468 - The next digit in the code indicates the function response category:
1.469 -
1.470 - x0x - Connection, setup, and miscellaneous messages
1.471 - x1x - Newsgroup selection
1.472 - x2x - Article selection
1.473 - x3x - Distribution functions
1.474 - x4x - Posting
1.475 - x8x - Reserved for authentication and privacy extensions
1.476 - x9x - Reserved for private use (non-standard extensions)
1.477 -
1.478 - Certain responses contain arguments such as numbers and names in
1.479 - addition to the status indicator. In those cases, to simplify
1.480 - interpretation by the client, the number and type of such arguments
1.481 - is fixed for each response code, as is whether the code is
1.482 - single-line or multi-line. Any extension MUST follow this principle
1.483 - as well. Note that, for historical reasons, the 211 response code is
1.484 - an exception to this in that the response may be single-line or
1.485 - multi-line depending on the command (GROUP or LISTGROUP) that
1.486 - generated it. In all other cases, the client MUST only use the
1.487 - status indicator itself to determine the nature of the response. The
1.488 - exact response codes that can be returned by any given command are
1.489 - detailed in the description of that command.
1.490 -
1.491 - Arguments MUST be separated from the numeric status indicator and
1.492 - from each other by a single space. All numeric arguments MUST be in
1.493 - base 10 (decimal) format and MAY have leading zeros. String
1.494 - arguments MUST contain at least one character and MUST NOT contain
1.495 - TAB, LF, CR, or space. The server MAY add any text after the
1.496 - response code or last argument, as appropriate, and the client MUST
1.497 - NOT make decisions based on this text. Such text MUST be separated
1.498 - from the numeric status indicator or the last argument by at least
1.499 - one space.
1.500 -
1.501 -
1.502 -
1.503 -
1.504 -Feather Standards Track [Page 9]
1.505 -
1.506 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.507 -
1.508 -
1.509 - The server MUST respond to any command with the appropriate generic
1.510 - response (given in Section 3.2.1) if it represents the situation.
1.511 - Otherwise, each recognized command MUST return one of the response
1.512 - codes specifically listed in its description or in an extension. A
1.513 - server MAY provide extensions to this specification, including new
1.514 - commands, new variants or features of existing commands, and other
1.515 - ways of changing the internal state of the server. However, the
1.516 - server MUST NOT produce any other responses to a client that does not
1.517 - invoke any of the additional features. (Therefore, a client that
1.518 - restricts itself to this specification will only receive the
1.519 - responses that are listed.)
1.520 -
1.521 - If a client receives an unexpected response, it SHOULD use the first
1.522 - digit of the response to determine the result. For example, an
1.523 - unexpected 2xx should be taken as success, and an unexpected 4xx or
1.524 - 5xx as failure.
1.525 -
1.526 - Response codes not specified in this document MAY be used for any
1.527 - installation-specific additional commands also not specified. These
1.528 - SHOULD be chosen to fit the pattern of x9x specified above.
1.529 -
1.530 - Neither this document nor any registered extension (see
1.531 - Section 3.3.3) will specify any response codes of the x9x pattern.
1.532 - (Implementers of extensions are accordingly cautioned not to use such
1.533 - responses for extensions that may subsequently be submitted for
1.534 - registration.)
1.535 -
1.536 -3.2.1. Generic Response Codes
1.537 -
1.538 - The server MUST respond to any command with the appropriate one of
1.539 - the following generic responses if it represents the situation.
1.540 -
1.541 - If the command is not recognized, or if it is an optional command
1.542 - that is not implemented by the server, the response code 500 MUST be
1.543 - returned.
1.544 -
1.545 - If there is a syntax error in the arguments of a recognized command,
1.546 - including the case where more arguments are provided than the command
1.547 - specifies or the command line is longer than the server accepts, the
1.548 - response code 501 MUST be returned. The line MUST NOT be truncated
1.549 - or split and then interpreted. Note that where a command has
1.550 - variants depending on a second keyword (e.g., LIST ACTIVE and LIST
1.551 - NEWSGROUPS), 501 MUST be used when the base command is implemented
1.552 - but the requested variant is not, and 500 MUST be used only when the
1.553 - base command itself is not implemented.
1.554 -
1.555 - If an argument is required to be a base64-encoded string [RFC4648]
1.556 - (there are no such arguments in this specification, but there may be
1.557 -
1.558 -
1.559 -
1.560 -Feather Standards Track [Page 10]
1.561 -
1.562 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.563 -
1.564 -
1.565 - in extensions) and is not validly encoded, the response code 504 MUST
1.566 - be returned.
1.567 -
1.568 - If the server experiences an internal fault or problem that means it
1.569 - is unable to carry out the command (for example, a necessary file is
1.570 - missing or a necessary service could not be contacted), the response
1.571 - code 403 MUST be returned. If the server recognizes the command but
1.572 - does not provide an optional feature (for example, because it does
1.573 - not store the required information), or if it only handles a subset
1.574 - of legitimate cases (see the HDR command, Section 8.5, for an
1.575 - example), the response code 503 MUST be returned.
1.576 -
1.577 - If the client is not authorized to use the specified facility when
1.578 - the server is in its current state, then the appropriate one of the
1.579 - following response codes MUST be used.
1.580 -
1.581 - 502: It is necessary to terminate the connection and to start a new
1.582 - one with the appropriate authority before the command can be used.
1.583 - Historically, some mode-switching servers (see Section 3.4.1) used
1.584 - this response to indicate that this command will become available
1.585 - after the MODE READER command (Section 5.3) is used, but this
1.586 - usage does not conform to this specification and MUST NOT be used.
1.587 - Note that the server MUST NOT close the connection immediately
1.588 - after a 502 response except at the initial connection
1.589 - (Section 5.1) and with the MODE READER command.
1.590 -
1.591 - 480: The client must authenticate itself to the server (that is, it
1.592 - must provide information as to the identity of the client) before
1.593 - the facility can be used on this connection. This will involve
1.594 - the use of an authentication extension such as [NNTP-AUTH].
1.595 -
1.596 - 483: The client must negotiate appropriate privacy protection on the
1.597 - connection. This will involve the use of a privacy extension such
1.598 - as [NNTP-TLS].
1.599 -
1.600 - 401: The client must change the state of the connection in some other
1.601 - manner. The first argument of the response MUST be the capability
1.602 - label (see Section 5.2) of the facility that provides the
1.603 - necessary mechanism (usually an extension, which may be a private
1.604 - extension). The server MUST NOT use this response code except as
1.605 - specified by the definition of the capability in question.
1.606 -
1.607 - If the server has to terminate the connection for some reason, it
1.608 - MUST give a 400 response code to the next command and then
1.609 - immediately close the connection. Following a 400 response, clients
1.610 - SHOULD NOT simply reconnect immediately and retry the same actions.
1.611 - Rather, a client SHOULD either use an exponentially increasing delay
1.612 - between retries (e.g., double the waiting time after each 400
1.613 -
1.614 -
1.615 -
1.616 -Feather Standards Track [Page 11]
1.617 -
1.618 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.619 -
1.620 -
1.621 - response) or present any associated text to the user for them to
1.622 - decide whether and when to retry.
1.623 -
1.624 - The client MUST be prepared to receive any of these responses for any
1.625 - command (except, of course, that the server MUST NOT generate a 500
1.626 - response code for mandatory commands).
1.627 -
1.628 -3.2.1.1. Examples
1.629 -
1.630 - Example of an unknown command:
1.631 -
1.632 - [C] MAIL
1.633 - [S] 500 Unknown command
1.634 -
1.635 - Example of an unsupported command:
1.636 -
1.637 - [C] CAPABILITIES
1.638 - [S] 101 Capability list:
1.639 - [S] VERSION 2
1.640 - [S] READER
1.641 - [S] NEWNEWS
1.642 - [S] LIST ACTIVE NEWSGROUPS
1.643 - [S] .
1.644 - [C] OVER
1.645 - [S] 500 Unknown command
1.646 -
1.647 - Example of an unsupported variant:
1.648 -
1.649 - [C] MODE POSTER
1.650 - [S] 501 Unknown MODE option
1.651 -
1.652 - Example of a syntax error:
1.653 -
1.654 - [C] ARTICLE a.message.id@no.angle.brackets
1.655 - [S] 501 Syntax error
1.656 -
1.657 - Example of an overlong command line:
1.658 -
1.659 - [C] HEAD 53 54 55
1.660 - [S] 501 Too many arguments
1.661 -
1.662 - Example of a bad wildmat:
1.663 -
1.664 - [C] LIST ACTIVE u[ks].*
1.665 - [S] 501 Syntax error
1.666 -
1.667 -
1.668 -
1.669 -
1.670 -
1.671 -
1.672 -Feather Standards Track [Page 12]
1.673 -
1.674 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.675 -
1.676 -
1.677 - Example of a base64-encoding error (the second argument is meant to
1.678 - be base64 encoded):
1.679 -
1.680 - [C] XENCRYPT RSA abcd=efg
1.681 - [S] 504 Base64 encoding error
1.682 -
1.683 - Example of an attempt to access a facility not available to this
1.684 - connection:
1.685 -
1.686 - [C] MODE READER
1.687 - [S] 200 Reader mode, posting permitted
1.688 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.689 - [S] 500 Permission denied
1.690 -
1.691 - Example of an attempt to access a facility requiring authentication:
1.692 -
1.693 - [C] GROUP secret.group
1.694 - [S] 480 Permission denied
1.695 -
1.696 - Example of a successful attempt following such authentication:
1.697 -
1.698 - [C] XSECRET fred flintstone
1.699 - [S] 290 Password for fred accepted
1.700 - [C] GROUP secret.group
1.701 - [S] 211 5 1 20 secret.group selected
1.702 -
1.703 - Example of an attempt to access a facility requiring privacy:
1.704 -
1.705 - [C] GROUP secret.group
1.706 - [S] 483 Secure connection required
1.707 - [C] XENCRYPT
1.708 - [Client and server negotiate encryption on the link]
1.709 - [S] 283 Encrypted link established
1.710 - [C] GROUP secret.group
1.711 - [S] 211 5 1 20 secret.group selected
1.712 -
1.713 - Example of a need to change mode before a facility is used:
1.714 -
1.715 - [C] GROUP binary.group
1.716 - [S] 401 XHOST Not on this virtual host
1.717 - [C] XHOST binary.news.example.org
1.718 - [S] 290 binary.news.example.org virtual host selected
1.719 - [C] GROUP binary.group
1.720 - [S] 211 5 1 77 binary.group selected
1.721 -
1.722 -
1.723 -
1.724 -
1.725 -
1.726 -
1.727 -
1.728 -Feather Standards Track [Page 13]
1.729 -
1.730 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.731 -
1.732 -
1.733 - Example of a temporary failure:
1.734 -
1.735 - [C] GROUP archive.local
1.736 - [S] 403 Archive server temporarily offline
1.737 -
1.738 - Example of the server needing to close down immediately:
1.739 -
1.740 - [C] ARTICLE 123
1.741 - [S] 400 Power supply failed, running on UPS
1.742 - [Server closes connection.]
1.743 -
1.744 -3.3. Capabilities and Extensions
1.745 -
1.746 - Not all NNTP servers provide exactly the same facilities, both
1.747 - because this specification allows variation and because servers may
1.748 - provide extensions. A set of facilities that are related are called
1.749 - a "capability". This specification provides a way to determine what
1.750 - capabilities are available, includes a list of standard capabilities,
1.751 - and includes a mechanism (the extension mechanism) for defining new
1.752 - capabilities.
1.753 -
1.754 -3.3.1. Capability Descriptions
1.755 -
1.756 - A client can determine the available capabilities of the server by
1.757 - using the CAPABILITIES command (Section 5.2). This returns a
1.758 - capability list, which is a list of capability lines. Each line
1.759 - describes one available capability.
1.760 -
1.761 - Each capability line consists of one or more tokens, which MUST be
1.762 - separated by one or more space or TAB characters. A token is a
1.763 - string of 1 or more printable UTF-8 characters (that is, either
1.764 - printable US-ASCII characters or any UTF-8 sequence outside the US-
1.765 - ASCII range, but not space or TAB). Unless stated otherwise, tokens
1.766 - are case insensitive. Each capability line consists of the
1.767 - following:
1.768 -
1.769 - o The capability label, which is a keyword indicating the
1.770 - capability. A capability label may be defined by this
1.771 - specification or a successor, or by an extension.
1.772 -
1.773 - o The label is then followed by zero or more tokens, which are
1.774 - arguments of the capability. The form and meaning of these tokens
1.775 - is specific to each capability.
1.776 -
1.777 - The server MUST ensure that the capability list accurately reflects
1.778 - the capabilities (including extensions) currently available. If a
1.779 - capability is only available with the server in a certain state (for
1.780 - example, only after authentication), the list MUST only include the
1.781 -
1.782 -
1.783 -
1.784 -Feather Standards Track [Page 14]
1.785 -
1.786 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.787 -
1.788 -
1.789 - capability label when the server is in that state. Similarly, if
1.790 - only some of the commands in an extension will be available, or if
1.791 - the behaviour of the extension will change in some other manner,
1.792 - according to the state of the server, this MUST be indicated by
1.793 - different arguments in the capability line.
1.794 -
1.795 - Note that a capability line can only begin with a letter. Lines
1.796 - beginning with other characters are reserved for future versions of
1.797 - this specification. In order to interoperate with such versions,
1.798 - clients MUST be prepared to receive lines beginning with other
1.799 - characters and MUST ignore any they do not understand.
1.800 -
1.801 -3.3.2. Standard Capabilities
1.802 -
1.803 - The following capabilities are defined by this specification.
1.804 -
1.805 - VERSION
1.806 - This capability MUST be advertised by all servers and MUST be the
1.807 - first capability in the capability list; it indicates the
1.808 - version(s) of NNTP that the server supports. There must be at
1.809 - least one argument; each argument is a decimal number and MUST NOT
1.810 - have a leading zero. Version numbers are assigned only in RFCs
1.811 - that update or replace this specification; servers MUST NOT create
1.812 - their own version numbers.
1.813 -
1.814 - The version number of this specification is 2.
1.815 -
1.816 - READER
1.817 - This capability indicates that the server implements the various
1.818 - commands useful for reading clients.
1.819 -
1.820 - IHAVE
1.821 - This capability indicates that the server implements the IHAVE
1.822 - command.
1.823 -
1.824 - POST
1.825 - This capability indicates that the server implements the POST
1.826 - command.
1.827 -
1.828 - NEWNEWS
1.829 - This capability indicates that the server implements the NEWNEWS
1.830 - command.
1.831 -
1.832 - HDR
1.833 - This capability indicates that the server implements the header
1.834 - access commands (HDR and LIST HEADERS).
1.835 -
1.836 -
1.837 -
1.838 -
1.839 -
1.840 -Feather Standards Track [Page 15]
1.841 -
1.842 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.843 -
1.844 -
1.845 - OVER
1.846 - This capability indicates that the server implements the overview
1.847 - access commands (OVER and LIST OVERVIEW.FMT). If and only if the
1.848 - server supports the message-id form of the OVER command, there
1.849 - must be a single argument MSGID.
1.850 -
1.851 - LIST
1.852 - This capability indicates that the server implements at least one
1.853 - variant of the LIST command. There MUST be one argument for each
1.854 - variant of the LIST command supported by the server, giving the
1.855 - keyword for that variant.
1.856 -
1.857 - IMPLEMENTATION
1.858 - This capability MAY be provided by a server. If so, the arguments
1.859 - SHOULD be used to provide information such as the server software
1.860 - name and version number. The client MUST NOT use this line to
1.861 - determine capabilities of the server. (While servers often
1.862 - provide this information in the initial greeting, clients need to
1.863 - guess whether this is the case; this capability makes it clear
1.864 - what the information is.)
1.865 -
1.866 - MODE-READER
1.867 - This capability indicates that the server is mode-switching
1.868 - (Section 3.4.2) and that the MODE READER command needs to be used
1.869 - to enable the READER capability.
1.870 -
1.871 -3.3.3. Extensions
1.872 -
1.873 - Although NNTP is widely and robustly deployed, some parts of the
1.874 - Internet community might wish to extend the NNTP service. It must be
1.875 - emphasized that any extension to NNTP should not be considered
1.876 - lightly. NNTP's strength comes primarily from its simplicity.
1.877 - Experience with many protocols has shown that:
1.878 -
1.879 - Protocols with few options tend towards ubiquity, whilst protocols
1.880 - with many options tend towards obscurity.
1.881 -
1.882 - This means that each and every extension, regardless of its benefits,
1.883 - must be carefully scrutinized with respect to its implementation,
1.884 - deployment, and interoperability costs. In many cases, the cost of
1.885 - extending the NNTP service will likely outweigh the benefit.
1.886 -
1.887 - An extension is a package of associated facilities, often but not
1.888 - always including one or more new commands. Each extension MUST
1.889 - define at least one new capability label (this will often, but need
1.890 - not, be the name of one of these new commands). While any additional
1.891 - capability information can normally be specified using arguments to
1.892 -
1.893 -
1.894 -
1.895 -
1.896 -Feather Standards Track [Page 16]
1.897 -
1.898 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.899 -
1.900 -
1.901 - that label, an extension MAY define more than one capability label.
1.902 - However, this SHOULD be limited to exceptional circumstances.
1.903 -
1.904 - An extension is either a private extension, or its capabilities are
1.905 - included in the IANA registry of capabilities (see Section 3.3.4) and
1.906 - it is defined in an RFC (in which case it is a "registered
1.907 - extension"). Such RFCs either must be on the standards track or must
1.908 - define an IESG-approved experimental protocol.
1.909 -
1.910 - The definition of an extension must include the following:
1.911 -
1.912 - o a descriptive name for the extension.
1.913 -
1.914 - o the capability label or labels defined by the extension (the
1.915 - capability label of a registered extension MUST NOT begin with
1.916 - "X").
1.917 -
1.918 - o The syntax, values, and meanings of any arguments for each
1.919 - capability label defined by the extension.
1.920 -
1.921 - o Any new NNTP commands associated with the extension (the names of
1.922 - commands associated with registered extensions MUST NOT begin with
1.923 - "X").
1.924 -
1.925 - o The syntax and possible values of arguments associated with the
1.926 - new NNTP commands.
1.927 -
1.928 - o The response codes and possible values of arguments for the
1.929 - responses of the new NNTP commands.
1.930 -
1.931 - o Any new arguments the extension associates with any other
1.932 - pre-existing NNTP commands.
1.933 -
1.934 - o Any increase in the maximum length of commands and initial
1.935 - response lines over the value specified in this document.
1.936 -
1.937 - o A specific statement about the effect on pipelining that this
1.938 - extension may have (if any).
1.939 -
1.940 - o A specific statement about the circumstances when use of this
1.941 - extension can alter the contents of the capabilities list (other
1.942 - than the new capability labels it defines).
1.943 -
1.944 - o A specific statement about the circumstances under which the
1.945 - extension can cause any pre-existing command to produce a 401,
1.946 - 480, or 483 response.
1.947 -
1.948 -
1.949 -
1.950 -
1.951 -
1.952 -Feather Standards Track [Page 17]
1.953 -
1.954 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.955 -
1.956 -
1.957 - o A description of how the use of MODE READER on a mode-switching
1.958 - server interacts with the extension.
1.959 -
1.960 - o A description of how support for the extension affects the
1.961 - behaviour of a server and NNTP client in any other manner not
1.962 - outlined above.
1.963 -
1.964 - o Formal syntax as described in Section 9.9.
1.965 -
1.966 - A private extension MAY or MAY NOT be included in the capabilities
1.967 - list. If it is, the capability label MUST begin with "X". A server
1.968 - MAY provide additional keywords (for new commands and also for new
1.969 - variants of existing commands) as part of a private extension. To
1.970 - avoid the risk of a clash with a future registered extension, these
1.971 - keywords SHOULD begin with "X".
1.972 -
1.973 - If the server advertises a capability defined by a registered
1.974 - extension, it MUST implement the extension so as to fully conform
1.975 - with the specification (for example, it MUST implement all the
1.976 - commands that the extension describes as mandatory). If it does not
1.977 - implement the extension as specified, it MUST NOT list the extension
1.978 - in the capabilities list under its registered name. In that case, it
1.979 - MAY, but SHOULD NOT, provide a private extension (not listed, or
1.980 - listed with a different name) that implements part of the extension
1.981 - or implements the commands of the extension with a different meaning.
1.982 -
1.983 - A server MUST NOT send different response codes to basic NNTP
1.984 - commands documented here or to commands documented in registered
1.985 - extensions in response to the availability or use of a private
1.986 - extension.
1.987 -
1.988 -3.3.4. Initial IANA Register
1.989 -
1.990 - IANA will maintain a registry of NNTP capability labels. All
1.991 - capability labels in the registry MUST be keywords and MUST NOT begin
1.992 - with X.
1.993 -
1.994 -
1.995 -
1.996 -
1.997 -
1.998 -
1.999 -
1.1000 -
1.1001 -
1.1002 -
1.1003 -
1.1004 -
1.1005 -
1.1006 -
1.1007 -
1.1008 -Feather Standards Track [Page 18]
1.1009 -
1.1010 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1011 -
1.1012 -
1.1013 - The initial content of the registry consists of these entries:
1.1014 -
1.1015 - +-------------------+--------------------------+--------------------+
1.1016 - | Label | Meaning | Definition |
1.1017 - +-------------------+--------------------------+--------------------+
1.1018 - | AUTHINFO | Authentication | [NNTP-AUTH] |
1.1019 - | | | |
1.1020 - | HDR | Batched header retrieval | Section 3.3.2, |
1.1021 - | | | Section 8.5, and |
1.1022 - | | | Section 8.6 |
1.1023 - | | | |
1.1024 - | IHAVE | IHAVE command available | Section 3.3.2 and |
1.1025 - | | | Section 6.3.2 |
1.1026 - | | | |
1.1027 - | IMPLEMENTATION | Server | Section 3.3.2 |
1.1028 - | | implementation-specific | |
1.1029 - | | information | |
1.1030 - | | | |
1.1031 - | LIST | LIST command variants | Section 3.3.2 and |
1.1032 - | | | Section 7.6.1 |
1.1033 - | | | |
1.1034 - | MODE-READER | Mode-switching server | Section 3.4.2 |
1.1035 - | | and MODE READER command | |
1.1036 - | | available | |
1.1037 - | | | |
1.1038 - | NEWNEWS | NEWNEWS command | Section 3.3.2 and |
1.1039 - | | available | Section 7.4 |
1.1040 - | | | |
1.1041 - | OVER | Overview support | Section 3.3.2, |
1.1042 - | | | Section 8.3, and |
1.1043 - | | | Section 8.4 |
1.1044 - | | | |
1.1045 - | POST | POST command available | Section 3.3.2 and |
1.1046 - | | | Section 6.3.1 |
1.1047 - | | | |
1.1048 - | READER | Reader commands | Section 3.3.2 |
1.1049 - | | available | |
1.1050 - | | | |
1.1051 - | SASL | Supported SASL | [NNTP-AUTH] |
1.1052 - | | mechanisms | |
1.1053 - | | | |
1.1054 - | STARTTLS | Transport layer security | [NNTP-TLS] |
1.1055 - | | | |
1.1056 - | STREAMING | Streaming feeds | [NNTP-STREAM] |
1.1057 - | | | |
1.1058 - | VERSION | Supported NNTP versions | Section 3.3.2 |
1.1059 - +-------------------+--------------------------+--------------------+
1.1060 -
1.1061 -
1.1062 -
1.1063 -
1.1064 -Feather Standards Track [Page 19]
1.1065 -
1.1066 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1067 -
1.1068 -
1.1069 -3.4. Mandatory and Optional Commands
1.1070 -
1.1071 - For a number of reasons, not all the commands in this specification
1.1072 - are mandatory. However, it is equally undesirable for every command
1.1073 - to be optional, since this means that a client will have no idea what
1.1074 - facilities are available. Therefore, as a compromise, some of the
1.1075 - commands in this specification are mandatory (they must be supported
1.1076 - by all servers) while the remainder are not. The latter are then
1.1077 - subdivided into bundles, each indicated by a single capability label.
1.1078 -
1.1079 - o If the label is included in the capability list returned by the
1.1080 - server, the server MUST support all commands in that bundle.
1.1081 -
1.1082 - o If the label is not included, the server MAY support none or some
1.1083 - of the commands but SHOULD NOT support all of them. In general,
1.1084 - there will be no way for a client to determine which commands are
1.1085 - supported without trying them.
1.1086 -
1.1087 - The bundles have been chosen to provide useful functionality, and
1.1088 - therefore server authors are discouraged from implementing only part
1.1089 - of a bundle.
1.1090 -
1.1091 - The description of each command will either indicate that it is
1.1092 - mandatory, or will give, using the term "indicating capability", the
1.1093 - capability label indicating whether the bundle including this command
1.1094 - is available.
1.1095 -
1.1096 - Where a server does not implement a command, it MUST always generate
1.1097 - a 500 generic response code (or a 501 generic response code in the
1.1098 - case of a variant of a command depending on a second keyword where
1.1099 - the base command is recognised). Otherwise, the command MUST be
1.1100 - fully implemented as specified; a server MUST NOT only partially
1.1101 - implement any of the commands in this specification. (Client authors
1.1102 - should note that some servers not conforming to this specification
1.1103 - will return a 502 generic response code to some commands that are not
1.1104 - implemented.)
1.1105 -
1.1106 - Note: some commands have cases that require other commands to be used
1.1107 - first. If the former command is implemented but the latter is not,
1.1108 - the former MUST still generate the relevant specific response code.
1.1109 - For example, if ARTICLE (Section 6.2.1) is implemented but GROUP
1.1110 - (Section 6.1.1) is not, the correct response to "ARTICLE 1234"
1.1111 - remains 412.
1.1112 -
1.1113 -
1.1114 -
1.1115 -
1.1116 -
1.1117 -
1.1118 -
1.1119 -
1.1120 -Feather Standards Track [Page 20]
1.1121 -
1.1122 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1123 -
1.1124 -
1.1125 -3.4.1. Reading and Transit Servers
1.1126 -
1.1127 - NNTP is traditionally used in two different ways. The first use is
1.1128 - "reading", where the client fetches articles from a large store
1.1129 - maintained by the server for immediate or later presentation to a
1.1130 - user and sends articles created by that user back to the server (an
1.1131 - action called "posting") to be stored and distributed to other stores
1.1132 - and users. The second use is for the bulk transfer of articles from
1.1133 - one store to another. Since the hosts making this transfer tend to
1.1134 - be peers in a network that transmit articles among one another, and
1.1135 - not end-user systems, this process is called "peering" or "transit".
1.1136 - (Even so, one host is still the client and the other is the server).
1.1137 -
1.1138 - In practice, these two uses are so different that some server
1.1139 - implementations are optimised for reading or for transit and, as a
1.1140 - result, do not offer the other facility or only offer limited
1.1141 - features. Other implementations are more general and offer both.
1.1142 - This specification allows for this by bundling the relevant commands
1.1143 - accordingly: the IHAVE command is designed for transit, while the
1.1144 - commands indicated by the READER capability are designed for reading
1.1145 - clients.
1.1146 -
1.1147 - Except as an effect of the MODE READER command (Section 5.3) on a
1.1148 - mode-switching server, once a server advertises either or both of the
1.1149 - IHAVE or READER capabilities, it MUST continue to advertise them for
1.1150 - the entire session.
1.1151 -
1.1152 - A server MAY provide different modes of behaviour (transit, reader,
1.1153 - or a combination) to different client connections and MAY use
1.1154 - external information, such as the IP address of the client, to
1.1155 - determine which mode to provide to any given connection.
1.1156 -
1.1157 - The official TCP port for the NNTP service is 119. However, if a
1.1158 - host wishes to offer separate servers for transit and reading
1.1159 - clients, port 433 SHOULD be used for the transit server and 119 for
1.1160 - the reading server.
1.1161 -
1.1162 -3.4.2. Mode Switching
1.1163 -
1.1164 - An implementation MAY, but SHOULD NOT, provide both transit and
1.1165 - reader facilities on the same server but require the client to select
1.1166 - which it wishes to use. Such an arrangement is called a
1.1167 - "mode-switching" server.
1.1168 -
1.1169 -
1.1170 -
1.1171 -
1.1172 -
1.1173 -
1.1174 -
1.1175 -
1.1176 -Feather Standards Track [Page 21]
1.1177 -
1.1178 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1179 -
1.1180 -
1.1181 - A mode-switching server has two modes:
1.1182 -
1.1183 - o Transit mode, which applies after the initial connection.
1.1184 -
1.1185 - * It MUST advertise the MODE-READER capability.
1.1186 -
1.1187 - * It MUST NOT advertise the READER capability.
1.1188 -
1.1189 - However, the server MAY cease to advertise the MODE-READER
1.1190 - capability after the client uses any command except CAPABILITIES.
1.1191 -
1.1192 - o Reading mode, after a successful MODE READER command (see Section
1.1193 - 5.3).
1.1194 -
1.1195 - * It MUST NOT advertise the MODE-READER capability.
1.1196 -
1.1197 - * It MUST advertise the READER capability.
1.1198 -
1.1199 - * It MAY NOT advertise the IHAVE capability, even if it was
1.1200 - advertising it in transit mode.
1.1201 -
1.1202 - A client SHOULD only issue a MODE READER command to a server if it is
1.1203 - advertising the MODE-READER capability. If the server does not
1.1204 - support CAPABILITIES (and therefore does not conform to this
1.1205 - specification), the client MAY use the following heuristic:
1.1206 -
1.1207 - o If the client wishes to use any "reader" commands, it SHOULD use
1.1208 - the MODE READER command immediately after the initial connection.
1.1209 -
1.1210 - o Otherwise, it SHOULD NOT use the MODE READER command.
1.1211 -
1.1212 - In each case, it should be prepared for some commands to be
1.1213 - unavailable that would have been available if it had made the other
1.1214 - choice.
1.1215 -
1.1216 -3.5. Pipelining
1.1217 -
1.1218 - NNTP is designed to operate over a reliable bi-directional
1.1219 - connection, such as TCP. Therefore, if a command does not depend on
1.1220 - the response to the previous one, it should not matter if it is sent
1.1221 - before that response is received. Doing this is called "pipelining".
1.1222 - However, certain server implementations throw away all text received
1.1223 - from the client following certain commands before sending their
1.1224 - response. If this happens, pipelining will be affected because one
1.1225 - or more commands will have been ignored or misinterpreted, and the
1.1226 - client will be matching the wrong responses to each command. Since
1.1227 - there are significant benefits to pipelining, but also circumstances
1.1228 - where it is reasonable or common for servers to behave in the above
1.1229 -
1.1230 -
1.1231 -
1.1232 -Feather Standards Track [Page 22]
1.1233 -
1.1234 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1235 -
1.1236 -
1.1237 - manner, this document puts certain requirements on both clients and
1.1238 - servers.
1.1239 -
1.1240 - Except where stated otherwise, a client MAY use pipelining. That is,
1.1241 - it may send a command before receiving the response for the previous
1.1242 - command. The server MUST allow pipelining and MUST NOT throw away
1.1243 - any text received after a command. Irrespective of whether
1.1244 - pipelining is used, the server MUST process commands in the order
1.1245 - they are sent.
1.1246 -
1.1247 - If the specific description of a command says it "MUST NOT be
1.1248 - pipelined", that command MUST end any pipeline of commands. That is,
1.1249 - the client MUST NOT send any following command until it receives the
1.1250 - CRLF at the end of the response from the command. The server MAY
1.1251 - ignore any data received after the command and before the CRLF at the
1.1252 - end of the response is sent to the client.
1.1253 -
1.1254 - The initial connection must not be part of a pipeline; that is, the
1.1255 - client MUST NOT send any command until it receives the CRLF at the
1.1256 - end of the greeting.
1.1257 -
1.1258 - If the client uses blocking system calls to send commands, it MUST
1.1259 - ensure that the amount of text sent in pipelining does not cause a
1.1260 - deadlock between transmission and reception. The amount of text
1.1261 - involved will depend on window sizes in the transmission layer;
1.1262 - typically, it is 4k octets for TCP. (Since the server only sends
1.1263 - data in response to commands from the client, the converse problem
1.1264 - does not occur.)
1.1265 -
1.1266 -3.5.1. Examples
1.1267 -
1.1268 - Example of correct use of pipelining:
1.1269 -
1.1270 - [C] GROUP misc.test
1.1271 - [C] STAT
1.1272 - [C] NEXT
1.1273 - [S] 211 1234 3000234 3002322 misc.test
1.1274 - [S] 223 3000234 <45223423@example.com> retrieved
1.1275 - [S] 223 3000237 <668929@example.org> retrieved
1.1276 -
1.1277 - Example of incorrect use of pipelining (the MODE READER command may
1.1278 - not be pipelined):
1.1279 -
1.1280 - [C] MODE READER
1.1281 - [C] DATE
1.1282 - [C] NEXT
1.1283 - [S] 200 Server ready, posting allowed
1.1284 - [S] 223 3000237 <668929@example.org> retrieved
1.1285 -
1.1286 -
1.1287 -
1.1288 -Feather Standards Track [Page 23]
1.1289 -
1.1290 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1291 -
1.1292 -
1.1293 - The DATE command has been thrown away by the server, so there is no
1.1294 - 111 response to match it.
1.1295 -
1.1296 -3.6. Articles
1.1297 -
1.1298 - NNTP is intended to transfer articles between clients and servers.
1.1299 - For the purposes of this specification, articles are required to
1.1300 - conform to the rules in this section, and clients and servers MUST
1.1301 - correctly process any article received from the other that does so.
1.1302 - Note that this requirement applies only to the contents of
1.1303 - communications over NNTP; it does not prevent the client or server
1.1304 - from subsequently rejecting an article for reasons of local policy.
1.1305 - Also see Appendix A for further restrictions on the format of
1.1306 - articles in some uses of NNTP.
1.1307 -
1.1308 - An article consists of two parts: the headers and the body. They are
1.1309 - separated by a single empty line, or in other words by two
1.1310 - consecutive CRLF pairs (if there is more than one empty line, the
1.1311 - second and subsequent ones are part of the body). In order to meet
1.1312 - the general requirements of NNTP, an article MUST NOT include the
1.1313 - octet NUL, MUST NOT contain the octets LF and CR other than as part
1.1314 - of a CRLF pair, and MUST end with a CRLF pair. This specification
1.1315 - puts no further restrictions on the body; in particular, it MAY be
1.1316 - empty.
1.1317 -
1.1318 - The headers of an article consist of one or more header lines. Each
1.1319 - header line consists of a header name, a colon, a space, the header
1.1320 - content, and a CRLF, in that order. The name consists of one or more
1.1321 - printable US-ASCII characters other than colon and, for the purposes
1.1322 - of this specification, is not case sensitive. There MAY be more than
1.1323 - one header line with the same name. The content MUST NOT contain
1.1324 - CRLF; it MAY be empty. A header may be "folded"; that is, a CRLF
1.1325 - pair may be placed before any TAB or space in the line. There MUST
1.1326 - still be some other octet between any two CRLF pairs in a header
1.1327 - line. (Note that folding means that the header line occupies more
1.1328 - than one line when displayed or transmitted; nevertheless, it is
1.1329 - still referred to as "a" header line.) The presence or absence of
1.1330 - folding does not affect the meaning of the header line; that is, the
1.1331 - CRLF pairs introduced by folding are not considered part of the
1.1332 - header content. Header lines SHOULD NOT be folded before the space
1.1333 - after the colon that follows the header name and SHOULD include at
1.1334 - least one octet other than %x09 or %x20 between CRLF pairs. However,
1.1335 - if an article that fails to satisfy this requirement has been
1.1336 - received from elsewhere, clients and servers MAY transfer it to each
1.1337 - other without re-folding it.
1.1338 -
1.1339 -
1.1340 -
1.1341 -
1.1342 -
1.1343 -
1.1344 -Feather Standards Track [Page 24]
1.1345 -
1.1346 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1347 -
1.1348 -
1.1349 - The content of a header SHOULD be in UTF-8. However, if an
1.1350 - implementation receives an article from elsewhere that uses octets in
1.1351 - the range 128 to 255 in some other manner, it MAY pass it to a client
1.1352 - or server without modification. Therefore, implementations MUST be
1.1353 - prepared to receive such headers, and data derived from them (e.g.,
1.1354 - in the responses from the OVER command, Section 8.3), and MUST NOT
1.1355 - assume that they are always UTF-8. Any external processing of those
1.1356 - headers, including identifying the encoding used, is outside the
1.1357 - scope of this document.
1.1358 -
1.1359 - Each article MUST have a unique message-id; two articles offered by
1.1360 - an NNTP server MUST NOT have the same message-id. For the purposes
1.1361 - of this specification, message-ids are opaque strings that MUST meet
1.1362 - the following requirements:
1.1363 -
1.1364 - o A message-id MUST begin with "<", end with ">", and MUST NOT
1.1365 - contain the latter except at the end.
1.1366 -
1.1367 - o A message-id MUST be between 3 and 250 octets in length.
1.1368 -
1.1369 - o A message-id MUST NOT contain octets other than printable US-ASCII
1.1370 - characters.
1.1371 -
1.1372 - Two message-ids are the same if and only if they consist of the same
1.1373 - sequence of octets.
1.1374 -
1.1375 - This specification does not describe how the message-id of an article
1.1376 - is determined. If the server does not have any way to determine a
1.1377 - message-id from the article itself, it MUST synthesize one (this
1.1378 - specification does not require that the article be changed as a
1.1379 - result). See also Appendix A.2.
1.1380 -
1.1381 -4. The WILDMAT Format
1.1382 -
1.1383 - The WILDMAT format described here is based on the version first
1.1384 - developed by Rich Salz [SALZ1992], which was in turn derived from the
1.1385 - format used in the UNIX "find" command to articulate file names. It
1.1386 - was developed to provide a uniform mechanism for matching patterns in
1.1387 - the same manner that the UNIX shell matches filenames.
1.1388 -
1.1389 -
1.1390 -
1.1391 -
1.1392 -
1.1393 -
1.1394 -
1.1395 -
1.1396 -
1.1397 -
1.1398 -
1.1399 -
1.1400 -Feather Standards Track [Page 25]
1.1401 -
1.1402 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1403 -
1.1404 -
1.1405 -4.1. Wildmat Syntax
1.1406 -
1.1407 - A wildmat is described by the following ABNF [RFC4234] syntax, which
1.1408 - is an extract of that in Section 9.8.
1.1409 -
1.1410 - wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
1.1411 - wildmat-pattern = 1*wildmat-item
1.1412 - wildmat-item = wildmat-exact / wildmat-wild
1.1413 - wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
1.1414 - UTF8-non-ascii ; exclude ! * , ? [ \ ]
1.1415 - wildmat-wild = "*" / "?"
1.1416 -
1.1417 - Note: the characters ",", "\", "[", and "]" are not allowed in
1.1418 - wildmats, while * and ? are always wildcards. This should not be a
1.1419 - problem, since these characters cannot occur in newsgroup names,
1.1420 - which is the only current use of wildmats. Backslash is commonly
1.1421 - used to suppress the special meaning of characters, whereas brackets
1.1422 - are used to introduce sets. However, these usages are not universal,
1.1423 - and interpretation of these characters in the context of UTF-8
1.1424 - strings is potentially complex and differs from existing practice, so
1.1425 - they were omitted from this specification. A future extension to
1.1426 - this specification may provide semantics for these characters.
1.1427 -
1.1428 -4.2. Wildmat Semantics
1.1429 -
1.1430 - A wildmat is tested against a string and either matches or does not
1.1431 - match. To do this, each constituent <wildmat-pattern> is matched
1.1432 - against the string, and the rightmost pattern that matches is
1.1433 - identified. If that <wildmat-pattern> is not preceded with "!", the
1.1434 - whole wildmat matches. If it is preceded by "!", or if no <wildmat-
1.1435 - pattern> matches, the whole wildmat does not match.
1.1436 -
1.1437 - For example, consider the wildmat "a*,!*b,*c*":
1.1438 -
1.1439 - o The string "aaa" matches because the rightmost match is with "a*".
1.1440 -
1.1441 - o The string "abb" does not match because the rightmost match is
1.1442 - with "*b".
1.1443 -
1.1444 - o The string "ccb" matches because the rightmost match is with
1.1445 - "*c*".
1.1446 -
1.1447 - o The string "xxx" does not match because no <wildmat-pattern>
1.1448 - matches.
1.1449 -
1.1450 - A <wildmat-pattern> matches a string if the string can be broken into
1.1451 - components, each of which matches the corresponding <wildmat-item> in
1.1452 - the pattern. The matches must be in the same order, and the whole
1.1453 -
1.1454 -
1.1455 -
1.1456 -Feather Standards Track [Page 26]
1.1457 -
1.1458 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1459 -
1.1460 -
1.1461 - string must be used in the match. The pattern is "anchored"; that
1.1462 - is, the first and last characters in the string must match the first
1.1463 - and last item, respectively (unless that item is an asterisk matching
1.1464 - zero characters).
1.1465 -
1.1466 - A <wildmat-exact> matches the same character (which may be more than
1.1467 - one octet in UTF-8).
1.1468 -
1.1469 - "?" matches exactly one character (which may be more than one octet).
1.1470 -
1.1471 - "*" matches zero or more characters. It can match an empty string,
1.1472 - but it cannot match a subsequence of a UTF-8 sequence that is not
1.1473 - aligned to the character boundaries.
1.1474 -
1.1475 -4.3. Extensions
1.1476 -
1.1477 - An NNTP server or extension MAY extend the syntax or semantics of
1.1478 - wildmats provided that all wildmats that meet the requirements of
1.1479 - Section 4.1 have the meaning ascribed to them by Section 4.2. Future
1.1480 - editions of this document may also extend wildmats.
1.1481 -
1.1482 -4.4. Examples
1.1483 -
1.1484 - In these examples, $ and @ are used to represent the two octets %xC2
1.1485 - and %xA3, respectively; $@ is thus the UTF-8 encoding for the pound
1.1486 - sterling symbol, shown as # in the descriptions.
1.1487 -
1.1488 - Wildmat Description of strings that match
1.1489 - abc The one string "abc"
1.1490 - abc,def The two strings "abc" and "def"
1.1491 - $@ The one character string "#"
1.1492 - a* Any string that begins with "a"
1.1493 - a*b Any string that begins with "a" and ends with "b"
1.1494 - a*,*b Any string that begins with "a" or ends with "b"
1.1495 - a*,!*b Any string that begins with "a" and does not end with
1.1496 - "b"
1.1497 - a*,!*b,c* Any string that begins with "a" and does not end with
1.1498 - "b", and any string that begins with "c" no matter
1.1499 - what it ends with
1.1500 - a*,c*,!*b Any string that begins with "a" or "c" and does not
1.1501 - end with "b"
1.1502 - ?a* Any string with "a" as its second character
1.1503 - ??a* Any string with "a" as its third character
1.1504 - *a? Any string with "a" as its penultimate character
1.1505 - *a?? Any string with "a" as its antepenultimate character
1.1506 -
1.1507 -
1.1508 -
1.1509 -
1.1510 -
1.1511 -
1.1512 -Feather Standards Track [Page 27]
1.1513 -
1.1514 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1515 -
1.1516 -
1.1517 -5. Session Administration Commands
1.1518 -
1.1519 -5.1. Initial Connection
1.1520 -
1.1521 -5.1.1. Usage
1.1522 -
1.1523 - This command MUST NOT be pipelined.
1.1524 -
1.1525 - Responses [1]
1.1526 - 200 Service available, posting allowed
1.1527 - 201 Service available, posting prohibited
1.1528 - 400 Service temporarily unavailable [2]
1.1529 - 502 Service permanently unavailable [2]
1.1530 -
1.1531 - [1] These are the only valid response codes for the initial greeting;
1.1532 - the server MUST not return any other generic response code.
1.1533 -
1.1534 - [2] Following a 400 or 502 response, the server MUST immediately
1.1535 - close the connection.
1.1536 -
1.1537 -5.1.2. Description
1.1538 -
1.1539 - There is no command presented by the client upon initial connection
1.1540 - to the server. The server MUST present an appropriate response code
1.1541 - as a greeting to the client. This response informs the client
1.1542 - whether service is available and whether the client is permitted to
1.1543 - post.
1.1544 -
1.1545 - If the server will accept further commands from the client including
1.1546 - POST, the server MUST present a 200 greeting code. If the server
1.1547 - will accept further commands from the client, but the client is not
1.1548 - authorized to post articles using the POST command, the server MUST
1.1549 - present a 201 greeting code.
1.1550 -
1.1551 - Otherwise, the server MUST present a 400 or 502 greeting code and
1.1552 - then immediately close the connection. 400 SHOULD be used if the
1.1553 - issue is only temporary (for example, because of load) and the client
1.1554 - can expect to be able to connect successfully at some point in the
1.1555 - future without making any changes. 502 MUST be used if the client is
1.1556 - not permitted under any circumstances to interact with the server,
1.1557 - and MAY be used if the server has insufficient information to
1.1558 - determine whether the issue is temporary or permanent.
1.1559 -
1.1560 - Note: the distinction between the 200 and 201 response codes has
1.1561 - turned out in practice to be insufficient; for example, some servers
1.1562 - do not allow posting until the client has authenticated, while other
1.1563 - clients assume that a 201 response means that posting will never be
1.1564 - possible even after authentication. Therefore, clients SHOULD use
1.1565 -
1.1566 -
1.1567 -
1.1568 -Feather Standards Track [Page 28]
1.1569 -
1.1570 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1571 -
1.1572 -
1.1573 - the CAPABILITIES command (Section 5.2) rather than rely on this
1.1574 - response.
1.1575 -
1.1576 -5.1.3. Examples
1.1577 -
1.1578 - Example of a normal connection from an authorized client that then
1.1579 - terminates the session (see Section 5.4):
1.1580 -
1.1581 - [Initial connection set-up completed.]
1.1582 - [S] 200 NNTP Service Ready, posting permitted
1.1583 - [C] QUIT
1.1584 - [S] 205 NNTP Service exits normally
1.1585 - [Server closes connection.]
1.1586 -
1.1587 - Example of a normal connection from an authorized client that is not
1.1588 - permitted to post, which also immediately terminates the session:
1.1589 -
1.1590 - [Initial connection set-up completed.]
1.1591 - [S] 201 NNTP Service Ready, posting prohibited
1.1592 - [C] QUIT
1.1593 - [S] 205 NNTP Service exits normally
1.1594 - [Server closes connection.]
1.1595 -
1.1596 - Example of a normal connection from an unauthorized client:
1.1597 -
1.1598 - [Initial connection set-up completed.]
1.1599 - [S] 502 NNTP Service permanently unavailable
1.1600 - [Server closes connection.]
1.1601 -
1.1602 - Example of a connection from a client if the server is unable to
1.1603 - provide service:
1.1604 -
1.1605 - [Initial connection set-up completed.]
1.1606 - [S] 400 NNTP Service temporarily unavailable
1.1607 - [Server closes connection.]
1.1608 -
1.1609 -5.2. CAPABILITIES
1.1610 -
1.1611 -5.2.1. Usage
1.1612 -
1.1613 - This command is mandatory.
1.1614 -
1.1615 - Syntax
1.1616 - CAPABILITIES [keyword]
1.1617 -
1.1618 - Responses
1.1619 - 101 Capability list follows (multi-line)
1.1620 -
1.1621 -
1.1622 -
1.1623 -
1.1624 -Feather Standards Track [Page 29]
1.1625 -
1.1626 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1627 -
1.1628 -
1.1629 - Parameters
1.1630 - keyword additional feature, see description
1.1631 -
1.1632 -5.2.2. Description
1.1633 -
1.1634 - The CAPABILITIES command allows a client to determine the
1.1635 - capabilities of the server at any given time.
1.1636 -
1.1637 - This command MAY be issued at any time; the server MUST NOT require
1.1638 - it to be issued in order to make use of any capability. The response
1.1639 - generated by this command MAY change during a session because of
1.1640 - other state information (which, in turn, may be changed by the
1.1641 - effects of other commands or by external events). An NNTP client is
1.1642 - only able to get the current and correct information concerning
1.1643 - available capabilities at any point during a session by issuing a
1.1644 - CAPABILITIES command at that point of that session and processing the
1.1645 - response.
1.1646 -
1.1647 - The capability list is returned as a multi-line data block following
1.1648 - the 101 response code. Each capability is described by a separate
1.1649 - capability line. The server MUST NOT list the same capability twice
1.1650 - in the response, even with different arguments. Except that the
1.1651 - VERSION capability MUST be the first line, the order in which the
1.1652 - capability lines appears is not significant; the server need not even
1.1653 - consistently return the same order.
1.1654 -
1.1655 - While some capabilities are likely to be always available or never
1.1656 - available, others (notably extensions) will appear and disappear
1.1657 - depending on server state changes within the session or on external
1.1658 - events between sessions. An NNTP client MAY cache the results of
1.1659 - this command, but MUST NOT rely on the correctness of any cached
1.1660 - results, whether from earlier in this session or from a previous
1.1661 - session, MUST cope gracefully with the cached status being out of
1.1662 - date, and SHOULD (if caching results) provide a way to force the
1.1663 - cached information to be refreshed. Furthermore, a client MUST NOT
1.1664 - use cached results in relation to security, privacy, and
1.1665 - authentication extensions. See Section 12.6 for further discussion
1.1666 - of this topic.
1.1667 -
1.1668 - The keyword argument is not used by this specification. It is
1.1669 - provided so that extensions or revisions to this specification can
1.1670 - include extra features for this command without requiring the
1.1671 - CAPABILITIES command to be used twice (once to determine if the extra
1.1672 - features are available, and a second time to make use of them). If
1.1673 - the server does not recognise the argument (and it is a keyword), it
1.1674 - MUST respond with the 101 response code as if the argument had been
1.1675 - omitted. If an argument is provided that the server does recognise,
1.1676 - it MAY use the 101 response code or MAY use some other response code
1.1677 -
1.1678 -
1.1679 -
1.1680 -Feather Standards Track [Page 30]
1.1681 -
1.1682 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1683 -
1.1684 -
1.1685 - (which will be defined in the specification of that feature). If the
1.1686 - argument is not a keyword, the 501 generic response code MUST be
1.1687 - returned. The server MUST NOT generate any other response code to
1.1688 - the CAPABILITIES command.
1.1689 -
1.1690 -5.2.3. Examples
1.1691 -
1.1692 - Example of a minimal response (a read-only server):
1.1693 -
1.1694 - [C] CAPABILITIES
1.1695 - [S] 101 Capability list:
1.1696 - [S] VERSION 2
1.1697 - [S] READER
1.1698 - [S] LIST ACTIVE NEWSGROUPS
1.1699 - [S] .
1.1700 -
1.1701 - Example of a response from a server that has a range of facilities
1.1702 - and that also describes itself:
1.1703 -
1.1704 - [C] CAPABILITIES
1.1705 - [S] 101 Capability list:
1.1706 - [S] VERSION 2
1.1707 - [S] READER
1.1708 - [S] IHAVE
1.1709 - [S] POST
1.1710 - [S] NEWNEWS
1.1711 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES OVERVIEW.FMT
1.1712 - [S] IMPLEMENTATION INN 4.2 2004-12-25
1.1713 - [S] OVER MSGID
1.1714 - [S] STREAMING
1.1715 - [S] XSECRET
1.1716 - [S] .
1.1717 -
1.1718 - Example of a server that supports more than one version of NNTP:
1.1719 -
1.1720 - [C] CAPABILITIES
1.1721 - [S] 101 Capability list:
1.1722 - [S] VERSION 2 3
1.1723 - [S] READER
1.1724 - [S] LIST ACTIVE NEWSGROUPS
1.1725 - [S] .
1.1726 -
1.1727 -
1.1728 -
1.1729 -
1.1730 -
1.1731 -
1.1732 -
1.1733 -
1.1734 -
1.1735 -
1.1736 -Feather Standards Track [Page 31]
1.1737 -
1.1738 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1739 -
1.1740 -
1.1741 - Example of a client attempting to use a feature of the CAPABILITIES
1.1742 - command that the server does not support:
1.1743 -
1.1744 - [C] CAPABILITIES AUTOUPDATE
1.1745 - [S] 101 Capability list:
1.1746 - [S] VERSION 2
1.1747 - [S] READER
1.1748 - [S] IHAVE
1.1749 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT HEADERS
1.1750 - [S] OVER MSGID
1.1751 - [S] HDR
1.1752 - [S] NEWNEWS
1.1753 - [S] .
1.1754 -
1.1755 -5.3. MODE READER
1.1756 -
1.1757 -5.3.1. Usage
1.1758 -
1.1759 - Indicating capability: MODE-READER
1.1760 -
1.1761 - This command MUST NOT be pipelined.
1.1762 -
1.1763 - Syntax
1.1764 - MODE READER
1.1765 -
1.1766 - Responses
1.1767 - 200 Posting allowed
1.1768 - 201 Posting prohibited
1.1769 - 502 Reading service permanently unavailable [1]
1.1770 -
1.1771 - [1] Following a 502 response the server MUST immediately close the
1.1772 - connection.
1.1773 -
1.1774 -5.3.2. Description
1.1775 -
1.1776 - The MODE READER command instructs a mode-switching server to switch
1.1777 - modes, as described in Section 3.4.2.
1.1778 -
1.1779 - If the server is mode-switching, it switches from its transit mode to
1.1780 - its reader mode, indicating this by changing the capability list
1.1781 - accordingly. It MUST then return a 200 or 201 response with the same
1.1782 - meaning as for the initial greeting (as described in Section 5.1.1).
1.1783 - Note that the response need not be the same as that presented during
1.1784 - the initial greeting. The client MUST NOT issue MODE READER more
1.1785 - than once in a session or after any security or privacy commands are
1.1786 - issued. When the MODE READER command is issued, the server MAY reset
1.1787 - its state to that immediately after the initial connection before
1.1788 - switching mode.
1.1789 -
1.1790 -
1.1791 -
1.1792 -Feather Standards Track [Page 32]
1.1793 -
1.1794 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1795 -
1.1796 -
1.1797 - If the server is not mode-switching, then the following apply:
1.1798 -
1.1799 - o If it advertises the READER capability, it MUST return a 200 or
1.1800 - 201 response with the same meaning as for the initial greeting; in
1.1801 - this case, the command MUST NOT affect the server state in any
1.1802 - way.
1.1803 -
1.1804 - o If it does not advertise the READER capability, it MUST return a
1.1805 - 502 response and then immediately close the connection.
1.1806 -
1.1807 -5.3.3. Examples
1.1808 -
1.1809 - Example of use of the MODE READER command on a transit-only server
1.1810 - (which therefore does not providing reading facilities):
1.1811 -
1.1812 - [C] CAPABILITIES
1.1813 - [S] 101 Capability list:
1.1814 - [S] VERSION 2
1.1815 - [S] IHAVE
1.1816 - [S] .
1.1817 - [C] MODE READER
1.1818 - [S] 502 Transit service only
1.1819 - [Server closes connection.]
1.1820 -
1.1821 - Example of use of the MODE READER command on a server that provides
1.1822 - reading facilities:
1.1823 -
1.1824 - [C] CAPABILITIES
1.1825 - [S] 101 Capability list:
1.1826 - [S] VERSION 2
1.1827 - [S] READER
1.1828 - [S] LIST ACTIVE NEWSGROUPS
1.1829 - [S] .
1.1830 - [C] MODE READER
1.1831 - [S] 200 Reader mode, posting permitted
1.1832 - [C] IHAVE <i.am.an.article.you.have@example.com>
1.1833 - [S] 500 Permission denied
1.1834 - [C] GROUP misc.test
1.1835 - [S] 211 1234 3000234 3002322 misc.test
1.1836 -
1.1837 - Note that in both of these situations, the client SHOULD NOT use MODE
1.1838 - READER.
1.1839 -
1.1840 -
1.1841 -
1.1842 -
1.1843 -
1.1844 -
1.1845 -
1.1846 -
1.1847 -
1.1848 -Feather Standards Track [Page 33]
1.1849 -
1.1850 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1851 -
1.1852 -
1.1853 - Example of use of the MODE READER command on a mode-switching server:
1.1854 -
1.1855 - [C] CAPABILITIES
1.1856 - [S] 101 Capability list:
1.1857 - [S] VERSION 2
1.1858 - [S] IHAVE
1.1859 - [S] MODE-READER
1.1860 - [S] .
1.1861 - [C] MODE READER
1.1862 - [S] 200 Reader mode, posting permitted
1.1863 - [C] CAPABILITIES
1.1864 - [S] 101 Capability list:
1.1865 - [S] VERSION 2
1.1866 - [S] READER
1.1867 - [S] NEWNEWS
1.1868 - [S] LIST ACTIVE NEWSGROUPS
1.1869 - [S] STARTTLS
1.1870 - [S] .
1.1871 -
1.1872 - In this case, the server offers (but does not require) TLS privacy in
1.1873 - its reading mode but not in its transit mode.
1.1874 -
1.1875 - Example of use of the MODE READER command where the client is not
1.1876 - permitted to post:
1.1877 -
1.1878 - [C] MODE READER
1.1879 - [S] 201 NNTP Service Ready, posting prohibited
1.1880 -
1.1881 -5.4. QUIT
1.1882 -
1.1883 -5.4.1. Usage
1.1884 -
1.1885 - This command is mandatory.
1.1886 -
1.1887 - Syntax
1.1888 - QUIT
1.1889 -
1.1890 - Responses
1.1891 - 205 Connection closing
1.1892 -
1.1893 -5.4.2. Description
1.1894 -
1.1895 - The client uses the QUIT command to terminate the session. The
1.1896 - server MUST acknowledge the QUIT command and then close the
1.1897 - connection to the client. This is the preferred method for a client
1.1898 - to indicate that it has finished all of its transactions with the
1.1899 - NNTP server.
1.1900 -
1.1901 -
1.1902 -
1.1903 -
1.1904 -Feather Standards Track [Page 34]
1.1905 -
1.1906 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1907 -
1.1908 -
1.1909 - If a client simply disconnects (or if the connection times out or
1.1910 - some other fault occurs), the server MUST gracefully cease its
1.1911 - attempts to service the client, disconnecting from its end if
1.1912 - necessary.
1.1913 -
1.1914 - The server MUST NOT generate any response code to the QUIT command
1.1915 - other than 205 or, if any arguments are provided, 501.
1.1916 -
1.1917 -5.4.3. Examples
1.1918 -
1.1919 - [C] QUIT
1.1920 - [S] 205 closing connection
1.1921 - [Server closes connection.]
1.1922 -
1.1923 -6. Article Posting and Retrieval
1.1924 -
1.1925 - News-reading clients have available a variety of mechanisms to
1.1926 - retrieve articles via NNTP. The news articles are stored and indexed
1.1927 - using three types of keys. The first type of key is the message-id
1.1928 - of an article and is globally unique. The second type of key is
1.1929 - composed of a newsgroup name and an article number within that
1.1930 - newsgroup. On a particular server, there MUST only be one article
1.1931 - with a given number within any newsgroup, and an article MUST NOT
1.1932 - have two different numbers in the same newsgroup. An article can be
1.1933 - cross-posted to multiple newsgroups, so there may be multiple keys
1.1934 - that point to the same article on the same server; these MAY have
1.1935 - different numbers in each newsgroup. However, this type of key is
1.1936 - not required to be globally unique, so the same key MAY refer to
1.1937 - different articles on different servers. (Note that the terms
1.1938 - "group" and "newsgroup" are equivalent.)
1.1939 -
1.1940 - The final type of key is the arrival timestamp, giving the time that
1.1941 - the article arrived at the server. The server MUST ensure that
1.1942 - article numbers are issued in order of arrival timestamp; that is,
1.1943 - articles arriving later MUST have higher numbers than those that
1.1944 - arrive earlier. The server SHOULD allocate the next sequential
1.1945 - unused number to each new article.
1.1946 -
1.1947 - Article numbers MUST lie between 1 and 2,147,483,647, inclusive. The
1.1948 - client and server MAY use leading zeroes in specifying article
1.1949 - numbers but MUST NOT use more than 16 digits. In some situations,
1.1950 - the value zero replaces an article number to show some special
1.1951 - situation.
1.1952 -
1.1953 - Note that it is likely that the article number limit of 2,147,483,647
1.1954 - will be increased by a future revision or extension to this
1.1955 - specification. While servers MUST NOT send article numbers greater
1.1956 - than this current limit, client and server developers are advised to
1.1957 -
1.1958 -
1.1959 -
1.1960 -Feather Standards Track [Page 35]
1.1961 -
1.1962 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1963 -
1.1964 -
1.1965 - use internal structures and datatypes capable of handling larger
1.1966 - values in anticipation of such a change.
1.1967 -
1.1968 -6.1. Group and Article Selection
1.1969 -
1.1970 - The following commands are used to set the "currently selected
1.1971 - newsgroup" and the "current article number", which are used by
1.1972 - various commands. At the start of an NNTP session, both of these
1.1973 - values are set to the special value "invalid".
1.1974 -
1.1975 -6.1.1. GROUP
1.1976 -
1.1977 -6.1.1.1. Usage
1.1978 -
1.1979 - Indicating capability: READER
1.1980 -
1.1981 - Syntax
1.1982 - GROUP group
1.1983 -
1.1984 - Responses
1.1985 - 211 number low high group Group successfully selected
1.1986 - 411 No such newsgroup
1.1987 -
1.1988 - Parameters
1.1989 - group Name of newsgroup
1.1990 - number Estimated number of articles in the group
1.1991 - low Reported low water mark
1.1992 - high Reported high water mark
1.1993 -
1.1994 -6.1.1.2. Description
1.1995 -
1.1996 - The GROUP command selects a newsgroup as the currently selected
1.1997 - newsgroup and returns summary information about it.
1.1998 -
1.1999 - The required argument is the name of the newsgroup to be selected
1.2000 - (e.g., "news.software.nntp"). A list of valid newsgroups may be
1.2001 - obtained by using the LIST ACTIVE command (see Section 7.6.3).
1.2002 -
1.2003 - The successful selection response will return the article numbers of
1.2004 - the first and last articles in the group at the moment of selection
1.2005 - (these numbers are referred to as the "reported low water mark" and
1.2006 - the "reported high water mark") and an estimate of the number of
1.2007 - articles in the group currently available.
1.2008 -
1.2009 - If the group is not empty, the estimate MUST be at least the actual
1.2010 - number of articles available and MUST be no greater than one more
1.2011 - than the difference between the reported low and high water marks.
1.2012 - (Some implementations will actually count the number of articles
1.2013 -
1.2014 -
1.2015 -
1.2016 -Feather Standards Track [Page 36]
1.2017 -
1.2018 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2019 -
1.2020 -
1.2021 - currently stored. Others will just subtract the low water mark from
1.2022 - the high water mark and add one to get an estimate.)
1.2023 -
1.2024 - If the group is empty, one of the following three situations will
1.2025 - occur. Clients MUST accept all three cases; servers MUST NOT
1.2026 - represent an empty group in any other way.
1.2027 -
1.2028 - o The high water mark will be one less than the low water mark, and
1.2029 - the estimated article count will be zero. Servers SHOULD use this
1.2030 - method to show an empty group. This is the only time that the
1.2031 - high water mark can be less than the low water mark.
1.2032 -
1.2033 - o All three numbers will be zero.
1.2034 -
1.2035 - o The high water mark is greater than or equal to the low water
1.2036 - mark. The estimated article count might be zero or non-zero; if
1.2037 - it is non-zero, the same requirements apply as for a non-empty
1.2038 - group.
1.2039 -
1.2040 - The set of articles in a group may change after the GROUP command is
1.2041 - carried out:
1.2042 -
1.2043 - o Articles may be removed from the group.
1.2044 -
1.2045 - o Articles may be reinstated in the group with the same article
1.2046 - number, but those articles MUST have numbers no less than the
1.2047 - reported low water mark (note that this is a reinstatement of the
1.2048 - previous article, not a new article reusing the number).
1.2049 -
1.2050 - o New articles may be added with article numbers greater than the
1.2051 - reported high water mark. (If an article that was the one with
1.2052 - the highest number has been removed and the high water mark has
1.2053 - been adjusted accordingly, the next new article will not have the
1.2054 - number one greater than the reported high water mark.)
1.2055 -
1.2056 - Except when the group is empty and all three numbers are zero,
1.2057 - whenever a subsequent GROUP command for the same newsgroup is issued,
1.2058 - either by the same client or a different client, the reported low
1.2059 - water mark in the response MUST be no less than that in any previous
1.2060 - response for that newsgroup in this session, and it SHOULD be no less
1.2061 - than that in any previous response for that newsgroup ever sent to
1.2062 - any client. Any failure to meet the latter condition SHOULD be
1.2063 - transient only. The client may make use of the low water mark to
1.2064 - remove all remembered information about articles with lower numbers,
1.2065 - as these will never recur. This includes the situation when the high
1.2066 - water mark is one less than the low water mark. No similar
1.2067 - assumption can be made about the high water mark, as this can
1.2068 -
1.2069 -
1.2070 -
1.2071 -
1.2072 -Feather Standards Track [Page 37]
1.2073 -
1.2074 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2075 -
1.2076 -
1.2077 - decrease if an article is removed and then increase again if it is
1.2078 - reinstated or if new articles arrive.
1.2079 -
1.2080 - When a valid group is selected by means of this command, the
1.2081 - currently selected newsgroup MUST be set to that group, and the
1.2082 - current article number MUST be set to the first article in the group
1.2083 - (this applies even if the group is already the currently selected
1.2084 - newsgroup). If an empty newsgroup is selected, the current article
1.2085 - number is made invalid. If an invalid group is specified, the
1.2086 - currently selected newsgroup and current article number MUST NOT be
1.2087 - changed.
1.2088 -
1.2089 - The GROUP or LISTGROUP command (see Section 6.1.2) MUST be used by a
1.2090 - client, and a successful response received, before any other command
1.2091 - is used that depends on the value of the currently selected newsgroup
1.2092 - or current article number.
1.2093 -
1.2094 - If the group specified is not available on the server, a 411 response
1.2095 - MUST be returned.
1.2096 -
1.2097 -6.1.1.3. Examples
1.2098 -
1.2099 - Example for a group known to the server:
1.2100 -
1.2101 - [C] GROUP misc.test
1.2102 - [S] 211 1234 3000234 3002322 misc.test
1.2103 -
1.2104 - Example for a group unknown to the server:
1.2105 -
1.2106 - [C] GROUP example.is.sob.bradner.or.barber
1.2107 - [S] 411 example.is.sob.bradner.or.barber is unknown
1.2108 -
1.2109 - Example of an empty group using the preferred response:
1.2110 -
1.2111 - [C] GROUP example.currently.empty.newsgroup
1.2112 - [S] 211 0 4000 3999 example.currently.empty.newsgroup
1.2113 -
1.2114 - Example of an empty group using an alternative response:
1.2115 -
1.2116 - [C] GROUP example.currently.empty.newsgroup
1.2117 - [S] 211 0 0 0 example.currently.empty.newsgroup
1.2118 -
1.2119 - Example of an empty group using a different alternative response:
1.2120 -
1.2121 - [C] GROUP example.currently.empty.newsgroup
1.2122 - [S] 211 0 4000 4321 example.currently.empty.newsgroup
1.2123 -
1.2124 -
1.2125 -
1.2126 -
1.2127 -
1.2128 -Feather Standards Track [Page 38]
1.2129 -
1.2130 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2131 -
1.2132 -
1.2133 - Example reselecting the currently selected newsgroup:
1.2134 -
1.2135 - [C] GROUP misc.test
1.2136 - [S] 211 1234 234 567 misc.test
1.2137 - [C] STAT 444
1.2138 - [S] 223 444 <123456@example.net> retrieved
1.2139 - [C] GROUP misc.test
1.2140 - [S] 211 1234 234 567 misc.test
1.2141 - [C] STAT
1.2142 - [S] 223 234 <different@example.net> retrieved
1.2143 -
1.2144 -6.1.2. LISTGROUP
1.2145 -
1.2146 -6.1.2.1. Usage
1.2147 -
1.2148 - Indicating capability: READER
1.2149 -
1.2150 - Syntax
1.2151 - LISTGROUP [group [range]]
1.2152 -
1.2153 - Responses
1.2154 - 211 number low high group Article numbers follow (multi-line)
1.2155 - 411 No such newsgroup
1.2156 - 412 No newsgroup selected [1]
1.2157 -
1.2158 - Parameters
1.2159 - group Name of newsgroup
1.2160 - range Range of articles to report
1.2161 - number Estimated number of articles in the group
1.2162 - low Reported low water mark
1.2163 - high Reported high water mark
1.2164 -
1.2165 - [1] The 412 response can only occur if no group has been specified.
1.2166 -
1.2167 -6.1.2.2. Description
1.2168 -
1.2169 - The LISTGROUP command selects a newsgroup in the same manner as the
1.2170 - GROUP command (see Section 6.1.1) but also provides a list of article
1.2171 - numbers in the newsgroup. If no group is specified, the currently
1.2172 - selected newsgroup is used.
1.2173 -
1.2174 - On success, a list of article numbers is returned as a multi-line
1.2175 - data block following the 211 response code (the arguments on the
1.2176 - initial response line are the same as for the GROUP command). The
1.2177 - list contains one number per line and is in numerical order. It
1.2178 - lists precisely those articles that exist in the group at the moment
1.2179 - of selection (therefore, an empty group produces an empty list). If
1.2180 - the optional range argument is specified, only articles within the
1.2181 -
1.2182 -
1.2183 -
1.2184 -Feather Standards Track [Page 39]
1.2185 -
1.2186 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2187 -
1.2188 -
1.2189 - range are included in the list (therefore, the list MAY be empty even
1.2190 - if the group is not).
1.2191 -
1.2192 - The range argument may be any of the following:
1.2193 -
1.2194 - o An article number.
1.2195 -
1.2196 - o An article number followed by a dash to indicate all following.
1.2197 -
1.2198 - o An article number followed by a dash followed by another article
1.2199 - number.
1.2200 -
1.2201 - In the last case, if the second number is less than the first number,
1.2202 - then the range contains no articles. Omitting the range is
1.2203 - equivalent to the range 1- being specified.
1.2204 -
1.2205 - If the group specified is not available on the server, a 411 response
1.2206 - MUST be returned. If no group is specified and the currently
1.2207 - selected newsgroup is invalid, a 412 response MUST be returned.
1.2208 -
1.2209 - Except that the group argument is optional, that a range argument can
1.2210 - be specified, and that a multi-line data block follows the 211
1.2211 - response code, the LISTGROUP command is identical to the GROUP
1.2212 - command. In particular, when successful, the command sets the
1.2213 - current article number to the first article in the group, if any,
1.2214 - even if this is not within the range specified by the second
1.2215 - argument.
1.2216 -
1.2217 - Note that the range argument is a new feature in this specification
1.2218 - and servers that do not support CAPABILITIES (and therefore do not
1.2219 - conform to this specification) are unlikely to support it.
1.2220 -
1.2221 -6.1.2.3. Examples
1.2222 -
1.2223 - Example of LISTGROUP being used to select a group:
1.2224 -
1.2225 - [C] LISTGROUP misc.test
1.2226 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2227 - [S] 3000234
1.2228 - [S] 3000237
1.2229 - [S] 3000238
1.2230 - [S] 3000239
1.2231 - [S] 3002322
1.2232 - [S] .
1.2233 -
1.2234 -
1.2235 -
1.2236 -
1.2237 -
1.2238 -
1.2239 -
1.2240 -Feather Standards Track [Page 40]
1.2241 -
1.2242 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2243 -
1.2244 -
1.2245 - Example of LISTGROUP on an empty group:
1.2246 -
1.2247 - [C] LISTGROUP example.empty.newsgroup
1.2248 - [S] 211 0 0 0 example.empty.newsgroup list follows
1.2249 - [S] .
1.2250 -
1.2251 - Example of LISTGROUP on a valid, currently selected newsgroup:
1.2252 -
1.2253 - [C] GROUP misc.test
1.2254 - [S] 211 2000 3000234 3002322 misc.test
1.2255 - [C] LISTGROUP
1.2256 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2257 - [S] 3000234
1.2258 - [S] 3000237
1.2259 - [S] 3000238
1.2260 - [S] 3000239
1.2261 - [S] 3002322
1.2262 - [S] .
1.2263 -
1.2264 - Example of LISTGROUP with a range:
1.2265 -
1.2266 - [C] LISTGROUP misc.test 3000238-3000248
1.2267 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2268 - [S] 3000238
1.2269 - [S] 3000239
1.2270 - [S] .
1.2271 -
1.2272 - Example of LISTGROUP with an empty range:
1.2273 -
1.2274 - [C] LISTGROUP misc.test 12345678-
1.2275 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2276 - [S] .
1.2277 -
1.2278 - Example of LISTGROUP with an invalid range:
1.2279 -
1.2280 - [C] LISTGROUP misc.test 9999-111
1.2281 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2282 - [S] .
1.2283 -
1.2284 -
1.2285 -
1.2286 -
1.2287 -
1.2288 -
1.2289 -
1.2290 -
1.2291 -
1.2292 -
1.2293 -
1.2294 -
1.2295 -
1.2296 -Feather Standards Track [Page 41]
1.2297 -
1.2298 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2299 -
1.2300 -
1.2301 -6.1.3. LAST
1.2302 -
1.2303 -6.1.3.1. Usage
1.2304 -
1.2305 - Indicating capability: READER
1.2306 -
1.2307 - Syntax
1.2308 - LAST
1.2309 -
1.2310 - Responses
1.2311 - 223 n message-id Article found
1.2312 - 412 No newsgroup selected
1.2313 - 420 Current article number is invalid
1.2314 - 422 No previous article in this group
1.2315 -
1.2316 - Parameters
1.2317 - n Article number
1.2318 - message-id Article message-id
1.2319 -
1.2320 -6.1.3.2. Description
1.2321 -
1.2322 - If the currently selected newsgroup is valid, the current article
1.2323 - number MUST be set to the previous article in that newsgroup (that
1.2324 - is, the highest existing article number less than the current article
1.2325 - number). If successful, a response indicating the new current
1.2326 - article number and the message-id of that article MUST be returned.
1.2327 - No article text is sent in response to this command.
1.2328 -
1.2329 - There MAY be no previous article in the group, although the current
1.2330 - article number is not the reported low water mark. There MUST NOT be
1.2331 - a previous article when the current article number is the reported
1.2332 - low water mark.
1.2333 -
1.2334 - Because articles can be removed and added, the results of multiple
1.2335 - LAST and NEXT commands MAY not be consistent over the life of a
1.2336 - particular NNTP session.
1.2337 -
1.2338 - If the current article number is already the first article of the
1.2339 - newsgroup, a 422 response MUST be returned. If the current article
1.2340 - number is invalid, a 420 response MUST be returned. If the currently
1.2341 - selected newsgroup is invalid, a 412 response MUST be returned. In
1.2342 - all three cases, the currently selected newsgroup and current article
1.2343 - number MUST NOT be altered.
1.2344 -
1.2345 -
1.2346 -
1.2347 -
1.2348 -
1.2349 -
1.2350 -
1.2351 -
1.2352 -Feather Standards Track [Page 42]
1.2353 -
1.2354 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2355 -
1.2356 -
1.2357 -6.1.3.3. Examples
1.2358 -
1.2359 - Example of a successful article retrieval using LAST:
1.2360 -
1.2361 - [C] GROUP misc.test
1.2362 - [S] 211 1234 3000234 3002322 misc.test
1.2363 - [C] NEXT
1.2364 - [S] 223 3000237 <668929@example.org> retrieved
1.2365 - [C] LAST
1.2366 - [S] 223 3000234 <45223423@example.com> retrieved
1.2367 -
1.2368 - Example of an attempt to retrieve an article without having selected
1.2369 - a group (via the GROUP command) first:
1.2370 -
1.2371 - [Assumes currently selected newsgroup is invalid.]
1.2372 - [C] LAST
1.2373 - [S] 412 no newsgroup selected
1.2374 -
1.2375 - Example of an attempt to retrieve an article using the LAST command
1.2376 - when the current article number is that of the first article in the
1.2377 - group:
1.2378 -
1.2379 - [C] GROUP misc.test
1.2380 - [S] 211 1234 3000234 3002322 misc.test
1.2381 - [C] LAST
1.2382 - [S] 422 No previous article to retrieve
1.2383 -
1.2384 - Example of an attempt to retrieve an article using the LAST command
1.2385 - when the currently selected newsgroup is empty:
1.2386 -
1.2387 - [C] GROUP example.empty.newsgroup
1.2388 - [S] 211 0 0 0 example.empty.newsgroup
1.2389 - [C] LAST
1.2390 - [S] 420 No current article selected
1.2391 -
1.2392 -
1.2393 -
1.2394 -
1.2395 -
1.2396 -
1.2397 -
1.2398 -
1.2399 -
1.2400 -
1.2401 -
1.2402 -
1.2403 -
1.2404 -
1.2405 -
1.2406 -
1.2407 -
1.2408 -Feather Standards Track [Page 43]
1.2409 -
1.2410 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2411 -
1.2412 -
1.2413 -6.1.4. NEXT
1.2414 -
1.2415 -6.1.4.1. Usage
1.2416 -
1.2417 - Indicating capability: READER
1.2418 -
1.2419 - Syntax
1.2420 - NEXT
1.2421 -
1.2422 - Responses
1.2423 - 223 n message-id Article found
1.2424 - 412 No newsgroup selected
1.2425 - 420 Current article number is invalid
1.2426 - 421 No next article in this group
1.2427 -
1.2428 - Parameters
1.2429 - n Article number
1.2430 - message-id Article message-id
1.2431 -
1.2432 -6.1.4.2. Description
1.2433 -
1.2434 - If the currently selected newsgroup is valid, the current article
1.2435 - number MUST be set to the next article in that newsgroup (that is,
1.2436 - the lowest existing article number greater than the current article
1.2437 - number). If successful, a response indicating the new current
1.2438 - article number and the message-id of that article MUST be returned.
1.2439 - No article text is sent in response to this command.
1.2440 -
1.2441 - If the current article number is already the last article of the
1.2442 - newsgroup, a 421 response MUST be returned. In all other aspects
1.2443 - (apart, of course, from the lack of 422 response), this command is
1.2444 - identical to the LAST command (Section 6.1.3).
1.2445 -
1.2446 -6.1.4.3. Examples
1.2447 -
1.2448 - Example of a successful article retrieval using NEXT:
1.2449 -
1.2450 - [C] GROUP misc.test
1.2451 - [S] 211 1234 3000234 3002322 misc.test
1.2452 - [C] NEXT
1.2453 - [S] 223 3000237 <668929@example.org> retrieved
1.2454 -
1.2455 -
1.2456 -
1.2457 -
1.2458 -
1.2459 -
1.2460 -
1.2461 -
1.2462 -
1.2463 -
1.2464 -Feather Standards Track [Page 44]
1.2465 -
1.2466 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2467 -
1.2468 -
1.2469 - Example of an attempt to retrieve an article without having selected
1.2470 - a group (via the GROUP command) first:
1.2471 -
1.2472 - [Assumes currently selected newsgroup is invalid.]
1.2473 - [C] NEXT
1.2474 - [S] 412 no newsgroup selected
1.2475 -
1.2476 - Example of an attempt to retrieve an article using the NEXT command
1.2477 - when the current article number is that of the last article in the
1.2478 - group:
1.2479 -
1.2480 - [C] GROUP misc.test
1.2481 - [S] 211 1234 3000234 3002322 misc.test
1.2482 - [C] STAT 3002322
1.2483 - [S] 223 3002322 <411@example.net> retrieved
1.2484 - [C] NEXT
1.2485 - [S] 421 No next article to retrieve
1.2486 -
1.2487 - Example of an attempt to retrieve an article using the NEXT command
1.2488 - when the currently selected newsgroup is empty:
1.2489 -
1.2490 - [C] GROUP example.empty.newsgroup
1.2491 - [S] 211 0 0 0 example.empty.newsgroup
1.2492 - [C] NEXT
1.2493 - [S] 420 No current article selected
1.2494 -
1.2495 -6.2. Retrieval of Articles and Article Sections
1.2496 -
1.2497 - The ARTICLE, BODY, HEAD, and STAT commands are very similar. They
1.2498 - differ only in the parts of the article that are presented to the
1.2499 - client and in the successful response code. The ARTICLE command is
1.2500 - described here in full, while the other three commands are described
1.2501 - in terms of the differences. As specified in Section 3.6, an article
1.2502 - consists of two parts: the article headers and the article body.
1.2503 -
1.2504 - When responding to one of these commands, the server MUST present the
1.2505 - entire article or appropriate part and MUST NOT attempt to alter or
1.2506 - translate it in any way.
1.2507 -
1.2508 -
1.2509 -
1.2510 -
1.2511 -
1.2512 -
1.2513 -
1.2514 -
1.2515 -
1.2516 -
1.2517 -
1.2518 -
1.2519 -
1.2520 -Feather Standards Track [Page 45]
1.2521 -
1.2522 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2523 -
1.2524 -
1.2525 -6.2.1. ARTICLE
1.2526 -
1.2527 -6.2.1.1. Usage
1.2528 -
1.2529 - Indicating capability: READER
1.2530 -
1.2531 - Syntax
1.2532 - ARTICLE message-id
1.2533 - ARTICLE number
1.2534 - ARTICLE
1.2535 -
1.2536 - Responses
1.2537 -
1.2538 - First form (message-id specified)
1.2539 - 220 0|n message-id Article follows (multi-line)
1.2540 - 430 No article with that message-id
1.2541 -
1.2542 - Second form (article number specified)
1.2543 - 220 n message-id Article follows (multi-line)
1.2544 - 412 No newsgroup selected
1.2545 - 423 No article with that number
1.2546 -
1.2547 - Third form (current article number used)
1.2548 - 220 n message-id Article follows (multi-line)
1.2549 - 412 No newsgroup selected
1.2550 - 420 Current article number is invalid
1.2551 -
1.2552 - Parameters
1.2553 - number Requested article number
1.2554 - n Returned article number
1.2555 - message-id Article message-id
1.2556 -
1.2557 -6.2.1.2. Description
1.2558 -
1.2559 - The ARTICLE command selects an article according to the arguments and
1.2560 - presents the entire article (that is, the headers, an empty line, and
1.2561 - the body, in that order) to the client. The command has three forms.
1.2562 -
1.2563 - In the first form, a message-id is specified, and the server presents
1.2564 - the article with that message-id. In this case, the server MUST NOT
1.2565 - alter the currently selected newsgroup or current article number.
1.2566 - This is both to facilitate the presentation of articles that may be
1.2567 - referenced within another article being read, and because of the
1.2568 - semantic difficulties of determining the proper sequence and
1.2569 - membership of an article that may have been cross-posted to more than
1.2570 - one newsgroup.
1.2571 -
1.2572 -
1.2573 -
1.2574 -
1.2575 -
1.2576 -Feather Standards Track [Page 46]
1.2577 -
1.2578 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2579 -
1.2580 -
1.2581 - In the response, the article number MUST be replaced with zero,
1.2582 - unless there is a currently selected newsgroup and the article is
1.2583 - present in that group, in which case the server MAY use the article's
1.2584 - number in that group. (The server is not required to determine
1.2585 - whether the article is in the currently selected newsgroup or, if so,
1.2586 - what article number it has; the client MUST always be prepared for
1.2587 - zero to be specified.) The server MUST NOT provide an article number
1.2588 - unless use of that number in a second ARTICLE command immediately
1.2589 - following this one would return the same article. Even if the server
1.2590 - chooses to return article numbers in these circumstances, it need not
1.2591 - do so consistently; it MAY return zero to any such command (also see
1.2592 - the STAT examples, Section 6.2.4.3).
1.2593 -
1.2594 - In the second form, an article number is specified. If there is an
1.2595 - article with that number in the currently selected newsgroup, the
1.2596 - server MUST set the current article number to that number.
1.2597 -
1.2598 - In the third form, the article indicated by the current article
1.2599 - number in the currently selected newsgroup is used.
1.2600 -
1.2601 - Note that a previously valid article number MAY become invalid if the
1.2602 - article has been removed. A previously invalid article number MAY
1.2603 - become valid if the article has been reinstated, but this article
1.2604 - number MUST be no less than the reported low water mark for that
1.2605 - group.
1.2606 -
1.2607 - The server MUST NOT change the currently selected newsgroup as a
1.2608 - result of this command. The server MUST NOT change the current
1.2609 - article number except when an article number argument was provided
1.2610 - and the article exists; in particular, it MUST NOT change it
1.2611 - following an unsuccessful response.
1.2612 -
1.2613 - Since the message-id is unique for each article, it may be used by a
1.2614 - client to skip duplicate displays of articles that have been posted
1.2615 - more than once, or to more than one newsgroup.
1.2616 -
1.2617 - The article is returned as a multi-line data block following the 220
1.2618 - response code.
1.2619 -
1.2620 - If the argument is a message-id and no such article exists, a 430
1.2621 - response MUST be returned. If the argument is a number or is omitted
1.2622 - and the currently selected newsgroup is invalid, a 412 response MUST
1.2623 - be returned. If the argument is a number and that article does not
1.2624 - exist in the currently selected newsgroup, a 423 response MUST be
1.2625 - returned. If the argument is omitted and the current article number
1.2626 - is invalid, a 420 response MUST be returned.
1.2627 -
1.2628 -
1.2629 -
1.2630 -
1.2631 -
1.2632 -Feather Standards Track [Page 47]
1.2633 -
1.2634 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2635 -
1.2636 -
1.2637 -6.2.1.3. Examples
1.2638 -
1.2639 - Example of a successful retrieval of an article (explicitly not using
1.2640 - an article number):
1.2641 -
1.2642 - [C] GROUP misc.test
1.2643 - [S] 211 1234 3000234 3002322 misc.test
1.2644 - [C] ARTICLE
1.2645 - [S] 220 3000234 <45223423@example.com>
1.2646 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2647 - [S] From: "Demo User" <nobody@example.net>
1.2648 - [S] Newsgroups: misc.test
1.2649 - [S] Subject: I am just a test article
1.2650 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2651 - [S] Organization: An Example Net, Uncertain, Texas
1.2652 - [S] Message-ID: <45223423@example.com>
1.2653 - [S]
1.2654 - [S] This is just a test article.
1.2655 - [S] .
1.2656 -
1.2657 - Example of a successful retrieval of an article by message-id:
1.2658 -
1.2659 - [C] ARTICLE <45223423@example.com>
1.2660 - [S] 220 0 <45223423@example.com>
1.2661 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2662 - [S] From: "Demo User" <nobody@example.net>
1.2663 - [S] Newsgroups: misc.test
1.2664 - [S] Subject: I am just a test article
1.2665 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2666 - [S] Organization: An Example Net, Uncertain, Texas
1.2667 - [S] Message-ID: <45223423@example.com>
1.2668 - [S]
1.2669 - [S] This is just a test article.
1.2670 - [S] .
1.2671 -
1.2672 - Example of an unsuccessful retrieval of an article by message-id:
1.2673 -
1.2674 - [C] ARTICLE <i.am.not.there@example.com>
1.2675 - [S] 430 No Such Article Found
1.2676 -
1.2677 - Example of an unsuccessful retrieval of an article by number:
1.2678 -
1.2679 - [C] GROUP misc.test
1.2680 - [S] 211 1234 3000234 3002322 news.groups
1.2681 - [C] ARTICLE 300256
1.2682 - [S] 423 No article with that number
1.2683 -
1.2684 -
1.2685 -
1.2686 -
1.2687 -
1.2688 -Feather Standards Track [Page 48]
1.2689 -
1.2690 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2691 -
1.2692 -
1.2693 - Example of an unsuccessful retrieval of an article by number because
1.2694 - no newsgroup was selected first:
1.2695 -
1.2696 - [Assumes currently selected newsgroup is invalid.]
1.2697 - [C] ARTICLE 300256
1.2698 - [S] 412 No newsgroup selected
1.2699 -
1.2700 - Example of an attempt to retrieve an article when the currently
1.2701 - selected newsgroup is empty:
1.2702 -
1.2703 - [C] GROUP example.empty.newsgroup
1.2704 - [S] 211 0 0 0 example.empty.newsgroup
1.2705 - [C] ARTICLE
1.2706 - [S] 420 No current article selected
1.2707 -
1.2708 -6.2.2. HEAD
1.2709 -
1.2710 -6.2.2.1. Usage
1.2711 -
1.2712 - This command is mandatory.
1.2713 -
1.2714 - Syntax
1.2715 - HEAD message-id
1.2716 - HEAD number
1.2717 - HEAD
1.2718 -
1.2719 - Responses
1.2720 -
1.2721 - First form (message-id specified)
1.2722 - 221 0|n message-id Headers follow (multi-line)
1.2723 - 430 No article with that message-id
1.2724 -
1.2725 - Second form (article number specified)
1.2726 - 221 n message-id Headers follow (multi-line)
1.2727 - 412 No newsgroup selected
1.2728 - 423 No article with that number
1.2729 -
1.2730 - Third form (current article number used)
1.2731 - 221 n message-id Headers follow (multi-line)
1.2732 - 412 No newsgroup selected
1.2733 - 420 Current article number is invalid
1.2734 -
1.2735 - Parameters
1.2736 - number Requested article number
1.2737 - n Returned article number
1.2738 - message-id Article message-id
1.2739 -
1.2740 -
1.2741 -
1.2742 -
1.2743 -
1.2744 -Feather Standards Track [Page 49]
1.2745 -
1.2746 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2747 -
1.2748 -
1.2749 -6.2.2.2. Description
1.2750 -
1.2751 - The HEAD command behaves identically to the ARTICLE command except
1.2752 - that, if the article exists, the response code is 221 instead of 220
1.2753 - and only the headers are presented (the empty line separating the
1.2754 - headers and body MUST NOT be included).
1.2755 -
1.2756 -6.2.2.3. Examples
1.2757 -
1.2758 - Example of a successful retrieval of the headers of an article
1.2759 - (explicitly not using an article number):
1.2760 -
1.2761 - [C] GROUP misc.test
1.2762 - [S] 211 1234 3000234 3002322 misc.test
1.2763 - [C] HEAD
1.2764 - [S] 221 3000234 <45223423@example.com>
1.2765 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2766 - [S] From: "Demo User" <nobody@example.net>
1.2767 - [S] Newsgroups: misc.test
1.2768 - [S] Subject: I am just a test article
1.2769 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2770 - [S] Organization: An Example Net, Uncertain, Texas
1.2771 - [S] Message-ID: <45223423@example.com>
1.2772 - [S] .
1.2773 -
1.2774 - Example of a successful retrieval of the headers of an article by
1.2775 - message-id:
1.2776 -
1.2777 - [C] HEAD <45223423@example.com>
1.2778 - [S] 221 0 <45223423@example.com>
1.2779 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2780 - [S] From: "Demo User" <nobody@example.net>
1.2781 - [S] Newsgroups: misc.test
1.2782 - [S] Subject: I am just a test article
1.2783 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2784 - [S] Organization: An Example Net, Uncertain, Texas
1.2785 - [S] Message-ID: <45223423@example.com>
1.2786 - [S] .
1.2787 -
1.2788 - Example of an unsuccessful retrieval of the headers of an article by
1.2789 - message-id:
1.2790 -
1.2791 - [C] HEAD <i.am.not.there@example.com>
1.2792 - [S] 430 No Such Article Found
1.2793 -
1.2794 -
1.2795 -
1.2796 -
1.2797 -
1.2798 -
1.2799 -
1.2800 -Feather Standards Track [Page 50]
1.2801 -
1.2802 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2803 -
1.2804 -
1.2805 - Example of an unsuccessful retrieval of the headers of an article by
1.2806 - number:
1.2807 -
1.2808 - [C] GROUP misc.test
1.2809 - [S] 211 1234 3000234 3002322 misc.test
1.2810 - [C] HEAD 300256
1.2811 - [S] 423 No article with that number
1.2812 -
1.2813 - Example of an unsuccessful retrieval of the headers of an article by
1.2814 - number because no newsgroup was selected first:
1.2815 -
1.2816 - [Assumes currently selected newsgroup is invalid.]
1.2817 - [C] HEAD 300256
1.2818 - [S] 412 No newsgroup selected
1.2819 -
1.2820 - Example of an attempt to retrieve the headers of an article when the
1.2821 - currently selected newsgroup is empty:
1.2822 -
1.2823 - [C] GROUP example.empty.newsgroup
1.2824 - [S] 211 0 0 0 example.empty.newsgroup
1.2825 - [C] HEAD
1.2826 - [S] 420 No current article selected
1.2827 -
1.2828 -6.2.3. BODY
1.2829 -
1.2830 -6.2.3.1. Usage
1.2831 -
1.2832 - Indicating capability: READER
1.2833 -
1.2834 - Syntax
1.2835 - BODY message-id
1.2836 - BODY number
1.2837 - BODY
1.2838 -
1.2839 - Responses
1.2840 -
1.2841 - First form (message-id specified)
1.2842 - 222 0|n message-id Body follows (multi-line)
1.2843 - 430 No article with that message-id
1.2844 -
1.2845 - Second form (article number specified)
1.2846 - 222 n message-id Body follows (multi-line)
1.2847 - 412 No newsgroup selected
1.2848 - 423 No article with that number
1.2849 -
1.2850 -
1.2851 -
1.2852 -
1.2853 -
1.2854 -
1.2855 -
1.2856 -Feather Standards Track [Page 51]
1.2857 -
1.2858 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2859 -
1.2860 -
1.2861 - Third form (current article number used)
1.2862 - 222 n message-id Body follows (multi-line)
1.2863 - 412 No newsgroup selected
1.2864 - 420 Current article number is invalid
1.2865 -
1.2866 - Parameters
1.2867 - number Requested article number
1.2868 - n Returned article number
1.2869 - message-id Article message-id
1.2870 -
1.2871 -6.2.3.2. Description
1.2872 -
1.2873 - The BODY command behaves identically to the ARTICLE command except
1.2874 - that, if the article exists, the response code is 222 instead of 220
1.2875 - and only the body is presented (the empty line separating the headers
1.2876 - and body MUST NOT be included).
1.2877 -
1.2878 -6.2.3.3. Examples
1.2879 -
1.2880 - Example of a successful retrieval of the body of an article
1.2881 - (explicitly not using an article number):
1.2882 -
1.2883 - [C] GROUP misc.test
1.2884 - [S] 211 1234 3000234 3002322 misc.test
1.2885 - [C] BODY
1.2886 - [S] 222 3000234 <45223423@example.com>
1.2887 - [S] This is just a test article.
1.2888 - [S] .
1.2889 -
1.2890 - Example of a successful retrieval of the body of an article by
1.2891 - message-id:
1.2892 -
1.2893 - [C] BODY <45223423@example.com>
1.2894 - [S] 222 0 <45223423@example.com>
1.2895 - [S] This is just a test article.
1.2896 - [S] .
1.2897 -
1.2898 - Example of an unsuccessful retrieval of the body of an article by
1.2899 - message-id:
1.2900 -
1.2901 - [C] BODY <i.am.not.there@example.com>
1.2902 - [S] 430 No Such Article Found
1.2903 -
1.2904 -
1.2905 -
1.2906 -
1.2907 -
1.2908 -
1.2909 -
1.2910 -
1.2911 -
1.2912 -Feather Standards Track [Page 52]
1.2913 -
1.2914 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2915 -
1.2916 -
1.2917 - Example of an unsuccessful retrieval of the body of an article by
1.2918 - number:
1.2919 -
1.2920 - [C] GROUP misc.test
1.2921 - [S] 211 1234 3000234 3002322 misc.test
1.2922 - [C] BODY 300256
1.2923 - [S] 423 No article with that number
1.2924 -
1.2925 - Example of an unsuccessful retrieval of the body of an article by
1.2926 - number because no newsgroup was selected first:
1.2927 -
1.2928 - [Assumes currently selected newsgroup is invalid.]
1.2929 - [C] BODY 300256
1.2930 - [S] 412 No newsgroup selected
1.2931 -
1.2932 - Example of an attempt to retrieve the body of an article when the
1.2933 - currently selected newsgroup is empty:
1.2934 -
1.2935 - [C] GROUP example.empty.newsgroup
1.2936 - [S] 211 0 0 0 example.empty.newsgroup
1.2937 - [C] BODY
1.2938 - [S] 420 No current article selected
1.2939 -
1.2940 -6.2.4. STAT
1.2941 -
1.2942 -6.2.4.1. Usage
1.2943 -
1.2944 - This command is mandatory.
1.2945 -
1.2946 - Syntax
1.2947 - STAT message-id
1.2948 - STAT number
1.2949 - STAT
1.2950 -
1.2951 - Responses
1.2952 -
1.2953 - First form (message-id specified)
1.2954 - 223 0|n message-id Article exists
1.2955 - 430 No article with that message-id
1.2956 -
1.2957 - Second form (article number specified)
1.2958 - 223 n message-id Article exists
1.2959 - 412 No newsgroup selected
1.2960 - 423 No article with that number
1.2961 -
1.2962 -
1.2963 -
1.2964 -
1.2965 -
1.2966 -
1.2967 -
1.2968 -Feather Standards Track [Page 53]
1.2969 -
1.2970 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2971 -
1.2972 -
1.2973 - Third form (current article number used)
1.2974 - 223 n message-id Article exists
1.2975 - 412 No newsgroup selected
1.2976 - 420 Current article number is invalid
1.2977 -
1.2978 - Parameters
1.2979 - number Requested article number
1.2980 - n Returned article number
1.2981 - message-id Article message-id
1.2982 -
1.2983 -6.2.4.2. Description
1.2984 -
1.2985 - The STAT command behaves identically to the ARTICLE command except
1.2986 - that, if the article exists, it is NOT presented to the client and
1.2987 - the response code is 223 instead of 220. Note that the response is
1.2988 - NOT multi-line.
1.2989 -
1.2990 - This command allows the client to determine whether an article exists
1.2991 - and, in the second and third forms, what its message-id is, without
1.2992 - having to process an arbitrary amount of text.
1.2993 -
1.2994 -6.2.4.3. Examples
1.2995 -
1.2996 - Example of STAT on an existing article (explicitly not using an
1.2997 - article number):
1.2998 -
1.2999 - [C] GROUP misc.test
1.3000 - [S] 211 1234 3000234 3002322 misc.test
1.3001 - [C] STAT
1.3002 - [S] 223 3000234 <45223423@example.com>
1.3003 -
1.3004 - Example of STAT on an existing article by message-id:
1.3005 -
1.3006 - [C] STAT <45223423@example.com>
1.3007 - [S] 223 0 <45223423@example.com>
1.3008 -
1.3009 - Example of STAT on an article not on the server by message-id:
1.3010 -
1.3011 - [C] STAT <i.am.not.there@example.com>
1.3012 - [S] 430 No Such Article Found
1.3013 -
1.3014 - Example of STAT on an article not in the server by number:
1.3015 -
1.3016 - [C] GROUP misc.test
1.3017 - [S] 211 1234 3000234 3002322 misc.test
1.3018 - [C] STAT 300256
1.3019 - [S] 423 No article with that number
1.3020 -
1.3021 -
1.3022 -
1.3023 -
1.3024 -Feather Standards Track [Page 54]
1.3025 -
1.3026 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3027 -
1.3028 -
1.3029 - Example of STAT on an article by number when no newsgroup was
1.3030 - selected first:
1.3031 -
1.3032 - [Assumes currently selected newsgroup is invalid.]
1.3033 - [C] STAT 300256
1.3034 - [S] 412 No newsgroup selected
1.3035 -
1.3036 - Example of STAT on an article when the currently selected newsgroup
1.3037 - is empty:
1.3038 -
1.3039 - [C] GROUP example.empty.newsgroup
1.3040 - [S] 211 0 0 0 example.empty.newsgroup
1.3041 - [C] STAT
1.3042 - [S] 420 No current article selected
1.3043 -
1.3044 - Example of STAT by message-id on a server that sometimes reports the
1.3045 - actual article number:
1.3046 -
1.3047 - [C] GROUP misc.test
1.3048 - [S] 211 1234 3000234 3002322 misc.test
1.3049 - [C] STAT
1.3050 - [S] 223 3000234 <45223423@example.com>
1.3051 - [C] STAT <45223423@example.com>
1.3052 - [S] 223 0 <45223423@example.com>
1.3053 - [C] STAT <45223423@example.com>
1.3054 - [S] 223 3000234 <45223423@example.com>
1.3055 - [C] GROUP example.empty.newsgroup
1.3056 - [S] 211 0 0 0 example.empty.newsgroup
1.3057 - [C] STAT <45223423@example.com>
1.3058 - [S] 223 0 <45223423@example.com>
1.3059 - [C] GROUP alt.crossposts
1.3060 - [S] 211 9999 111111 222222 alt.crossposts
1.3061 - [C] STAT <45223423@example.com>
1.3062 - [S] 223 123456 <45223423@example.com>
1.3063 - [C] STAT
1.3064 - [S] 223 111111 <23894720@example.com>
1.3065 -
1.3066 - The first STAT command establishes the identity of an article in the
1.3067 - group. The second and third show that the server may, but need not,
1.3068 - give the article number when the message-id is specified. The fourth
1.3069 - STAT command shows that zero must be specified if the article isn't
1.3070 - in the currently selected newsgroup. The fifth shows that the
1.3071 - number, if provided, must be that relating to the currently selected
1.3072 - newsgroup. The last one shows that the current article number is
1.3073 - still not changed by the use of STAT with a message-id even if it
1.3074 - returns an article number.
1.3075 -
1.3076 -
1.3077 -
1.3078 -
1.3079 -
1.3080 -Feather Standards Track [Page 55]
1.3081 -
1.3082 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3083 -
1.3084 -
1.3085 -6.3. Article Posting
1.3086 -
1.3087 - Article posting is done in one of two ways: individual article
1.3088 - posting from news-reading clients using POST, and article transfer
1.3089 - from other news servers using IHAVE.
1.3090 -
1.3091 -6.3.1. POST
1.3092 -
1.3093 -6.3.1.1. Usage
1.3094 -
1.3095 - Indicating capability: POST
1.3096 -
1.3097 - This command MUST NOT be pipelined.
1.3098 -
1.3099 - Syntax
1.3100 - POST
1.3101 -
1.3102 - Responses
1.3103 -
1.3104 - Initial responses
1.3105 - 340 Send article to be posted
1.3106 - 440 Posting not permitted
1.3107 -
1.3108 - Subsequent responses
1.3109 - 240 Article received OK
1.3110 - 441 Posting failed
1.3111 -
1.3112 -6.3.1.2. Description
1.3113 -
1.3114 - If posting is allowed, a 340 response MUST be returned to indicate
1.3115 - that the article to be posted should be sent. If posting is
1.3116 - prohibited for some installation-dependent reason, a 440 response
1.3117 - MUST be returned.
1.3118 -
1.3119 - If posting is permitted, the article MUST be in the format specified
1.3120 - in Section 3.6 and MUST be sent by the client to the server as a
1.3121 - multi-line data block (see Section 3.1.1). Thus a single dot (".")
1.3122 - on a line indicates the end of the text, and lines starting with a
1.3123 - dot in the original text have that dot doubled during transmission.
1.3124 -
1.3125 - Following the presentation of the termination sequence by the client,
1.3126 - the server MUST return a response indicating success or failure of
1.3127 - the article transfer. Note that response codes 340 and 440 are used
1.3128 - in direct response to the POST command while 240 and 441 are returned
1.3129 - after the article is sent.
1.3130 -
1.3131 -
1.3132 -
1.3133 -
1.3134 -
1.3135 -
1.3136 -Feather Standards Track [Page 56]
1.3137 -
1.3138 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3139 -
1.3140 -
1.3141 - A response of 240 SHOULD indicate that, barring unforeseen server
1.3142 - errors, the posted article will be made available on the server
1.3143 - and/or transferred to other servers, as appropriate, possibly
1.3144 - following further processing. In other words, articles not wanted by
1.3145 - the server SHOULD be rejected with a 441 response, rather than being
1.3146 - accepted and then discarded silently. However, the client SHOULD NOT
1.3147 - assume that the article has been successfully transferred unless it
1.3148 - receives an affirmative response from the server and SHOULD NOT
1.3149 - assume that it is being made available to other clients without
1.3150 - explicitly checking (for example, using the STAT command).
1.3151 -
1.3152 - If the session is interrupted before the response is received, it is
1.3153 - possible that an affirmative response was sent but has been lost.
1.3154 - Therefore, in any subsequent session, the client SHOULD either check
1.3155 - whether the article was successfully posted before resending or
1.3156 - ensure that the server will allocate the same message-id to the new
1.3157 - attempt (see Appendix A.2). The latter approach is preferred since
1.3158 - the article might not have been made available for reading yet (for
1.3159 - example, it may have to go through a moderation process).
1.3160 -
1.3161 -6.3.1.3. Examples
1.3162 -
1.3163 - Example of a successful posting:
1.3164 -
1.3165 - [C] POST
1.3166 - [S] 340 Input article; end with <CR-LF>.<CR-LF>
1.3167 - [C] From: "Demo User" <nobody@example.net>
1.3168 - [C] Newsgroups: misc.test
1.3169 - [C] Subject: I am just a test article
1.3170 - [C] Organization: An Example Net
1.3171 - [C]
1.3172 - [C] This is just a test article.
1.3173 - [C] .
1.3174 - [S] 240 Article received OK
1.3175 -
1.3176 - Example of an unsuccessful posting:
1.3177 -
1.3178 - [C] POST
1.3179 - [S] 340 Input article; end with <CR-LF>.<CR-LF>
1.3180 - [C] From: "Demo User" <nobody@example.net>
1.3181 - [C] Newsgroups: misc.test
1.3182 - [C] Subject: I am just a test article
1.3183 - [C] Organization: An Example Net
1.3184 - [C]
1.3185 - [C] This is just a test article.
1.3186 - [C] .
1.3187 - [S] 441 Posting failed
1.3188 -
1.3189 -
1.3190 -
1.3191 -
1.3192 -Feather Standards Track [Page 57]
1.3193 -
1.3194 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3195 -
1.3196 -
1.3197 - Example of an attempt to post when posting is not allowed:
1.3198 -
1.3199 - [Initial connection set-up completed.]
1.3200 - [S] 201 NNTP Service Ready, posting prohibited
1.3201 - [C] POST
1.3202 - [S] 440 Posting not permitted
1.3203 -
1.3204 -6.3.2. IHAVE
1.3205 -
1.3206 -6.3.2.1. Usage
1.3207 -
1.3208 - Indicating capability: IHAVE
1.3209 -
1.3210 - This command MUST NOT be pipelined.
1.3211 -
1.3212 - Syntax
1.3213 - IHAVE message-id
1.3214 -
1.3215 - Responses
1.3216 -
1.3217 - Initial responses
1.3218 - 335 Send article to be transferred
1.3219 - 435 Article not wanted
1.3220 - 436 Transfer not possible; try again later
1.3221 -
1.3222 - Subsequent responses
1.3223 - 235 Article transferred OK
1.3224 - 436 Transfer failed; try again later
1.3225 - 437 Transfer rejected; do not retry
1.3226 -
1.3227 - Parameters
1.3228 - message-id Article message-id
1.3229 -
1.3230 -6.3.2.2. Description
1.3231 -
1.3232 - The IHAVE command informs the server that the client has an article
1.3233 - with the specified message-id. If the server desires a copy of that
1.3234 - article, a 335 response MUST be returned, instructing the client to
1.3235 - send the entire article. If the server does not want the article
1.3236 - (if, for example, the server already has a copy of it), a 435
1.3237 - response MUST be returned, indicating that the article is not wanted.
1.3238 - Finally, if the article isn't wanted immediately but the client
1.3239 - should retry later if possible (if, for example, another client is in
1.3240 - the process of sending the same article to the server), a 436
1.3241 - response MUST be returned.
1.3242 -
1.3243 -
1.3244 -
1.3245 -
1.3246 -
1.3247 -
1.3248 -Feather Standards Track [Page 58]
1.3249 -
1.3250 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3251 -
1.3252 -
1.3253 - If transmission of the article is requested, the client MUST send the
1.3254 - entire article, including headers and body, to the server as a
1.3255 - multi-line data block (see Section 3.1.1). Thus, a single dot (".")
1.3256 - on a line indicates the end of the text, and lines starting with a
1.3257 - dot in the original text have that dot doubled during transmission.
1.3258 - The server MUST return a 235 response, indicating that the article
1.3259 - was successfully transferred; a 436 response, indicating that the
1.3260 - transfer failed but should be tried again later; or a 437 response,
1.3261 - indicating that the article was rejected.
1.3262 -
1.3263 - This function differs from the POST command in that it is intended
1.3264 - for use in transferring already-posted articles between hosts. It
1.3265 - SHOULD NOT be used when the client is a personal news-reading
1.3266 - program, since use of this command indicates that the article has
1.3267 - already been posted at another site and is simply being forwarded
1.3268 - from another host. However, despite this, the server MAY elect not
1.3269 - to post or forward the article if, after further examination of the
1.3270 - article, it deems it inappropriate to do so. Reasons for such
1.3271 - subsequent rejection of an article may include problems such as
1.3272 - inappropriate newsgroups or distributions, disc space limitations,
1.3273 - article lengths, garbled headers, and the like. These are typically
1.3274 - restrictions enforced by the server host's news software and not
1.3275 - necessarily by the NNTP server itself.
1.3276 -
1.3277 - The client SHOULD NOT assume that the article has been successfully
1.3278 - transferred unless it receives an affirmative response from the
1.3279 - server. A lack of response (such as a dropped network connection or
1.3280 - a network timeout) SHOULD be treated the same as a 436 response.
1.3281 -
1.3282 - Because some news server software may not immediately be able to
1.3283 - determine whether an article is suitable for posting or forwarding,
1.3284 - an NNTP server MAY acknowledge the successful transfer of the article
1.3285 - (with a 235 response) but later silently discard it.
1.3286 -
1.3287 -
1.3288 -
1.3289 -
1.3290 -
1.3291 -
1.3292 -
1.3293 -
1.3294 -
1.3295 -
1.3296 -
1.3297 -
1.3298 -
1.3299 -
1.3300 -
1.3301 -
1.3302 -
1.3303 -
1.3304 -Feather Standards Track [Page 59]
1.3305 -
1.3306 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3307 -
1.3308 -
1.3309 -6.3.2.3. Examples
1.3310 -
1.3311 - Example of successfully sending an article to another site:
1.3312 -
1.3313 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3314 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3315 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3316 - [C] From: "Demo User" <nobody@example.com>
1.3317 - [C] Newsgroups: misc.test
1.3318 - [C] Subject: I am just a test article
1.3319 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3320 - [C] Organization: An Example Com, San Jose, CA
1.3321 - [C] Message-ID: <i.am.an.article.you.will.want@example.com>
1.3322 - [C]
1.3323 - [C] This is just a test article.
1.3324 - [C] .
1.3325 - [S] 235 Article transferred OK
1.3326 -
1.3327 - Example of sending an article to another site that rejects it. Note
1.3328 - that the message-id in the IHAVE command is not the same as the one
1.3329 - in the article headers; while this is bad practice and SHOULD NOT be
1.3330 - done, it is not forbidden.
1.3331 -
1.3332 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3333 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3334 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3335 - [C] From: "Demo User" <nobody@example.com>
1.3336 - [C] Newsgroups: misc.test
1.3337 - [C] Subject: I am just a test article
1.3338 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3339 - [C] Organization: An Example Com, San Jose, CA
1.3340 - [C] Message-ID: <i.am.an.article.you.have@example.com>
1.3341 - [C]
1.3342 - [C] This is just a test article.
1.3343 - [C] .
1.3344 - [S] 437 Article rejected; don't send again
1.3345 -
1.3346 -
1.3347 -
1.3348 -
1.3349 -
1.3350 -
1.3351 -
1.3352 -
1.3353 -
1.3354 -
1.3355 -
1.3356 -
1.3357 -
1.3358 -
1.3359 -
1.3360 -Feather Standards Track [Page 60]
1.3361 -
1.3362 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3363 -
1.3364 -
1.3365 - Example of sending an article to another site where the transfer
1.3366 - fails:
1.3367 -
1.3368 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3369 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3370 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3371 - [C] From: "Demo User" <nobody@example.com>
1.3372 - [C] Newsgroups: misc.test
1.3373 - [C] Subject: I am just a test article
1.3374 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3375 - [C] Organization: An Example Com, San Jose, CA
1.3376 - [C] Message-ID: <i.am.an.article.you.will.want@example.com>
1.3377 - [C]
1.3378 - [C] This is just a test article.
1.3379 - [C] .
1.3380 - [S] 436 Transfer failed
1.3381 -
1.3382 - Example of sending an article to a site that already has it:
1.3383 -
1.3384 - [C] IHAVE <i.am.an.article.you.have@example.com>
1.3385 - [S] 435 Duplicate
1.3386 -
1.3387 - Example of sending an article to a site that requests that the
1.3388 - article be tried again later:
1.3389 -
1.3390 - [C] IHAVE <i.am.an.article.you.defer@example.com>
1.3391 - [S] 436 Retry later
1.3392 -
1.3393 -7. Information Commands
1.3394 -
1.3395 - This section lists other commands that may be used at any time
1.3396 - between the beginning of a session and its termination. Using these
1.3397 - commands does not alter any state information, but the response
1.3398 - generated from their use may provide useful information to clients.
1.3399 -
1.3400 -7.1. DATE
1.3401 -
1.3402 -7.1.1. Usage
1.3403 -
1.3404 - Indicating capability: READER
1.3405 -
1.3406 - Syntax
1.3407 - DATE
1.3408 -
1.3409 - Responses
1.3410 - 111 yyyymmddhhmmss Server date and time
1.3411 -
1.3412 -
1.3413 -
1.3414 -
1.3415 -
1.3416 -Feather Standards Track [Page 61]
1.3417 -
1.3418 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3419 -
1.3420 -
1.3421 - Parameters
1.3422 - yyyymmddhhmmss Current UTC date and time on server
1.3423 -
1.3424 -7.1.2. Description
1.3425 -
1.3426 - This command exists to help clients find out the current Coordinated
1.3427 - Universal Time [TF.686-1] from the server's perspective. This
1.3428 - command SHOULD NOT be used as a substitute for NTP [RFC1305] but to
1.3429 - provide information that might be useful when using the NEWNEWS
1.3430 - command (see Section 7.4).
1.3431 -
1.3432 - The DATE command MUST return a timestamp from the same clock as is
1.3433 - used for determining article arrival and group creation times (see
1.3434 - Section 6). This clock SHOULD be monotonic, and adjustments SHOULD
1.3435 - be made by running it fast or slow compared to "real" time rather
1.3436 - than by making sudden jumps. A system providing NNTP service SHOULD
1.3437 - keep the system clock as accurate as possible, either with NTP or by
1.3438 - some other method.
1.3439 -
1.3440 - The server MUST return a 111 response specifying the date and time on
1.3441 - the server in the form yyyymmddhhmmss. This date and time is in
1.3442 - Coordinated Universal Time.
1.3443 -
1.3444 -7.1.3. Examples
1.3445 -
1.3446 - [C] DATE
1.3447 - [S] 111 19990623135624
1.3448 -
1.3449 -7.2. HELP
1.3450 -
1.3451 -7.2.1. Usage
1.3452 -
1.3453 - This command is mandatory.
1.3454 -
1.3455 - Syntax
1.3456 - HELP
1.3457 -
1.3458 - Responses
1.3459 - 100 Help text follows (multi-line)
1.3460 -
1.3461 -7.2.2. Description
1.3462 -
1.3463 - This command provides a short summary of the commands that are
1.3464 - understood by this implementation of the server. The help text will
1.3465 - be presented as a multi-line data block following the 100 response
1.3466 - code.
1.3467 -
1.3468 -
1.3469 -
1.3470 -
1.3471 -
1.3472 -Feather Standards Track [Page 62]
1.3473 -
1.3474 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3475 -
1.3476 -
1.3477 - This text is not guaranteed to be in any particular format (but must
1.3478 - be UTF-8) and MUST NOT be used by clients as a replacement for the
1.3479 - CAPABILITIES command described in Section 5.2.
1.3480 -
1.3481 -7.2.3. Examples
1.3482 -
1.3483 - [C] HELP
1.3484 - [S] 100 Help text follows
1.3485 - [S] This is some help text. There is no specific
1.3486 - [S] formatting requirement for this test, though
1.3487 - [S] it is customary for it to list the valid commands
1.3488 - [S] and give a brief definition of what they do.
1.3489 - [S] .
1.3490 -
1.3491 -7.3. NEWGROUPS
1.3492 -
1.3493 -7.3.1. Usage
1.3494 -
1.3495 - Indicating capability: READER
1.3496 -
1.3497 - Syntax
1.3498 - NEWGROUPS date time [GMT]
1.3499 -
1.3500 - Responses
1.3501 - 231 List of new newsgroups follows (multi-line)
1.3502 -
1.3503 - Parameters
1.3504 - date Date in yymmdd or yyyymmdd format
1.3505 - time Time in hhmmss format
1.3506 -
1.3507 -7.3.2. Description
1.3508 -
1.3509 - This command returns a list of newsgroups created on the server since
1.3510 - the specified date and time. The results are in the same format as
1.3511 - the LIST ACTIVE command (see Section 7.6.3). However, they MAY
1.3512 - include groups not available on the server (and so not returned by
1.3513 - LIST ACTIVE) and MAY omit groups for which the creation date is not
1.3514 - available.
1.3515 -
1.3516 - The date is specified as 6 or 8 digits in the format [xx]yymmdd,
1.3517 - where xx is the first two digits of the year (19-99), yy is the last
1.3518 - two digits of the year (00-99), mm is the month (01-12), and dd is
1.3519 - the day of the month (01-31). Clients SHOULD specify all four digits
1.3520 - of the year. If the first two digits of the year are not specified
1.3521 - (this is supported only for backward compatibility), the year is to
1.3522 - be taken from the current century if yy is smaller than or equal to
1.3523 - the current year, and the previous century otherwise.
1.3524 -
1.3525 -
1.3526 -
1.3527 -
1.3528 -Feather Standards Track [Page 63]
1.3529 -
1.3530 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3531 -
1.3532 -
1.3533 - The time is specified as 6 digits in the format hhmmss, where hh is
1.3534 - the hours in the 24-hour clock (00-23), mm is the minutes (00-59),
1.3535 - and ss is the seconds (00-60, to allow for leap seconds). The token
1.3536 - "GMT" specifies that the date and time are given in Coordinated
1.3537 - Universal Time [TF.686-1]; if it is omitted, then the date and time
1.3538 - are specified in the server's local timezone. Note that there is no
1.3539 - way of using the protocol specified in this document to establish the
1.3540 - server's local timezone.
1.3541 -
1.3542 - Note that an empty list is a possible valid response and indicates
1.3543 - that there are no new newsgroups since that date-time.
1.3544 -
1.3545 - Clients SHOULD make all queries using Coordinated Universal Time
1.3546 - (i.e., by including the "GMT" argument) when possible.
1.3547 -
1.3548 -7.3.3. Examples
1.3549 -
1.3550 - Example where there are new groups:
1.3551 -
1.3552 - [C] NEWGROUPS 19990624 000000 GMT
1.3553 - [S] 231 list of new newsgroups follows
1.3554 - [S] alt.rfc-writers.recovery 4 1 y
1.3555 - [S] tx.natives.recovery 89 56 y
1.3556 - [S] .
1.3557 -
1.3558 - Example where there are no new groups:
1.3559 -
1.3560 - [C] NEWGROUPS 19990624 000000 GMT
1.3561 - [S] 231 list of new newsgroups follows
1.3562 - [S] .
1.3563 -
1.3564 -7.4. NEWNEWS
1.3565 -
1.3566 -7.4.1. Usage
1.3567 -
1.3568 - Indicating capability: NEWNEWS
1.3569 -
1.3570 - Syntax
1.3571 - NEWNEWS wildmat date time [GMT]
1.3572 -
1.3573 - Responses
1.3574 - 230 List of new articles follows (multi-line)
1.3575 -
1.3576 - Parameters
1.3577 - wildmat Newsgroups of interest
1.3578 - date Date in yymmdd or yyyymmdd format
1.3579 - time Time in hhmmss format
1.3580 -
1.3581 -
1.3582 -
1.3583 -
1.3584 -Feather Standards Track [Page 64]
1.3585 -
1.3586 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3587 -
1.3588 -
1.3589 -7.4.2. Description
1.3590 -
1.3591 - This command returns a list of message-ids of articles posted or
1.3592 - received on the server, in the newsgroups whose names match the
1.3593 - wildmat, since the specified date and time. One message-id is sent
1.3594 - on each line; the order of the response has no specific significance
1.3595 - and may vary from response to response in the same session. A
1.3596 - message-id MAY appear more than once; if it does, it has the same
1.3597 - meaning as if it appeared only once.
1.3598 -
1.3599 - Date and time are in the same format as the NEWGROUPS command (see
1.3600 - Section 7.3).
1.3601 -
1.3602 - Note that an empty list is a possible valid response and indicates
1.3603 - that there is currently no new news in the relevant groups.
1.3604 -
1.3605 - Clients SHOULD make all queries in Coordinated Universal Time (i.e.,
1.3606 - by using the "GMT" argument) when possible.
1.3607 -
1.3608 -7.4.3. Examples
1.3609 -
1.3610 - Example where there are new articles:
1.3611 -
1.3612 - [C] NEWNEWS news.*,sci.* 19990624 000000 GMT
1.3613 - [S] 230 list of new articles by message-id follows
1.3614 - [S] <i.am.a.new.article@example.com>
1.3615 - [S] <i.am.another.new.article@example.com>
1.3616 - [S] .
1.3617 -
1.3618 - Example where there are no new articles:
1.3619 -
1.3620 - [C] NEWNEWS alt.* 19990624 000000 GMT
1.3621 - [S] 230 list of new articles by message-id follows
1.3622 - [S] .
1.3623 -
1.3624 -7.5. Time
1.3625 -
1.3626 - As described in Section 6, each article has an arrival timestamp.
1.3627 - Each newsgroup also has a creation timestamp. These timestamps are
1.3628 - used by the NEWNEWS and NEWGROUP commands to construct their
1.3629 - responses.
1.3630 -
1.3631 - Clients can ensure that they do not have gaps in lists of articles or
1.3632 - groups by using the DATE command in the following manner:
1.3633 -
1.3634 - First session:
1.3635 - Issue DATE command and record result.
1.3636 - Issue NEWNEWS command using a previously chosen timestamp.
1.3637 -
1.3638 -
1.3639 -
1.3640 -Feather Standards Track [Page 65]
1.3641 -
1.3642 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3643 -
1.3644 -
1.3645 - Subsequent sessions:
1.3646 - Issue DATE command and hold result in temporary storage.
1.3647 - Issue NEWNEWS command using timestamp saved from previous session.
1.3648 - Overwrite saved timestamp with that currently in temporary
1.3649 - storage.
1.3650 -
1.3651 - In order to allow for minor errors, clients MAY want to adjust the
1.3652 - timestamp back by two or three minutes before using it in NEWNEWS.
1.3653 -
1.3654 -7.5.1. Examples
1.3655 -
1.3656 - First session:
1.3657 -
1.3658 - [C] DATE
1.3659 - [S] 111 20010203112233
1.3660 - [C] NEWNEWS local.chat 20001231 235959 GMT
1.3661 - [S] 230 list follows
1.3662 - [S] <article.1@local.service>
1.3663 - [S] <article.2@local.service>
1.3664 - [S] <article.3@local.service>
1.3665 - [S] .
1.3666 -
1.3667 - Second session (the client has subtracted 3 minutes from the
1.3668 - timestamp returned previously):
1.3669 -
1.3670 - [C] DATE
1.3671 - [S] 111 20010204003344
1.3672 - [C] NEWNEWS local.chat 20010203 111933 GMT
1.3673 - [S] 230 list follows
1.3674 - [S] <article.3@local.service>
1.3675 - [S] <article.4@local.service>
1.3676 - [S] <article.5@local.service>
1.3677 - [S] .
1.3678 -
1.3679 - Note how <article.3@local.service> arrived in the 3 minute gap and so
1.3680 - is listed in both responses.
1.3681 -
1.3682 -7.6. The LIST Commands
1.3683 -
1.3684 - The LIST family of commands all return information that is multi-line
1.3685 - and that can, in general, be expected not to change during the
1.3686 - session. Often the information is related to newsgroups, in which
1.3687 - case the response has one line per newsgroup and a wildmat MAY be
1.3688 - provided to restrict the groups for which information is returned.
1.3689 -
1.3690 - The set of available keywords (including those provided by
1.3691 - extensions) is given in the capability list with capability label
1.3692 - LIST.
1.3693 -
1.3694 -
1.3695 -
1.3696 -Feather Standards Track [Page 66]
1.3697 -
1.3698 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3699 -
1.3700 -
1.3701 -7.6.1. LIST
1.3702 -
1.3703 -7.6.1.1. Usage
1.3704 -
1.3705 - Indicating capability: LIST
1.3706 -
1.3707 - Syntax
1.3708 - LIST [keyword [wildmat|argument]]
1.3709 -
1.3710 - Responses
1.3711 - 215 Information follows (multi-line)
1.3712 -
1.3713 - Parameters
1.3714 - keyword Information requested [1]
1.3715 - argument Specific to keyword
1.3716 - wildmat Groups of interest
1.3717 -
1.3718 - [1] If no keyword is provided, it defaults to ACTIVE.
1.3719 -
1.3720 -7.6.1.2. Description
1.3721 -
1.3722 - The LIST command allows the server to provide blocks of information
1.3723 - to the client. This information may be global or may be related to
1.3724 - newsgroups; in the latter case, the information may be returned
1.3725 - either for all groups or only for those matching a wildmat. Each
1.3726 - block of information is represented by a different keyword. The
1.3727 - command returns the specific information identified by the keyword.
1.3728 -
1.3729 - If the information is available, it is returned as a multi-line data
1.3730 - block following the 215 response code. The format of the information
1.3731 - depends on the keyword. The information MAY be affected by the
1.3732 - additional argument, but the format MUST NOT be.
1.3733 -
1.3734 - If the information is based on newsgroups and the optional wildmat
1.3735 - argument is specified, the response is limited to only the groups (if
1.3736 - any) whose names match the wildmat and for which the information is
1.3737 - available.
1.3738 -
1.3739 - Note that an empty list is a possible valid response; for a
1.3740 - newsgroup-based keyword, it indicates that there are no groups
1.3741 - meeting the above criteria.
1.3742 -
1.3743 - If the keyword is not recognised, or if an argument is specified and
1.3744 - the keyword does not expect one, a 501 response code MUST BE
1.3745 - returned. If the keyword is recognised but the server does not
1.3746 - maintain the information, a 503 response code MUST BE returned.
1.3747 -
1.3748 -
1.3749 -
1.3750 -
1.3751 -
1.3752 -Feather Standards Track [Page 67]
1.3753 -
1.3754 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3755 -
1.3756 -
1.3757 - The LIST command MUST NOT change the visible state of the server in
1.3758 - any way; that is, the behaviour of subsequent commands MUST NOT be
1.3759 - affected by whether the LIST command was issued. For example, it
1.3760 - MUST NOT make groups available that otherwise would not have been.
1.3761 -
1.3762 -7.6.1.3. Examples
1.3763 -
1.3764 - Example of LIST with the ACTIVE keyword:
1.3765 -
1.3766 - [C] LIST ACTIVE
1.3767 - [S] 215 list of newsgroups follows
1.3768 - [S] misc.test 3002322 3000234 y
1.3769 - [S] comp.risks 442001 441099 m
1.3770 - [S] alt.rfc-writers.recovery 4 1 y
1.3771 - [S] tx.natives.recovery 89 56 y
1.3772 - [S] tx.natives.recovery.d 11 9 n
1.3773 - [S] .
1.3774 -
1.3775 - Example of LIST with no keyword:
1.3776 -
1.3777 - [C] LIST
1.3778 - [S] 215 list of newsgroups follows
1.3779 - [S] misc.test 3002322 3000234 y
1.3780 - [S] comp.risks 442001 441099 m
1.3781 - [S] alt.rfc-writers.recovery 4 1 y
1.3782 - [S] tx.natives.recovery 89 56 y
1.3783 - [S] tx.natives.recovery.d 11 9 n
1.3784 - [S] .
1.3785 -
1.3786 - The output is identical to that of the previous example.
1.3787 -
1.3788 - Example of LIST on a newsgroup-based keyword with and without
1.3789 - wildmat:
1.3790 -
1.3791 - [C] LIST ACTIVE.TIMES
1.3792 - [S] 215 information follows
1.3793 - [S] misc.test 930445408 <creatme@isc.org>
1.3794 - [S] alt.rfc-writers.recovery 930562309 <m@example.com>
1.3795 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3796 - [S] .
1.3797 - [C] LIST ACTIVE.TIMES tx.*
1.3798 - [S] 215 information follows
1.3799 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3800 - [S] .
1.3801 -
1.3802 -
1.3803 -
1.3804 -
1.3805 -
1.3806 -
1.3807 -
1.3808 -Feather Standards Track [Page 68]
1.3809 -
1.3810 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3811 -
1.3812 -
1.3813 - Example of LIST returning an error where the keyword is recognized
1.3814 - but the software does not maintain this information:
1.3815 -
1.3816 - [C] CAPABILITIES
1.3817 - [S] 101 Capability list:
1.3818 - [S] VERSION 2
1.3819 - [S] READER
1.3820 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
1.3821 - [S] .
1.3822 - [C] LIST XTRA.DATA
1.3823 - [S] 503 Data item not stored
1.3824 -
1.3825 - Example of LIST where the keyword is not recognised:
1.3826 -
1.3827 - [C] CAPABILITIES
1.3828 - [S] 101 Capability list:
1.3829 - [S] VERSION 2
1.3830 - [S] READER
1.3831 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
1.3832 - [S] .
1.3833 - [C] LIST DISTRIB.PATS
1.3834 - [S] 501 Syntax Error
1.3835 -
1.3836 -7.6.2. Standard LIST Keywords
1.3837 -
1.3838 - This specification defines the following LIST keywords:
1.3839 -
1.3840 - +--------------+---------------+------------------------------------+
1.3841 - | Keyword | Definition | Status |
1.3842 - +--------------+---------------+------------------------------------+
1.3843 - | ACTIVE | Section 7.6.3 | Mandatory if the READER capability |
1.3844 - | | | is advertised |
1.3845 - | | | |
1.3846 - | ACTIVE.TIMES | Section 7.6.4 | Optional |
1.3847 - | | | |
1.3848 - | DISTRIB.PATS | Section 7.6.5 | Optional |
1.3849 - | | | |
1.3850 - | HEADERS | Section 8.6 | Mandatory if the HDR capability is |
1.3851 - | | | advertised |
1.3852 - | | | |
1.3853 - | NEWSGROUPS | Section 7.6.6 | Mandatory if the READER capability |
1.3854 - | | | is advertised |
1.3855 - | | | |
1.3856 - | OVERVIEW.FMT | Section 8.4 | Mandatory if the OVER capability |
1.3857 - | | | is advertised |
1.3858 - +--------------+---------------+------------------------------------+
1.3859 -
1.3860 -
1.3861 -
1.3862 -
1.3863 -
1.3864 -Feather Standards Track [Page 69]
1.3865 -
1.3866 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3867 -
1.3868 -
1.3869 - Where one of these LIST keywords is supported by a server, it MUST
1.3870 - have the meaning given in the relevant sub-section.
1.3871 -
1.3872 -7.6.3. LIST ACTIVE
1.3873 -
1.3874 - This keyword MUST be supported by servers advertising the READER
1.3875 - capability.
1.3876 -
1.3877 - LIST ACTIVE returns a list of valid newsgroups and associated
1.3878 - information. If no wildmat is specified, the server MUST include
1.3879 - every group that the client is permitted to select with the GROUP
1.3880 - command (Section 6.1.1). Each line of this list consists of four
1.3881 - fields separated from each other by one or more spaces:
1.3882 -
1.3883 - o The name of the newsgroup.
1.3884 - o The reported high water mark for the group.
1.3885 - o The reported low water mark for the group.
1.3886 - o The current status of the group on this server.
1.3887 -
1.3888 - The reported high and low water marks are as described in the GROUP
1.3889 - command (see Section 6.1.1), but note that they are in the opposite
1.3890 - order to the 211 response to that command.
1.3891 -
1.3892 - The status field is typically one of the following:
1.3893 -
1.3894 - "y" Posting is permitted.
1.3895 -
1.3896 - "n" Posting is not permitted.
1.3897 -
1.3898 - "m" Postings will be forwarded to the newsgroup moderator.
1.3899 -
1.3900 - The server SHOULD use these values when these meanings are required
1.3901 - and MUST NOT use them with any other meaning. Other values for the
1.3902 - status may exist; the definition of these other values and the
1.3903 - circumstances under which they are returned may be specified in an
1.3904 - extension or may be private to the server. A client SHOULD treat an
1.3905 - unrecognized status as giving no information.
1.3906 -
1.3907 - The status of a newsgroup only indicates how posts to that newsgroup
1.3908 - are normally processed and is not necessarily customised to the
1.3909 - specific client. For example, if the current client is forbidden
1.3910 - from posting, then this will apply equally to groups with status "y".
1.3911 - Conversely, a client with special privileges (not defined by this
1.3912 - specification) might be able to post to a group with status "n".
1.3913 -
1.3914 -
1.3915 -
1.3916 -
1.3917 -
1.3918 -
1.3919 -
1.3920 -Feather Standards Track [Page 70]
1.3921 -
1.3922 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3923 -
1.3924 -
1.3925 - For example:
1.3926 -
1.3927 - [C] LIST ACTIVE
1.3928 - [S] 215 list of newsgroups follows
1.3929 - [S] misc.test 3002322 3000234 y
1.3930 - [S] comp.risks 442001 441099 m
1.3931 - [S] alt.rfc-writers.recovery 4 1 y
1.3932 - [S] tx.natives.recovery 89 56 y
1.3933 - [S] tx.natives.recovery.d 11 9 n
1.3934 - [S] .
1.3935 -
1.3936 - or, on an implementation that includes leading zeroes:
1.3937 -
1.3938 - [C] LIST ACTIVE
1.3939 - [S] 215 list of newsgroups follows
1.3940 - [S] misc.test 0003002322 0003000234 y
1.3941 - [S] comp.risks 0000442001 0000441099 m
1.3942 - [S] alt.rfc-writers.recovery 0000000004 0000000001 y
1.3943 - [S] tx.natives.recovery 0000000089 0000000056 y
1.3944 - [S] tx.natives.recovery.d 0000000011 0000000009 n
1.3945 - [S] .
1.3946 -
1.3947 - The information is newsgroup based, and a wildmat MAY be specified,
1.3948 - in which case the response is limited to only the groups (if any)
1.3949 - whose names match the wildmat. For example:
1.3950 -
1.3951 - [C] LIST ACTIVE *.recovery
1.3952 - [S] 215 list of newsgroups follows
1.3953 - [S] alt.rfc-writers.recovery 4 1 y
1.3954 - [S] tx.natives.recovery 89 56 y
1.3955 - [S] .
1.3956 -
1.3957 -7.6.4. LIST ACTIVE.TIMES
1.3958 -
1.3959 - This keyword is optional.
1.3960 -
1.3961 - The active.times list is maintained by some NNTP servers to contain
1.3962 - information about who created a particular newsgroup and when. Each
1.3963 - line of this list consists of three fields separated from each other
1.3964 - by one or more spaces. The first field is the name of the newsgroup.
1.3965 - The second is the time when this group was created on this news
1.3966 - server, measured in seconds since the start of January 1, 1970. The
1.3967 - third is plain text intended to describe the entity that created the
1.3968 - newsgroup; it is often a mailbox as defined in RFC 2822 [RFC2822].
1.3969 - For example:
1.3970 -
1.3971 -
1.3972 -
1.3973 -
1.3974 -
1.3975 -
1.3976 -Feather Standards Track [Page 71]
1.3977 -
1.3978 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3979 -
1.3980 -
1.3981 - [C] LIST ACTIVE.TIMES
1.3982 - [S] 215 information follows
1.3983 - [S] misc.test 930445408 <creatme@isc.org>
1.3984 - [S] alt.rfc-writers.recovery 930562309 <m@example.com>
1.3985 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3986 - [S] .
1.3987 -
1.3988 - The list MAY omit newsgroups for which the information is unavailable
1.3989 - and MAY include groups not available on the server; in particular, it
1.3990 - MAY omit all groups created before the date and time of the oldest
1.3991 - entry. The client MUST NOT assume that the list is complete or that
1.3992 - it matches the list returned by the LIST ACTIVE command
1.3993 - (Section 7.6.3). The NEWGROUPS command (Section 7.3) may provide a
1.3994 - better way to access this information, and the results of the two
1.3995 - commands SHOULD be consistent except that, if the latter is invoked
1.3996 - with a date and time earlier than the oldest entry in active.times
1.3997 - list, its result may include extra groups.
1.3998 -
1.3999 - The information is newsgroup based, and a wildmat MAY be specified,
1.4000 - in which case the response is limited to only the groups (if any)
1.4001 - whose names match the wildmat.
1.4002 -
1.4003 -7.6.5. LIST DISTRIB.PATS
1.4004 -
1.4005 - This keyword is optional.
1.4006 -
1.4007 - The distrib.pats list is maintained by some NNTP servers to assist
1.4008 - clients to choose a value for the content of the Distribution header
1.4009 - of a news article being posted. Each line of this list consists of
1.4010 - three fields separated from each other by a colon (":"). The first
1.4011 - field is a weight, the second field is a wildmat (which may be a
1.4012 - simple newsgroup name), and the third field is a value for the
1.4013 - Distribution header content. For example:
1.4014 -
1.4015 - [C] LIST DISTRIB.PATS
1.4016 - [S] 215 information follows
1.4017 - [S] 10:local.*:local
1.4018 - [S] 5:*:world
1.4019 - [S] 20:local.here.*:thissite
1.4020 - [S] .
1.4021 -
1.4022 - The client MAY use this information to construct an appropriate
1.4023 - Distribution header given the name of a newsgroup. To do so, it
1.4024 - should determine the lines whose second field matches the newsgroup
1.4025 - name, select from among them the line with the highest weight (with 0
1.4026 - being the lowest), and use the value of the third field to construct
1.4027 - the Distribution header.
1.4028 -
1.4029 -
1.4030 -
1.4031 -
1.4032 -Feather Standards Track [Page 72]
1.4033 -
1.4034 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4035 -
1.4036 -
1.4037 - The information is not newsgroup based, and an argument MUST NOT be
1.4038 - specified.
1.4039 -
1.4040 -7.6.6. LIST NEWSGROUPS
1.4041 -
1.4042 - This keyword MUST be supported by servers advertising the READER
1.4043 - capability.
1.4044 -
1.4045 - The newsgroups list is maintained by NNTP servers to contain the name
1.4046 - of each newsgroup that is available on the server and a short
1.4047 - description about the purpose of the group. Each line of this list
1.4048 - consists of two fields separated from each other by one or more space
1.4049 - or TAB characters (the usual practice is a single TAB). The first
1.4050 - field is the name of the newsgroup, and the second is a short
1.4051 - description of the group. For example:
1.4052 -
1.4053 - [C] LIST NEWSGROUPS
1.4054 - [S] 215 information follows
1.4055 - [S] misc.test General Usenet testing
1.4056 - [S] alt.rfc-writers.recovery RFC Writers Recovery
1.4057 - [S] tx.natives.recovery Texas Natives Recovery
1.4058 - [S] .
1.4059 -
1.4060 - The list MAY omit newsgroups for which the information is unavailable
1.4061 - and MAY include groups not available on the server. The client MUST
1.4062 - NOT assume that the list is complete or that it matches the list
1.4063 - returned by LIST ACTIVE.
1.4064 -
1.4065 - The description SHOULD be in UTF-8. However, servers often obtain
1.4066 - the information from external sources. These sources may have used
1.4067 - different encodings (ones that use octets in the range 128 to 255 in
1.4068 - some other manner) and, in that case, the server MAY pass it on
1.4069 - unchanged. Therefore, clients MUST be prepared to receive such
1.4070 - descriptions.
1.4071 -
1.4072 - The information is newsgroup based, and a wildmat MAY be specified,
1.4073 - in which case the response is limited to only the groups (if any)
1.4074 - whose names match the wildmat.
1.4075 -
1.4076 -8. Article Field Access Commands
1.4077 -
1.4078 - This section lists commands that may be used to access specific
1.4079 - article fields; that is, headers of articles and metadata about
1.4080 - articles. These commands typically fetch data from an "overview
1.4081 - database", which is a database of headers extracted from incoming
1.4082 - articles plus metadata determined as the article arrives. Only
1.4083 - certain fields are included in the database.
1.4084 -
1.4085 -
1.4086 -
1.4087 -
1.4088 -Feather Standards Track [Page 73]
1.4089 -
1.4090 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4091 -
1.4092 -
1.4093 - This section is based on the Overview/NOV database [ROBE1995]
1.4094 - developed by Geoff Collyer.
1.4095 -
1.4096 -8.1. Article Metadata
1.4097 -
1.4098 - Article "metadata" is data about articles that does not occur within
1.4099 - the article itself. Each metadata item has a name that MUST begin
1.4100 - with a colon (and that MUST NOT contain a colon elsewhere within it).
1.4101 - As with header names, metadata item names are not case sensitive.
1.4102 -
1.4103 - When generating a metadata item, the server MUST compute it for
1.4104 - itself and MUST NOT trust any related value provided in the article.
1.4105 - (In particular, a Lines or Bytes header in the article MUST NOT be
1.4106 - assumed to specify the correct number of lines or bytes in the
1.4107 - article.) If the server has access to several non-identical copies
1.4108 - of an article, the value returned MUST be correct for any copy of
1.4109 - that article retrieved during the same session.
1.4110 -
1.4111 - This specification defines two metadata items: ":bytes" and ":lines".
1.4112 - Other metadata items may be defined by extensions. The names of
1.4113 - metadata items defined by registered extensions MUST NOT begin with
1.4114 - ":x-". To avoid the risk of a clash with a future registered
1.4115 - extension, the names of metadata items defined by private extensions
1.4116 - SHOULD begin with ":x-".
1.4117 -
1.4118 -8.1.1. The :bytes Metadata Item
1.4119 -
1.4120 - The :bytes metadata item for an article is a decimal integer. It
1.4121 - SHOULD equal the number of octets in the entire article: headers,
1.4122 - body, and separating empty line (counting a CRLF pair as two octets,
1.4123 - and excluding both the "." CRLF terminating the response and any "."
1.4124 - added for "dot-stuffing" purposes).
1.4125 -
1.4126 - Note to client implementers: some existing servers return a value
1.4127 - different from that above. The commonest reasons for this are as
1.4128 - follows:
1.4129 -
1.4130 - o Counting a CRLF pair as one octet.
1.4131 -
1.4132 - o Including the "." character used for dot-stuffing in the number.
1.4133 -
1.4134 - o Including the terminating "." CRLF in the number.
1.4135 -
1.4136 - o Using one copy of an article for counting the octets but then
1.4137 - returning another one that differs in some (permitted) manner.
1.4138 -
1.4139 - Implementations should be prepared for such variation and MUST NOT
1.4140 - rely on the value being accurate.
1.4141 -
1.4142 -
1.4143 -
1.4144 -Feather Standards Track [Page 74]
1.4145 -
1.4146 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4147 -
1.4148 -
1.4149 -8.1.2. The :lines Metadata Item
1.4150 -
1.4151 - The :lines metadata item for an article is a decimal integer. It
1.4152 - MUST equal the number of lines in the article body (excluding the
1.4153 - empty line separating headers and body). Equivalently, it is two
1.4154 - less than the number of CRLF pairs that the BODY command would return
1.4155 - for that article (the extra two are those following the response code
1.4156 - and the termination octet).
1.4157 -
1.4158 -8.2. Database Consistency
1.4159 -
1.4160 - The information stored in the overview database may change over time.
1.4161 - If the database records the content or absence of a given field (that
1.4162 - is, a header or metadata item) for all articles, it is said to be
1.4163 - "consistent" for that field. If it records the content of a header
1.4164 - for some articles but not for others that nevertheless included that
1.4165 - header, or if it records a metadata item for some articles but not
1.4166 - for others to which that item applies, it is said to be
1.4167 - "inconsistent" for that field.
1.4168 -
1.4169 - The LIST OVERVIEW.FMT command SHOULD list all the fields for which
1.4170 - the database is consistent at that moment. It MAY omit such fields
1.4171 - (for example, if it is not known whether the database is consistent
1.4172 - or inconsistent). It MUST NOT include fields for which the database
1.4173 - is inconsistent or that are not stored in the database. Therefore,
1.4174 - if a header appears in the LIST OVERVIEW.FMT output but not in the
1.4175 - OVER output for a given article, that header does not appear in the
1.4176 - article (similarly for metadata items).
1.4177 -
1.4178 - These rules assume that the fields being stored in the database
1.4179 - remain constant for long periods of time, and therefore the database
1.4180 - will be consistent. When the set of fields to be stored is changed,
1.4181 - it will be inconsistent until either the database is rebuilt or the
1.4182 - only articles remaining are those received since the change.
1.4183 - Therefore, the output from LIST OVERVIEW.FMT needs to be altered
1.4184 - twice. Firstly, before any fields stop being stored they MUST be
1.4185 - removed from the output; then, when the database is once more known
1.4186 - to be consistent, the new fields SHOULD be added to the output.
1.4187 -
1.4188 - If the HDR command uses the overview database rather than taking
1.4189 - information directly from the articles, the same issues of
1.4190 - consistency and inconsistency apply, and the LIST HEADERS command
1.4191 - SHOULD take the same approach as the LIST OVERVIEW.FMT command in
1.4192 - resolving them.
1.4193 -
1.4194 -
1.4195 -
1.4196 -
1.4197 -
1.4198 -
1.4199 -
1.4200 -Feather Standards Track [Page 75]
1.4201 -
1.4202 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4203 -
1.4204 -
1.4205 -8.3. OVER
1.4206 -
1.4207 -8.3.1. Usage
1.4208 -
1.4209 - Indicating capability: OVER
1.4210 -
1.4211 - Syntax
1.4212 - OVER message-id
1.4213 - OVER range
1.4214 - OVER
1.4215 -
1.4216 - Responses
1.4217 -
1.4218 - First form (message-id specified)
1.4219 - 224 Overview information follows (multi-line)
1.4220 - 430 No article with that message-id
1.4221 -
1.4222 - Second form (range specified)
1.4223 - 224 Overview information follows (multi-line)
1.4224 - 412 No newsgroup selected
1.4225 - 423 No articles in that range
1.4226 -
1.4227 - Third form (current article number used)
1.4228 - 224 Overview information follows (multi-line)
1.4229 - 412 No newsgroup selected
1.4230 - 420 Current article number is invalid
1.4231 -
1.4232 - Parameters
1.4233 - range Number(s) of articles
1.4234 - message-id Message-id of article
1.4235 -
1.4236 -8.3.2. Description
1.4237 -
1.4238 - The OVER command returns the contents of all the fields in the
1.4239 - database for an article specified by message-id, or from a specified
1.4240 - article or range of articles in the currently selected newsgroup.
1.4241 -
1.4242 - The message-id argument indicates a specific article. The range
1.4243 - argument may be any of the following:
1.4244 -
1.4245 - o An article number.
1.4246 -
1.4247 - o An article number followed by a dash to indicate all following.
1.4248 -
1.4249 - o An article number followed by a dash followed by another article
1.4250 - number.
1.4251 -
1.4252 - If neither is specified, the current article number is used.
1.4253 -
1.4254 -
1.4255 -
1.4256 -Feather Standards Track [Page 76]
1.4257 -
1.4258 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4259 -
1.4260 -
1.4261 - Support for the first (message-id) form is optional. If it is
1.4262 - supported, the OVER capability line MUST include the argument
1.4263 - "MSGID". Otherwise, the capability line MUST NOT include this
1.4264 - argument, and the OVER command MUST return the generic response code
1.4265 - 503 when this form is used.
1.4266 -
1.4267 - If the information is available, it is returned as a multi-line data
1.4268 - block following the 224 response code and contains one line per
1.4269 - article, sorted in numerical order of article number. (Note that
1.4270 - unless the argument is a range including a dash, there will be
1.4271 - exactly one line in the data block.) Each line consists of a number
1.4272 - of fields separated by a TAB. A field may be empty (in which case
1.4273 - there will be two adjacent TABs), and a sequence of trailing TABs may
1.4274 - be omitted.
1.4275 -
1.4276 - The first 8 fields MUST be the following, in order:
1.4277 -
1.4278 - "0" or article number (see below)
1.4279 - Subject header content
1.4280 - From header content
1.4281 - Date header content
1.4282 - Message-ID header content
1.4283 - References header content
1.4284 - :bytes metadata item
1.4285 - :lines metadata item
1.4286 -
1.4287 - If the article is specified by message-id (the first form of the
1.4288 - command), the article number MUST be replaced with zero, except that
1.4289 - if there is a currently selected newsgroup and the article is present
1.4290 - in that group, the server MAY use the article's number in that group.
1.4291 - (See the ARTICLE command (Section 6.2.1) and STAT examples
1.4292 - (Section 6.2.4.3) for more details.) In the other two forms of the
1.4293 - command, the article number MUST be returned.
1.4294 -
1.4295 - Any subsequent fields are the contents of the other headers and
1.4296 - metadata held in the database.
1.4297 -
1.4298 - For the five mandatory headers, the content of each field MUST be
1.4299 - based on the content of the header (that is, with the header name and
1.4300 - following colon and space removed). If the article does not contain
1.4301 - that header, or if the content is empty, the field MUST be empty.
1.4302 - For the two mandatory metadata items, the content of the field MUST
1.4303 - be just the value, with no other text.
1.4304 -
1.4305 - For all subsequent fields that contain headers, the content MUST be
1.4306 - the entire header line other than the trailing CRLF. For all
1.4307 - subsequent fields that contain metadata, the field consists of the
1.4308 - metadata name, a single space, and then the value.
1.4309 -
1.4310 -
1.4311 -
1.4312 -Feather Standards Track [Page 77]
1.4313 -
1.4314 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4315 -
1.4316 -
1.4317 - For all fields, the value is processed by first removing all CRLF
1.4318 - pairs (that is, undoing any folding and removing the terminating
1.4319 - CRLF) and then replacing each TAB with a single space. If there is
1.4320 - no such header in the article, no such metadata item, or no header or
1.4321 - item stored in the database for that article, the corresponding field
1.4322 - MUST be empty.
1.4323 -
1.4324 - Note that, after unfolding, the characters NUL, LF, and CR cannot
1.4325 - occur in the header of an article offered by a conformant server.
1.4326 - Nevertheless, servers SHOULD check for these characters and replace
1.4327 - each one by a single space (so that, for example, CR LF LF TAB will
1.4328 - become two spaces, since the CR and first LF will be removed by the
1.4329 - unfolding process). This will encourage robustness in the face of
1.4330 - non-conforming data; it is also possible that future versions of this
1.4331 - specification could permit these characters to appear in articles.
1.4332 -
1.4333 - The server SHOULD NOT produce output for articles that no longer
1.4334 - exist.
1.4335 -
1.4336 - If the argument is a message-id and no such article exists, a 430
1.4337 - response MUST be returned. If the argument is a range or is omitted
1.4338 - and the currently selected newsgroup is invalid, a 412 response MUST
1.4339 - be returned. If the argument is a range and no articles in that
1.4340 - number range exist in the currently selected newsgroup, including the
1.4341 - case where the second number is less than the first one, a 423
1.4342 - response MUST be returned. If the argument is omitted and the
1.4343 - current article number is invalid, a 420 response MUST be returned.
1.4344 -
1.4345 -8.3.3. Examples
1.4346 -
1.4347 - In the first four examples, TAB has been replaced by vertical bar and
1.4348 - some lines have been folded for readability.
1.4349 -
1.4350 - Example of a successful retrieval of overview information for an
1.4351 - article (explicitly not using an article number):
1.4352 -
1.4353 - [C] GROUP misc.test
1.4354 - [S] 211 1234 3000234 3002322 misc.test
1.4355 - [C] OVER
1.4356 - [S] 224 Overview information follows
1.4357 - [S] 3000234|I am just a test article|"Demo User"
1.4358 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4359 - <45223423@example.com>|<45454@example.net>|1234|
1.4360 - 17|Xref: news.example.com misc.test:3000363
1.4361 - [S] .
1.4362 -
1.4363 -
1.4364 -
1.4365 -
1.4366 -
1.4367 -
1.4368 -Feather Standards Track [Page 78]
1.4369 -
1.4370 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4371 -
1.4372 -
1.4373 - Example of a successful retrieval of overview information for an
1.4374 - article by message-id:
1.4375 -
1.4376 - [C] CAPABILITIES
1.4377 - [S] 101 Capability list:
1.4378 - [S] VERSION 2
1.4379 - [S] READER
1.4380 - [S] OVER MSGID
1.4381 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
1.4382 - [S] .
1.4383 - [C] OVER <45223423@example.com>
1.4384 - [S] 224 Overview information follows
1.4385 - [S] 0|I am just a test article|"Demo User"
1.4386 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4387 - <45223423@example.com>|<45454@example.net>|1234|
1.4388 - 17|Xref: news.example.com misc.test:3000363
1.4389 - [S] .
1.4390 -
1.4391 - Note that the article number has been replaced by "0".
1.4392 -
1.4393 - Example of the same commands on a system that does not implement
1.4394 - retrieval by message-id:
1.4395 -
1.4396 - [C] CAPABILITIES
1.4397 - [S] 101 Capability list:
1.4398 - [S] VERSION 2
1.4399 - [S] READER
1.4400 - [S] OVER
1.4401 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
1.4402 - [S] .
1.4403 - [C] OVER <45223423@example.com>
1.4404 - [S] 503 Overview by message-id unsupported
1.4405 -
1.4406 -
1.4407 -
1.4408 -
1.4409 -
1.4410 -
1.4411 -
1.4412 -
1.4413 -
1.4414 -
1.4415 -
1.4416 -
1.4417 -
1.4418 -
1.4419 -
1.4420 -
1.4421 -
1.4422 -
1.4423 -
1.4424 -Feather Standards Track [Page 79]
1.4425 -
1.4426 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4427 -
1.4428 -
1.4429 - Example of a successful retrieval of overview information for a range
1.4430 - of articles:
1.4431 -
1.4432 - [C] GROUP misc.test
1.4433 - [S] 211 1234 3000234 3002322 misc.test
1.4434 - [C] OVER 3000234-3000240
1.4435 - [S] 224 Overview information follows
1.4436 - [S] 3000234|I am just a test article|"Demo User"
1.4437 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4438 - <45223423@example.com>|<45454@example.net>|1234|
1.4439 - 17|Xref: news.example.com misc.test:3000363
1.4440 - [S] 3000235|Another test article|nobody@nowhere.to
1.4441 - (Demo User)|6 Oct 1998 04:38:45 -0500|<45223425@to.to>||
1.4442 - 4818|37||Distribution: fi
1.4443 - [S] 3000238|Re: I am just a test article|somebody@elsewhere.to|
1.4444 - 7 Oct 1998 11:38:40 +1200|<kfwer3v@elsewhere.to>|
1.4445 - <45223423@to.to>|9234|51
1.4446 - [S] .
1.4447 -
1.4448 - Note the missing "References" and Xref headers in the second line,
1.4449 - the missing trailing fields in the first and last lines, and that
1.4450 - there are only results for those articles that still exist.
1.4451 -
1.4452 - Example of an unsuccessful retrieval of overview information on an
1.4453 - article by number:
1.4454 -
1.4455 - [C] GROUP misc.test
1.4456 - [S] 211 1234 3000234 3002322 misc.test
1.4457 - [C] OVER 300256
1.4458 - [S] 423 No such article in this group
1.4459 -
1.4460 - Example of an invalid range:
1.4461 -
1.4462 - [C] GROUP misc.test
1.4463 - [S] 211 1234 3000234 3002322 misc.test
1.4464 - [C] OVER 3000444-3000222
1.4465 - [S] 423 Empty range
1.4466 -
1.4467 - Example of an unsuccessful retrieval of overview information by
1.4468 - number because no newsgroup was selected first:
1.4469 -
1.4470 - [Assumes currently selected newsgroup is invalid.]
1.4471 - [C] OVER
1.4472 - [S] 412 No newsgroup selected
1.4473 -
1.4474 -
1.4475 -
1.4476 -
1.4477 -
1.4478 -
1.4479 -
1.4480 -Feather Standards Track [Page 80]
1.4481 -
1.4482 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4483 -
1.4484 -
1.4485 - Example of an attempt to retrieve information when the currently
1.4486 - selected newsgroup is empty:
1.4487 -
1.4488 - [C] GROUP example.empty.newsgroup
1.4489 - [S] 211 0 0 0 example.empty.newsgroup
1.4490 - [C] OVER
1.4491 - [S] 420 No current article selected
1.4492 -
1.4493 -8.4. LIST OVERVIEW.FMT
1.4494 -
1.4495 -8.4.1. Usage
1.4496 -
1.4497 - Indicating capability: OVER
1.4498 -
1.4499 - Syntax
1.4500 - LIST OVERVIEW.FMT
1.4501 -
1.4502 - Responses
1.4503 - 215 Information follows (multi-line)
1.4504 -
1.4505 -8.4.2. Description
1.4506 -
1.4507 - See Section 7.6.1 for general requirements of the LIST command.
1.4508 -
1.4509 - The LIST OVERVIEW.FMT command returns a description of the fields in
1.4510 - the database for which it is consistent (as described above). The
1.4511 - information is returned as a multi-line data block following the 215
1.4512 - response code. The information contains one line per field in the
1.4513 - order in which they are returned by the OVER command; the first 7
1.4514 - lines MUST (except for the case of letters) be exactly as follows:
1.4515 -
1.4516 - Subject:
1.4517 - From:
1.4518 - Date:
1.4519 - Message-ID:
1.4520 - References:
1.4521 - :bytes
1.4522 - :lines
1.4523 -
1.4524 - For compatibility with existing implementations, the last two lines
1.4525 - MAY instead be:
1.4526 -
1.4527 - Bytes:
1.4528 - Lines:
1.4529 -
1.4530 - even though they refer to metadata, not headers.
1.4531 -
1.4532 -
1.4533 -
1.4534 -
1.4535 -
1.4536 -Feather Standards Track [Page 81]
1.4537 -
1.4538 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4539 -
1.4540 -
1.4541 - All subsequent lines MUST consist of either a header name followed by
1.4542 - ":full", or the name of a piece of metadata.
1.4543 -
1.4544 - There are no leading or trailing spaces in the output.
1.4545 -
1.4546 - Note that the 7 fixed lines describe the 2nd to 8th fields of the
1.4547 - OVER output. The "full" suffix (which may use either uppercase,
1.4548 - lowercase, or a mix) is a reminder that the corresponding fields
1.4549 - include the header name.
1.4550 -
1.4551 - This command MAY generate different results if it is used more than
1.4552 - once in a session.
1.4553 -
1.4554 - If the OVER command is not implemented, the meaning of the output
1.4555 - from this command is not specified, but it must still meet the above
1.4556 - syntactic requirements.
1.4557 -
1.4558 -8.4.3. Examples
1.4559 -
1.4560 - Example of LIST OVERVIEW.FMT output corresponding to the example OVER
1.4561 - output above, in the preferred format:
1.4562 -
1.4563 - [C] LIST OVERVIEW.FMT
1.4564 - [S] 215 Order of fields in overview database.
1.4565 - [S] Subject:
1.4566 - [S] From:
1.4567 - [S] Date:
1.4568 - [S] Message-ID:
1.4569 - [S] References:
1.4570 - [S] :bytes
1.4571 - [S] :lines
1.4572 - [S] Xref:full
1.4573 - [S] Distribution:full
1.4574 - [S] .
1.4575 -
1.4576 -
1.4577 -
1.4578 -
1.4579 -
1.4580 -
1.4581 -
1.4582 -
1.4583 -
1.4584 -
1.4585 -
1.4586 -
1.4587 -
1.4588 -
1.4589 -
1.4590 -
1.4591 -
1.4592 -Feather Standards Track [Page 82]
1.4593 -
1.4594 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4595 -
1.4596 -
1.4597 - Example of LIST OVERVIEW.FMT output corresponding to the example OVER
1.4598 - output above, in the alternative format:
1.4599 -
1.4600 - [C] LIST OVERVIEW.FMT
1.4601 - [S] 215 Order of fields in overview database.
1.4602 - [S] Subject:
1.4603 - [S] From:
1.4604 - [S] Date:
1.4605 - [S] Message-ID:
1.4606 - [S] References:
1.4607 - [S] Bytes:
1.4608 - [S] Lines:
1.4609 - [S] Xref:FULL
1.4610 - [S] Distribution:FULL
1.4611 - [S] .
1.4612 -
1.4613 -8.5. HDR
1.4614 -
1.4615 -8.5.1. Usage
1.4616 -
1.4617 - Indicating capability: HDR
1.4618 -
1.4619 - Syntax
1.4620 - HDR field message-id
1.4621 - HDR field range
1.4622 - HDR field
1.4623 -
1.4624 - Responses
1.4625 -
1.4626 - First form (message-id specified)
1.4627 - 225 Headers follow (multi-line)
1.4628 - 430 No article with that message-id
1.4629 -
1.4630 - Second form (range specified)
1.4631 - 225 Headers follow (multi-line)
1.4632 - 412 No newsgroup selected
1.4633 - 423 No articles in that range
1.4634 -
1.4635 - Third form (current article number used)
1.4636 - 225 Headers follow (multi-line)
1.4637 - 412 No newsgroup selected
1.4638 - 420 Current article number is invalid
1.4639 -
1.4640 - Parameters
1.4641 - field Name of field
1.4642 - range Number(s) of articles
1.4643 - message-id Message-id of article
1.4644 -
1.4645 -
1.4646 -
1.4647 -
1.4648 -Feather Standards Track [Page 83]
1.4649 -
1.4650 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4651 -
1.4652 -
1.4653 -8.5.2. Description
1.4654 -
1.4655 - The HDR command provides access to specific fields from an article
1.4656 - specified by message-id, or from a specified article or range of
1.4657 - articles in the currently selected newsgroup. It MAY take the
1.4658 - information directly from the articles or from the overview database.
1.4659 - In the case of headers, an implementation MAY restrict the use of
1.4660 - this command to a specific list of headers or MAY allow it to be used
1.4661 - with any header; it may behave differently when it is used with a
1.4662 - message-id argument and when it is used with a range or no argument.
1.4663 -
1.4664 - The required field argument is the name of a header with the colon
1.4665 - omitted (e.g., "subject") or the name of a metadata item including
1.4666 - the leading colon (e.g., ":bytes"), and is case insensitive.
1.4667 -
1.4668 - The message-id argument indicates a specific article. The range
1.4669 - argument may be any of the following:
1.4670 -
1.4671 - o An article number.
1.4672 -
1.4673 - o An article number followed by a dash to indicate all following.
1.4674 -
1.4675 - o An article number followed by a dash followed by another article
1.4676 - number.
1.4677 -
1.4678 - If neither is specified, the current article number is used.
1.4679 -
1.4680 - If the information is available, it is returned as a multi-line data
1.4681 - block following the 225 response code and contains one line for each
1.4682 - article in the range that exists. (Note that unless the argument is
1.4683 - a range including a dash, there will be exactly one line in the data
1.4684 - block.) The line consists of the article number, a space, and then
1.4685 - the contents of the field. In the case of a header, the header name,
1.4686 - the colon, and the first space after the colon are all omitted.
1.4687 -
1.4688 - If the article is specified by message-id (the first form of the
1.4689 - command), the article number MUST be replaced with zero, except that
1.4690 - if there is a currently selected newsgroup and the article is present
1.4691 - in that group, the server MAY use the article's number in that group.
1.4692 - (See the ARTICLE command (Section 6.2.1) and STAT examples
1.4693 - (Section 6.2.4.3) for more details.) In the other two forms of the
1.4694 - command, the article number MUST be returned.
1.4695 -
1.4696 - Header contents are modified as follows: all CRLF pairs are removed,
1.4697 - and then each TAB is replaced with a single space. (Note that this
1.4698 - is the same transformation as is performed by the OVER command
1.4699 - (Section 8.3.2), and the same comment concerning NUL, CR, and LF
1.4700 - applies.)
1.4701 -
1.4702 -
1.4703 -
1.4704 -Feather Standards Track [Page 84]
1.4705 -
1.4706 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4707 -
1.4708 -
1.4709 - Note the distinction between headers and metadata appearing to have
1.4710 - the same meaning. Headers are always taken unchanged from the
1.4711 - article; metadata are always calculated. For example, a request for
1.4712 - "Lines" returns the contents of the "Lines" header of the specified
1.4713 - articles, if any, no matter whether they accurately state the number
1.4714 - of lines, while a request for ":lines" returns the line count
1.4715 - metadata, which is always the actual number of lines irrespective of
1.4716 - what any header may state.
1.4717 -
1.4718 - If the requested header is not present in the article, or if it is
1.4719 - present but empty, a line for that article is included in the output,
1.4720 - but the header content portion of the line is empty (the space after
1.4721 - the article number MAY be retained or omitted). If the header occurs
1.4722 - in a given article more than once, only the content of the first
1.4723 - occurrence is returned by HDR. If any article number in the provided
1.4724 - range does not exist in the group, no line for that article number is
1.4725 - included in the output.
1.4726 -
1.4727 - If the second argument is a message-id and no such article exists, a
1.4728 - 430 response MUST be returned. If the second argument is a range or
1.4729 - is omitted and the currently selected newsgroup is invalid, a 412
1.4730 - response MUST be returned. If the second argument is a range and no
1.4731 - articles in that number range exist in the currently selected
1.4732 - newsgroup, including the case where the second number is less than
1.4733 - the first one, a 423 response MUST be returned. If the second
1.4734 - argument is omitted and the current article number is invalid, a 420
1.4735 - response MUST be returned.
1.4736 -
1.4737 - A server MAY only allow HDR commands for a limited set of fields; it
1.4738 - may behave differently in this respect for the first (message-id)
1.4739 - form from how it would for the other forms. If so, it MUST respond
1.4740 - with the generic 503 response to attempts to request other fields,
1.4741 - rather than return erroneous results, such as a successful empty
1.4742 - response.
1.4743 -
1.4744 - If HDR uses the overview database and it is inconsistent for the
1.4745 - requested field, the server MAY return what results it can, or it MAY
1.4746 - respond with the generic 503 response. In the latter case, the field
1.4747 - MUST NOT appear in the output from LIST HEADERS.
1.4748 -
1.4749 -
1.4750 -
1.4751 -
1.4752 -
1.4753 -
1.4754 -
1.4755 -
1.4756 -
1.4757 -
1.4758 -
1.4759 -
1.4760 -Feather Standards Track [Page 85]
1.4761 -
1.4762 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4763 -
1.4764 -
1.4765 -8.5.3. Examples
1.4766 -
1.4767 - Example of a successful retrieval of subject lines from a range of
1.4768 - articles (3000235 has no Subject header, and 3000236 is missing):
1.4769 -
1.4770 - [C] GROUP misc.test
1.4771 - [S] 211 1234 3000234 3002322 misc.test
1.4772 - [C] HDR Subject 3000234-3000238
1.4773 - [S] 225 Headers follow
1.4774 - [S] 3000234 I am just a test article
1.4775 - [S] 3000235
1.4776 - [S] 3000237 Re: I am just a test article
1.4777 - [S] 3000238 Ditto
1.4778 - [S] .
1.4779 -
1.4780 - Example of a successful retrieval of line counts from a range of
1.4781 - articles:
1.4782 -
1.4783 - [C] GROUP misc.test
1.4784 - [S] 211 1234 3000234 3002322 misc.test
1.4785 - [C] HDR :lines 3000234-3000238
1.4786 - [S] 225 Headers follow
1.4787 - [S] 3000234 42
1.4788 - [S] 3000235 5
1.4789 - [S] 3000237 11
1.4790 - [S] 3000238 2378
1.4791 - [S] .
1.4792 -
1.4793 - Example of a successful retrieval of the subject line from an article
1.4794 - by message-id:
1.4795 -
1.4796 - [C] GROUP misc.test
1.4797 - [S] 211 1234 3000234 3002322 misc.test
1.4798 - [C] HDR subject <i.am.a.test.article@example.com>
1.4799 - [S] 225 Header information follows
1.4800 - [S] 0 I am just a test article
1.4801 - [S] .
1.4802 -
1.4803 - Example of a successful retrieval of the subject line from the
1.4804 - current article:
1.4805 -
1.4806 - [C] GROUP misc.test
1.4807 - [S] 211 1234 3000234 3002322 misc.test
1.4808 - [C] HDR subject
1.4809 - [S] 225 Header information follows
1.4810 - [S] 3000234 I am just a test article
1.4811 - [S] .
1.4812 -
1.4813 -
1.4814 -
1.4815 -
1.4816 -Feather Standards Track [Page 86]
1.4817 -
1.4818 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4819 -
1.4820 -
1.4821 - Example of an unsuccessful retrieval of a header from an article by
1.4822 - message-id:
1.4823 -
1.4824 - [C] HDR subject <i.am.not.there@example.com>
1.4825 - [S] 430 No Such Article Found
1.4826 -
1.4827 - Example of an unsuccessful retrieval of headers from articles by
1.4828 - number because no newsgroup was selected first:
1.4829 -
1.4830 - [Assumes currently selected newsgroup is invalid.]
1.4831 - [C] HDR subject 300256-
1.4832 - [S] 412 No newsgroup selected
1.4833 -
1.4834 - Example of an unsuccessful retrieval of headers because the currently
1.4835 - selected newsgroup is empty:
1.4836 -
1.4837 - [C] GROUP example.empty.newsgroup
1.4838 - [S] 211 0 0 0 example.empty.newsgroup
1.4839 - [C] HDR subject 1-
1.4840 - [S] 423 No articles in that range
1.4841 -
1.4842 - Example of an unsuccessful retrieval of headers because the server
1.4843 - does not allow HDR commands for that header:
1.4844 -
1.4845 - [C] GROUP misc.test
1.4846 - [S] 211 1234 3000234 3002322 misc.test
1.4847 - [C] HDR Content-Type 3000234-3000238
1.4848 - [S] 503 HDR not permitted on Content-Type
1.4849 -
1.4850 -8.6. LIST HEADERS
1.4851 -
1.4852 -8.6.1. Usage
1.4853 -
1.4854 - Indicating capability: HDR
1.4855 -
1.4856 - Syntax
1.4857 - LIST HEADERS [MSGID|RANGE]
1.4858 -
1.4859 - Responses
1.4860 - 215 Field list follows (multi-line)
1.4861 -
1.4862 - Parameters
1.4863 - MSGID Requests list for access by message-id
1.4864 - RANGE Requests list for access by range
1.4865 -
1.4866 -
1.4867 -
1.4868 -
1.4869 -
1.4870 -
1.4871 -
1.4872 -Feather Standards Track [Page 87]
1.4873 -
1.4874 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4875 -
1.4876 -
1.4877 -8.6.2. Description
1.4878 -
1.4879 - See Section 7.6.1 for general requirements of the LIST command.
1.4880 -
1.4881 - The LIST HEADERS command returns a list of fields that may be
1.4882 - retrieved using the HDR command.
1.4883 -
1.4884 - The information is returned as a multi-line data block following the
1.4885 - 215 response code and contains one line for each field name
1.4886 - (excluding the trailing colon for headers and including the leading
1.4887 - colon for metadata items). If the implementation allows any header
1.4888 - to be retrieved, it MUST NOT include any header names in the list but
1.4889 - MUST include the special entry ":" (a single colon on its own). It
1.4890 - MUST still explicitly list any metadata items that are available.
1.4891 - The order of items in the list is not significant; the server need
1.4892 - not even consistently return the same order. The list MAY be empty
1.4893 - (though in this circumstance there is little point in providing the
1.4894 - HDR command).
1.4895 -
1.4896 - An implementation that also supports the OVER command SHOULD at least
1.4897 - permit all the headers and metadata items listed in the output from
1.4898 - the LIST OVERVIEW.FMT command.
1.4899 -
1.4900 - If the server treats the first form of the HDR command (message-id
1.4901 - specified) differently from the other two forms (range specified or
1.4902 - current article number used) in respect of which headers or metadata
1.4903 - items are available, then the following apply:
1.4904 -
1.4905 - o If the MSGID argument is specified, the results MUST be those
1.4906 - available for the first form of the HDR command.
1.4907 -
1.4908 - o If the RANGE argument is specified, the results MUST be those
1.4909 - available for the second and third forms of the HDR command.
1.4910 -
1.4911 - o If no argument is specified, the results MUST be those available
1.4912 - in all forms of the HDR command (that is, it MUST only list those
1.4913 - items listed in both the previous cases).
1.4914 -
1.4915 - If the server does not treat the various forms differently, then it
1.4916 - MUST ignore any argument and always produce the same results (though
1.4917 - not necessarily always in the same order).
1.4918 -
1.4919 - If the HDR command is not implemented, the meaning of the output from
1.4920 - this command is not specified, but it must still meet the above
1.4921 - syntactic requirements.
1.4922 -
1.4923 -
1.4924 -
1.4925 -
1.4926 -
1.4927 -
1.4928 -Feather Standards Track [Page 88]
1.4929 -
1.4930 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4931 -
1.4932 -
1.4933 -8.6.3. Examples
1.4934 -
1.4935 - Example of an implementation providing access to only a few headers:
1.4936 -
1.4937 - [C] LIST HEADERS
1.4938 - [S] 215 headers supported:
1.4939 - [S] Subject
1.4940 - [S] Message-ID
1.4941 - [S] Xref
1.4942 - [S] .
1.4943 -
1.4944 - Example of an implementation providing access to the same fields as
1.4945 - the first example in Section 8.4.3:
1.4946 -
1.4947 - [C] CAPABILITIES
1.4948 - [S] 101 Capability list:
1.4949 - [S] VERSION 2
1.4950 - [S] READER
1.4951 - [S] OVER
1.4952 - [S] HDR
1.4953 - [S] LIST ACTIVE NEWSGROUPS HEADERS OVERVIEW.FMT
1.4954 - [S] .
1.4955 - [C] LIST HEADERS
1.4956 - [S] 215 headers and metadata items supported:
1.4957 - [S] Date
1.4958 - [S] Distribution
1.4959 - [S] From
1.4960 - [S] Message-ID
1.4961 - [S] References
1.4962 - [S] Subject
1.4963 - [S] Xref
1.4964 - [S] :bytes
1.4965 - [S] :lines
1.4966 - [S] .
1.4967 -
1.4968 - Example of an implementation providing access to all headers:
1.4969 -
1.4970 - [C] LIST HEADERS
1.4971 - [S] 215 metadata items supported:
1.4972 - [S] :
1.4973 - [S] :lines
1.4974 - [S] :bytes
1.4975 - [S] :x-article-number
1.4976 - [S] .
1.4977 -
1.4978 -
1.4979 -
1.4980 -
1.4981 -
1.4982 -
1.4983 -
1.4984 -Feather Standards Track [Page 89]
1.4985 -
1.4986 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4987 -
1.4988 -
1.4989 - Example of an implementation distinguishing the first form of the HDR
1.4990 - command from the other two forms:
1.4991 -
1.4992 - [C] LIST HEADERS RANGE
1.4993 - [S] 215 metadata items supported:
1.4994 - [S] :
1.4995 - [S] :lines
1.4996 - [S] :bytes
1.4997 - [S] .
1.4998 - [C] LIST HEADERS MSGID
1.4999 - [S] 215 headers and metadata items supported:
1.5000 - [S] Date
1.5001 - [S] Distribution
1.5002 - [S] From
1.5003 - [S] Message-ID
1.5004 - [S] References
1.5005 - [S] Subject
1.5006 - [S] :lines
1.5007 - [S] :bytes
1.5008 - [S] :x-article-number
1.5009 - [S] .
1.5010 - [C] LIST HEADERS
1.5011 - [S] 215 headers and metadata items supported:
1.5012 - [S] Date
1.5013 - [S] Distribution
1.5014 - [S] From
1.5015 - [S] Message-ID
1.5016 - [S] References
1.5017 - [S] Subject
1.5018 - [S] :lines
1.5019 - [S] :bytes
1.5020 - [S] .
1.5021 -
1.5022 - Note that :x-article-number does not appear in the last set of
1.5023 - output.
1.5024 -
1.5025 -9. Augmented BNF Syntax for NNTP
1.5026 -
1.5027 -9.1. Introduction
1.5028 -
1.5029 - Each of the following sections describes the syntax of a major
1.5030 - element of NNTP. This syntax extends and refines the descriptions
1.5031 - elsewhere in this specification and should be given precedence when
1.5032 - resolving apparent conflicts. Note that ABNF [RFC4234] strings are
1.5033 - case insensitive. Non-terminals used in several places are defined
1.5034 - in a separate section at the end.
1.5035 -
1.5036 -
1.5037 -
1.5038 -
1.5039 -
1.5040 -Feather Standards Track [Page 90]
1.5041 -
1.5042 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5043 -
1.5044 -
1.5045 - Between them, the non-terminals <command-line>, <command-datastream>,
1.5046 - <command-continuation>, and <response> specify the text that flows
1.5047 - between client and server. A consistent naming scheme is used in
1.5048 - this document for the non-terminals relating to each command, and
1.5049 - SHOULD be used by the specification of registered extensions.
1.5050 -
1.5051 - For each command, the sequence is as follows:
1.5052 -
1.5053 - o The client sends an instance of <command-line>; the syntax for the
1.5054 - EXAMPLE command is <example-command>.
1.5055 -
1.5056 - o If the client is one that immediately streams data, it sends an
1.5057 - instance of <command-datastream>; the syntax for the EXAMPLE
1.5058 - command is <example-datastream>.
1.5059 -
1.5060 - o The server sends an instance of <response>.
1.5061 -
1.5062 - * The initial response line is independent of the command that
1.5063 - generated it; if the 000 response has arguments, the syntax of
1.5064 - the initial line is <response-000-content>.
1.5065 -
1.5066 - * If the response is multi-line, the initial line is followed by
1.5067 - a <multi-line-data-block>. The syntax for the contents of this
1.5068 - block after "dot-stuffing" has been removed is (for the 000
1.5069 - response to the EXAMPLE command) <example-000-ml-content> and
1.5070 - is an instance of <multi-line-response-content>.
1.5071 -
1.5072 - o While the latest response is one that indicates more data is
1.5073 - required (in general, a 3xx response):
1.5074 -
1.5075 - * the client sends an instance of <command-continuation>; the
1.5076 - syntax for the EXAMPLE continuation following a 333 response is
1.5077 - <example-333-continuation>;
1.5078 -
1.5079 - * the server sends another instance of <response>, as above.
1.5080 -
1.5081 - (There are no commands in this specification that immediately stream
1.5082 - data, but this non-terminal is defined for the convenience of
1.5083 - extensions.)
1.5084 -
1.5085 -
1.5086 -
1.5087 -
1.5088 -
1.5089 -
1.5090 -
1.5091 -
1.5092 -
1.5093 -
1.5094 -
1.5095 -
1.5096 -Feather Standards Track [Page 91]
1.5097 -
1.5098 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5099 -
1.5100 -
1.5101 -9.2. Commands
1.5102 -
1.5103 - This syntax defines the non-terminal <command-line>, which represents
1.5104 - what is sent from the client to the server (see section 3.1 for
1.5105 - limits on lengths).
1.5106 -
1.5107 - command-line = command EOL
1.5108 - command = X-command
1.5109 - X-command = keyword *(WS token)
1.5110 -
1.5111 - command =/ article-command /
1.5112 - body-command /
1.5113 - capabilities-command /
1.5114 - date-command /
1.5115 - group-command /
1.5116 - hdr-command /
1.5117 - head-command /
1.5118 - help-command /
1.5119 - ihave-command /
1.5120 - last-command /
1.5121 - list-command /
1.5122 - listgroup-command /
1.5123 - mode-reader-command /
1.5124 - newgroups-command /
1.5125 - newnews-command /
1.5126 - next-command /
1.5127 - over-command /
1.5128 - post-command /
1.5129 - quit-command /
1.5130 - stat-command
1.5131 -
1.5132 - article-command = "ARTICLE" [WS article-ref]
1.5133 - body-command = "BODY" [WS article-ref]
1.5134 - capabilities-command = "CAPABILITIES" [WS keyword]
1.5135 - date-command = "DATE"
1.5136 - group-command = "GROUP" [WS newsgroup-name]
1.5137 - hdr-command = "HDR" WS header-meta-name [WS range-ref]
1.5138 - head-command = "HEAD" [WS article-ref]
1.5139 - help-command = "HELP"
1.5140 - ihave-command = "IHAVE" WS message-id
1.5141 - last-command = "LAST"
1.5142 - list-command = "LIST" [WS list-arguments]
1.5143 - listgroup-command = "LISTGROUP" [WS newsgroup-name [WS range]]
1.5144 - mode-reader-command = "MODE" WS "READER"
1.5145 - newgroups-command = "NEWGROUPS" WS date-time
1.5146 - newnews-command = "NEWNEWS" WS wildmat WS date-time
1.5147 - next-command = "NEXT"
1.5148 - over-command = "OVER" [WS range-ref]
1.5149 -
1.5150 -
1.5151 -
1.5152 -Feather Standards Track [Page 92]
1.5153 -
1.5154 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5155 -
1.5156 -
1.5157 - post-command = "POST"
1.5158 - quit-command = "QUIT"
1.5159 - stat-command = "STAT" [WS article-ref]
1.5160 -
1.5161 - article-ref = article-number / message-id
1.5162 - date = date2y / date4y
1.5163 - date4y = 4DIGIT 2DIGIT 2DIGIT
1.5164 - date2y = 2DIGIT 2DIGIT 2DIGIT
1.5165 - date-time = date WS time [WS "GMT"]
1.5166 - header-meta-name = header-name / metadata-name
1.5167 - list-arguments = keyword [WS token]
1.5168 - metadata-name = ":" 1*A-NOTCOLON
1.5169 - range = article-number ["-" [article-number]]
1.5170 - range-ref = range / message-id
1.5171 - time = 2DIGIT 2DIGIT 2DIGIT
1.5172 -
1.5173 -9.3. Command Continuation
1.5174 -
1.5175 - This syntax defines the further material sent by the client in the
1.5176 - case of multi-stage commands and those that stream data.
1.5177 -
1.5178 - command-datastream = UNDEFINED
1.5179 - ; not used, provided as a hook for extensions
1.5180 - command-continuation = ihave-335-continuation /
1.5181 - post-340-continuation
1.5182 -
1.5183 - ihave-335-continuation = encoded-article
1.5184 - post-340-continuation = encoded-article
1.5185 -
1.5186 - encoded-article = multi-line-data-block
1.5187 - ; after undoing the "dot-stuffing", this MUST match <article>
1.5188 -
1.5189 -9.4. Responses
1.5190 -
1.5191 -9.4.1. Generic Responses
1.5192 -
1.5193 - This syntax defines the non-terminal <response>, which represents the
1.5194 - generic form of responses; that is, what is sent from the server to
1.5195 - the client in response to a <command> or a <command-continuation>.
1.5196 -
1.5197 - response = simple-response / multi-line-response
1.5198 - simple-response = initial-response-line
1.5199 - multi-line-response = initial-response-line multi-line-data-block
1.5200 -
1.5201 - initial-response-line =
1.5202 - initial-response-content [SP trailing-comment] CRLF
1.5203 - initial-response-content = X-initial-response-content
1.5204 - X-initial-response-content = 3DIGIT *(SP response-argument)
1.5205 -
1.5206 -
1.5207 -
1.5208 -Feather Standards Track [Page 93]
1.5209 -
1.5210 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5211 -
1.5212 -
1.5213 - response-argument = 1*A-CHAR
1.5214 - trailing-comment = *U-CHAR
1.5215 -
1.5216 -9.4.2. Initial Response Line Contents
1.5217 -
1.5218 - This syntax defines the specific initial response lines for the
1.5219 - various commands in this specification (see section 3.1 for limits on
1.5220 - lengths). Only those response codes with arguments are listed.
1.5221 -
1.5222 - initial-response-content =/ response-111-content /
1.5223 - response-211-content /
1.5224 - response-220-content /
1.5225 - response-221-content /
1.5226 - response-222-content /
1.5227 - response-223-content /
1.5228 - response-401-content
1.5229 -
1.5230 - response-111-content = "111" SP date4y time
1.5231 - response-211-content = "211" 3(SP article-number) SP newsgroup-name
1.5232 - response-220-content = "220" SP article-number SP message-id
1.5233 - response-221-content = "221" SP article-number SP message-id
1.5234 - response-222-content = "222" SP article-number SP message-id
1.5235 - response-223-content = "223" SP article-number SP message-id
1.5236 - response-401-content = "401" SP capability-label
1.5237 -
1.5238 -9.4.3. Multi-line Response Contents
1.5239 -
1.5240 - This syntax defines the content of the various multi-line responses;
1.5241 - more precisely, it defines the part of the response in the multi-line
1.5242 - data block after any "dot-stuffing" has been undone. The numeric
1.5243 - portion of each non-terminal name indicates the response code that is
1.5244 - followed by this data.
1.5245 -
1.5246 - multi-line-response-content = article-220-ml-content /
1.5247 - body-222-ml-content /
1.5248 - capabilities-101-ml-content /
1.5249 - hdr-225-ml-content /
1.5250 - head-221-ml-content /
1.5251 - help-100-ml-content /
1.5252 - list-215-ml-content /
1.5253 - listgroup-211-ml-content /
1.5254 - newgroups-231-ml-content /
1.5255 - newnews-230-ml-content /
1.5256 - over-224-ml-content
1.5257 -
1.5258 - article-220-ml-content = article
1.5259 - body-222-ml-content = body
1.5260 - capabilities-101-ml-content = version-line CRLF
1.5261 -
1.5262 -
1.5263 -
1.5264 -Feather Standards Track [Page 94]
1.5265 -
1.5266 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5267 -
1.5268 -
1.5269 - *(capability-line CRLF)
1.5270 - hdr-225-ml-content = *(article-number SP hdr-content CRLF)
1.5271 - head-221-ml-content = 1*header
1.5272 - help-100-ml-content = *(*U-CHAR CRLF)
1.5273 - list-215-ml-content = list-content
1.5274 - listgroup-211-ml-content = *(article-number CRLF)
1.5275 - newgroups-231-ml-content = active-groups-list
1.5276 - newnews-230-ml-content = *(message-id CRLF)
1.5277 - over-224-ml-content = *(article-number over-content CRLF)
1.5278 -
1.5279 - active-groups-list = *(newsgroup-name SPA article-number
1.5280 - SPA article-number SPA newsgroup-status CRLF)
1.5281 - hdr-content = *S-NONTAB
1.5282 - hdr-n-content = [(header-name ":" / metadata-name) SP hdr-content]
1.5283 - list-content = body
1.5284 - newsgroup-status = %x79 / %x6E / %x6D / private-status
1.5285 - over-content = 1*6(TAB hdr-content) /
1.5286 - 7(TAB hdr-content) *(TAB hdr-n-content)
1.5287 - private-status = token ; except the values in newsgroup-status
1.5288 -
1.5289 -9.5. Capability Lines
1.5290 -
1.5291 - This syntax defines the generic form of a capability line in the
1.5292 - capabilities list (see Section 3.3.1).
1.5293 -
1.5294 - capability-line = capability-entry
1.5295 - capability-entry = X-capability-entry
1.5296 - X-capability-entry = capability-label *(WS capability-argument)
1.5297 - capability-label = keyword
1.5298 - capability-argument = token
1.5299 -
1.5300 - This syntax defines the specific capability entries for the
1.5301 - capabilities in this specification.
1.5302 -
1.5303 - capability-entry =/
1.5304 - hdr-capability /
1.5305 - ihave-capability /
1.5306 - implementation-capability /
1.5307 - list-capability /
1.5308 - mode-reader-capability /
1.5309 - newnews-capability /
1.5310 - over-capability /
1.5311 - post-capability /
1.5312 - reader-capability
1.5313 -
1.5314 - hdr-capability = "HDR"
1.5315 - ihave-capability = "IHAVE"
1.5316 - implementation-capability = "IMPLEMENTATION" *(WS token)
1.5317 -
1.5318 -
1.5319 -
1.5320 -Feather Standards Track [Page 95]
1.5321 -
1.5322 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5323 -
1.5324 -
1.5325 - list-capability = "LIST" 1*(WS keyword)
1.5326 - mode-reader-capability = "MODE-READER"
1.5327 - newnews-capability = "NEWNEWS"
1.5328 - over-capability = "OVER" [WS "MSGID"]
1.5329 - post-capability = "POST"
1.5330 - reader-capability = "READER"
1.5331 -
1.5332 - version-line = "VERSION" 1*(WS version-number)
1.5333 - version-number = nzDIGIT *5DIGIT
1.5334 -
1.5335 -9.6. LIST Variants
1.5336 -
1.5337 - This section defines more specifically the keywords for the LIST
1.5338 - command and the syntax of the corresponding response contents.
1.5339 -
1.5340 - ; active
1.5341 - list-arguments =/ "ACTIVE" [WS wildmat]
1.5342 - list-content =/ list-active-content
1.5343 - list-active-content = active-groups-list
1.5344 -
1.5345 -
1.5346 - ; active.times
1.5347 - list-arguments =/ "ACTIVE.TIMES" [WS wildmat]
1.5348 - list-content =/ list-active-times-content
1.5349 - list-active-times-content =
1.5350 - *(newsgroup-name SPA 1*DIGIT SPA newsgroup-creator CRLF)
1.5351 - newsgroup-creator = U-TEXT
1.5352 -
1.5353 -
1.5354 - ; distrib.pats
1.5355 - list-arguments =/ "DISTRIB.PATS"
1.5356 - list-content =/ list-distrib-pats-content
1.5357 - list-distrib-pats-content =
1.5358 - *(1*DIGIT ":" wildmat ":" distribution CRLF)
1.5359 - distribution = token
1.5360 -
1.5361 -
1.5362 - ; headers
1.5363 - list-arguments =/ "HEADERS" [WS ("MSGID" / "RANGE")]
1.5364 - list-content =/ list-headers-content
1.5365 - list-headers-content = *(header-meta-name CRLF) /
1.5366 - *((metadata-name / ":") CRLF)
1.5367 -
1.5368 -
1.5369 - ; newsgroups
1.5370 - list-arguments =/ "NEWSGROUPS" [WS wildmat]
1.5371 - list-content =/ list-newsgroups-content
1.5372 - list-newsgroups-content =
1.5373 -
1.5374 -
1.5375 -
1.5376 -Feather Standards Track [Page 96]
1.5377 -
1.5378 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5379 -
1.5380 -
1.5381 - *(newsgroup-name WS newsgroup-description CRLF)
1.5382 - newsgroup-description = S-TEXT
1.5383 -
1.5384 -
1.5385 - ; overview.fmt
1.5386 - list-arguments =/ "OVERVIEW.FMT"
1.5387 - list-content =/ list-overview-fmt-content
1.5388 - list-overview-fmt-content = "Subject:" CRLF
1.5389 - "From:" CRLF
1.5390 - "Date:" CRLF
1.5391 - "Message-ID:" CRLF
1.5392 - "References:" CRLF
1.5393 - ( ":bytes" CRLF ":lines" / "Bytes:" CRLF "Lines:") CRLF
1.5394 - *((header-name ":full" / metadata-name) CRLF)
1.5395 -
1.5396 -9.7. Articles
1.5397 -
1.5398 - This syntax defines the non-terminal <article>, which represents the
1.5399 - format of an article as described in Section 3.6.
1.5400 -
1.5401 - article = 1*header CRLF body
1.5402 - header = header-name ":" [CRLF] SP header-content CRLF
1.5403 - header-content = *(S-CHAR / [CRLF] WS)
1.5404 - body = *(*B-CHAR CRLF)
1.5405 -
1.5406 -9.8. General Non-terminals
1.5407 -
1.5408 - These non-terminals are used at various places in the syntax and are
1.5409 - collected here for convenience. A few of these non-terminals are not
1.5410 - used in this specification but are provided for the consistency and
1.5411 - convenience of extension authors.
1.5412 -
1.5413 - multi-line-data-block = content-lines termination
1.5414 - content-lines = *([content-text] CRLF)
1.5415 - content-text = (".." / B-NONDOT) *B-CHAR
1.5416 - termination = "." CRLF
1.5417 -
1.5418 - article-number = 1*16DIGIT
1.5419 - header-name = 1*A-NOTCOLON
1.5420 - keyword = ALPHA 2*(ALPHA / DIGIT / "." / "-")
1.5421 - message-id = "<" 1*248A-NOTGT ">"
1.5422 - newsgroup-name = 1*wildmat-exact
1.5423 - token = 1*P-CHAR
1.5424 -
1.5425 - wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
1.5426 - wildmat-pattern = 1*wildmat-item
1.5427 - wildmat-item = wildmat-exact / wildmat-wild
1.5428 - wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
1.5429 -
1.5430 -
1.5431 -
1.5432 -Feather Standards Track [Page 97]
1.5433 -
1.5434 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5435 -
1.5436 -
1.5437 - UTF8-non-ascii ; exclude ! * , ? [ \ ]
1.5438 - wildmat-wild = "*" / "?"
1.5439 -
1.5440 - base64 = *(4base64-char) [base64-terminal]
1.5441 - base64-char = UPPER / LOWER / DIGIT / "+" / "/"
1.5442 - base64-terminal = 2base64-char "==" / 3base64-char "="
1.5443 -
1.5444 - ; Assorted special character sets
1.5445 - ; A- means based on US-ASCII, excluding controls and SP
1.5446 - ; P- means based on UTF-8, excluding controls and SP
1.5447 - ; U- means based on UTF-8, excluding NUL CR and LF
1.5448 - ; B- means based on bytes, excluding NUL CR and LF
1.5449 - A-CHAR = %x21-7E
1.5450 - A-NOTCOLON = %x21-39 / %x3B-7E ; exclude ":"
1.5451 - A-NOTGT = %x21-3D / %x3F-7E ; exclude ">"
1.5452 - P-CHAR = A-CHAR / UTF8-non-ascii
1.5453 - U-CHAR = CTRL / TAB / SP / A-CHAR / UTF8-non-ascii
1.5454 - U-NONTAB = CTRL / SP / A-CHAR / UTF8-non-ascii
1.5455 - U-TEXT = P-CHAR *U-CHAR
1.5456 - B-CHAR = CTRL / TAB / SP / %x21-FF
1.5457 - B-NONDOT = CTRL / TAB / SP / %x21-2D / %x2F-FF ; exclude "."
1.5458 -
1.5459 - ALPHA = UPPER / LOWER ; use only when case-insensitive
1.5460 - CR = %x0D
1.5461 - CRLF = CR LF
1.5462 - CTRL = %x01-08 / %x0B-0C / %x0E-1F
1.5463 - DIGIT = %x30-39
1.5464 - nzDIGIT = %x31-39
1.5465 - EOL = *(SP / TAB) CRLF
1.5466 - LF = %x0A
1.5467 - LOWER = %x61-7A
1.5468 - SP = %x20
1.5469 - SPA = 1*SP
1.5470 - TAB = %x09
1.5471 - UPPER = %x41-5A
1.5472 - UTF8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4
1.5473 - UTF8-2 = %xC2-DF UTF8-tail
1.5474 - UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2UTF8-tail /
1.5475 - %xED %x80-9F UTF8-tail / %xEE-EF 2UTF8-tail
1.5476 - UTF8-4 = %xF0 %x90-BF 2UTF8-tail / %xF1-F3 3UTF8-tail /
1.5477 - %xF4 %x80-8F 2UTF8-tail
1.5478 - UTF8-tail = %x80-BF
1.5479 - WS = 1*(SP / TAB)
1.5480 -
1.5481 - The following non-terminals require special consideration. They
1.5482 - represent situations where material SHOULD be restricted to UTF-8,
1.5483 - but implementations MUST be able to cope with other character
1.5484 - encodings. Therefore, there are two sets of definitions for them.
1.5485 -
1.5486 -
1.5487 -
1.5488 -Feather Standards Track [Page 98]
1.5489 -
1.5490 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5491 -
1.5492 -
1.5493 - Implementations MUST accept any content that meets this syntax:
1.5494 -
1.5495 - S-CHAR = %x21-FF
1.5496 - S-NONTAB = CTRL / SP / S-CHAR
1.5497 - S-TEXT = (CTRL / S-CHAR) *B-CHAR
1.5498 -
1.5499 - and MAY pass such content on unaltered.
1.5500 -
1.5501 - When generating new content or re-encoding existing content,
1.5502 - implementations SHOULD conform to this syntax:
1.5503 -
1.5504 - S-CHAR = P-CHAR
1.5505 - S-NONTAB = U-NONTAB
1.5506 - S-TEXT = U-TEXT
1.5507 -
1.5508 -9.9. Extensions and Validation
1.5509 -
1.5510 - The specification of a registered extension MUST include formal
1.5511 - syntax that defines additional forms for the following non-terminals:
1.5512 -
1.5513 - command
1.5514 - for each new command other than a variant of the LIST command -
1.5515 - the syntax of each command MUST be compatible with the definition
1.5516 - of <X-command>;
1.5517 -
1.5518 - command-datastream
1.5519 - for each new command that immediately streams data;
1.5520 -
1.5521 - command-continuation
1.5522 - for each new command that sends further material after the initial
1.5523 - command line - the syntax of each continuation MUST be exactly
1.5524 - what is sent to the server, including any escape mechanisms such
1.5525 - as "dot-stuffing";
1.5526 -
1.5527 - initial-response-content
1.5528 - for each new response code that has arguments - the syntax of each
1.5529 - response MUST be compatible with the definition of <X-initial-
1.5530 - response-content>;
1.5531 -
1.5532 - multi-line-response-content
1.5533 - for each new response code that has a multi-line response - the
1.5534 - syntax MUST show the response after the lines containing the
1.5535 - response code and the terminating octet have been removed and any
1.5536 - "dot-stuffing" undone;
1.5537 -
1.5538 - capability-entry
1.5539 - for each new capability label - the syntax of each entry MUST be
1.5540 - compatible with the definition of <X-capability-entry>;
1.5541 -
1.5542 -
1.5543 -
1.5544 -Feather Standards Track [Page 99]
1.5545 -
1.5546 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5547 -
1.5548 -
1.5549 - list-arguments
1.5550 - for each new variant of the LIST command - the syntax of each
1.5551 - entry MUST be compatible with the definition of <X-command>;
1.5552 -
1.5553 - list-content
1.5554 - for each new variant of the LIST command - the syntax MUST show
1.5555 - the response after the lines containing the 215 response code and
1.5556 - the terminating octet have been removed and any "dot-stuffing"
1.5557 - undone.
1.5558 -
1.5559 - The =/ notation of ABNF [RFC4234] and the naming conventions
1.5560 - described in Section 9.1 SHOULD be used for this.
1.5561 -
1.5562 - When the syntax in this specification, or syntax based on it, is
1.5563 - validated, it should be noted that:
1.5564 -
1.5565 - o the non-terminals <command-line>, <command-datastream>,
1.5566 - <command-continuation>, <response>, and
1.5567 - <multi-line-response-content> describe basic concepts of the
1.5568 - protocol and are not referred to by any other rule;
1.5569 -
1.5570 - o the non-terminal <base64> is provided for the convenience of
1.5571 - extension authors and is not referred to by any rule in this
1.5572 - specification;
1.5573 -
1.5574 - o for the reasons given above, the non-terminals <S-CHAR>,
1.5575 - <S-NONTAB>, and <S-TEXT> each have two definitions; and
1.5576 -
1.5577 - o the non-terminal <UNDEFINED> is deliberately not defined.
1.5578 -
1.5579 -10. Internationalisation Considerations
1.5580 -
1.5581 -10.1. Introduction and Historical Situation
1.5582 -
1.5583 - RFC 977 [RFC977] was written at a time when internationalisation was
1.5584 - not seen as a significant issue. As such, it was written on the
1.5585 - assumption that all communication would be in ASCII and use only a
1.5586 - 7-bit transport layer, although in practice just about all known
1.5587 - implementations are 8-bit clean.
1.5588 -
1.5589 - Since then, Usenet and NNTP have spread throughout the world. In the
1.5590 - absence of standards for handling the issues of language and
1.5591 - character sets, countries, newsgroup hierarchies, and individuals
1.5592 - have found a variety of solutions that work for them but that are not
1.5593 - necessarily appropriate elsewhere. For example, some have adopted a
1.5594 - default 8-bit character set appropriate to their needs (such as
1.5595 - ISO/IEC 8859-1 in Western Europe or KOI-8 in Russia), others have
1.5596 - used ASCII (either US-ASCII or national variants) in headers but
1.5597 -
1.5598 -
1.5599 -
1.5600 -Feather Standards Track [Page 100]
1.5601 -
1.5602 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5603 -
1.5604 -
1.5605 - local 16-bit character sets in article bodies, and still others have
1.5606 - gone for a combination of MIME [RFC2045] and UTF-8. With the
1.5607 - increased use of MIME in email, it is becoming more common to find
1.5608 - NNTP articles containing MIME headers that identify the character set
1.5609 - of the body, but this is far from universal.
1.5610 -
1.5611 - The resulting confusion does not help interoperability.
1.5612 -
1.5613 - One point that has been generally accepted is that articles can
1.5614 - contain octets with the top bit set, and NNTP is only expected to
1.5615 - operate on 8-bit clean transport paths.
1.5616 -
1.5617 -10.2. This Specification
1.5618 -
1.5619 - Part of the role of this present specification is to eliminate this
1.5620 - confusion and promote interoperability as far as possible. At the
1.5621 - same time, it is necessary to accept the existence of the present
1.5622 - situation and not break existing implementations and arrangements
1.5623 - gratuitously, even if they are less than optimal. Therefore, the
1.5624 - current practice described above has been taken into consideration in
1.5625 - producing this specification.
1.5626 -
1.5627 - This specification extends NNTP from US-ASCII [ANSI1986] to UTF-8
1.5628 - [RFC3629]. Except in the two areas discussed below, UTF-8 (which is
1.5629 - a superset of US-ASCII) is mandatory, and implementations MUST NOT
1.5630 - use any other encoding.
1.5631 -
1.5632 - Firstly, the use of MIME for article headers and bodies is strongly
1.5633 - recommended. However, given widely divergent existing practices, an
1.5634 - attempt to require a particular encoding and tagging standard would
1.5635 - be premature at this time. Accordingly, this specification allows
1.5636 - the use of arbitrary 8-bit data in articles subject to the following
1.5637 - requirements and recommendations.
1.5638 -
1.5639 - o The names of headers (e.g., "From" or "Subject") MUST be in
1.5640 - US-ASCII.
1.5641 -
1.5642 - o Header values SHOULD use US-ASCII or an encoding based on it, such
1.5643 - as RFC 2047 [RFC2047], until such time as another approach has
1.5644 - been standardised. At present, 8-bit encodings (including UTF-8)
1.5645 - SHOULD NOT be used because they are likely to cause
1.5646 - interoperability problems.
1.5647 -
1.5648 - o The character set of article bodies SHOULD be indicated in the
1.5649 - article headers, and this SHOULD be done in accordance with MIME.
1.5650 -
1.5651 - o Where an article is obtained from an external source, an
1.5652 - implementation MAY pass it on and derive data from it (such as the
1.5653 -
1.5654 -
1.5655 -
1.5656 -Feather Standards Track [Page 101]
1.5657 -
1.5658 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5659 -
1.5660 -
1.5661 - response to the HDR command), even though the article or the data
1.5662 - does not meet the above requirements. Implementations MUST
1.5663 - transfer such articles and data correctly and unchanged; they MUST
1.5664 - NOT attempt to convert or re-encode the article or derived data.
1.5665 - (Nevertheless, a client or server MAY elect not to post or forward
1.5666 - the article if, after further examination of the article, it deems
1.5667 - it inappropriate to do so.)
1.5668 -
1.5669 - This requirement affects the ARTICLE (Section 6.2.1), BODY
1.5670 - (Section 6.2.3), HDR (Section 8.5), HEAD (Section 6.2.2), IHAVE
1.5671 - (Section 6.3.2), OVER (Section 8.3), and POST (Section 6.3.1)
1.5672 - commands.
1.5673 -
1.5674 - Secondly, the following requirements are placed on the newsgroups
1.5675 - list returned by the LIST NEWSGROUPS command (Section 7.6.6):
1.5676 -
1.5677 - o Although this specification allows UTF-8 for newsgroup names, they
1.5678 - SHOULD be restricted to US-ASCII until a successor to RFC 1036
1.5679 - [RFC1036] standardises another approach. 8-bit encodings SHOULD
1.5680 - NOT be used because they are likely to cause interoperability
1.5681 - problems.
1.5682 -
1.5683 - o The newsgroup description SHOULD be in US-ASCII or UTF-8 unless
1.5684 - and until a successor to RFC 1036 standardises other encoding
1.5685 - arrangements. 8-bit encodings other than UTF-8 SHOULD NOT be used
1.5686 - because they are likely to cause interoperability problems.
1.5687 -
1.5688 - o Implementations that obtain this data from an external source MUST
1.5689 - handle it correctly even if it does not meet the above
1.5690 - requirements. Implementations (in particular, clients) MUST
1.5691 - handle such data correctly.
1.5692 -
1.5693 -10.3. Outstanding Issues
1.5694 -
1.5695 - While the primary use of NNTP is for transmitting articles that
1.5696 - conform to RFC 1036 (Netnews articles), it is also used for other
1.5697 - formats (see Appendix A). It is therefore most appropriate that
1.5698 - internationalisation issues related to article formats be addressed
1.5699 - in the relevant specifications. For Netnews articles, this is any
1.5700 - successor to RFC 1036. For email messages, it is RFC 2822 [RFC2822].
1.5701 -
1.5702 - Of course, any article transmitted via NNTP needs to conform to this
1.5703 - specification as well.
1.5704 -
1.5705 - Restricting newsgroup names to UTF-8 is not a complete solution. In
1.5706 - particular, when new newsgroup names are created or a user is asked
1.5707 - to enter a newsgroup name, some scheme of canonicalisation will need
1.5708 - to take place. This specification does not attempt to define that
1.5709 -
1.5710 -
1.5711 -
1.5712 -Feather Standards Track [Page 102]
1.5713 -
1.5714 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5715 -
1.5716 -
1.5717 - canonicalization; further work is needed in this area, in conjunction
1.5718 - with the article format specifications. Until such specifications
1.5719 - are published, implementations SHOULD match newsgroup names octet by
1.5720 - octet. It is anticipated that any approved scheme will be applied
1.5721 - "at the edges", and therefore octet-by-octet comparison will continue
1.5722 - to apply to most, if not all, uses of newsgroup names in NNTP.
1.5723 -
1.5724 - In the meantime, any implementation experimenting with UTF-8
1.5725 - newsgroup names is strongly cautioned that a future specification may
1.5726 - require that those names be canonicalized when used with NNTP in a
1.5727 - way that is not compatible with their experiments.
1.5728 -
1.5729 - Since the primary use of NNTP is with Netnews, and since newsgroup
1.5730 - descriptions are normally distributed through specially formatted
1.5731 - articles, it is recommended that the internationalisation issues
1.5732 - related to them be addressed in any successor to RFC 1036.
1.5733 -
1.5734 -11. IANA Considerations
1.5735 -
1.5736 - This specification requires IANA to keep a registry of capability
1.5737 - labels. The initial contents of this registry are specified in
1.5738 - Section 3.3.4. As described in Section 3.3.3, labels beginning with
1.5739 - X are reserved for private use, while all other names are expected to
1.5740 - be associated with a specification in an RFC on the standards track
1.5741 - or defining an IESG-approved experimental protocol.
1.5742 -
1.5743 - Different entries in the registry MUST use different capability
1.5744 - labels.
1.5745 -
1.5746 - Different entries in the registry MUST NOT use the same command name.
1.5747 - For this purpose, variants distinguished by a second or subsequent
1.5748 - keyword (e.g., "LIST HEADERS" and "LIST OVERVIEW.FMT") count as
1.5749 - different commands. If there is a need for two extensions to use the
1.5750 - same command, a single harmonised specification MUST be registered.
1.5751 -
1.5752 -12. Security Considerations
1.5753 -
1.5754 - This section is meant to inform application developers, information
1.5755 - providers, and users of the security limitations in NNTP as described
1.5756 - by this document. The discussion does not include definitive
1.5757 - solutions to the problems revealed, though it does make some
1.5758 - suggestions for reducing security risks.
1.5759 -
1.5760 -
1.5761 -
1.5762 -
1.5763 -
1.5764 -
1.5765 -
1.5766 -
1.5767 -
1.5768 -Feather Standards Track [Page 103]
1.5769 -
1.5770 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5771 -
1.5772 -
1.5773 -12.1. Personal and Proprietary Information
1.5774 -
1.5775 - NNTP, because it was created to distribute network news articles,
1.5776 - will forward whatever information is stored in those articles.
1.5777 - Specification of that information is outside this scope of this
1.5778 - document, but it is likely that some personal and/or proprietary
1.5779 - information is available in some of those articles. It is very
1.5780 - important that designers and implementers provide informative
1.5781 - warnings to users so that personal and/or proprietary information in
1.5782 - material that is added automatically to articles (e.g., in headers)
1.5783 - is not disclosed inadvertently. Additionally, effective and easily
1.5784 - understood mechanisms to manage the distribution of news articles
1.5785 - SHOULD be provided to NNTP Server administrators, so that they are
1.5786 - able to report with confidence the likely spread of any particular
1.5787 - set of news articles.
1.5788 -
1.5789 -12.2. Abuse of Server Log Information
1.5790 -
1.5791 - A server is in the position to save session data about a user's
1.5792 - requests that might identify their reading patterns or subjects of
1.5793 - interest. This information is clearly confidential in nature, and
1.5794 - its handling can be constrained by law in certain countries. People
1.5795 - using this protocol to provide data are responsible for ensuring that
1.5796 - such material is not distributed without the permission of any
1.5797 - individuals that are identifiable by the published results.
1.5798 -
1.5799 -12.3. Weak Authentication and Access Control
1.5800 -
1.5801 - There is no user-based or token-based authentication in the basic
1.5802 - NNTP specification. Access is normally controlled by server
1.5803 - configuration files. Those files specify access by using domain
1.5804 - names or IP addresses. However, this specification does permit the
1.5805 - creation of extensions to NNTP for such purposes; one such extension
1.5806 - is [NNTP-AUTH]. While including such mechanisms is optional, doing
1.5807 - so is strongly encouraged.
1.5808 -
1.5809 - Other mechanisms are also available. For example, a proxy server
1.5810 - could be put in place that requires authentication before connecting
1.5811 - via the proxy to the NNTP server.
1.5812 -
1.5813 -12.4. DNS Spoofing
1.5814 -
1.5815 - Many existing NNTP implementations authorize incoming connections by
1.5816 - checking the IP address of that connection against the IP addresses
1.5817 - obtained via DNS lookups of lists of domain names given in local
1.5818 - configuration files. Servers that use this type of authentication
1.5819 - and clients that find a server by doing a DNS lookup of the server
1.5820 - name rely very heavily on the Domain Name Service, and are thus
1.5821 -
1.5822 -
1.5823 -
1.5824 -Feather Standards Track [Page 104]
1.5825 -
1.5826 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5827 -
1.5828 -
1.5829 - generally prone to security attacks based on the deliberate
1.5830 - misassociation of IP addresses and DNS names. Clients and servers
1.5831 - need to be cautious in assuming the continuing validity of an IP
1.5832 - number/DNS name association.
1.5833 -
1.5834 - In particular, NNTP clients and servers SHOULD rely on their name
1.5835 - resolver for confirmation of an IP number/DNS name association,
1.5836 - rather than cache the result of previous host name lookups. Many
1.5837 - platforms already can cache host name lookups locally when
1.5838 - appropriate, and they SHOULD be configured to do so. It is proper
1.5839 - for these lookups to be cached, however, only when the TTL (Time To
1.5840 - Live) information reported by the name server makes it likely that
1.5841 - the cached information will remain useful.
1.5842 -
1.5843 - If NNTP clients or servers cache the results of host name lookups in
1.5844 - order to achieve a performance improvement, they MUST observe the TTL
1.5845 - information reported by DNS. If NNTP clients or servers do not
1.5846 - observe this rule, they could be spoofed when a previously accessed
1.5847 - server's IP address changes. As network renumbering is expected to
1.5848 - become increasingly common, the possibility of this form of attack
1.5849 - will increase. Observing this requirement thus reduces this
1.5850 - potential security vulnerability.
1.5851 -
1.5852 - This requirement also improves the load-balancing behaviour of
1.5853 - clients for replicated servers using the same DNS name and reduces
1.5854 - the likelihood of a user's experiencing failure in accessing sites
1.5855 - that use that strategy.
1.5856 -
1.5857 -12.5. UTF-8 Issues
1.5858 -
1.5859 - UTF-8 [RFC3629] permits only certain sequences of octets and
1.5860 - designates others as either malformed or "illegal". The Unicode
1.5861 - standard identifies a number of security issues related to illegal
1.5862 - sequences and forbids their generation by conforming implementations.
1.5863 -
1.5864 - Implementations of this specification MUST NOT generate malformed or
1.5865 - illegal sequences and SHOULD detect them and take some appropriate
1.5866 - action. This could include the following:
1.5867 -
1.5868 - o Generating a 501 response code.
1.5869 -
1.5870 - o Replacing such sequences by the sequence %xEF.BF.BD, which encodes
1.5871 - the "replacement character" U+FFFD.
1.5872 -
1.5873 - o Closing the connection.
1.5874 -
1.5875 - o Replacing such sequences by a "guessed" valid sequence (based on
1.5876 - properties of the UTF-8 encoding).
1.5877 -
1.5878 -
1.5879 -
1.5880 -Feather Standards Track [Page 105]
1.5881 -
1.5882 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5883 -
1.5884 -
1.5885 - In the last case, the implementation MUST ensure that any replacement
1.5886 - cannot be used to bypass validity or security checks. For example,
1.5887 - the illegal sequence %xC0.A0 is an over-long encoding for space
1.5888 - (%x20). If it is replaced by the correct encoding in a command line,
1.5889 - this needs to happen before the command line is parsed into
1.5890 - individual arguments. If the replacement came after parsing, it
1.5891 - would be possible to generate an argument with an embedded space,
1.5892 - which is forbidden. Use of the "replacement character" does not have
1.5893 - this problem, since it is permitted wherever non-US-ASCII characters
1.5894 - are. Implementations SHOULD use one of the first two solutions where
1.5895 - the general structure of the NNTP stream remains intact and SHOULD
1.5896 - close the connection if it is no longer possible to parse it
1.5897 - sensibly.
1.5898 -
1.5899 -12.6. Caching of Capability Lists
1.5900 -
1.5901 - The CAPABILITIES command provides a capability list, which is
1.5902 - information about the current capabilities of the server. Whenever
1.5903 - there is a relevant change to the server state, the results of this
1.5904 - command are required to change accordingly.
1.5905 -
1.5906 - In most situations, the capabilities list in a given server state
1.5907 - will not change from session to session; for example, a given
1.5908 - extension will be installed permanently on a server. Some clients
1.5909 - may therefore wish to remember which extensions a server supports to
1.5910 - avoid the delay of an additional command and response, particularly
1.5911 - if they open multiple connections in the same session.
1.5912 -
1.5913 - However, information about extensions related to security and privacy
1.5914 - MUST NOT be cached, since this could allow a variety of attacks.
1.5915 -
1.5916 - For example, consider a server that permits the use of cleartext
1.5917 - passwords on links that are encrypted but not otherwise:
1.5918 -
1.5919 - [Initial connection set-up completed.]
1.5920 - [S] 200 NNTP Service Ready, posting permitted
1.5921 - [C] CAPABILITIES
1.5922 - [S] 101 Capability list:
1.5923 - [S] VERSION 2
1.5924 - [S] READER
1.5925 - [S] NEWNEWS
1.5926 - [S] POST
1.5927 - [S] XENCRYPT
1.5928 - [S] LIST ACTIVE NEWSGROUPS
1.5929 - [S] .
1.5930 - [C] XENCRYPT
1.5931 - [Client and server negotiate encryption on the link]
1.5932 - [S] 283 Encrypted link established
1.5933 -
1.5934 -
1.5935 -
1.5936 -Feather Standards Track [Page 106]
1.5937 -
1.5938 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5939 -
1.5940 -
1.5941 - [C] CAPABILITIES
1.5942 - [S] 101 Capability list:
1.5943 - [S] VERSION 2
1.5944 - [S] READER
1.5945 - [S] NEWNEWS
1.5946 - [S] POST
1.5947 - [S] XSECRET
1.5948 - [S] LIST ACTIVE NEWSGROUPS
1.5949 - [S] .
1.5950 - [C] XSECRET fred flintstone
1.5951 - [S] 290 Password for fred accepted
1.5952 -
1.5953 - If the client caches the last capabilities list, then on the next
1.5954 - session it will attempt to use XSECRET on an unencrypted link:
1.5955 -
1.5956 - [Initial connection set-up completed.]
1.5957 - [S] 200 NNTP Service Ready, posting permitted
1.5958 - [C] XSECRET fred flintstone
1.5959 - [S] 483 Only permitted on secure links
1.5960 -
1.5961 - This exposes the password to any eavesdropper. While the primary
1.5962 - cause of this is passing a secret without first checking the security
1.5963 - of the link, caching of capability lists can increase the risk.
1.5964 -
1.5965 - Any security extension should include requirements to check the
1.5966 - security state of the link in a manner appropriate to that extension.
1.5967 -
1.5968 - Caching should normally only be considered for anonymous clients that
1.5969 - do not use any security or privacy extensions and for which the time
1.5970 - required for an additional command and response is a noticeable
1.5971 - issue.
1.5972 -
1.5973 -13. Acknowledgements
1.5974 -
1.5975 - This document is the result of much effort by the present and past
1.5976 - members of the NNTP Working Group, chaired by Russ Allbery and Ned
1.5977 - Freed. It could not have been produced without them.
1.5978 -
1.5979 - The author acknowledges the original authors of NNTP as documented in
1.5980 - RFC 977 [RFC977]: Brian Kantor and Phil Lapsey.
1.5981 -
1.5982 - The author gratefully acknowledges the following:
1.5983 -
1.5984 - o The work of the NNTP committee chaired by Eliot Lear. The
1.5985 - organization of this document was influenced by the last available
1.5986 - version from this working group. A special thanks to Eliot for
1.5987 - generously providing the original machine-readable sources for
1.5988 - that document.
1.5989 -
1.5990 -
1.5991 -
1.5992 -Feather Standards Track [Page 107]
1.5993 -
1.5994 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5995 -
1.5996 -
1.5997 - o The work of the DRUMS working group, specifically RFC 1869
1.5998 - [RFC1869], that drove the original thinking that led to the
1.5999 - CAPABILITIES command and the extensions mechanism detailed in this
1.6000 - document.
1.6001 -
1.6002 - o The authors of RFC 2616 [RFC2616] for providing specific and
1.6003 - relevant examples of security issues that should be considered for
1.6004 - HTTP. Since many of the same considerations exist for NNTP, those
1.6005 - examples that are relevant have been included here with some minor
1.6006 - rewrites.
1.6007 -
1.6008 - o The comments and additional information provided by the following
1.6009 - individuals in preparing one or more of the progenitors of this
1.6010 - document:
1.6011 -
1.6012 - Russ Allbery <rra@stanford.edu>
1.6013 - Wayne Davison <davison@armory.com>
1.6014 - Chris Lewis <clewis@bnr.ca>
1.6015 - Tom Limoncelli <tal@mars.superlink.net>
1.6016 - Eric Schnoebelen <eric@egsner.cirr.com>
1.6017 - Rich Salz <rsalz@osf.org>
1.6018 -
1.6019 - This work was motivated by the work of various news reader authors
1.6020 - and news server authors, including those listed below:
1.6021 -
1.6022 - Rick Adams
1.6023 - Original author of the NNTP extensions to the RN news reader and
1.6024 - last maintainer of Bnews.
1.6025 -
1.6026 - Stan Barber
1.6027 - Original author of the NNTP extensions to the news readers that
1.6028 - are part of Bnews.
1.6029 -
1.6030 - Geoff Collyer
1.6031 - Original author of the OVERVIEW database proposal and one of the
1.6032 - original authors of CNEWS.
1.6033 -
1.6034 - Dan Curry
1.6035 - Original author of the xvnews news reader.
1.6036 -
1.6037 - Wayne Davison
1.6038 - Author of the first threading extensions to the RN news reader
1.6039 - (commonly called TRN).
1.6040 -
1.6041 - Geoff Huston
1.6042 - Original author of ANU NEWS.
1.6043 -
1.6044 -
1.6045 -
1.6046 -
1.6047 -
1.6048 -Feather Standards Track [Page 108]
1.6049 -
1.6050 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6051 -
1.6052 -
1.6053 - Phil Lapsey
1.6054 - Original author of the UNIX reference implementation for NNTP.
1.6055 -
1.6056 - Iain Lea
1.6057 - Original maintainer of the TIN news reader.
1.6058 -
1.6059 - Chris Lewis
1.6060 - First known implementer of the AUTHINFO GENERIC extension.
1.6061 -
1.6062 - Rich Salz
1.6063 - Original author of INN.
1.6064 -
1.6065 - Henry Spencer
1.6066 - One of the original authors of CNEWS.
1.6067 -
1.6068 - Kim Storm
1.6069 - Original author of the NN news reader.
1.6070 -
1.6071 - Other people who contributed to this document include:
1.6072 -
1.6073 - Matthias Andree
1.6074 - Greg Andruk
1.6075 - Daniel Barclay
1.6076 - Maurizio Codogno
1.6077 - Mark Crispin
1.6078 - Andrew Gierth
1.6079 - Juergen Helbing
1.6080 - Scott Hollenbeck
1.6081 - Urs Janssen
1.6082 - Charles Lindsey
1.6083 - Ade Lovett
1.6084 - David Magda
1.6085 - Ken Murchison
1.6086 - Francois Petillon
1.6087 - Peter Robinson
1.6088 - Rob Siemborski
1.6089 - Howard Swinehart
1.6090 - Ruud van Tol
1.6091 - Jeffrey Vinocur
1.6092 - Erik Warmelink
1.6093 -
1.6094 - The author thanks them all and apologises to anyone omitted.
1.6095 -
1.6096 - Finally, the present author gratefully acknowledges the vast amount
1.6097 - of work put into previous versions by the previous author:
1.6098 -
1.6099 - Stan Barber <sob@academ.com>
1.6100 -
1.6101 -
1.6102 -
1.6103 -
1.6104 -Feather Standards Track [Page 109]
1.6105 -
1.6106 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6107 -
1.6108 -
1.6109 -14. References
1.6110 -
1.6111 -14.1. Normative References
1.6112 -
1.6113 - [ANSI1986] American National Standards Institute, "Coded Character
1.6114 - Set - 7-bit American Standard Code for Information
1.6115 - Interchange", ANSI X3.4, 1986.
1.6116 -
1.6117 - [RFC977] Kantor, B. and P. Lapsley, "Network News Transfer
1.6118 - Protocol", RFC 977, February 1986.
1.6119 -
1.6120 - [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet
1.6121 - Mail Extensions (MIME) Part One: Format of Internet
1.6122 - Message Bodies", RFC 2045, November 1996.
1.6123 -
1.6124 - [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail
1.6125 - Extensions) Part Three: Message Header Extensions for
1.6126 - Non-ASCII Text", RFC 2047, November 1996.
1.6127 -
1.6128 - [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1.6129 - Requirement Levels", BCP 14, RFC 2119, March 1997.
1.6130 -
1.6131 - [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
1.6132 - 10646", STD 63, RFC 3629, November 2003.
1.6133 -
1.6134 - [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for
1.6135 - Syntax Specifications: ABNF", RFC 4234, October 2005.
1.6136 -
1.6137 - [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
1.6138 - Encodings", RFC 4648, October 2006.
1.6139 -
1.6140 - [TF.686-1] International Telecommunications Union - Radio,
1.6141 - "Glossary, ITU-R Recommendation TF.686-1",
1.6142 - ITU-R Recommendation TF.686-1, October 1997.
1.6143 -
1.6144 -14.2. Informative References
1.6145 -
1.6146 - [NNTP-AUTH] Vinocur, J., Murchison, K., and C. Newman, "Network
1.6147 - News Transfer Protocol (NNTP) Extension for
1.6148 - Authentication",
1.6149 - RFC 4643, October 2006.
1.6150 -
1.6151 - [NNTP-STREAM] Vinocur, J. and K. Murchison, "Network News Transfer
1.6152 - Protocol (NNTP) Extension for Streaming Feeds",
1.6153 - RFC 4644, October 2006.
1.6154 -
1.6155 -
1.6156 -
1.6157 -
1.6158 -
1.6159 -
1.6160 -Feather Standards Track [Page 110]
1.6161 -
1.6162 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6163 -
1.6164 -
1.6165 - [NNTP-TLS] Murchison, K., Vinocur, J., and C. Newman, "Using
1.6166 - Transport Layer Security (TLS) with Network News
1.6167 - Transfer Protocol (NNTP)", RFC 4642, October 2006.
1.6168 -
1.6169 - [RFC1036] Horton, M. and R. Adams, "Standard for interchange of
1.6170 - USENET messages", RFC 1036, December 1987.
1.6171 -
1.6172 - [RFC1305] Mills, D., "Network Time Protocol (Version 3)
1.6173 - Specification, Implementation and Analysis", RFC 1305,
1.6174 - March 1992.
1.6175 -
1.6176 - [RFC1869] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
1.6177 - Crocker, "SMTP Service Extensions", STD 10, RFC 1869,
1.6178 - November 1995.
1.6179 -
1.6180 - [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
1.6181 - Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
1.6182 - Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
1.6183 -
1.6184 - [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
1.6185 - June 1999.
1.6186 -
1.6187 - [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April
1.6188 - 2001.
1.6189 -
1.6190 - [RFC2980] Barber, S., "Common NNTP Extensions", RFC 2980, October
1.6191 - 2000.
1.6192 -
1.6193 - [ROBE1995] Robertson, R., "FAQ: Overview database / NOV General
1.6194 - Information", January 1995.
1.6195 -
1.6196 - There is no definitive copy of this document known to
1.6197 - the author. It was previously posted as the Usenet
1.6198 - article <news:nov-faq-1-930909720@agate.Berkeley.EDU>
1.6199 -
1.6200 - [SALZ1992] Salz, R., "Manual Page for wildmat(3) from the INN 1.4
1.6201 - distribution, Revision 1.10", April 1992.
1.6202 -
1.6203 - There is no definitive copy of this document known to
1.6204 - the author.
1.6205 -
1.6206 -
1.6207 -
1.6208 -
1.6209 -
1.6210 -
1.6211 -
1.6212 -
1.6213 -
1.6214 -
1.6215 -
1.6216 -Feather Standards Track [Page 111]
1.6217 -
1.6218 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6219 -
1.6220 -
1.6221 -Appendix A. Interaction with Other Specifications
1.6222 -
1.6223 - NNTP is most often used for transferring articles that conform to
1.6224 - RFC 1036 [RFC1036] (such articles are called "Netnews articles"
1.6225 - here). It is also sometimes used for transferring email messages
1.6226 - that conform to RFC 2822 [RFC2822] (such articles are called "email
1.6227 - articles" here). In this situation, articles must conform both to
1.6228 - this specification and to that other one; this appendix describes
1.6229 - some relevant issues.
1.6230 -
1.6231 -A.1. Header Folding
1.6232 -
1.6233 - NNTP allows a header line to be folded (by inserting a CRLF pair)
1.6234 - before any space or TAB character.
1.6235 -
1.6236 - Both email and Netnews articles are required to have at least one
1.6237 - octet other than space or TAB on each header line. Thus, folding can
1.6238 - only happen at one point in each sequence of consecutive spaces or
1.6239 - TABs. Netnews articles are further required to have the header name,
1.6240 - colon, and following space all on the first line; folding may only
1.6241 - happen beyond that space. Finally, some non-conforming software will
1.6242 - remove trailing spaces and TABs from a line. Therefore, it might be
1.6243 - inadvisable to fold a header after a space or TAB.
1.6244 -
1.6245 - For maximum safety, header lines SHOULD conform to the following
1.6246 - syntax rather than to that in Section 9.7.
1.6247 -
1.6248 -
1.6249 - header = header-name ":" SP [header-content] CRLF
1.6250 - header-content = [WS] token *( [CRLF] WS token )
1.6251 -
1.6252 -A.2. Message-IDs
1.6253 -
1.6254 - Every article handled by an NNTP server MUST have a unique
1.6255 - message-id. For the purposes of this specification, a message-id is
1.6256 - an arbitrary opaque string that merely needs to meet certain
1.6257 - syntactic requirements and is just a way to refer to the article.
1.6258 -
1.6259 - Because there is a significant risk that old articles will be
1.6260 - reinjected into the global Usenet system, RFC 1036 [RFC1036] requires
1.6261 - that message-ids are globally unique for all time.
1.6262 -
1.6263 - This specification states that message-ids are the same if and only
1.6264 - if they consist of the same sequence of octets. Other specifications
1.6265 - may define two different sequences as being equal because they are
1.6266 - putting an interpretation on particular characters. RFC 2822
1.6267 - [RFC2822] has a concept of "quoted" and "escaped" characters. It
1.6268 - therefore considers the three message-ids:
1.6269 -
1.6270 -
1.6271 -
1.6272 -Feather Standards Track [Page 112]
1.6273 -
1.6274 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6275 -
1.6276 -
1.6277 - <ab.cd@example.com>
1.6278 - <"ab.cd"@example.com>
1.6279 - <"ab.\cd"@example.com>
1.6280 -
1.6281 - as being identical. Therefore, an NNTP implementation handing email
1.6282 - articles must ensure that only one of these three appears in the
1.6283 - protocol and that the other two are converted to it as and when
1.6284 - necessary, such as when a client checks the results of a NEWNEWS
1.6285 - command against an internal database of message-ids. Note that
1.6286 - RFC 1036 [RFC1036] never treats two different strings as being
1.6287 - identical. Its successor (as of the time of writing) restricts the
1.6288 - syntax of message-ids so that, whenever RFC 2822 would treat two
1.6289 - strings as equivalent, only one of them is valid (in the above
1.6290 - example, only the first string is valid).
1.6291 -
1.6292 - This specification does not describe how the message-id of an article
1.6293 - is determined; it may be deduced from the contents of the article or
1.6294 - derived from some external source. If the server is also conforming
1.6295 - to another specification that contains a definition of message-id
1.6296 - compatible with this one, the server SHOULD use those message-ids. A
1.6297 - common approach, and one that SHOULD be used for email and Netnews
1.6298 - articles, is to extract the message-id from the contents of a header
1.6299 - with name "Message-ID". This may not be as simple as copying the
1.6300 - entire header contents; it may be necessary to strip off comments and
1.6301 - undo quoting, or to reduce "equivalent" message-ids to a canonical
1.6302 - form.
1.6303 -
1.6304 - If an article is obtained through the IHAVE command, there will be a
1.6305 - message-id provided with the command. The server MAY either use it
1.6306 - or determine one from the article contents. However, whichever it
1.6307 - does, it SHOULD ensure that, if the IHAVE command is repeated with
1.6308 - the same argument and article, it will be recognized as a duplicate.
1.6309 -
1.6310 - If an article does not contain a message-id that the server can
1.6311 - identify, it MUST synthesize one. This could, for example, be a
1.6312 - simple sequence number or be based on the date and time when the
1.6313 - article arrived. When email or Netnews articles are handled, a
1.6314 - Message-ID header SHOULD be added to ensure global consistency and
1.6315 - uniqueness.
1.6316 -
1.6317 - Note that, because the message-id might not have been derived from
1.6318 - the Message-ID header in the article, the following example is
1.6319 - legitimate (though unusual):
1.6320 -
1.6321 -
1.6322 -
1.6323 -
1.6324 -
1.6325 -
1.6326 -
1.6327 -
1.6328 -Feather Standards Track [Page 113]
1.6329 -
1.6330 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6331 -
1.6332 -
1.6333 - [C] HEAD <45223423@example.com>
1.6334 - [S] 221 0 <45223423@example.com>
1.6335 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.6336 - [S] Message-ID: <1234@example.net>
1.6337 - [S] From: "Demo User" <nobody@example.net>
1.6338 - [S] Newsgroups: misc.test
1.6339 - [S] Subject: I am just a test article
1.6340 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.6341 - [S] Organization: An Example Net, Uncertain, Texas
1.6342 - [S] .
1.6343 -
1.6344 -A.3. Article Posting
1.6345 -
1.6346 - As far as NNTP is concerned, the POST and IHAVE commands provide the
1.6347 - same basic facilities in a slightly different way. However, they
1.6348 - have rather different intentions.
1.6349 -
1.6350 - The IHAVE command is intended for transmitting conforming articles
1.6351 - between a system of NNTP servers, with all articles perhaps also
1.6352 - conforming to another specification (e.g., all articles are Netnews
1.6353 - articles). It is expected that the client will already have done any
1.6354 - necessary validation (or that it has in turn obtained the article
1.6355 - from a third party that has done so); therefore, the contents SHOULD
1.6356 - be left unchanged.
1.6357 -
1.6358 - In contrast, the POST command is intended for use when an end-user is
1.6359 - injecting a newly created article into a such a system. The article
1.6360 - being transferred might not be a conforming email or Netnews article,
1.6361 - and the server is expected to validate it and, if necessary, to
1.6362 - convert it to the right form for onward distribution. This is often
1.6363 - done by a separate piece of software on the server installation; if
1.6364 - so, the NNTP server SHOULD pass the incoming article to that software
1.6365 - unaltered, making no attempt to filter characters, to fold or limit
1.6366 - lines, or to process the incoming text otherwise.
1.6367 -
1.6368 - The POST command can fail in various ways, and clients should be
1.6369 - prepared to re-send an article. When doing so, however, it is often
1.6370 - important to ensure (as far as possible) that the same message-id is
1.6371 - allocated to both attempts so that the server, or other servers, can
1.6372 - recognize the two articles as duplicates. In the case of email or
1.6373 - Netnews articles, therefore, the posted article SHOULD contain a
1.6374 - header with the name "Message-ID", and the contents of this header
1.6375 - SHOULD be identical on each attempt. The server SHOULD ensure that
1.6376 - two POSTed articles with the same contents for this header are
1.6377 - recognized as identical and that the same message-id is allocated,
1.6378 - whether or not those contents are suitable for use as the message-id.
1.6379 -
1.6380 -
1.6381 -
1.6382 -
1.6383 -
1.6384 -Feather Standards Track [Page 114]
1.6385 -
1.6386 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6387 -
1.6388 -
1.6389 -Appendix B. Summary of Commands
1.6390 -
1.6391 - This section contains a list of every command defined in this
1.6392 - document, ordered by command name and by indicating capability.
1.6393 -
1.6394 - Ordered by command name:
1.6395 -
1.6396 - +-------------------+-----------------------+---------------+
1.6397 - | Command | Indicating capability | Definition |
1.6398 - +-------------------+-----------------------+---------------+
1.6399 - | ARTICLE | READER | Section 6.2.1 |
1.6400 - | BODY | READER | Section 6.2.3 |
1.6401 - | CAPABILITIES | mandatory | Section 5.2 |
1.6402 - | DATE | READER | Section 7.1 |
1.6403 - | GROUP | READER | Section 6.1.1 |
1.6404 - | HDR | HDR | Section 8.5 |
1.6405 - | HEAD | mandatory | Section 6.2.2 |
1.6406 - | HELP | mandatory | Section 7.2 |
1.6407 - | IHAVE | IHAVE | Section 6.3.2 |
1.6408 - | LAST | READER | Section 6.1.3 |
1.6409 - | LIST | LIST | Section 7.6.1 |
1.6410 - | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
1.6411 - | LIST ACTIVE | LIST | Section 7.6.3 |
1.6412 - | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
1.6413 - | LIST HEADERS | HDR | Section 8.6 |
1.6414 - | LIST NEWSGROUPS | LIST | Section 7.6.6 |
1.6415 - | LIST OVERVIEW.FMT | OVER | Section 8.4 |
1.6416 - | LISTGROUP | READER | Section 6.1.2 |
1.6417 - | MODE READER | MODE-READER | Section 5.3 |
1.6418 - | NEWGROUPS | READER | Section 7.3 |
1.6419 - | NEWNEWS | NEWNEWS | Section 7.4 |
1.6420 - | NEXT | READER | Section 6.1.4 |
1.6421 - | OVER | OVER | Section 8.3 |
1.6422 - | POST | POST | Section 6.3.1 |
1.6423 - | QUIT | mandatory | Section 5.4 |
1.6424 - | STAT | mandatory | Section 6.2.4 |
1.6425 - +-------------------+-----------------------+---------------+
1.6426 -
1.6427 -
1.6428 -
1.6429 -
1.6430 -
1.6431 -
1.6432 -
1.6433 -
1.6434 -
1.6435 -
1.6436 -
1.6437 -
1.6438 -
1.6439 -
1.6440 -Feather Standards Track [Page 115]
1.6441 -
1.6442 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6443 -
1.6444 -
1.6445 - Ordered by indicating capability:
1.6446 -
1.6447 - +-------------------+-----------------------+---------------+
1.6448 - | Command | Indicating capability | Definition |
1.6449 - +-------------------+-----------------------+---------------+
1.6450 - | CAPABILITIES | mandatory | Section 5.2 |
1.6451 - | HEAD | mandatory | Section 6.2.2 |
1.6452 - | HELP | mandatory | Section 7.2 |
1.6453 - | QUIT | mandatory | Section 5.4 |
1.6454 - | STAT | mandatory | Section 6.2.4 |
1.6455 - | HDR | HDR | Section 8.5 |
1.6456 - | LIST HEADERS | HDR | Section 8.6 |
1.6457 - | IHAVE | IHAVE | Section 6.3.2 |
1.6458 - | LIST | LIST | Section 7.6.1 |
1.6459 - | LIST ACTIVE | LIST | Section 7.6.3 |
1.6460 - | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
1.6461 - | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
1.6462 - | LIST NEWSGROUPS | LIST | Section 7.6.6 |
1.6463 - | MODE READER | MODE-READER | Section 5.3 |
1.6464 - | NEWNEWS | NEWNEWS | Section 7.4 |
1.6465 - | OVER | OVER | Section 8.3 |
1.6466 - | LIST OVERVIEW.FMT | OVER | Section 8.4 |
1.6467 - | POST | POST | Section 6.3.1 |
1.6468 - | ARTICLE | READER | Section 6.2.1 |
1.6469 - | BODY | READER | Section 6.2.3 |
1.6470 - | DATE | READER | Section 7.1 |
1.6471 - | GROUP | READER | Section 6.1.1 |
1.6472 - | LAST | READER | Section 6.1.3 |
1.6473 - | LISTGROUP | READER | Section 6.1.2 |
1.6474 - | NEWGROUPS | READER | Section 7.3 |
1.6475 - | NEXT | READER | Section 6.1.4 |
1.6476 - +-------------------+-----------------------+---------------+
1.6477 -
1.6478 -
1.6479 -
1.6480 -
1.6481 -
1.6482 -
1.6483 -
1.6484 -
1.6485 -
1.6486 -
1.6487 -
1.6488 -
1.6489 -
1.6490 -
1.6491 -
1.6492 -
1.6493 -
1.6494 -
1.6495 -
1.6496 -Feather Standards Track [Page 116]
1.6497 -
1.6498 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6499 -
1.6500 -
1.6501 -Appendix C. Summary of Response Codes
1.6502 -
1.6503 - This section contains a list of every response code defined in this
1.6504 - document and indicates whether it is multi-line, which commands can
1.6505 - generate it, what arguments it has, and what its meaning is.
1.6506 -
1.6507 - Response code 100 (multi-line)
1.6508 - Generated by: HELP
1.6509 - Meaning: help text follows.
1.6510 -
1.6511 - Response code 101 (multi-line)
1.6512 - Generated by: CAPABILITIES
1.6513 - Meaning: capabilities list follows.
1.6514 -
1.6515 - Response code 111
1.6516 - Generated by: DATE
1.6517 - 1 argument: yyyymmddhhmmss
1.6518 - Meaning: server date and time.
1.6519 -
1.6520 - Response code 200
1.6521 - Generated by: initial connection, MODE READER
1.6522 - Meaning: service available, posting allowed.
1.6523 -
1.6524 - Response code 201
1.6525 - Generated by: initial connection, MODE READER
1.6526 - Meaning: service available, posting prohibited.
1.6527 -
1.6528 - Response code 205
1.6529 - Generated by: QUIT
1.6530 - Meaning: connection closing (the server immediately closes the
1.6531 - connection).
1.6532 -
1.6533 - Response code 211
1.6534 - The 211 response code has two completely different forms,
1.6535 - depending on which command generated it:
1.6536 -
1.6537 - (not multi-line)
1.6538 - Generated by: GROUP
1.6539 - 4 arguments: number low high group
1.6540 - Meaning: group selected.
1.6541 -
1.6542 - (multi-line)
1.6543 - Generated by: LISTGROUP
1.6544 - 4 arguments: number low high group
1.6545 - Meaning: article numbers follow.
1.6546 -
1.6547 -
1.6548 -
1.6549 -
1.6550 -
1.6551 -
1.6552 -Feather Standards Track [Page 117]
1.6553 -
1.6554 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6555 -
1.6556 -
1.6557 - Response code 215 (multi-line)
1.6558 - Generated by: LIST
1.6559 - Meaning: information follows.
1.6560 -
1.6561 - Response code 220 (multi-line)
1.6562 - Generated by: ARTICLE
1.6563 - 2 arguments: n message-id
1.6564 - Meaning: article follows.
1.6565 -
1.6566 - Response code 221 (multi-line)
1.6567 - Generated by: HEAD
1.6568 - 2 arguments: n message-id
1.6569 - Meaning: article headers follow.
1.6570 -
1.6571 - Response code 222 (multi-line)
1.6572 - Generated by: BODY
1.6573 - 2 arguments: n message-id
1.6574 - Meaning: article body follows.
1.6575 -
1.6576 - Response code 223
1.6577 - Generated by: LAST, NEXT, STAT
1.6578 - 2 arguments: n message-id
1.6579 - Meaning: article exists and selected.
1.6580 -
1.6581 - Response code 224 (multi-line)
1.6582 - Generated by: OVER
1.6583 - Meaning: overview information follows.
1.6584 -
1.6585 - Response code 225 (multi-line)
1.6586 - Generated by: HDR
1.6587 - Meaning: headers follow.
1.6588 -
1.6589 - Response code 230 (multi-line)
1.6590 - Generated by: NEWNEWS
1.6591 - Meaning: list of new articles follows.
1.6592 -
1.6593 - Response code 231 (multi-line)
1.6594 - Generated by: NEWGROUPS
1.6595 - Meaning: list of new newsgroups follows.
1.6596 -
1.6597 - Response code 235
1.6598 - Generated by: IHAVE (second stage)
1.6599 - Meaning: article transferred OK.
1.6600 -
1.6601 - Response code 240
1.6602 - Generated by: POST (second stage)
1.6603 - Meaning: article received OK.
1.6604 -
1.6605 -
1.6606 -
1.6607 -
1.6608 -Feather Standards Track [Page 118]
1.6609 -
1.6610 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6611 -
1.6612 -
1.6613 - Response code 335
1.6614 - Generated by: IHAVE (first stage)
1.6615 - Meaning: send article to be transferred.
1.6616 -
1.6617 - Response code 340
1.6618 - Generated by: POST (first stage)
1.6619 - Meaning: send article to be posted.
1.6620 -
1.6621 - Response code 400
1.6622 - Generic response and generated by initial connection
1.6623 - Meaning: service not available or no longer available (the server
1.6624 - immediately closes the connection).
1.6625 -
1.6626 - Response code 401
1.6627 - Generic response
1.6628 - 1 argument: capability-label
1.6629 - Meaning: the server is in the wrong mode; the indicated capability
1.6630 - should be used to change the mode.
1.6631 -
1.6632 - Response code 403
1.6633 - Generic response
1.6634 - Meaning: internal fault or problem preventing action being taken.
1.6635 -
1.6636 - Response code 411
1.6637 - Generated by: GROUP, LISTGROUP
1.6638 - Meaning: no such newsgroup.
1.6639 -
1.6640 - Response code 412
1.6641 - Generated by: ARTICLE, BODY, GROUP, HDR, HEAD, LAST, LISTGROUP,
1.6642 - NEXT, OVER, STAT
1.6643 - Meaning: no newsgroup selected.
1.6644 -
1.6645 - Response code 420
1.6646 - Generated by: ARTICLE, BODY, HDR, HEAD, LAST, NEXT, OVER, STAT
1.6647 - Meaning: current article number is invalid.
1.6648 -
1.6649 - Response code 421
1.6650 - Generated by: NEXT
1.6651 - Meaning: no next article in this group.
1.6652 -
1.6653 - Response code 422
1.6654 - Generated by: LAST
1.6655 - Meaning: no previous article in this group.
1.6656 -
1.6657 - Response code 423
1.6658 - Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
1.6659 - Meaning: no article with that number or in that range.
1.6660 -
1.6661 -
1.6662 -
1.6663 -
1.6664 -Feather Standards Track [Page 119]
1.6665 -
1.6666 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6667 -
1.6668 -
1.6669 - Response code 430
1.6670 - Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
1.6671 - Meaning: no article with that message-id.
1.6672 -
1.6673 - Response code 435
1.6674 - Generated by: IHAVE (first stage)
1.6675 - Meaning: article not wanted.
1.6676 -
1.6677 - Response code 436
1.6678 - Generated by: IHAVE (either stage)
1.6679 - Meaning: transfer not possible (first stage) or failed (second
1.6680 - stage); try again later.
1.6681 -
1.6682 - Response code 437
1.6683 - Generated by: IHAVE (second stage)
1.6684 - Meaning: transfer rejected; do not retry.
1.6685 -
1.6686 - Response code 440
1.6687 - Generated by: POST (first stage)
1.6688 - Meaning: posting not permitted.
1.6689 -
1.6690 - Response code 441
1.6691 - Generated by: POST (second stage)
1.6692 - Meaning: posting failed.
1.6693 -
1.6694 - Response code 480
1.6695 - Generic response
1.6696 - Meaning: command unavailable until the client has authenticated
1.6697 - itself.
1.6698 -
1.6699 - Response code 483
1.6700 - Generic response
1.6701 - Meaning: command unavailable until suitable privacy has been
1.6702 - arranged.
1.6703 -
1.6704 - Response code 500
1.6705 - Generic response
1.6706 - Meaning: unknown command.
1.6707 -
1.6708 - Response code 501
1.6709 - Generic response
1.6710 - Meaning: syntax error in command.
1.6711 -
1.6712 -
1.6713 -
1.6714 -
1.6715 -
1.6716 -
1.6717 -
1.6718 -
1.6719 -
1.6720 -Feather Standards Track [Page 120]
1.6721 -
1.6722 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6723 -
1.6724 -
1.6725 - Response code 502
1.6726 - Generic response and generated by initial connection
1.6727 -
1.6728 - Meaning for the initial connection and the MODE READER command:
1.6729 - service permanently unavailable (the server immediately closes the
1.6730 - connection).
1.6731 -
1.6732 - Meaning for all other commands: command not permitted (and there
1.6733 - is no way for the client to change this).
1.6734 -
1.6735 - Response code 503
1.6736 - Generic response
1.6737 - Meaning: feature not supported.
1.6738 -
1.6739 - Response code 504
1.6740 - Generic response
1.6741 - Meaning: error in base64-encoding [RFC4648] of an argument.
1.6742 -
1.6743 -Appendix D. Changes from RFC 977
1.6744 -
1.6745 - In general every attempt has been made to ensure that the protocol
1.6746 - specification in this document is compatible with the version
1.6747 - specified in RFC 977 [RFC977] and the various facilities adopted from
1.6748 - RFC 2980 [RFC2980]. However, there have been a number of changes,
1.6749 - some compatible and some not.
1.6750 -
1.6751 - This appendix lists these changes. It is not guaranteed to be
1.6752 - exhaustive or correct and MUST NOT be relied on.
1.6753 -
1.6754 - o A formal syntax specification (Section 9) has been added.
1.6755 -
1.6756 - o The default character set is changed from US-ASCII [ANSI1986] to
1.6757 - UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8). This
1.6758 - matter is discussed further in Section 10.
1.6759 -
1.6760 - o All articles are required to have a message-id, eliminating the
1.6761 - "<0>" placeholder used in RFC 977 in some responses.
1.6762 -
1.6763 - o The newsgroup name matching capabilities already documented in
1.6764 - RFC 977 ("wildmats", Section 4) are clarified and extended. The
1.6765 - new facilities (e.g., the use of commas and exclamation marks) are
1.6766 - allowed wherever wildmats appear in the protocol.
1.6767 -
1.6768 - o Support for pipelining of commands (Section 3.5) is made
1.6769 - mandatory.
1.6770 -
1.6771 -
1.6772 -
1.6773 -
1.6774 -
1.6775 -
1.6776 -Feather Standards Track [Page 121]
1.6777 -
1.6778 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6779 -
1.6780 -
1.6781 - o The principles behind response codes (Section 3.2) have been
1.6782 - tidied up. In particular:
1.6783 -
1.6784 - * the x8x response code family, formerly used for private
1.6785 - extensions, is now reserved for authentication and privacy
1.6786 - extensions;
1.6787 -
1.6788 - * the x9x response code family, formerly intended for debugging
1.6789 - facilities, are now reserved for private extensions;
1.6790 -
1.6791 - * the 502 and 503 generic response codes (Section 3.2.1) have
1.6792 - been redefined;
1.6793 -
1.6794 - * new 401, 403, 480, 483, and 504 generic response codes have
1.6795 - been added.
1.6796 -
1.6797 - o The rules for article numbering (Section 6) have been clarified
1.6798 - (also see Section 6.1.1.2).
1.6799 -
1.6800 - o The SLAVE command (which was ill-defined) is removed from the
1.6801 - protocol.
1.6802 -
1.6803 - o Four-digit years are permitted in the NEWNEWS (Section 7.4) and
1.6804 - NEWGROUPS (Section 7.3) commands (two-digit years are still
1.6805 - permitted). The optional distribution parameter to these commands
1.6806 - has been removed.
1.6807 -
1.6808 - o The LIST command (Section 7.6.1) is greatly extended; the original
1.6809 - is available as LIST ACTIVE, while new variants include
1.6810 - ACTIVE.TIMES, DISTRIB.PATS, and NEWSGROUPS. A new "m" status flag
1.6811 - is added to the LIST ACTIVE response.
1.6812 -
1.6813 - o A new CAPABILITIES command (Section 5.2) allows clients to
1.6814 - determine what facilities are supported by a server.
1.6815 -
1.6816 - o The DATE command (Section 7.1) is adopted from RFC 2980
1.6817 - effectively unchanged.
1.6818 -
1.6819 - o The LISTGROUP command (Section 6.1.2) is adopted from RFC 2980.
1.6820 - An optional range argument has been added, and the 211 initial
1.6821 - response line now has the same format as the 211 response from the
1.6822 - GROUP command.
1.6823 -
1.6824 - o The MODE READER command (Section 5.3) is adopted from RFC 2980 and
1.6825 - its meaning and effects clarified.
1.6826 -
1.6827 - o The XHDR command in RFC 2980 has been formalised as the new HDR
1.6828 - (Section 8.5) and LIST HEADERS (Section 8.6) commands.
1.6829 -
1.6830 -
1.6831 -
1.6832 -Feather Standards Track [Page 122]
1.6833 -
1.6834 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6835 -
1.6836 -
1.6837 - o The XOVER command in RFC 2980 has been formalised as the new OVER
1.6838 - (Section 8.3) and LIST OVERVIEW.FMT (Section 8.4) commands. The
1.6839 - former can be applied to a message-id as well as to a range.
1.6840 -
1.6841 - o The concept of article metadata (Section 8.1) has been formalised,
1.6842 - allowing the Bytes and Lines pseudo-headers to be deprecated.
1.6843 -
1.6844 - Client authors should note in particular that lack of support for the
1.6845 - CAPABILITIES command is a good indication that the server does not
1.6846 - support this specification.
1.6847 -
1.6848 -
1.6849 -
1.6850 -
1.6851 -
1.6852 -
1.6853 -
1.6854 -
1.6855 -
1.6856 -
1.6857 -
1.6858 -
1.6859 -
1.6860 -
1.6861 -
1.6862 -
1.6863 -
1.6864 -
1.6865 -
1.6866 -
1.6867 -
1.6868 -
1.6869 -
1.6870 -
1.6871 -
1.6872 -
1.6873 -
1.6874 -
1.6875 -
1.6876 -
1.6877 -
1.6878 -
1.6879 -
1.6880 -
1.6881 -
1.6882 -
1.6883 -
1.6884 -
1.6885 -
1.6886 -
1.6887 -
1.6888 -Feather Standards Track [Page 123]
1.6889 -
1.6890 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6891 -
1.6892 -
1.6893 -Author's Address
1.6894 -
1.6895 - Clive D.W. Feather
1.6896 - THUS plc
1.6897 - 322 Regents Park Road
1.6898 - London
1.6899 - N3 2QQ
1.6900 - United Kingdom
1.6901 -
1.6902 - Phone: +44 20 8495 6138
1.6903 - Fax: +44 870 051 9937
1.6904 - EMail: clive@demon.net
1.6905 - URI: http://www.davros.org/
1.6906 -
1.6907 -
1.6908 -
1.6909 -
1.6910 -
1.6911 -
1.6912 -
1.6913 -
1.6914 -
1.6915 -
1.6916 -
1.6917 -
1.6918 -
1.6919 -
1.6920 -
1.6921 -
1.6922 -
1.6923 -
1.6924 -
1.6925 -
1.6926 -
1.6927 -
1.6928 -
1.6929 -
1.6930 -
1.6931 -
1.6932 -
1.6933 -
1.6934 -
1.6935 -
1.6936 -
1.6937 -
1.6938 -
1.6939 -
1.6940 -
1.6941 -
1.6942 -
1.6943 -
1.6944 -Feather Standards Track [Page 124]
1.6945 -
1.6946 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6947 -
1.6948 -
1.6949 -Full Copyright Statement
1.6950 -
1.6951 -Copyright (C) The Internet Society (2006).
1.6952 -
1.6953 - This document is subject to the rights, licenses and restrictions
1.6954 - contained in BCP 78, and except as set forth therein, the authors
1.6955 - retain all their rights.
1.6956 -
1.6957 - This document and the information contained herein are provided on an
1.6958 - "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1.6959 - OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1.6960 - ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1.6961 - INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1.6962 - INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1.6963 - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1.6964 -
1.6965 -Intellectual Property
1.6966 -
1.6967 - The IETF takes no position regarding the validity or scope of any
1.6968 - Intellectual Property Rights or other rights that might be claimed to
1.6969 - pertain to the implementation or use of the technology described in
1.6970 - this document or the extent to which any license under such rights
1.6971 - might or might not be available; nor does it represent that it has
1.6972 - made any independent effort to identify any such rights. Information
1.6973 - on the procedures with respect to rights in RFC documents can be
1.6974 - found in BCP 78 and BCP 79.
1.6975 -
1.6976 - Copies of IPR disclosures made to the IETF Secretariat and any
1.6977 - assurances of licenses to be made available, or the result of an
1.6978 - attempt made to obtain a general license or permission for the use of
1.6979 - such proprietary rights by implementers or users of this
1.6980 - specification can be obtained from the IETF on-line IPR repository at
1.6981 - http://www.ietf.org/ipr.
1.6982 -
1.6983 - The IETF invites any interested party to bring to its attention any
1.6984 - copyrights, patents or patent applications, or other proprietary
1.6985 - rights that may cover technology that may be required to implement
1.6986 - this standard. Please address the information to the IETF at ietf-
1.6987 - ipr@ietf.org.
1.6988 -
1.6989 -Acknowledgement
1.6990 -
1.6991 - Funding for the RFC Editor function is provided by the IETF
1.6992 - Administrative Support Activity (IASA).
1.6993 -
1.6994 -
1.6995 -
1.6996 -
1.6997 -
1.6998 -
1.6999 -
1.7000 -Feather Standards Track [Page 125]
1.7001 -