1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/doc/RFC3977 Sun Oct 30 22:13:32 2011 +0100
1.3 @@ -0,0 +1,6998 @@
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 +