Add some checks to prevent #13 happen.
1.1 --- a/RFC3977 Sun Aug 29 17:28:58 2010 +0200
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,6998 +0,0 @@
1.4 -
1.5 -Network Working Group C. Feather
1.6 -Request for Comments: 3977 THUS plc
1.7 -Obsoletes: 977 October 2006
1.8 -Updates: 2980
1.9 -Category: Standards Track
1.10 -
1.11 -
1.12 - Network News Transfer Protocol (NNTP)
1.13 -
1.14 -Status of This Memo
1.15 -
1.16 - This document specifies an Internet standards track protocol for the
1.17 - Internet community, and requests discussion and suggestions for
1.18 - improvements. Please refer to the current edition of the "Internet
1.19 - Official Protocol Standards" (STD 1) for the standardization state
1.20 - and status of this protocol. Distribution of this memo is unlimited.
1.21 -
1.22 -Copyright Notice
1.23 -
1.24 - Copyright (C) The Internet Society (2006).
1.25 -
1.26 -Abstract
1.27 -
1.28 - The Network News Transfer Protocol (NNTP) has been in use in the
1.29 - Internet for a decade, and remains one of the most popular protocols
1.30 - (by volume) in use today. This document is a replacement for
1.31 - RFC 977, and officially updates the protocol specification. It
1.32 - clarifies some vagueness in RFC 977, includes some new base
1.33 - functionality, and provides a specific mechanism to add standardized
1.34 - extensions to NNTP.
1.35 -
1.36 -Table of Contents
1.37 -
1.38 - 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.39 - 1.1. Author's Note . . . . . . . . . . . . . . . . . . . . . . 4
1.40 - 2. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.41 - 3. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . 6
1.42 - 3.1. Commands and Responses . . . . . . . . . . . . . . . . . 6
1.43 - 3.1.1. Multi-line Data Blocks . . . . . . . . . . . . . . . . 8
1.44 - 3.2. Response Codes . . . . . . . . . . . . . . . . . . . . . 9
1.45 - 3.2.1. Generic Response Codes . . . . . . . . . . . . . . . 10
1.46 - 3.2.1.1. Examples . . . . . . . . . . . . . . . . . . . . 12
1.47 - 3.3. Capabilities and Extensions . . . . . . . . . . . . . . . 14
1.48 - 3.3.1. Capability Descriptions . . . . . . . . . . . . . . . 14
1.49 - 3.3.2. Standard Capabilities . . . . . . . . . . . . . . . . 15
1.50 - 3.3.3. Extensions . . . . . . . . . . . . . . . . . . . . . 16
1.51 - 3.3.4. Initial IANA Register . . . . . . . . . . . . . . . . 18
1.52 - 3.4. Mandatory and Optional Commands . . . . . . . . . . . . . 20
1.53 -
1.54 -
1.55 -
1.56 -Feather Standards Track [Page 1]
1.57 -
1.58 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.59 -
1.60 -
1.61 - 3.4.1. Reading and Transit Servers . . . . . . . . . . . . . 21
1.62 - 3.4.2. Mode Switching . . . . . . . . . . . . . . . . . . . 21
1.63 - 3.5. Pipelining . . . . . . . . . . . . . . . . . . . . . . . 22
1.64 - 3.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 23
1.65 - 3.6. Articles . . . . . . . . . . . . . . . . . . . . . . . . 24
1.66 - 4. The WILDMAT Format . . . . . . . . . . . . . . . . . . . . . 25
1.67 - 4.1. Wildmat Syntax . . . . . . . . . . . . . . . . . . . . . 26
1.68 - 4.2. Wildmat Semantics . . . . . . . . . . . . . . . . . . . . 26
1.69 - 4.3. Extensions . . . . . . . . . . . . . . . . . . . . . . . 27
1.70 - 4.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 27
1.71 - 5. Session Administration Commands . . . . . . . . . . . . . . . 28
1.72 - 5.1. Initial Connection . . . . . . . . . . . . . . . . . . . 28
1.73 - 5.2. CAPABILITIES . . . . . . . . . . . . . . . . . . . . . . 29
1.74 - 5.3. MODE READER . . . . . . . . . . . . . . . . . . . . . . . 32
1.75 - 5.4. QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.76 - 6. Article Posting and Retrieval . . . . . . . . . . . . . . . . 35
1.77 - 6.1. Group and Article Selection . . . . . . . . . . . . . . . 36
1.78 - 6.1.1. GROUP . . . . . . . . . . . . . . . . . . . . . . . . 36
1.79 - 6.1.2. LISTGROUP . . . . . . . . . . . . . . . . . . . . . . 39
1.80 - 6.1.3. LAST . . . . . . . . . . . . . . . . . . . . . . . . 42
1.81 - 6.1.4. NEXT . . . . . . . . . . . . . . . . . . . . . . . . 44
1.82 - 6.2. Retrieval of Articles and Article Sections . . . . . . . 45
1.83 - 6.2.1. ARTICLE . . . . . . . . . . . . . . . . . . . . . . . 46
1.84 - 6.2.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . 49
1.85 - 6.2.3. BODY . . . . . . . . . . . . . . . . . . . . . . . . 51
1.86 - 6.2.4. STAT . . . . . . . . . . . . . . . . . . . . . . . . 53
1.87 - 6.3. Article Posting . . . . . . . . . . . . . . . . . . . . . 56
1.88 - 6.3.1. POST . . . . . . . . . . . . . . . . . . . . . . . . 56
1.89 - 6.3.2. IHAVE . . . . . . . . . . . . . . . . . . . . . . . . 58
1.90 - 7. Information Commands . . . . . . . . . . . . . . . . . . . . 61
1.91 - 7.1. DATE . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.92 - 7.2. HELP . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.93 - 7.3. NEWGROUPS . . . . . . . . . . . . . . . . . . . . . . . . 63
1.94 - 7.4. NEWNEWS . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.95 - 7.5. Time . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.96 - 7.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 66
1.97 - 7.6. The LIST Commands . . . . . . . . . . . . . . . . . . . . 66
1.98 - 7.6.1. LIST . . . . . . . . . . . . . . . . . . . . . . . . 67
1.99 - 7.6.2. Standard LIST Keywords . . . . . . . . . . . . . . . 69
1.100 - 7.6.3. LIST ACTIVE . . . . . . . . . . . . . . . . . . . . . 70
1.101 - 7.6.4. LIST ACTIVE.TIMES . . . . . . . . . . . . . . . . . . 71
1.102 - 7.6.5. LIST DISTRIB.PATS . . . . . . . . . . . . . . . . . . 72
1.103 - 7.6.6. LIST NEWSGROUPS . . . . . . . . . . . . . . . . . . . 73
1.104 - 8. Article Field Access Commands . . . . . . . . . . . . . . . . 73
1.105 - 8.1. Article Metadata . . . . . . . . . . . . . . . . . . . . 74
1.106 - 8.1.1. The :bytes Metadata Item . . . . . . . . . . . . . . 74
1.107 - 8.1.2. The :lines Metadata Item . . . . . . . . . . . . . . 75
1.108 - 8.2. Database Consistency . . . . . . . . . . . . . . . . . . 75
1.109 -
1.110 -
1.111 -
1.112 -Feather Standards Track [Page 2]
1.113 -
1.114 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.115 -
1.116 -
1.117 - 8.3. OVER . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.118 - 8.4. LIST OVERVIEW.FMT . . . . . . . . . . . . . . . . . . . . 81
1.119 - 8.5. HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.120 - 8.6. LIST HEADERS . . . . . . . . . . . . . . . . . . . . . . 87
1.121 - 9. Augmented BNF Syntax for NNTP . . . . . . . . . . . . . . . . 90
1.122 - 9.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 90
1.123 - 9.2. Commands . . . . . . . . . . . . . . . . . . . . . . . . 92
1.124 - 9.3. Command Continuation . . . . . . . . . . . . . . . . . . 93
1.125 - 9.4. Responses . . . . . . . . . . . . . . . . . . . . . . . . 93
1.126 - 9.4.1. Generic Responses . . . . . . . . . . . . . . . . . . 93
1.127 - 9.4.2. Initial Response Line Contents . . . . . . . . . . . 94
1.128 - 9.4.3. Multi-line Response Contents . . . . . . . . . . . . 94
1.129 - 9.5. Capability Lines . . . . . . . . . . . . . . . . . . . . 95
1.130 - 9.6. LIST Variants . . . . . . . . . . . . . . . . . . . . . . 96
1.131 - 9.7. Articles . . . . . . . . . . . . . . . . . . . . . . . . 97
1.132 - 9.8. General Non-terminals . . . . . . . . . . . . . . . . . . 97
1.133 - 9.9. Extensions and Validation . . . . . . . . . . . . . . . . 99
1.134 - 10. Internationalisation Considerations . . . . . . . . . . . . .100
1.135 - 10.1. Introduction and Historical Situation . . . . . . . . . .100
1.136 - 10.2. This Specification . . . . . . . . . . . . . . . . . . .101
1.137 - 10.3. Outstanding Issues . . . . . . . . . . . . . . . . . . .102
1.138 - 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .103
1.139 - 12. Security Considerations . . . . . . . . . . . . . . . . . . .103
1.140 - 12.1. Personal and Proprietary Information . . . . . . . . . .104
1.141 - 12.2. Abuse of Server Log Information . . . . . . . . . . . . .104
1.142 - 12.3. Weak Authentication and Access Control . . . . . . . . .104
1.143 - 12.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . .104
1.144 - 12.5. UTF-8 Issues . . . . . . . . . . . . . . . . . . . . . .105
1.145 - 12.6. Caching of Capability Lists . . . . . . . . . . . . . . .106
1.146 - 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .107
1.147 - 14. References . . . . . . . . . . . . . . . . . . . . . . . . .110
1.148 - 14.1. Normative References . . . . . . . . . . . . . . . . . .110
1.149 - 14.2. Informative References . . . . . . . . . . . . . . . . .110
1.150 - A. Interaction with Other Specifications . . . . . . . . . . . .112
1.151 - A.1. Header Folding . . . . . . . . . . . . . . . . . . . . .112
1.152 - A.2. Message-IDs . . . . . . . . . . . . . . . . . . . . . . .112
1.153 - A.3. Article Posting . . . . . . . . . . . . . . . . . . . . .114
1.154 - B. Summary of Commands . . . . . . . . . . . . . . . . . . . . .115
1.155 - C. Summary of Response Codes . . . . . . . . . . . . . . . . . .117
1.156 - D. Changes from RFC 977 . . . . . . . . . . . . . . . . . . . .121
1.157 -
1.158 -1. Introduction
1.159 -
1.160 - This document specifies the Network News Transfer Protocol (NNTP),
1.161 - which is used for the distribution, inquiry, retrieval, and posting
1.162 - of Netnews articles using a reliable stream-based mechanism. For
1.163 - news-reading clients, NNTP enables retrieval of news articles that
1.164 -
1.165 -
1.166 -
1.167 -
1.168 -Feather Standards Track [Page 3]
1.169 -
1.170 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.171 -
1.172 -
1.173 - are stored in a central database, giving subscribers the ability to
1.174 - select only those articles they wish to read.
1.175 -
1.176 - The Netnews model provides for indexing, cross-referencing, and
1.177 - expiration of aged messages. NNTP is designed for efficient
1.178 - transmission of Netnews articles over a reliable full duplex
1.179 - communication channel.
1.180 -
1.181 - Although the protocol specification in this document is largely
1.182 - compatible with the version specified in RFC 977 [RFC977], a number
1.183 - of changes are summarised in Appendix D. In particular:
1.184 -
1.185 - o the default character set is changed from US-ASCII [ANSI1986] to
1.186 - UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8);
1.187 -
1.188 - o a number of commands that were optional in RFC 977 or that have
1.189 - been taken from RFC 2980 [RFC2980] are now mandatory; and
1.190 -
1.191 - o a CAPABILITIES command has been added to allow clients to
1.192 - determine what functionality is available from a server.
1.193 -
1.194 - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
1.195 - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
1.196 - document are to be interpreted as described in RFC 2119 [RFC2119].
1.197 -
1.198 - An implementation is not compliant if it fails to satisfy one or more
1.199 - of the MUST requirements for this protocol. An implementation that
1.200 - satisfies all the MUST and all the SHOULD requirements for its
1.201 - protocols is said to be "unconditionally compliant"; one that
1.202 - satisfies all the MUST requirements but not all the SHOULD
1.203 - requirements for NNTP is said to be "conditionally compliant".
1.204 -
1.205 - For the remainder of this document, the terms "client" and "client
1.206 - host" refer to a host making use of the NNTP service, while the terms
1.207 - "server" and "server host" refer to a host that offers the NNTP
1.208 - service.
1.209 -
1.210 -1.1. Author's Note
1.211 -
1.212 - This document is written in XML using an NNTP-specific DTD. Custom
1.213 - software is used to convert this to RFC 2629 [RFC2629] format, and
1.214 - then the public "xml2rfc" package to further reduce this to text,
1.215 - nroff source, and HTML.
1.216 -
1.217 - No perl was used in producing this document.
1.218 -
1.219 -
1.220 -
1.221 -
1.222 -
1.223 -
1.224 -Feather Standards Track [Page 4]
1.225 -
1.226 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.227 -
1.228 -
1.229 -2. Notation
1.230 -
1.231 - The following notational conventions are used in this document.
1.232 -
1.233 - UPPERCASE indicates literal text to be included in the
1.234 - command.
1.235 -
1.236 - lowercase indicates a token described elsewhere.
1.237 -
1.238 - [brackets] indicate that the enclosed material is optional.
1.239 -
1.240 - elliptical indicates that the argument may be repeated any
1.241 - ... marks number of times (it must occur at least once).
1.242 -
1.243 - vertical|bar indicates a choice of two mutually exclusive
1.244 - arguments (exactly one must be provided).
1.245 -
1.246 - The name "message-id" for a command or response argument indicates
1.247 - that it is the message-id of an article as described in Section 3.6,
1.248 - including the angle brackets.
1.249 -
1.250 - The name "wildmat" for an argument indicates that it is a wildmat as
1.251 - defined in Section 4. If the argument does not meet the requirements
1.252 - of that section (for example, if it does not fit the grammar of
1.253 - Section 4.1), the NNTP server MAY place some interpretation on it
1.254 - (not specified by this document) or otherwise MUST treat it as a
1.255 - syntax error.
1.256 -
1.257 - Responses for each command will be described in tables listing the
1.258 - required format of a response followed by the meaning that should be
1.259 - ascribed to that response.
1.260 -
1.261 - The terms "NUL", "TAB", "LF", "CR, and "space" refer to the octets
1.262 - %x00, %x09, %x0A, %x0D, and %x20, respectively (that is, the octets
1.263 - with those codes in US-ASCII [ANSI1986] and thus in UTF-8 [RFC3629]).
1.264 - The term "CRLF" or "CRLF pair" means the sequence CR immediately
1.265 - followed by LF (that is, %x0D.0A). A "printable US-ASCII character"
1.266 - is an octet in the range %x21-7E. Quoted characters refer to the
1.267 - octets with those codes in US-ASCII (so "." and "<" refer to %x2E and
1.268 - %x3C) and will always be printable US-ASCII characters; similarly,
1.269 - "digit" refers to the octets %x30-39.
1.270 -
1.271 - A "keyword" MUST consist only of US-ASCII letters, digits, and the
1.272 - characters dot (".") and dash ("-") and MUST begin with a letter.
1.273 - Keywords MUST be at least three characters in length.
1.274 -
1.275 -
1.276 -
1.277 -
1.278 -
1.279 -
1.280 -Feather Standards Track [Page 5]
1.281 -
1.282 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.283 -
1.284 -
1.285 - Examples in this document are not normative but serve to illustrate
1.286 - usages, arguments, and responses. In the examples, a "[C]" will be
1.287 - used to represent the client host and an "[S]" will be used to
1.288 - represent the server host. Most of the examples do not rely on a
1.289 - particular server state. In some cases, however, they do assume that
1.290 - the currently selected newsgroup (see the GROUP command,
1.291 - Section 6.1.1) is invalid; when so, this is indicated at the start of
1.292 - the example. Examples may use commands or other keywords not defined
1.293 - in this specification (such as an XENCRYPT command). These will be
1.294 - used to illustrate some point and do not imply that any such command
1.295 - is defined elsewhere or needs to exist in any particular
1.296 - implementation.
1.297 -
1.298 - Terms that might be read as specifying details of a client or server
1.299 - implementation, such as "database", are used simply to ease
1.300 - description. Provided that implementations conform to the protocol
1.301 - and format specifications in this document, no specific technique is
1.302 - mandated.
1.303 -
1.304 -3. Basic Concepts
1.305 -
1.306 -3.1. Commands and Responses
1.307 -
1.308 - NNTP operates over any reliable bi-directional 8-bit-wide data stream
1.309 - channel. When the connection is established, the NNTP server host
1.310 - MUST send a greeting. The client host and server host then exchange
1.311 - commands and responses (respectively) until the connection is closed
1.312 - or aborted. If the connection used is TCP, then the server host
1.313 - starts the NNTP service by listening on a TCP port. When a client
1.314 - host wishes to make use of the service, it MUST establish a TCP
1.315 - connection with the server host by connecting to that host on the
1.316 - same port on which the server is listening.
1.317 -
1.318 - The character set for all NNTP commands is UTF-8 [RFC3629]. Commands
1.319 - in NNTP MUST consist of a keyword, which MAY be followed by one or
1.320 - more arguments. A CRLF pair MUST terminate all commands. Multiple
1.321 - commands MUST NOT be on the same line. Unless otherwise noted
1.322 - elsewhere in this document, arguments SHOULD consist of printable US-
1.323 - ASCII characters. Keywords and arguments MUST each be separated by
1.324 - one or more space or TAB characters. Command lines MUST NOT exceed
1.325 - 512 octets, which includes the terminating CRLF pair. The arguments
1.326 - MUST NOT exceed 497 octets. A server MAY relax these limits for
1.327 - commands defined in an extension.
1.328 -
1.329 - Where this specification permits UTF-8 characters outside the range
1.330 - of U+0000 to U+007F, implementations MUST NOT use the Byte Order Mark
1.331 - (U+FEFF, encoding %xEF.BB.BF) and MUST use the Word Joiner (U+2060,
1.332 - encoding %xE2.91.A0) for the meaning Zero Width No-Break Space in
1.333 -
1.334 -
1.335 -
1.336 -Feather Standards Track [Page 6]
1.337 -
1.338 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.339 -
1.340 -
1.341 - command lines and the initial lines of responses. Implementations
1.342 - SHOULD apply these same principles throughout.
1.343 -
1.344 - The term "character" means a single Unicode code point.
1.345 - Implementations are not required to carry out Unicode normalisation.
1.346 - Thus, U+0084 (A-dieresis) is one character, while U+0041 U+0308 (A
1.347 - composed with dieresis) is two; the two need not be treated as
1.348 - equivalent.
1.349 -
1.350 - Commands may have variants; if so, they use a second keyword
1.351 - immediately after the first to indicate which variant is required.
1.352 - The only such commands in this specification are LIST and MODE. Note
1.353 - that such variants are sometimes referred to as if they were commands
1.354 - in their own right: "the LIST ACTIVE" command should be read as
1.355 - shorthand for "the ACTIVE variant of the LIST command".
1.356 -
1.357 - Keywords are case insensitive; the case of keywords for commands MUST
1.358 - be ignored by the server. Command and response arguments are case or
1.359 - language specific only when stated, either in this document or in
1.360 - other relevant specifications.
1.361 -
1.362 - In some cases, a command involves more data than just a single line.
1.363 - The further data may be sent either immediately after the command
1.364 - line (there are no instances of this in this specification, but there
1.365 - are in extensions such as [NNTP-STREAM]) or following a request from
1.366 - the server (indicated by a 3xx response).
1.367 -
1.368 - Each response MUST start with a three-digit response code that is
1.369 - sufficient to distinguish all responses. Certain valid responses are
1.370 - defined to be multi-line; for all others, the response is contained
1.371 - in a single line. The initial line of the response MUST NOT exceed
1.372 - 512 octets, which includes the response code and the terminating CRLF
1.373 - pair; an extension MAY specify a greater maximum for commands that it
1.374 - defines, but not for any other command. Single-line responses
1.375 - consist of an initial line only. Multi-line responses consist of an
1.376 - initial line followed by a multi-line data block.
1.377 -
1.378 - An NNTP server MAY have an inactivity autologout timer. Such a timer
1.379 - SHOULD be of at least three minutes' duration, with the exception
1.380 - that there MAY be a shorter limit on how long the server is willing
1.381 - to wait for the first command from the client. The receipt of any
1.382 - command from the client during the timer interval SHOULD suffice to
1.383 - reset the autologout timer. Similarly, the receipt of any
1.384 - significant amount of data from a client that is sending a multi-line
1.385 - data block (such as during a POST or IHAVE command) SHOULD suffice to
1.386 - reset the autologout timer. When the timer expires, the server
1.387 - SHOULD close the connection without sending any response to the
1.388 - client.
1.389 -
1.390 -
1.391 -
1.392 -Feather Standards Track [Page 7]
1.393 -
1.394 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.395 -
1.396 -
1.397 -3.1.1. Multi-line Data Blocks
1.398 -
1.399 - A multi-line data block is used in certain commands and responses.
1.400 - It MUST adhere to the following rules:
1.401 -
1.402 - 1. The block consists of a sequence of zero or more "lines", each
1.403 - being a stream of octets ending with a CRLF pair. Apart from
1.404 - those line endings, the stream MUST NOT include the octets NUL,
1.405 - LF, or CR.
1.406 -
1.407 - 2. In a multi-line response, the block immediately follows the CRLF
1.408 - at the end of the initial line of the response. When used in any
1.409 - other context, the specific command will define when the block is
1.410 - sent.
1.411 -
1.412 - 3. If any line of the data block begins with the "termination octet"
1.413 - ("." or %x2E), that line MUST be "dot-stuffed" by prepending an
1.414 - additional termination octet to that line of the block.
1.415 -
1.416 - 4. The lines of the block MUST be followed by a terminating line
1.417 - consisting of a single termination octet followed by a CRLF pair
1.418 - in the normal way. Thus, unless it is empty, a multi-line block
1.419 - is always terminated with the five octets CRLF "." CRLF
1.420 - (%x0D.0A.2E.0D.0A).
1.421 -
1.422 - 5. When a multi-line block is interpreted, the "dot-stuffing" MUST
1.423 - be undone; i.e., the recipient MUST ensure that, in any line
1.424 - beginning with the termination octet followed by octets other
1.425 - than a CRLF pair, that initial termination octet is disregarded.
1.426 -
1.427 - 6. Likewise, the terminating line ("." CRLF or %x2E.0D.0A) MUST NOT
1.428 - be considered part of the multi-line block; i.e., the recipient
1.429 - MUST ensure that any line beginning with the termination octet
1.430 - followed immediately by a CRLF pair is disregarded. (The first
1.431 - CRLF pair of the terminating CRLF "." CRLF of a non-empty block
1.432 - is, of course, part of the last line of the block.)
1.433 -
1.434 - Note that texts using an encoding (such as UTF-16 or UTF-32) that may
1.435 - contain the octets NUL, LF, or CR other than a CRLF pair cannot be
1.436 - reliably conveyed in the above format (that is, they violate the MUST
1.437 - requirement above). However, except when stated otherwise, this
1.438 - specification does not require the content to be UTF-8, and therefore
1.439 - (subject to that same requirement) it MAY include octets above and
1.440 - below 128 mixed arbitrarily.
1.441 -
1.442 - This document does not place any limit on the length of a line in a
1.443 - multi-line block. However, the standards that define the format of
1.444 - articles may do so.
1.445 -
1.446 -
1.447 -
1.448 -Feather Standards Track [Page 8]
1.449 -
1.450 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.451 -
1.452 -
1.453 -3.2. Response Codes
1.454 -
1.455 - Each response MUST begin with a three-digit status indicator. These
1.456 - are status reports from the server and indicate the response to the
1.457 - last command received from the client.
1.458 -
1.459 - The first digit of the response broadly indicates the success,
1.460 - failure, or progress of the previous command:
1.461 -
1.462 - 1xx - Informative message
1.463 - 2xx - Command completed OK
1.464 - 3xx - Command OK so far; send the rest of it
1.465 - 4xx - Command was syntactically correct but failed for some reason
1.466 - 5xx - Command unknown, unsupported, unavailable, or syntax error
1.467 -
1.468 - The next digit in the code indicates the function response category:
1.469 -
1.470 - x0x - Connection, setup, and miscellaneous messages
1.471 - x1x - Newsgroup selection
1.472 - x2x - Article selection
1.473 - x3x - Distribution functions
1.474 - x4x - Posting
1.475 - x8x - Reserved for authentication and privacy extensions
1.476 - x9x - Reserved for private use (non-standard extensions)
1.477 -
1.478 - Certain responses contain arguments such as numbers and names in
1.479 - addition to the status indicator. In those cases, to simplify
1.480 - interpretation by the client, the number and type of such arguments
1.481 - is fixed for each response code, as is whether the code is
1.482 - single-line or multi-line. Any extension MUST follow this principle
1.483 - as well. Note that, for historical reasons, the 211 response code is
1.484 - an exception to this in that the response may be single-line or
1.485 - multi-line depending on the command (GROUP or LISTGROUP) that
1.486 - generated it. In all other cases, the client MUST only use the
1.487 - status indicator itself to determine the nature of the response. The
1.488 - exact response codes that can be returned by any given command are
1.489 - detailed in the description of that command.
1.490 -
1.491 - Arguments MUST be separated from the numeric status indicator and
1.492 - from each other by a single space. All numeric arguments MUST be in
1.493 - base 10 (decimal) format and MAY have leading zeros. String
1.494 - arguments MUST contain at least one character and MUST NOT contain
1.495 - TAB, LF, CR, or space. The server MAY add any text after the
1.496 - response code or last argument, as appropriate, and the client MUST
1.497 - NOT make decisions based on this text. Such text MUST be separated
1.498 - from the numeric status indicator or the last argument by at least
1.499 - one space.
1.500 -
1.501 -
1.502 -
1.503 -
1.504 -Feather Standards Track [Page 9]
1.505 -
1.506 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.507 -
1.508 -
1.509 - The server MUST respond to any command with the appropriate generic
1.510 - response (given in Section 3.2.1) if it represents the situation.
1.511 - Otherwise, each recognized command MUST return one of the response
1.512 - codes specifically listed in its description or in an extension. A
1.513 - server MAY provide extensions to this specification, including new
1.514 - commands, new variants or features of existing commands, and other
1.515 - ways of changing the internal state of the server. However, the
1.516 - server MUST NOT produce any other responses to a client that does not
1.517 - invoke any of the additional features. (Therefore, a client that
1.518 - restricts itself to this specification will only receive the
1.519 - responses that are listed.)
1.520 -
1.521 - If a client receives an unexpected response, it SHOULD use the first
1.522 - digit of the response to determine the result. For example, an
1.523 - unexpected 2xx should be taken as success, and an unexpected 4xx or
1.524 - 5xx as failure.
1.525 -
1.526 - Response codes not specified in this document MAY be used for any
1.527 - installation-specific additional commands also not specified. These
1.528 - SHOULD be chosen to fit the pattern of x9x specified above.
1.529 -
1.530 - Neither this document nor any registered extension (see
1.531 - Section 3.3.3) will specify any response codes of the x9x pattern.
1.532 - (Implementers of extensions are accordingly cautioned not to use such
1.533 - responses for extensions that may subsequently be submitted for
1.534 - registration.)
1.535 -
1.536 -3.2.1. Generic Response Codes
1.537 -
1.538 - The server MUST respond to any command with the appropriate one of
1.539 - the following generic responses if it represents the situation.
1.540 -
1.541 - If the command is not recognized, or if it is an optional command
1.542 - that is not implemented by the server, the response code 500 MUST be
1.543 - returned.
1.544 -
1.545 - If there is a syntax error in the arguments of a recognized command,
1.546 - including the case where more arguments are provided than the command
1.547 - specifies or the command line is longer than the server accepts, the
1.548 - response code 501 MUST be returned. The line MUST NOT be truncated
1.549 - or split and then interpreted. Note that where a command has
1.550 - variants depending on a second keyword (e.g., LIST ACTIVE and LIST
1.551 - NEWSGROUPS), 501 MUST be used when the base command is implemented
1.552 - but the requested variant is not, and 500 MUST be used only when the
1.553 - base command itself is not implemented.
1.554 -
1.555 - If an argument is required to be a base64-encoded string [RFC4648]
1.556 - (there are no such arguments in this specification, but there may be
1.557 -
1.558 -
1.559 -
1.560 -Feather Standards Track [Page 10]
1.561 -
1.562 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.563 -
1.564 -
1.565 - in extensions) and is not validly encoded, the response code 504 MUST
1.566 - be returned.
1.567 -
1.568 - If the server experiences an internal fault or problem that means it
1.569 - is unable to carry out the command (for example, a necessary file is
1.570 - missing or a necessary service could not be contacted), the response
1.571 - code 403 MUST be returned. If the server recognizes the command but
1.572 - does not provide an optional feature (for example, because it does
1.573 - not store the required information), or if it only handles a subset
1.574 - of legitimate cases (see the HDR command, Section 8.5, for an
1.575 - example), the response code 503 MUST be returned.
1.576 -
1.577 - If the client is not authorized to use the specified facility when
1.578 - the server is in its current state, then the appropriate one of the
1.579 - following response codes MUST be used.
1.580 -
1.581 - 502: It is necessary to terminate the connection and to start a new
1.582 - one with the appropriate authority before the command can be used.
1.583 - Historically, some mode-switching servers (see Section 3.4.1) used
1.584 - this response to indicate that this command will become available
1.585 - after the MODE READER command (Section 5.3) is used, but this
1.586 - usage does not conform to this specification and MUST NOT be used.
1.587 - Note that the server MUST NOT close the connection immediately
1.588 - after a 502 response except at the initial connection
1.589 - (Section 5.1) and with the MODE READER command.
1.590 -
1.591 - 480: The client must authenticate itself to the server (that is, it
1.592 - must provide information as to the identity of the client) before
1.593 - the facility can be used on this connection. This will involve
1.594 - the use of an authentication extension such as [NNTP-AUTH].
1.595 -
1.596 - 483: The client must negotiate appropriate privacy protection on the
1.597 - connection. This will involve the use of a privacy extension such
1.598 - as [NNTP-TLS].
1.599 -
1.600 - 401: The client must change the state of the connection in some other
1.601 - manner. The first argument of the response MUST be the capability
1.602 - label (see Section 5.2) of the facility that provides the
1.603 - necessary mechanism (usually an extension, which may be a private
1.604 - extension). The server MUST NOT use this response code except as
1.605 - specified by the definition of the capability in question.
1.606 -
1.607 - If the server has to terminate the connection for some reason, it
1.608 - MUST give a 400 response code to the next command and then
1.609 - immediately close the connection. Following a 400 response, clients
1.610 - SHOULD NOT simply reconnect immediately and retry the same actions.
1.611 - Rather, a client SHOULD either use an exponentially increasing delay
1.612 - between retries (e.g., double the waiting time after each 400
1.613 -
1.614 -
1.615 -
1.616 -Feather Standards Track [Page 11]
1.617 -
1.618 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.619 -
1.620 -
1.621 - response) or present any associated text to the user for them to
1.622 - decide whether and when to retry.
1.623 -
1.624 - The client MUST be prepared to receive any of these responses for any
1.625 - command (except, of course, that the server MUST NOT generate a 500
1.626 - response code for mandatory commands).
1.627 -
1.628 -3.2.1.1. Examples
1.629 -
1.630 - Example of an unknown command:
1.631 -
1.632 - [C] MAIL
1.633 - [S] 500 Unknown command
1.634 -
1.635 - Example of an unsupported command:
1.636 -
1.637 - [C] CAPABILITIES
1.638 - [S] 101 Capability list:
1.639 - [S] VERSION 2
1.640 - [S] READER
1.641 - [S] NEWNEWS
1.642 - [S] LIST ACTIVE NEWSGROUPS
1.643 - [S] .
1.644 - [C] OVER
1.645 - [S] 500 Unknown command
1.646 -
1.647 - Example of an unsupported variant:
1.648 -
1.649 - [C] MODE POSTER
1.650 - [S] 501 Unknown MODE option
1.651 -
1.652 - Example of a syntax error:
1.653 -
1.654 - [C] ARTICLE a.message.id@no.angle.brackets
1.655 - [S] 501 Syntax error
1.656 -
1.657 - Example of an overlong command line:
1.658 -
1.659 - [C] HEAD 53 54 55
1.660 - [S] 501 Too many arguments
1.661 -
1.662 - Example of a bad wildmat:
1.663 -
1.664 - [C] LIST ACTIVE u[ks].*
1.665 - [S] 501 Syntax error
1.666 -
1.667 -
1.668 -
1.669 -
1.670 -
1.671 -
1.672 -Feather Standards Track [Page 12]
1.673 -
1.674 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.675 -
1.676 -
1.677 - Example of a base64-encoding error (the second argument is meant to
1.678 - be base64 encoded):
1.679 -
1.680 - [C] XENCRYPT RSA abcd=efg
1.681 - [S] 504 Base64 encoding error
1.682 -
1.683 - Example of an attempt to access a facility not available to this
1.684 - connection:
1.685 -
1.686 - [C] MODE READER
1.687 - [S] 200 Reader mode, posting permitted
1.688 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.689 - [S] 500 Permission denied
1.690 -
1.691 - Example of an attempt to access a facility requiring authentication:
1.692 -
1.693 - [C] GROUP secret.group
1.694 - [S] 480 Permission denied
1.695 -
1.696 - Example of a successful attempt following such authentication:
1.697 -
1.698 - [C] XSECRET fred flintstone
1.699 - [S] 290 Password for fred accepted
1.700 - [C] GROUP secret.group
1.701 - [S] 211 5 1 20 secret.group selected
1.702 -
1.703 - Example of an attempt to access a facility requiring privacy:
1.704 -
1.705 - [C] GROUP secret.group
1.706 - [S] 483 Secure connection required
1.707 - [C] XENCRYPT
1.708 - [Client and server negotiate encryption on the link]
1.709 - [S] 283 Encrypted link established
1.710 - [C] GROUP secret.group
1.711 - [S] 211 5 1 20 secret.group selected
1.712 -
1.713 - Example of a need to change mode before a facility is used:
1.714 -
1.715 - [C] GROUP binary.group
1.716 - [S] 401 XHOST Not on this virtual host
1.717 - [C] XHOST binary.news.example.org
1.718 - [S] 290 binary.news.example.org virtual host selected
1.719 - [C] GROUP binary.group
1.720 - [S] 211 5 1 77 binary.group selected
1.721 -
1.722 -
1.723 -
1.724 -
1.725 -
1.726 -
1.727 -
1.728 -Feather Standards Track [Page 13]
1.729 -
1.730 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.731 -
1.732 -
1.733 - Example of a temporary failure:
1.734 -
1.735 - [C] GROUP archive.local
1.736 - [S] 403 Archive server temporarily offline
1.737 -
1.738 - Example of the server needing to close down immediately:
1.739 -
1.740 - [C] ARTICLE 123
1.741 - [S] 400 Power supply failed, running on UPS
1.742 - [Server closes connection.]
1.743 -
1.744 -3.3. Capabilities and Extensions
1.745 -
1.746 - Not all NNTP servers provide exactly the same facilities, both
1.747 - because this specification allows variation and because servers may
1.748 - provide extensions. A set of facilities that are related are called
1.749 - a "capability". This specification provides a way to determine what
1.750 - capabilities are available, includes a list of standard capabilities,
1.751 - and includes a mechanism (the extension mechanism) for defining new
1.752 - capabilities.
1.753 -
1.754 -3.3.1. Capability Descriptions
1.755 -
1.756 - A client can determine the available capabilities of the server by
1.757 - using the CAPABILITIES command (Section 5.2). This returns a
1.758 - capability list, which is a list of capability lines. Each line
1.759 - describes one available capability.
1.760 -
1.761 - Each capability line consists of one or more tokens, which MUST be
1.762 - separated by one or more space or TAB characters. A token is a
1.763 - string of 1 or more printable UTF-8 characters (that is, either
1.764 - printable US-ASCII characters or any UTF-8 sequence outside the US-
1.765 - ASCII range, but not space or TAB). Unless stated otherwise, tokens
1.766 - are case insensitive. Each capability line consists of the
1.767 - following:
1.768 -
1.769 - o The capability label, which is a keyword indicating the
1.770 - capability. A capability label may be defined by this
1.771 - specification or a successor, or by an extension.
1.772 -
1.773 - o The label is then followed by zero or more tokens, which are
1.774 - arguments of the capability. The form and meaning of these tokens
1.775 - is specific to each capability.
1.776 -
1.777 - The server MUST ensure that the capability list accurately reflects
1.778 - the capabilities (including extensions) currently available. If a
1.779 - capability is only available with the server in a certain state (for
1.780 - example, only after authentication), the list MUST only include the
1.781 -
1.782 -
1.783 -
1.784 -Feather Standards Track [Page 14]
1.785 -
1.786 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.787 -
1.788 -
1.789 - capability label when the server is in that state. Similarly, if
1.790 - only some of the commands in an extension will be available, or if
1.791 - the behaviour of the extension will change in some other manner,
1.792 - according to the state of the server, this MUST be indicated by
1.793 - different arguments in the capability line.
1.794 -
1.795 - Note that a capability line can only begin with a letter. Lines
1.796 - beginning with other characters are reserved for future versions of
1.797 - this specification. In order to interoperate with such versions,
1.798 - clients MUST be prepared to receive lines beginning with other
1.799 - characters and MUST ignore any they do not understand.
1.800 -
1.801 -3.3.2. Standard Capabilities
1.802 -
1.803 - The following capabilities are defined by this specification.
1.804 -
1.805 - VERSION
1.806 - This capability MUST be advertised by all servers and MUST be the
1.807 - first capability in the capability list; it indicates the
1.808 - version(s) of NNTP that the server supports. There must be at
1.809 - least one argument; each argument is a decimal number and MUST NOT
1.810 - have a leading zero. Version numbers are assigned only in RFCs
1.811 - that update or replace this specification; servers MUST NOT create
1.812 - their own version numbers.
1.813 -
1.814 - The version number of this specification is 2.
1.815 -
1.816 - READER
1.817 - This capability indicates that the server implements the various
1.818 - commands useful for reading clients.
1.819 -
1.820 - IHAVE
1.821 - This capability indicates that the server implements the IHAVE
1.822 - command.
1.823 -
1.824 - POST
1.825 - This capability indicates that the server implements the POST
1.826 - command.
1.827 -
1.828 - NEWNEWS
1.829 - This capability indicates that the server implements the NEWNEWS
1.830 - command.
1.831 -
1.832 - HDR
1.833 - This capability indicates that the server implements the header
1.834 - access commands (HDR and LIST HEADERS).
1.835 -
1.836 -
1.837 -
1.838 -
1.839 -
1.840 -Feather Standards Track [Page 15]
1.841 -
1.842 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.843 -
1.844 -
1.845 - OVER
1.846 - This capability indicates that the server implements the overview
1.847 - access commands (OVER and LIST OVERVIEW.FMT). If and only if the
1.848 - server supports the message-id form of the OVER command, there
1.849 - must be a single argument MSGID.
1.850 -
1.851 - LIST
1.852 - This capability indicates that the server implements at least one
1.853 - variant of the LIST command. There MUST be one argument for each
1.854 - variant of the LIST command supported by the server, giving the
1.855 - keyword for that variant.
1.856 -
1.857 - IMPLEMENTATION
1.858 - This capability MAY be provided by a server. If so, the arguments
1.859 - SHOULD be used to provide information such as the server software
1.860 - name and version number. The client MUST NOT use this line to
1.861 - determine capabilities of the server. (While servers often
1.862 - provide this information in the initial greeting, clients need to
1.863 - guess whether this is the case; this capability makes it clear
1.864 - what the information is.)
1.865 -
1.866 - MODE-READER
1.867 - This capability indicates that the server is mode-switching
1.868 - (Section 3.4.2) and that the MODE READER command needs to be used
1.869 - to enable the READER capability.
1.870 -
1.871 -3.3.3. Extensions
1.872 -
1.873 - Although NNTP is widely and robustly deployed, some parts of the
1.874 - Internet community might wish to extend the NNTP service. It must be
1.875 - emphasized that any extension to NNTP should not be considered
1.876 - lightly. NNTP's strength comes primarily from its simplicity.
1.877 - Experience with many protocols has shown that:
1.878 -
1.879 - Protocols with few options tend towards ubiquity, whilst protocols
1.880 - with many options tend towards obscurity.
1.881 -
1.882 - This means that each and every extension, regardless of its benefits,
1.883 - must be carefully scrutinized with respect to its implementation,
1.884 - deployment, and interoperability costs. In many cases, the cost of
1.885 - extending the NNTP service will likely outweigh the benefit.
1.886 -
1.887 - An extension is a package of associated facilities, often but not
1.888 - always including one or more new commands. Each extension MUST
1.889 - define at least one new capability label (this will often, but need
1.890 - not, be the name of one of these new commands). While any additional
1.891 - capability information can normally be specified using arguments to
1.892 -
1.893 -
1.894 -
1.895 -
1.896 -Feather Standards Track [Page 16]
1.897 -
1.898 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.899 -
1.900 -
1.901 - that label, an extension MAY define more than one capability label.
1.902 - However, this SHOULD be limited to exceptional circumstances.
1.903 -
1.904 - An extension is either a private extension, or its capabilities are
1.905 - included in the IANA registry of capabilities (see Section 3.3.4) and
1.906 - it is defined in an RFC (in which case it is a "registered
1.907 - extension"). Such RFCs either must be on the standards track or must
1.908 - define an IESG-approved experimental protocol.
1.909 -
1.910 - The definition of an extension must include the following:
1.911 -
1.912 - o a descriptive name for the extension.
1.913 -
1.914 - o the capability label or labels defined by the extension (the
1.915 - capability label of a registered extension MUST NOT begin with
1.916 - "X").
1.917 -
1.918 - o The syntax, values, and meanings of any arguments for each
1.919 - capability label defined by the extension.
1.920 -
1.921 - o Any new NNTP commands associated with the extension (the names of
1.922 - commands associated with registered extensions MUST NOT begin with
1.923 - "X").
1.924 -
1.925 - o The syntax and possible values of arguments associated with the
1.926 - new NNTP commands.
1.927 -
1.928 - o The response codes and possible values of arguments for the
1.929 - responses of the new NNTP commands.
1.930 -
1.931 - o Any new arguments the extension associates with any other
1.932 - pre-existing NNTP commands.
1.933 -
1.934 - o Any increase in the maximum length of commands and initial
1.935 - response lines over the value specified in this document.
1.936 -
1.937 - o A specific statement about the effect on pipelining that this
1.938 - extension may have (if any).
1.939 -
1.940 - o A specific statement about the circumstances when use of this
1.941 - extension can alter the contents of the capabilities list (other
1.942 - than the new capability labels it defines).
1.943 -
1.944 - o A specific statement about the circumstances under which the
1.945 - extension can cause any pre-existing command to produce a 401,
1.946 - 480, or 483 response.
1.947 -
1.948 -
1.949 -
1.950 -
1.951 -
1.952 -Feather Standards Track [Page 17]
1.953 -
1.954 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.955 -
1.956 -
1.957 - o A description of how the use of MODE READER on a mode-switching
1.958 - server interacts with the extension.
1.959 -
1.960 - o A description of how support for the extension affects the
1.961 - behaviour of a server and NNTP client in any other manner not
1.962 - outlined above.
1.963 -
1.964 - o Formal syntax as described in Section 9.9.
1.965 -
1.966 - A private extension MAY or MAY NOT be included in the capabilities
1.967 - list. If it is, the capability label MUST begin with "X". A server
1.968 - MAY provide additional keywords (for new commands and also for new
1.969 - variants of existing commands) as part of a private extension. To
1.970 - avoid the risk of a clash with a future registered extension, these
1.971 - keywords SHOULD begin with "X".
1.972 -
1.973 - If the server advertises a capability defined by a registered
1.974 - extension, it MUST implement the extension so as to fully conform
1.975 - with the specification (for example, it MUST implement all the
1.976 - commands that the extension describes as mandatory). If it does not
1.977 - implement the extension as specified, it MUST NOT list the extension
1.978 - in the capabilities list under its registered name. In that case, it
1.979 - MAY, but SHOULD NOT, provide a private extension (not listed, or
1.980 - listed with a different name) that implements part of the extension
1.981 - or implements the commands of the extension with a different meaning.
1.982 -
1.983 - A server MUST NOT send different response codes to basic NNTP
1.984 - commands documented here or to commands documented in registered
1.985 - extensions in response to the availability or use of a private
1.986 - extension.
1.987 -
1.988 -3.3.4. Initial IANA Register
1.989 -
1.990 - IANA will maintain a registry of NNTP capability labels. All
1.991 - capability labels in the registry MUST be keywords and MUST NOT begin
1.992 - with X.
1.993 -
1.994 -
1.995 -
1.996 -
1.997 -
1.998 -
1.999 -
1.1000 -
1.1001 -
1.1002 -
1.1003 -
1.1004 -
1.1005 -
1.1006 -
1.1007 -
1.1008 -Feather Standards Track [Page 18]
1.1009 -
1.1010 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1011 -
1.1012 -
1.1013 - The initial content of the registry consists of these entries:
1.1014 -
1.1015 - +-------------------+--------------------------+--------------------+
1.1016 - | Label | Meaning | Definition |
1.1017 - +-------------------+--------------------------+--------------------+
1.1018 - | AUTHINFO | Authentication | [NNTP-AUTH] |
1.1019 - | | | |
1.1020 - | HDR | Batched header retrieval | Section 3.3.2, |
1.1021 - | | | Section 8.5, and |
1.1022 - | | | Section 8.6 |
1.1023 - | | | |
1.1024 - | IHAVE | IHAVE command available | Section 3.3.2 and |
1.1025 - | | | Section 6.3.2 |
1.1026 - | | | |
1.1027 - | IMPLEMENTATION | Server | Section 3.3.2 |
1.1028 - | | implementation-specific | |
1.1029 - | | information | |
1.1030 - | | | |
1.1031 - | LIST | LIST command variants | Section 3.3.2 and |
1.1032 - | | | Section 7.6.1 |
1.1033 - | | | |
1.1034 - | MODE-READER | Mode-switching server | Section 3.4.2 |
1.1035 - | | and MODE READER command | |
1.1036 - | | available | |
1.1037 - | | | |
1.1038 - | NEWNEWS | NEWNEWS command | Section 3.3.2 and |
1.1039 - | | available | Section 7.4 |
1.1040 - | | | |
1.1041 - | OVER | Overview support | Section 3.3.2, |
1.1042 - | | | Section 8.3, and |
1.1043 - | | | Section 8.4 |
1.1044 - | | | |
1.1045 - | POST | POST command available | Section 3.3.2 and |
1.1046 - | | | Section 6.3.1 |
1.1047 - | | | |
1.1048 - | READER | Reader commands | Section 3.3.2 |
1.1049 - | | available | |
1.1050 - | | | |
1.1051 - | SASL | Supported SASL | [NNTP-AUTH] |
1.1052 - | | mechanisms | |
1.1053 - | | | |
1.1054 - | STARTTLS | Transport layer security | [NNTP-TLS] |
1.1055 - | | | |
1.1056 - | STREAMING | Streaming feeds | [NNTP-STREAM] |
1.1057 - | | | |
1.1058 - | VERSION | Supported NNTP versions | Section 3.3.2 |
1.1059 - +-------------------+--------------------------+--------------------+
1.1060 -
1.1061 -
1.1062 -
1.1063 -
1.1064 -Feather Standards Track [Page 19]
1.1065 -
1.1066 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1067 -
1.1068 -
1.1069 -3.4. Mandatory and Optional Commands
1.1070 -
1.1071 - For a number of reasons, not all the commands in this specification
1.1072 - are mandatory. However, it is equally undesirable for every command
1.1073 - to be optional, since this means that a client will have no idea what
1.1074 - facilities are available. Therefore, as a compromise, some of the
1.1075 - commands in this specification are mandatory (they must be supported
1.1076 - by all servers) while the remainder are not. The latter are then
1.1077 - subdivided into bundles, each indicated by a single capability label.
1.1078 -
1.1079 - o If the label is included in the capability list returned by the
1.1080 - server, the server MUST support all commands in that bundle.
1.1081 -
1.1082 - o If the label is not included, the server MAY support none or some
1.1083 - of the commands but SHOULD NOT support all of them. In general,
1.1084 - there will be no way for a client to determine which commands are
1.1085 - supported without trying them.
1.1086 -
1.1087 - The bundles have been chosen to provide useful functionality, and
1.1088 - therefore server authors are discouraged from implementing only part
1.1089 - of a bundle.
1.1090 -
1.1091 - The description of each command will either indicate that it is
1.1092 - mandatory, or will give, using the term "indicating capability", the
1.1093 - capability label indicating whether the bundle including this command
1.1094 - is available.
1.1095 -
1.1096 - Where a server does not implement a command, it MUST always generate
1.1097 - a 500 generic response code (or a 501 generic response code in the
1.1098 - case of a variant of a command depending on a second keyword where
1.1099 - the base command is recognised). Otherwise, the command MUST be
1.1100 - fully implemented as specified; a server MUST NOT only partially
1.1101 - implement any of the commands in this specification. (Client authors
1.1102 - should note that some servers not conforming to this specification
1.1103 - will return a 502 generic response code to some commands that are not
1.1104 - implemented.)
1.1105 -
1.1106 - Note: some commands have cases that require other commands to be used
1.1107 - first. If the former command is implemented but the latter is not,
1.1108 - the former MUST still generate the relevant specific response code.
1.1109 - For example, if ARTICLE (Section 6.2.1) is implemented but GROUP
1.1110 - (Section 6.1.1) is not, the correct response to "ARTICLE 1234"
1.1111 - remains 412.
1.1112 -
1.1113 -
1.1114 -
1.1115 -
1.1116 -
1.1117 -
1.1118 -
1.1119 -
1.1120 -Feather Standards Track [Page 20]
1.1121 -
1.1122 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1123 -
1.1124 -
1.1125 -3.4.1. Reading and Transit Servers
1.1126 -
1.1127 - NNTP is traditionally used in two different ways. The first use is
1.1128 - "reading", where the client fetches articles from a large store
1.1129 - maintained by the server for immediate or later presentation to a
1.1130 - user and sends articles created by that user back to the server (an
1.1131 - action called "posting") to be stored and distributed to other stores
1.1132 - and users. The second use is for the bulk transfer of articles from
1.1133 - one store to another. Since the hosts making this transfer tend to
1.1134 - be peers in a network that transmit articles among one another, and
1.1135 - not end-user systems, this process is called "peering" or "transit".
1.1136 - (Even so, one host is still the client and the other is the server).
1.1137 -
1.1138 - In practice, these two uses are so different that some server
1.1139 - implementations are optimised for reading or for transit and, as a
1.1140 - result, do not offer the other facility or only offer limited
1.1141 - features. Other implementations are more general and offer both.
1.1142 - This specification allows for this by bundling the relevant commands
1.1143 - accordingly: the IHAVE command is designed for transit, while the
1.1144 - commands indicated by the READER capability are designed for reading
1.1145 - clients.
1.1146 -
1.1147 - Except as an effect of the MODE READER command (Section 5.3) on a
1.1148 - mode-switching server, once a server advertises either or both of the
1.1149 - IHAVE or READER capabilities, it MUST continue to advertise them for
1.1150 - the entire session.
1.1151 -
1.1152 - A server MAY provide different modes of behaviour (transit, reader,
1.1153 - or a combination) to different client connections and MAY use
1.1154 - external information, such as the IP address of the client, to
1.1155 - determine which mode to provide to any given connection.
1.1156 -
1.1157 - The official TCP port for the NNTP service is 119. However, if a
1.1158 - host wishes to offer separate servers for transit and reading
1.1159 - clients, port 433 SHOULD be used for the transit server and 119 for
1.1160 - the reading server.
1.1161 -
1.1162 -3.4.2. Mode Switching
1.1163 -
1.1164 - An implementation MAY, but SHOULD NOT, provide both transit and
1.1165 - reader facilities on the same server but require the client to select
1.1166 - which it wishes to use. Such an arrangement is called a
1.1167 - "mode-switching" server.
1.1168 -
1.1169 -
1.1170 -
1.1171 -
1.1172 -
1.1173 -
1.1174 -
1.1175 -
1.1176 -Feather Standards Track [Page 21]
1.1177 -
1.1178 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1179 -
1.1180 -
1.1181 - A mode-switching server has two modes:
1.1182 -
1.1183 - o Transit mode, which applies after the initial connection.
1.1184 -
1.1185 - * It MUST advertise the MODE-READER capability.
1.1186 -
1.1187 - * It MUST NOT advertise the READER capability.
1.1188 -
1.1189 - However, the server MAY cease to advertise the MODE-READER
1.1190 - capability after the client uses any command except CAPABILITIES.
1.1191 -
1.1192 - o Reading mode, after a successful MODE READER command (see Section
1.1193 - 5.3).
1.1194 -
1.1195 - * It MUST NOT advertise the MODE-READER capability.
1.1196 -
1.1197 - * It MUST advertise the READER capability.
1.1198 -
1.1199 - * It MAY NOT advertise the IHAVE capability, even if it was
1.1200 - advertising it in transit mode.
1.1201 -
1.1202 - A client SHOULD only issue a MODE READER command to a server if it is
1.1203 - advertising the MODE-READER capability. If the server does not
1.1204 - support CAPABILITIES (and therefore does not conform to this
1.1205 - specification), the client MAY use the following heuristic:
1.1206 -
1.1207 - o If the client wishes to use any "reader" commands, it SHOULD use
1.1208 - the MODE READER command immediately after the initial connection.
1.1209 -
1.1210 - o Otherwise, it SHOULD NOT use the MODE READER command.
1.1211 -
1.1212 - In each case, it should be prepared for some commands to be
1.1213 - unavailable that would have been available if it had made the other
1.1214 - choice.
1.1215 -
1.1216 -3.5. Pipelining
1.1217 -
1.1218 - NNTP is designed to operate over a reliable bi-directional
1.1219 - connection, such as TCP. Therefore, if a command does not depend on
1.1220 - the response to the previous one, it should not matter if it is sent
1.1221 - before that response is received. Doing this is called "pipelining".
1.1222 - However, certain server implementations throw away all text received
1.1223 - from the client following certain commands before sending their
1.1224 - response. If this happens, pipelining will be affected because one
1.1225 - or more commands will have been ignored or misinterpreted, and the
1.1226 - client will be matching the wrong responses to each command. Since
1.1227 - there are significant benefits to pipelining, but also circumstances
1.1228 - where it is reasonable or common for servers to behave in the above
1.1229 -
1.1230 -
1.1231 -
1.1232 -Feather Standards Track [Page 22]
1.1233 -
1.1234 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1235 -
1.1236 -
1.1237 - manner, this document puts certain requirements on both clients and
1.1238 - servers.
1.1239 -
1.1240 - Except where stated otherwise, a client MAY use pipelining. That is,
1.1241 - it may send a command before receiving the response for the previous
1.1242 - command. The server MUST allow pipelining and MUST NOT throw away
1.1243 - any text received after a command. Irrespective of whether
1.1244 - pipelining is used, the server MUST process commands in the order
1.1245 - they are sent.
1.1246 -
1.1247 - If the specific description of a command says it "MUST NOT be
1.1248 - pipelined", that command MUST end any pipeline of commands. That is,
1.1249 - the client MUST NOT send any following command until it receives the
1.1250 - CRLF at the end of the response from the command. The server MAY
1.1251 - ignore any data received after the command and before the CRLF at the
1.1252 - end of the response is sent to the client.
1.1253 -
1.1254 - The initial connection must not be part of a pipeline; that is, the
1.1255 - client MUST NOT send any command until it receives the CRLF at the
1.1256 - end of the greeting.
1.1257 -
1.1258 - If the client uses blocking system calls to send commands, it MUST
1.1259 - ensure that the amount of text sent in pipelining does not cause a
1.1260 - deadlock between transmission and reception. The amount of text
1.1261 - involved will depend on window sizes in the transmission layer;
1.1262 - typically, it is 4k octets for TCP. (Since the server only sends
1.1263 - data in response to commands from the client, the converse problem
1.1264 - does not occur.)
1.1265 -
1.1266 -3.5.1. Examples
1.1267 -
1.1268 - Example of correct use of pipelining:
1.1269 -
1.1270 - [C] GROUP misc.test
1.1271 - [C] STAT
1.1272 - [C] NEXT
1.1273 - [S] 211 1234 3000234 3002322 misc.test
1.1274 - [S] 223 3000234 <45223423@example.com> retrieved
1.1275 - [S] 223 3000237 <668929@example.org> retrieved
1.1276 -
1.1277 - Example of incorrect use of pipelining (the MODE READER command may
1.1278 - not be pipelined):
1.1279 -
1.1280 - [C] MODE READER
1.1281 - [C] DATE
1.1282 - [C] NEXT
1.1283 - [S] 200 Server ready, posting allowed
1.1284 - [S] 223 3000237 <668929@example.org> retrieved
1.1285 -
1.1286 -
1.1287 -
1.1288 -Feather Standards Track [Page 23]
1.1289 -
1.1290 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1291 -
1.1292 -
1.1293 - The DATE command has been thrown away by the server, so there is no
1.1294 - 111 response to match it.
1.1295 -
1.1296 -3.6. Articles
1.1297 -
1.1298 - NNTP is intended to transfer articles between clients and servers.
1.1299 - For the purposes of this specification, articles are required to
1.1300 - conform to the rules in this section, and clients and servers MUST
1.1301 - correctly process any article received from the other that does so.
1.1302 - Note that this requirement applies only to the contents of
1.1303 - communications over NNTP; it does not prevent the client or server
1.1304 - from subsequently rejecting an article for reasons of local policy.
1.1305 - Also see Appendix A for further restrictions on the format of
1.1306 - articles in some uses of NNTP.
1.1307 -
1.1308 - An article consists of two parts: the headers and the body. They are
1.1309 - separated by a single empty line, or in other words by two
1.1310 - consecutive CRLF pairs (if there is more than one empty line, the
1.1311 - second and subsequent ones are part of the body). In order to meet
1.1312 - the general requirements of NNTP, an article MUST NOT include the
1.1313 - octet NUL, MUST NOT contain the octets LF and CR other than as part
1.1314 - of a CRLF pair, and MUST end with a CRLF pair. This specification
1.1315 - puts no further restrictions on the body; in particular, it MAY be
1.1316 - empty.
1.1317 -
1.1318 - The headers of an article consist of one or more header lines. Each
1.1319 - header line consists of a header name, a colon, a space, the header
1.1320 - content, and a CRLF, in that order. The name consists of one or more
1.1321 - printable US-ASCII characters other than colon and, for the purposes
1.1322 - of this specification, is not case sensitive. There MAY be more than
1.1323 - one header line with the same name. The content MUST NOT contain
1.1324 - CRLF; it MAY be empty. A header may be "folded"; that is, a CRLF
1.1325 - pair may be placed before any TAB or space in the line. There MUST
1.1326 - still be some other octet between any two CRLF pairs in a header
1.1327 - line. (Note that folding means that the header line occupies more
1.1328 - than one line when displayed or transmitted; nevertheless, it is
1.1329 - still referred to as "a" header line.) The presence or absence of
1.1330 - folding does not affect the meaning of the header line; that is, the
1.1331 - CRLF pairs introduced by folding are not considered part of the
1.1332 - header content. Header lines SHOULD NOT be folded before the space
1.1333 - after the colon that follows the header name and SHOULD include at
1.1334 - least one octet other than %x09 or %x20 between CRLF pairs. However,
1.1335 - if an article that fails to satisfy this requirement has been
1.1336 - received from elsewhere, clients and servers MAY transfer it to each
1.1337 - other without re-folding it.
1.1338 -
1.1339 -
1.1340 -
1.1341 -
1.1342 -
1.1343 -
1.1344 -Feather Standards Track [Page 24]
1.1345 -
1.1346 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1347 -
1.1348 -
1.1349 - The content of a header SHOULD be in UTF-8. However, if an
1.1350 - implementation receives an article from elsewhere that uses octets in
1.1351 - the range 128 to 255 in some other manner, it MAY pass it to a client
1.1352 - or server without modification. Therefore, implementations MUST be
1.1353 - prepared to receive such headers, and data derived from them (e.g.,
1.1354 - in the responses from the OVER command, Section 8.3), and MUST NOT
1.1355 - assume that they are always UTF-8. Any external processing of those
1.1356 - headers, including identifying the encoding used, is outside the
1.1357 - scope of this document.
1.1358 -
1.1359 - Each article MUST have a unique message-id; two articles offered by
1.1360 - an NNTP server MUST NOT have the same message-id. For the purposes
1.1361 - of this specification, message-ids are opaque strings that MUST meet
1.1362 - the following requirements:
1.1363 -
1.1364 - o A message-id MUST begin with "<", end with ">", and MUST NOT
1.1365 - contain the latter except at the end.
1.1366 -
1.1367 - o A message-id MUST be between 3 and 250 octets in length.
1.1368 -
1.1369 - o A message-id MUST NOT contain octets other than printable US-ASCII
1.1370 - characters.
1.1371 -
1.1372 - Two message-ids are the same if and only if they consist of the same
1.1373 - sequence of octets.
1.1374 -
1.1375 - This specification does not describe how the message-id of an article
1.1376 - is determined. If the server does not have any way to determine a
1.1377 - message-id from the article itself, it MUST synthesize one (this
1.1378 - specification does not require that the article be changed as a
1.1379 - result). See also Appendix A.2.
1.1380 -
1.1381 -4. The WILDMAT Format
1.1382 -
1.1383 - The WILDMAT format described here is based on the version first
1.1384 - developed by Rich Salz [SALZ1992], which was in turn derived from the
1.1385 - format used in the UNIX "find" command to articulate file names. It
1.1386 - was developed to provide a uniform mechanism for matching patterns in
1.1387 - the same manner that the UNIX shell matches filenames.
1.1388 -
1.1389 -
1.1390 -
1.1391 -
1.1392 -
1.1393 -
1.1394 -
1.1395 -
1.1396 -
1.1397 -
1.1398 -
1.1399 -
1.1400 -Feather Standards Track [Page 25]
1.1401 -
1.1402 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1403 -
1.1404 -
1.1405 -4.1. Wildmat Syntax
1.1406 -
1.1407 - A wildmat is described by the following ABNF [RFC4234] syntax, which
1.1408 - is an extract of that in Section 9.8.
1.1409 -
1.1410 - wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
1.1411 - wildmat-pattern = 1*wildmat-item
1.1412 - wildmat-item = wildmat-exact / wildmat-wild
1.1413 - wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
1.1414 - UTF8-non-ascii ; exclude ! * , ? [ \ ]
1.1415 - wildmat-wild = "*" / "?"
1.1416 -
1.1417 - Note: the characters ",", "\", "[", and "]" are not allowed in
1.1418 - wildmats, while * and ? are always wildcards. This should not be a
1.1419 - problem, since these characters cannot occur in newsgroup names,
1.1420 - which is the only current use of wildmats. Backslash is commonly
1.1421 - used to suppress the special meaning of characters, whereas brackets
1.1422 - are used to introduce sets. However, these usages are not universal,
1.1423 - and interpretation of these characters in the context of UTF-8
1.1424 - strings is potentially complex and differs from existing practice, so
1.1425 - they were omitted from this specification. A future extension to
1.1426 - this specification may provide semantics for these characters.
1.1427 -
1.1428 -4.2. Wildmat Semantics
1.1429 -
1.1430 - A wildmat is tested against a string and either matches or does not
1.1431 - match. To do this, each constituent <wildmat-pattern> is matched
1.1432 - against the string, and the rightmost pattern that matches is
1.1433 - identified. If that <wildmat-pattern> is not preceded with "!", the
1.1434 - whole wildmat matches. If it is preceded by "!", or if no <wildmat-
1.1435 - pattern> matches, the whole wildmat does not match.
1.1436 -
1.1437 - For example, consider the wildmat "a*,!*b,*c*":
1.1438 -
1.1439 - o The string "aaa" matches because the rightmost match is with "a*".
1.1440 -
1.1441 - o The string "abb" does not match because the rightmost match is
1.1442 - with "*b".
1.1443 -
1.1444 - o The string "ccb" matches because the rightmost match is with
1.1445 - "*c*".
1.1446 -
1.1447 - o The string "xxx" does not match because no <wildmat-pattern>
1.1448 - matches.
1.1449 -
1.1450 - A <wildmat-pattern> matches a string if the string can be broken into
1.1451 - components, each of which matches the corresponding <wildmat-item> in
1.1452 - the pattern. The matches must be in the same order, and the whole
1.1453 -
1.1454 -
1.1455 -
1.1456 -Feather Standards Track [Page 26]
1.1457 -
1.1458 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1459 -
1.1460 -
1.1461 - string must be used in the match. The pattern is "anchored"; that
1.1462 - is, the first and last characters in the string must match the first
1.1463 - and last item, respectively (unless that item is an asterisk matching
1.1464 - zero characters).
1.1465 -
1.1466 - A <wildmat-exact> matches the same character (which may be more than
1.1467 - one octet in UTF-8).
1.1468 -
1.1469 - "?" matches exactly one character (which may be more than one octet).
1.1470 -
1.1471 - "*" matches zero or more characters. It can match an empty string,
1.1472 - but it cannot match a subsequence of a UTF-8 sequence that is not
1.1473 - aligned to the character boundaries.
1.1474 -
1.1475 -4.3. Extensions
1.1476 -
1.1477 - An NNTP server or extension MAY extend the syntax or semantics of
1.1478 - wildmats provided that all wildmats that meet the requirements of
1.1479 - Section 4.1 have the meaning ascribed to them by Section 4.2. Future
1.1480 - editions of this document may also extend wildmats.
1.1481 -
1.1482 -4.4. Examples
1.1483 -
1.1484 - In these examples, $ and @ are used to represent the two octets %xC2
1.1485 - and %xA3, respectively; $@ is thus the UTF-8 encoding for the pound
1.1486 - sterling symbol, shown as # in the descriptions.
1.1487 -
1.1488 - Wildmat Description of strings that match
1.1489 - abc The one string "abc"
1.1490 - abc,def The two strings "abc" and "def"
1.1491 - $@ The one character string "#"
1.1492 - a* Any string that begins with "a"
1.1493 - a*b Any string that begins with "a" and ends with "b"
1.1494 - a*,*b Any string that begins with "a" or ends with "b"
1.1495 - a*,!*b Any string that begins with "a" and does not end with
1.1496 - "b"
1.1497 - a*,!*b,c* Any string that begins with "a" and does not end with
1.1498 - "b", and any string that begins with "c" no matter
1.1499 - what it ends with
1.1500 - a*,c*,!*b Any string that begins with "a" or "c" and does not
1.1501 - end with "b"
1.1502 - ?a* Any string with "a" as its second character
1.1503 - ??a* Any string with "a" as its third character
1.1504 - *a? Any string with "a" as its penultimate character
1.1505 - *a?? Any string with "a" as its antepenultimate character
1.1506 -
1.1507 -
1.1508 -
1.1509 -
1.1510 -
1.1511 -
1.1512 -Feather Standards Track [Page 27]
1.1513 -
1.1514 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1515 -
1.1516 -
1.1517 -5. Session Administration Commands
1.1518 -
1.1519 -5.1. Initial Connection
1.1520 -
1.1521 -5.1.1. Usage
1.1522 -
1.1523 - This command MUST NOT be pipelined.
1.1524 -
1.1525 - Responses [1]
1.1526 - 200 Service available, posting allowed
1.1527 - 201 Service available, posting prohibited
1.1528 - 400 Service temporarily unavailable [2]
1.1529 - 502 Service permanently unavailable [2]
1.1530 -
1.1531 - [1] These are the only valid response codes for the initial greeting;
1.1532 - the server MUST not return any other generic response code.
1.1533 -
1.1534 - [2] Following a 400 or 502 response, the server MUST immediately
1.1535 - close the connection.
1.1536 -
1.1537 -5.1.2. Description
1.1538 -
1.1539 - There is no command presented by the client upon initial connection
1.1540 - to the server. The server MUST present an appropriate response code
1.1541 - as a greeting to the client. This response informs the client
1.1542 - whether service is available and whether the client is permitted to
1.1543 - post.
1.1544 -
1.1545 - If the server will accept further commands from the client including
1.1546 - POST, the server MUST present a 200 greeting code. If the server
1.1547 - will accept further commands from the client, but the client is not
1.1548 - authorized to post articles using the POST command, the server MUST
1.1549 - present a 201 greeting code.
1.1550 -
1.1551 - Otherwise, the server MUST present a 400 or 502 greeting code and
1.1552 - then immediately close the connection. 400 SHOULD be used if the
1.1553 - issue is only temporary (for example, because of load) and the client
1.1554 - can expect to be able to connect successfully at some point in the
1.1555 - future without making any changes. 502 MUST be used if the client is
1.1556 - not permitted under any circumstances to interact with the server,
1.1557 - and MAY be used if the server has insufficient information to
1.1558 - determine whether the issue is temporary or permanent.
1.1559 -
1.1560 - Note: the distinction between the 200 and 201 response codes has
1.1561 - turned out in practice to be insufficient; for example, some servers
1.1562 - do not allow posting until the client has authenticated, while other
1.1563 - clients assume that a 201 response means that posting will never be
1.1564 - possible even after authentication. Therefore, clients SHOULD use
1.1565 -
1.1566 -
1.1567 -
1.1568 -Feather Standards Track [Page 28]
1.1569 -
1.1570 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1571 -
1.1572 -
1.1573 - the CAPABILITIES command (Section 5.2) rather than rely on this
1.1574 - response.
1.1575 -
1.1576 -5.1.3. Examples
1.1577 -
1.1578 - Example of a normal connection from an authorized client that then
1.1579 - terminates the session (see Section 5.4):
1.1580 -
1.1581 - [Initial connection set-up completed.]
1.1582 - [S] 200 NNTP Service Ready, posting permitted
1.1583 - [C] QUIT
1.1584 - [S] 205 NNTP Service exits normally
1.1585 - [Server closes connection.]
1.1586 -
1.1587 - Example of a normal connection from an authorized client that is not
1.1588 - permitted to post, which also immediately terminates the session:
1.1589 -
1.1590 - [Initial connection set-up completed.]
1.1591 - [S] 201 NNTP Service Ready, posting prohibited
1.1592 - [C] QUIT
1.1593 - [S] 205 NNTP Service exits normally
1.1594 - [Server closes connection.]
1.1595 -
1.1596 - Example of a normal connection from an unauthorized client:
1.1597 -
1.1598 - [Initial connection set-up completed.]
1.1599 - [S] 502 NNTP Service permanently unavailable
1.1600 - [Server closes connection.]
1.1601 -
1.1602 - Example of a connection from a client if the server is unable to
1.1603 - provide service:
1.1604 -
1.1605 - [Initial connection set-up completed.]
1.1606 - [S] 400 NNTP Service temporarily unavailable
1.1607 - [Server closes connection.]
1.1608 -
1.1609 -5.2. CAPABILITIES
1.1610 -
1.1611 -5.2.1. Usage
1.1612 -
1.1613 - This command is mandatory.
1.1614 -
1.1615 - Syntax
1.1616 - CAPABILITIES [keyword]
1.1617 -
1.1618 - Responses
1.1619 - 101 Capability list follows (multi-line)
1.1620 -
1.1621 -
1.1622 -
1.1623 -
1.1624 -Feather Standards Track [Page 29]
1.1625 -
1.1626 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1627 -
1.1628 -
1.1629 - Parameters
1.1630 - keyword additional feature, see description
1.1631 -
1.1632 -5.2.2. Description
1.1633 -
1.1634 - The CAPABILITIES command allows a client to determine the
1.1635 - capabilities of the server at any given time.
1.1636 -
1.1637 - This command MAY be issued at any time; the server MUST NOT require
1.1638 - it to be issued in order to make use of any capability. The response
1.1639 - generated by this command MAY change during a session because of
1.1640 - other state information (which, in turn, may be changed by the
1.1641 - effects of other commands or by external events). An NNTP client is
1.1642 - only able to get the current and correct information concerning
1.1643 - available capabilities at any point during a session by issuing a
1.1644 - CAPABILITIES command at that point of that session and processing the
1.1645 - response.
1.1646 -
1.1647 - The capability list is returned as a multi-line data block following
1.1648 - the 101 response code. Each capability is described by a separate
1.1649 - capability line. The server MUST NOT list the same capability twice
1.1650 - in the response, even with different arguments. Except that the
1.1651 - VERSION capability MUST be the first line, the order in which the
1.1652 - capability lines appears is not significant; the server need not even
1.1653 - consistently return the same order.
1.1654 -
1.1655 - While some capabilities are likely to be always available or never
1.1656 - available, others (notably extensions) will appear and disappear
1.1657 - depending on server state changes within the session or on external
1.1658 - events between sessions. An NNTP client MAY cache the results of
1.1659 - this command, but MUST NOT rely on the correctness of any cached
1.1660 - results, whether from earlier in this session or from a previous
1.1661 - session, MUST cope gracefully with the cached status being out of
1.1662 - date, and SHOULD (if caching results) provide a way to force the
1.1663 - cached information to be refreshed. Furthermore, a client MUST NOT
1.1664 - use cached results in relation to security, privacy, and
1.1665 - authentication extensions. See Section 12.6 for further discussion
1.1666 - of this topic.
1.1667 -
1.1668 - The keyword argument is not used by this specification. It is
1.1669 - provided so that extensions or revisions to this specification can
1.1670 - include extra features for this command without requiring the
1.1671 - CAPABILITIES command to be used twice (once to determine if the extra
1.1672 - features are available, and a second time to make use of them). If
1.1673 - the server does not recognise the argument (and it is a keyword), it
1.1674 - MUST respond with the 101 response code as if the argument had been
1.1675 - omitted. If an argument is provided that the server does recognise,
1.1676 - it MAY use the 101 response code or MAY use some other response code
1.1677 -
1.1678 -
1.1679 -
1.1680 -Feather Standards Track [Page 30]
1.1681 -
1.1682 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1683 -
1.1684 -
1.1685 - (which will be defined in the specification of that feature). If the
1.1686 - argument is not a keyword, the 501 generic response code MUST be
1.1687 - returned. The server MUST NOT generate any other response code to
1.1688 - the CAPABILITIES command.
1.1689 -
1.1690 -5.2.3. Examples
1.1691 -
1.1692 - Example of a minimal response (a read-only server):
1.1693 -
1.1694 - [C] CAPABILITIES
1.1695 - [S] 101 Capability list:
1.1696 - [S] VERSION 2
1.1697 - [S] READER
1.1698 - [S] LIST ACTIVE NEWSGROUPS
1.1699 - [S] .
1.1700 -
1.1701 - Example of a response from a server that has a range of facilities
1.1702 - and that also describes itself:
1.1703 -
1.1704 - [C] CAPABILITIES
1.1705 - [S] 101 Capability list:
1.1706 - [S] VERSION 2
1.1707 - [S] READER
1.1708 - [S] IHAVE
1.1709 - [S] POST
1.1710 - [S] NEWNEWS
1.1711 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES OVERVIEW.FMT
1.1712 - [S] IMPLEMENTATION INN 4.2 2004-12-25
1.1713 - [S] OVER MSGID
1.1714 - [S] STREAMING
1.1715 - [S] XSECRET
1.1716 - [S] .
1.1717 -
1.1718 - Example of a server that supports more than one version of NNTP:
1.1719 -
1.1720 - [C] CAPABILITIES
1.1721 - [S] 101 Capability list:
1.1722 - [S] VERSION 2 3
1.1723 - [S] READER
1.1724 - [S] LIST ACTIVE NEWSGROUPS
1.1725 - [S] .
1.1726 -
1.1727 -
1.1728 -
1.1729 -
1.1730 -
1.1731 -
1.1732 -
1.1733 -
1.1734 -
1.1735 -
1.1736 -Feather Standards Track [Page 31]
1.1737 -
1.1738 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1739 -
1.1740 -
1.1741 - Example of a client attempting to use a feature of the CAPABILITIES
1.1742 - command that the server does not support:
1.1743 -
1.1744 - [C] CAPABILITIES AUTOUPDATE
1.1745 - [S] 101 Capability list:
1.1746 - [S] VERSION 2
1.1747 - [S] READER
1.1748 - [S] IHAVE
1.1749 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT HEADERS
1.1750 - [S] OVER MSGID
1.1751 - [S] HDR
1.1752 - [S] NEWNEWS
1.1753 - [S] .
1.1754 -
1.1755 -5.3. MODE READER
1.1756 -
1.1757 -5.3.1. Usage
1.1758 -
1.1759 - Indicating capability: MODE-READER
1.1760 -
1.1761 - This command MUST NOT be pipelined.
1.1762 -
1.1763 - Syntax
1.1764 - MODE READER
1.1765 -
1.1766 - Responses
1.1767 - 200 Posting allowed
1.1768 - 201 Posting prohibited
1.1769 - 502 Reading service permanently unavailable [1]
1.1770 -
1.1771 - [1] Following a 502 response the server MUST immediately close the
1.1772 - connection.
1.1773 -
1.1774 -5.3.2. Description
1.1775 -
1.1776 - The MODE READER command instructs a mode-switching server to switch
1.1777 - modes, as described in Section 3.4.2.
1.1778 -
1.1779 - If the server is mode-switching, it switches from its transit mode to
1.1780 - its reader mode, indicating this by changing the capability list
1.1781 - accordingly. It MUST then return a 200 or 201 response with the same
1.1782 - meaning as for the initial greeting (as described in Section 5.1.1).
1.1783 - Note that the response need not be the same as that presented during
1.1784 - the initial greeting. The client MUST NOT issue MODE READER more
1.1785 - than once in a session or after any security or privacy commands are
1.1786 - issued. When the MODE READER command is issued, the server MAY reset
1.1787 - its state to that immediately after the initial connection before
1.1788 - switching mode.
1.1789 -
1.1790 -
1.1791 -
1.1792 -Feather Standards Track [Page 32]
1.1793 -
1.1794 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1795 -
1.1796 -
1.1797 - If the server is not mode-switching, then the following apply:
1.1798 -
1.1799 - o If it advertises the READER capability, it MUST return a 200 or
1.1800 - 201 response with the same meaning as for the initial greeting; in
1.1801 - this case, the command MUST NOT affect the server state in any
1.1802 - way.
1.1803 -
1.1804 - o If it does not advertise the READER capability, it MUST return a
1.1805 - 502 response and then immediately close the connection.
1.1806 -
1.1807 -5.3.3. Examples
1.1808 -
1.1809 - Example of use of the MODE READER command on a transit-only server
1.1810 - (which therefore does not providing reading facilities):
1.1811 -
1.1812 - [C] CAPABILITIES
1.1813 - [S] 101 Capability list:
1.1814 - [S] VERSION 2
1.1815 - [S] IHAVE
1.1816 - [S] .
1.1817 - [C] MODE READER
1.1818 - [S] 502 Transit service only
1.1819 - [Server closes connection.]
1.1820 -
1.1821 - Example of use of the MODE READER command on a server that provides
1.1822 - reading facilities:
1.1823 -
1.1824 - [C] CAPABILITIES
1.1825 - [S] 101 Capability list:
1.1826 - [S] VERSION 2
1.1827 - [S] READER
1.1828 - [S] LIST ACTIVE NEWSGROUPS
1.1829 - [S] .
1.1830 - [C] MODE READER
1.1831 - [S] 200 Reader mode, posting permitted
1.1832 - [C] IHAVE <i.am.an.article.you.have@example.com>
1.1833 - [S] 500 Permission denied
1.1834 - [C] GROUP misc.test
1.1835 - [S] 211 1234 3000234 3002322 misc.test
1.1836 -
1.1837 - Note that in both of these situations, the client SHOULD NOT use MODE
1.1838 - READER.
1.1839 -
1.1840 -
1.1841 -
1.1842 -
1.1843 -
1.1844 -
1.1845 -
1.1846 -
1.1847 -
1.1848 -Feather Standards Track [Page 33]
1.1849 -
1.1850 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1851 -
1.1852 -
1.1853 - Example of use of the MODE READER command on a mode-switching server:
1.1854 -
1.1855 - [C] CAPABILITIES
1.1856 - [S] 101 Capability list:
1.1857 - [S] VERSION 2
1.1858 - [S] IHAVE
1.1859 - [S] MODE-READER
1.1860 - [S] .
1.1861 - [C] MODE READER
1.1862 - [S] 200 Reader mode, posting permitted
1.1863 - [C] CAPABILITIES
1.1864 - [S] 101 Capability list:
1.1865 - [S] VERSION 2
1.1866 - [S] READER
1.1867 - [S] NEWNEWS
1.1868 - [S] LIST ACTIVE NEWSGROUPS
1.1869 - [S] STARTTLS
1.1870 - [S] .
1.1871 -
1.1872 - In this case, the server offers (but does not require) TLS privacy in
1.1873 - its reading mode but not in its transit mode.
1.1874 -
1.1875 - Example of use of the MODE READER command where the client is not
1.1876 - permitted to post:
1.1877 -
1.1878 - [C] MODE READER
1.1879 - [S] 201 NNTP Service Ready, posting prohibited
1.1880 -
1.1881 -5.4. QUIT
1.1882 -
1.1883 -5.4.1. Usage
1.1884 -
1.1885 - This command is mandatory.
1.1886 -
1.1887 - Syntax
1.1888 - QUIT
1.1889 -
1.1890 - Responses
1.1891 - 205 Connection closing
1.1892 -
1.1893 -5.4.2. Description
1.1894 -
1.1895 - The client uses the QUIT command to terminate the session. The
1.1896 - server MUST acknowledge the QUIT command and then close the
1.1897 - connection to the client. This is the preferred method for a client
1.1898 - to indicate that it has finished all of its transactions with the
1.1899 - NNTP server.
1.1900 -
1.1901 -
1.1902 -
1.1903 -
1.1904 -Feather Standards Track [Page 34]
1.1905 -
1.1906 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1907 -
1.1908 -
1.1909 - If a client simply disconnects (or if the connection times out or
1.1910 - some other fault occurs), the server MUST gracefully cease its
1.1911 - attempts to service the client, disconnecting from its end if
1.1912 - necessary.
1.1913 -
1.1914 - The server MUST NOT generate any response code to the QUIT command
1.1915 - other than 205 or, if any arguments are provided, 501.
1.1916 -
1.1917 -5.4.3. Examples
1.1918 -
1.1919 - [C] QUIT
1.1920 - [S] 205 closing connection
1.1921 - [Server closes connection.]
1.1922 -
1.1923 -6. Article Posting and Retrieval
1.1924 -
1.1925 - News-reading clients have available a variety of mechanisms to
1.1926 - retrieve articles via NNTP. The news articles are stored and indexed
1.1927 - using three types of keys. The first type of key is the message-id
1.1928 - of an article and is globally unique. The second type of key is
1.1929 - composed of a newsgroup name and an article number within that
1.1930 - newsgroup. On a particular server, there MUST only be one article
1.1931 - with a given number within any newsgroup, and an article MUST NOT
1.1932 - have two different numbers in the same newsgroup. An article can be
1.1933 - cross-posted to multiple newsgroups, so there may be multiple keys
1.1934 - that point to the same article on the same server; these MAY have
1.1935 - different numbers in each newsgroup. However, this type of key is
1.1936 - not required to be globally unique, so the same key MAY refer to
1.1937 - different articles on different servers. (Note that the terms
1.1938 - "group" and "newsgroup" are equivalent.)
1.1939 -
1.1940 - The final type of key is the arrival timestamp, giving the time that
1.1941 - the article arrived at the server. The server MUST ensure that
1.1942 - article numbers are issued in order of arrival timestamp; that is,
1.1943 - articles arriving later MUST have higher numbers than those that
1.1944 - arrive earlier. The server SHOULD allocate the next sequential
1.1945 - unused number to each new article.
1.1946 -
1.1947 - Article numbers MUST lie between 1 and 2,147,483,647, inclusive. The
1.1948 - client and server MAY use leading zeroes in specifying article
1.1949 - numbers but MUST NOT use more than 16 digits. In some situations,
1.1950 - the value zero replaces an article number to show some special
1.1951 - situation.
1.1952 -
1.1953 - Note that it is likely that the article number limit of 2,147,483,647
1.1954 - will be increased by a future revision or extension to this
1.1955 - specification. While servers MUST NOT send article numbers greater
1.1956 - than this current limit, client and server developers are advised to
1.1957 -
1.1958 -
1.1959 -
1.1960 -Feather Standards Track [Page 35]
1.1961 -
1.1962 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.1963 -
1.1964 -
1.1965 - use internal structures and datatypes capable of handling larger
1.1966 - values in anticipation of such a change.
1.1967 -
1.1968 -6.1. Group and Article Selection
1.1969 -
1.1970 - The following commands are used to set the "currently selected
1.1971 - newsgroup" and the "current article number", which are used by
1.1972 - various commands. At the start of an NNTP session, both of these
1.1973 - values are set to the special value "invalid".
1.1974 -
1.1975 -6.1.1. GROUP
1.1976 -
1.1977 -6.1.1.1. Usage
1.1978 -
1.1979 - Indicating capability: READER
1.1980 -
1.1981 - Syntax
1.1982 - GROUP group
1.1983 -
1.1984 - Responses
1.1985 - 211 number low high group Group successfully selected
1.1986 - 411 No such newsgroup
1.1987 -
1.1988 - Parameters
1.1989 - group Name of newsgroup
1.1990 - number Estimated number of articles in the group
1.1991 - low Reported low water mark
1.1992 - high Reported high water mark
1.1993 -
1.1994 -6.1.1.2. Description
1.1995 -
1.1996 - The GROUP command selects a newsgroup as the currently selected
1.1997 - newsgroup and returns summary information about it.
1.1998 -
1.1999 - The required argument is the name of the newsgroup to be selected
1.2000 - (e.g., "news.software.nntp"). A list of valid newsgroups may be
1.2001 - obtained by using the LIST ACTIVE command (see Section 7.6.3).
1.2002 -
1.2003 - The successful selection response will return the article numbers of
1.2004 - the first and last articles in the group at the moment of selection
1.2005 - (these numbers are referred to as the "reported low water mark" and
1.2006 - the "reported high water mark") and an estimate of the number of
1.2007 - articles in the group currently available.
1.2008 -
1.2009 - If the group is not empty, the estimate MUST be at least the actual
1.2010 - number of articles available and MUST be no greater than one more
1.2011 - than the difference between the reported low and high water marks.
1.2012 - (Some implementations will actually count the number of articles
1.2013 -
1.2014 -
1.2015 -
1.2016 -Feather Standards Track [Page 36]
1.2017 -
1.2018 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2019 -
1.2020 -
1.2021 - currently stored. Others will just subtract the low water mark from
1.2022 - the high water mark and add one to get an estimate.)
1.2023 -
1.2024 - If the group is empty, one of the following three situations will
1.2025 - occur. Clients MUST accept all three cases; servers MUST NOT
1.2026 - represent an empty group in any other way.
1.2027 -
1.2028 - o The high water mark will be one less than the low water mark, and
1.2029 - the estimated article count will be zero. Servers SHOULD use this
1.2030 - method to show an empty group. This is the only time that the
1.2031 - high water mark can be less than the low water mark.
1.2032 -
1.2033 - o All three numbers will be zero.
1.2034 -
1.2035 - o The high water mark is greater than or equal to the low water
1.2036 - mark. The estimated article count might be zero or non-zero; if
1.2037 - it is non-zero, the same requirements apply as for a non-empty
1.2038 - group.
1.2039 -
1.2040 - The set of articles in a group may change after the GROUP command is
1.2041 - carried out:
1.2042 -
1.2043 - o Articles may be removed from the group.
1.2044 -
1.2045 - o Articles may be reinstated in the group with the same article
1.2046 - number, but those articles MUST have numbers no less than the
1.2047 - reported low water mark (note that this is a reinstatement of the
1.2048 - previous article, not a new article reusing the number).
1.2049 -
1.2050 - o New articles may be added with article numbers greater than the
1.2051 - reported high water mark. (If an article that was the one with
1.2052 - the highest number has been removed and the high water mark has
1.2053 - been adjusted accordingly, the next new article will not have the
1.2054 - number one greater than the reported high water mark.)
1.2055 -
1.2056 - Except when the group is empty and all three numbers are zero,
1.2057 - whenever a subsequent GROUP command for the same newsgroup is issued,
1.2058 - either by the same client or a different client, the reported low
1.2059 - water mark in the response MUST be no less than that in any previous
1.2060 - response for that newsgroup in this session, and it SHOULD be no less
1.2061 - than that in any previous response for that newsgroup ever sent to
1.2062 - any client. Any failure to meet the latter condition SHOULD be
1.2063 - transient only. The client may make use of the low water mark to
1.2064 - remove all remembered information about articles with lower numbers,
1.2065 - as these will never recur. This includes the situation when the high
1.2066 - water mark is one less than the low water mark. No similar
1.2067 - assumption can be made about the high water mark, as this can
1.2068 -
1.2069 -
1.2070 -
1.2071 -
1.2072 -Feather Standards Track [Page 37]
1.2073 -
1.2074 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2075 -
1.2076 -
1.2077 - decrease if an article is removed and then increase again if it is
1.2078 - reinstated or if new articles arrive.
1.2079 -
1.2080 - When a valid group is selected by means of this command, the
1.2081 - currently selected newsgroup MUST be set to that group, and the
1.2082 - current article number MUST be set to the first article in the group
1.2083 - (this applies even if the group is already the currently selected
1.2084 - newsgroup). If an empty newsgroup is selected, the current article
1.2085 - number is made invalid. If an invalid group is specified, the
1.2086 - currently selected newsgroup and current article number MUST NOT be
1.2087 - changed.
1.2088 -
1.2089 - The GROUP or LISTGROUP command (see Section 6.1.2) MUST be used by a
1.2090 - client, and a successful response received, before any other command
1.2091 - is used that depends on the value of the currently selected newsgroup
1.2092 - or current article number.
1.2093 -
1.2094 - If the group specified is not available on the server, a 411 response
1.2095 - MUST be returned.
1.2096 -
1.2097 -6.1.1.3. Examples
1.2098 -
1.2099 - Example for a group known to the server:
1.2100 -
1.2101 - [C] GROUP misc.test
1.2102 - [S] 211 1234 3000234 3002322 misc.test
1.2103 -
1.2104 - Example for a group unknown to the server:
1.2105 -
1.2106 - [C] GROUP example.is.sob.bradner.or.barber
1.2107 - [S] 411 example.is.sob.bradner.or.barber is unknown
1.2108 -
1.2109 - Example of an empty group using the preferred response:
1.2110 -
1.2111 - [C] GROUP example.currently.empty.newsgroup
1.2112 - [S] 211 0 4000 3999 example.currently.empty.newsgroup
1.2113 -
1.2114 - Example of an empty group using an alternative response:
1.2115 -
1.2116 - [C] GROUP example.currently.empty.newsgroup
1.2117 - [S] 211 0 0 0 example.currently.empty.newsgroup
1.2118 -
1.2119 - Example of an empty group using a different alternative response:
1.2120 -
1.2121 - [C] GROUP example.currently.empty.newsgroup
1.2122 - [S] 211 0 4000 4321 example.currently.empty.newsgroup
1.2123 -
1.2124 -
1.2125 -
1.2126 -
1.2127 -
1.2128 -Feather Standards Track [Page 38]
1.2129 -
1.2130 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2131 -
1.2132 -
1.2133 - Example reselecting the currently selected newsgroup:
1.2134 -
1.2135 - [C] GROUP misc.test
1.2136 - [S] 211 1234 234 567 misc.test
1.2137 - [C] STAT 444
1.2138 - [S] 223 444 <123456@example.net> retrieved
1.2139 - [C] GROUP misc.test
1.2140 - [S] 211 1234 234 567 misc.test
1.2141 - [C] STAT
1.2142 - [S] 223 234 <different@example.net> retrieved
1.2143 -
1.2144 -6.1.2. LISTGROUP
1.2145 -
1.2146 -6.1.2.1. Usage
1.2147 -
1.2148 - Indicating capability: READER
1.2149 -
1.2150 - Syntax
1.2151 - LISTGROUP [group [range]]
1.2152 -
1.2153 - Responses
1.2154 - 211 number low high group Article numbers follow (multi-line)
1.2155 - 411 No such newsgroup
1.2156 - 412 No newsgroup selected [1]
1.2157 -
1.2158 - Parameters
1.2159 - group Name of newsgroup
1.2160 - range Range of articles to report
1.2161 - number Estimated number of articles in the group
1.2162 - low Reported low water mark
1.2163 - high Reported high water mark
1.2164 -
1.2165 - [1] The 412 response can only occur if no group has been specified.
1.2166 -
1.2167 -6.1.2.2. Description
1.2168 -
1.2169 - The LISTGROUP command selects a newsgroup in the same manner as the
1.2170 - GROUP command (see Section 6.1.1) but also provides a list of article
1.2171 - numbers in the newsgroup. If no group is specified, the currently
1.2172 - selected newsgroup is used.
1.2173 -
1.2174 - On success, a list of article numbers is returned as a multi-line
1.2175 - data block following the 211 response code (the arguments on the
1.2176 - initial response line are the same as for the GROUP command). The
1.2177 - list contains one number per line and is in numerical order. It
1.2178 - lists precisely those articles that exist in the group at the moment
1.2179 - of selection (therefore, an empty group produces an empty list). If
1.2180 - the optional range argument is specified, only articles within the
1.2181 -
1.2182 -
1.2183 -
1.2184 -Feather Standards Track [Page 39]
1.2185 -
1.2186 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2187 -
1.2188 -
1.2189 - range are included in the list (therefore, the list MAY be empty even
1.2190 - if the group is not).
1.2191 -
1.2192 - The range argument may be any of the following:
1.2193 -
1.2194 - o An article number.
1.2195 -
1.2196 - o An article number followed by a dash to indicate all following.
1.2197 -
1.2198 - o An article number followed by a dash followed by another article
1.2199 - number.
1.2200 -
1.2201 - In the last case, if the second number is less than the first number,
1.2202 - then the range contains no articles. Omitting the range is
1.2203 - equivalent to the range 1- being specified.
1.2204 -
1.2205 - If the group specified is not available on the server, a 411 response
1.2206 - MUST be returned. If no group is specified and the currently
1.2207 - selected newsgroup is invalid, a 412 response MUST be returned.
1.2208 -
1.2209 - Except that the group argument is optional, that a range argument can
1.2210 - be specified, and that a multi-line data block follows the 211
1.2211 - response code, the LISTGROUP command is identical to the GROUP
1.2212 - command. In particular, when successful, the command sets the
1.2213 - current article number to the first article in the group, if any,
1.2214 - even if this is not within the range specified by the second
1.2215 - argument.
1.2216 -
1.2217 - Note that the range argument is a new feature in this specification
1.2218 - and servers that do not support CAPABILITIES (and therefore do not
1.2219 - conform to this specification) are unlikely to support it.
1.2220 -
1.2221 -6.1.2.3. Examples
1.2222 -
1.2223 - Example of LISTGROUP being used to select a group:
1.2224 -
1.2225 - [C] LISTGROUP misc.test
1.2226 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2227 - [S] 3000234
1.2228 - [S] 3000237
1.2229 - [S] 3000238
1.2230 - [S] 3000239
1.2231 - [S] 3002322
1.2232 - [S] .
1.2233 -
1.2234 -
1.2235 -
1.2236 -
1.2237 -
1.2238 -
1.2239 -
1.2240 -Feather Standards Track [Page 40]
1.2241 -
1.2242 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2243 -
1.2244 -
1.2245 - Example of LISTGROUP on an empty group:
1.2246 -
1.2247 - [C] LISTGROUP example.empty.newsgroup
1.2248 - [S] 211 0 0 0 example.empty.newsgroup list follows
1.2249 - [S] .
1.2250 -
1.2251 - Example of LISTGROUP on a valid, currently selected newsgroup:
1.2252 -
1.2253 - [C] GROUP misc.test
1.2254 - [S] 211 2000 3000234 3002322 misc.test
1.2255 - [C] LISTGROUP
1.2256 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2257 - [S] 3000234
1.2258 - [S] 3000237
1.2259 - [S] 3000238
1.2260 - [S] 3000239
1.2261 - [S] 3002322
1.2262 - [S] .
1.2263 -
1.2264 - Example of LISTGROUP with a range:
1.2265 -
1.2266 - [C] LISTGROUP misc.test 3000238-3000248
1.2267 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2268 - [S] 3000238
1.2269 - [S] 3000239
1.2270 - [S] .
1.2271 -
1.2272 - Example of LISTGROUP with an empty range:
1.2273 -
1.2274 - [C] LISTGROUP misc.test 12345678-
1.2275 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2276 - [S] .
1.2277 -
1.2278 - Example of LISTGROUP with an invalid range:
1.2279 -
1.2280 - [C] LISTGROUP misc.test 9999-111
1.2281 - [S] 211 2000 3000234 3002322 misc.test list follows
1.2282 - [S] .
1.2283 -
1.2284 -
1.2285 -
1.2286 -
1.2287 -
1.2288 -
1.2289 -
1.2290 -
1.2291 -
1.2292 -
1.2293 -
1.2294 -
1.2295 -
1.2296 -Feather Standards Track [Page 41]
1.2297 -
1.2298 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2299 -
1.2300 -
1.2301 -6.1.3. LAST
1.2302 -
1.2303 -6.1.3.1. Usage
1.2304 -
1.2305 - Indicating capability: READER
1.2306 -
1.2307 - Syntax
1.2308 - LAST
1.2309 -
1.2310 - Responses
1.2311 - 223 n message-id Article found
1.2312 - 412 No newsgroup selected
1.2313 - 420 Current article number is invalid
1.2314 - 422 No previous article in this group
1.2315 -
1.2316 - Parameters
1.2317 - n Article number
1.2318 - message-id Article message-id
1.2319 -
1.2320 -6.1.3.2. Description
1.2321 -
1.2322 - If the currently selected newsgroup is valid, the current article
1.2323 - number MUST be set to the previous article in that newsgroup (that
1.2324 - is, the highest existing article number less than the current article
1.2325 - number). If successful, a response indicating the new current
1.2326 - article number and the message-id of that article MUST be returned.
1.2327 - No article text is sent in response to this command.
1.2328 -
1.2329 - There MAY be no previous article in the group, although the current
1.2330 - article number is not the reported low water mark. There MUST NOT be
1.2331 - a previous article when the current article number is the reported
1.2332 - low water mark.
1.2333 -
1.2334 - Because articles can be removed and added, the results of multiple
1.2335 - LAST and NEXT commands MAY not be consistent over the life of a
1.2336 - particular NNTP session.
1.2337 -
1.2338 - If the current article number is already the first article of the
1.2339 - newsgroup, a 422 response MUST be returned. If the current article
1.2340 - number is invalid, a 420 response MUST be returned. If the currently
1.2341 - selected newsgroup is invalid, a 412 response MUST be returned. In
1.2342 - all three cases, the currently selected newsgroup and current article
1.2343 - number MUST NOT be altered.
1.2344 -
1.2345 -
1.2346 -
1.2347 -
1.2348 -
1.2349 -
1.2350 -
1.2351 -
1.2352 -Feather Standards Track [Page 42]
1.2353 -
1.2354 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2355 -
1.2356 -
1.2357 -6.1.3.3. Examples
1.2358 -
1.2359 - Example of a successful article retrieval using LAST:
1.2360 -
1.2361 - [C] GROUP misc.test
1.2362 - [S] 211 1234 3000234 3002322 misc.test
1.2363 - [C] NEXT
1.2364 - [S] 223 3000237 <668929@example.org> retrieved
1.2365 - [C] LAST
1.2366 - [S] 223 3000234 <45223423@example.com> retrieved
1.2367 -
1.2368 - Example of an attempt to retrieve an article without having selected
1.2369 - a group (via the GROUP command) first:
1.2370 -
1.2371 - [Assumes currently selected newsgroup is invalid.]
1.2372 - [C] LAST
1.2373 - [S] 412 no newsgroup selected
1.2374 -
1.2375 - Example of an attempt to retrieve an article using the LAST command
1.2376 - when the current article number is that of the first article in the
1.2377 - group:
1.2378 -
1.2379 - [C] GROUP misc.test
1.2380 - [S] 211 1234 3000234 3002322 misc.test
1.2381 - [C] LAST
1.2382 - [S] 422 No previous article to retrieve
1.2383 -
1.2384 - Example of an attempt to retrieve an article using the LAST command
1.2385 - when the currently selected newsgroup is empty:
1.2386 -
1.2387 - [C] GROUP example.empty.newsgroup
1.2388 - [S] 211 0 0 0 example.empty.newsgroup
1.2389 - [C] LAST
1.2390 - [S] 420 No current article selected
1.2391 -
1.2392 -
1.2393 -
1.2394 -
1.2395 -
1.2396 -
1.2397 -
1.2398 -
1.2399 -
1.2400 -
1.2401 -
1.2402 -
1.2403 -
1.2404 -
1.2405 -
1.2406 -
1.2407 -
1.2408 -Feather Standards Track [Page 43]
1.2409 -
1.2410 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2411 -
1.2412 -
1.2413 -6.1.4. NEXT
1.2414 -
1.2415 -6.1.4.1. Usage
1.2416 -
1.2417 - Indicating capability: READER
1.2418 -
1.2419 - Syntax
1.2420 - NEXT
1.2421 -
1.2422 - Responses
1.2423 - 223 n message-id Article found
1.2424 - 412 No newsgroup selected
1.2425 - 420 Current article number is invalid
1.2426 - 421 No next article in this group
1.2427 -
1.2428 - Parameters
1.2429 - n Article number
1.2430 - message-id Article message-id
1.2431 -
1.2432 -6.1.4.2. Description
1.2433 -
1.2434 - If the currently selected newsgroup is valid, the current article
1.2435 - number MUST be set to the next article in that newsgroup (that is,
1.2436 - the lowest existing article number greater than the current article
1.2437 - number). If successful, a response indicating the new current
1.2438 - article number and the message-id of that article MUST be returned.
1.2439 - No article text is sent in response to this command.
1.2440 -
1.2441 - If the current article number is already the last article of the
1.2442 - newsgroup, a 421 response MUST be returned. In all other aspects
1.2443 - (apart, of course, from the lack of 422 response), this command is
1.2444 - identical to the LAST command (Section 6.1.3).
1.2445 -
1.2446 -6.1.4.3. Examples
1.2447 -
1.2448 - Example of a successful article retrieval using NEXT:
1.2449 -
1.2450 - [C] GROUP misc.test
1.2451 - [S] 211 1234 3000234 3002322 misc.test
1.2452 - [C] NEXT
1.2453 - [S] 223 3000237 <668929@example.org> retrieved
1.2454 -
1.2455 -
1.2456 -
1.2457 -
1.2458 -
1.2459 -
1.2460 -
1.2461 -
1.2462 -
1.2463 -
1.2464 -Feather Standards Track [Page 44]
1.2465 -
1.2466 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2467 -
1.2468 -
1.2469 - Example of an attempt to retrieve an article without having selected
1.2470 - a group (via the GROUP command) first:
1.2471 -
1.2472 - [Assumes currently selected newsgroup is invalid.]
1.2473 - [C] NEXT
1.2474 - [S] 412 no newsgroup selected
1.2475 -
1.2476 - Example of an attempt to retrieve an article using the NEXT command
1.2477 - when the current article number is that of the last article in the
1.2478 - group:
1.2479 -
1.2480 - [C] GROUP misc.test
1.2481 - [S] 211 1234 3000234 3002322 misc.test
1.2482 - [C] STAT 3002322
1.2483 - [S] 223 3002322 <411@example.net> retrieved
1.2484 - [C] NEXT
1.2485 - [S] 421 No next article to retrieve
1.2486 -
1.2487 - Example of an attempt to retrieve an article using the NEXT command
1.2488 - when the currently selected newsgroup is empty:
1.2489 -
1.2490 - [C] GROUP example.empty.newsgroup
1.2491 - [S] 211 0 0 0 example.empty.newsgroup
1.2492 - [C] NEXT
1.2493 - [S] 420 No current article selected
1.2494 -
1.2495 -6.2. Retrieval of Articles and Article Sections
1.2496 -
1.2497 - The ARTICLE, BODY, HEAD, and STAT commands are very similar. They
1.2498 - differ only in the parts of the article that are presented to the
1.2499 - client and in the successful response code. The ARTICLE command is
1.2500 - described here in full, while the other three commands are described
1.2501 - in terms of the differences. As specified in Section 3.6, an article
1.2502 - consists of two parts: the article headers and the article body.
1.2503 -
1.2504 - When responding to one of these commands, the server MUST present the
1.2505 - entire article or appropriate part and MUST NOT attempt to alter or
1.2506 - translate it in any way.
1.2507 -
1.2508 -
1.2509 -
1.2510 -
1.2511 -
1.2512 -
1.2513 -
1.2514 -
1.2515 -
1.2516 -
1.2517 -
1.2518 -
1.2519 -
1.2520 -Feather Standards Track [Page 45]
1.2521 -
1.2522 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2523 -
1.2524 -
1.2525 -6.2.1. ARTICLE
1.2526 -
1.2527 -6.2.1.1. Usage
1.2528 -
1.2529 - Indicating capability: READER
1.2530 -
1.2531 - Syntax
1.2532 - ARTICLE message-id
1.2533 - ARTICLE number
1.2534 - ARTICLE
1.2535 -
1.2536 - Responses
1.2537 -
1.2538 - First form (message-id specified)
1.2539 - 220 0|n message-id Article follows (multi-line)
1.2540 - 430 No article with that message-id
1.2541 -
1.2542 - Second form (article number specified)
1.2543 - 220 n message-id Article follows (multi-line)
1.2544 - 412 No newsgroup selected
1.2545 - 423 No article with that number
1.2546 -
1.2547 - Third form (current article number used)
1.2548 - 220 n message-id Article follows (multi-line)
1.2549 - 412 No newsgroup selected
1.2550 - 420 Current article number is invalid
1.2551 -
1.2552 - Parameters
1.2553 - number Requested article number
1.2554 - n Returned article number
1.2555 - message-id Article message-id
1.2556 -
1.2557 -6.2.1.2. Description
1.2558 -
1.2559 - The ARTICLE command selects an article according to the arguments and
1.2560 - presents the entire article (that is, the headers, an empty line, and
1.2561 - the body, in that order) to the client. The command has three forms.
1.2562 -
1.2563 - In the first form, a message-id is specified, and the server presents
1.2564 - the article with that message-id. In this case, the server MUST NOT
1.2565 - alter the currently selected newsgroup or current article number.
1.2566 - This is both to facilitate the presentation of articles that may be
1.2567 - referenced within another article being read, and because of the
1.2568 - semantic difficulties of determining the proper sequence and
1.2569 - membership of an article that may have been cross-posted to more than
1.2570 - one newsgroup.
1.2571 -
1.2572 -
1.2573 -
1.2574 -
1.2575 -
1.2576 -Feather Standards Track [Page 46]
1.2577 -
1.2578 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2579 -
1.2580 -
1.2581 - In the response, the article number MUST be replaced with zero,
1.2582 - unless there is a currently selected newsgroup and the article is
1.2583 - present in that group, in which case the server MAY use the article's
1.2584 - number in that group. (The server is not required to determine
1.2585 - whether the article is in the currently selected newsgroup or, if so,
1.2586 - what article number it has; the client MUST always be prepared for
1.2587 - zero to be specified.) The server MUST NOT provide an article number
1.2588 - unless use of that number in a second ARTICLE command immediately
1.2589 - following this one would return the same article. Even if the server
1.2590 - chooses to return article numbers in these circumstances, it need not
1.2591 - do so consistently; it MAY return zero to any such command (also see
1.2592 - the STAT examples, Section 6.2.4.3).
1.2593 -
1.2594 - In the second form, an article number is specified. If there is an
1.2595 - article with that number in the currently selected newsgroup, the
1.2596 - server MUST set the current article number to that number.
1.2597 -
1.2598 - In the third form, the article indicated by the current article
1.2599 - number in the currently selected newsgroup is used.
1.2600 -
1.2601 - Note that a previously valid article number MAY become invalid if the
1.2602 - article has been removed. A previously invalid article number MAY
1.2603 - become valid if the article has been reinstated, but this article
1.2604 - number MUST be no less than the reported low water mark for that
1.2605 - group.
1.2606 -
1.2607 - The server MUST NOT change the currently selected newsgroup as a
1.2608 - result of this command. The server MUST NOT change the current
1.2609 - article number except when an article number argument was provided
1.2610 - and the article exists; in particular, it MUST NOT change it
1.2611 - following an unsuccessful response.
1.2612 -
1.2613 - Since the message-id is unique for each article, it may be used by a
1.2614 - client to skip duplicate displays of articles that have been posted
1.2615 - more than once, or to more than one newsgroup.
1.2616 -
1.2617 - The article is returned as a multi-line data block following the 220
1.2618 - response code.
1.2619 -
1.2620 - If the argument is a message-id and no such article exists, a 430
1.2621 - response MUST be returned. If the argument is a number or is omitted
1.2622 - and the currently selected newsgroup is invalid, a 412 response MUST
1.2623 - be returned. If the argument is a number and that article does not
1.2624 - exist in the currently selected newsgroup, a 423 response MUST be
1.2625 - returned. If the argument is omitted and the current article number
1.2626 - is invalid, a 420 response MUST be returned.
1.2627 -
1.2628 -
1.2629 -
1.2630 -
1.2631 -
1.2632 -Feather Standards Track [Page 47]
1.2633 -
1.2634 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2635 -
1.2636 -
1.2637 -6.2.1.3. Examples
1.2638 -
1.2639 - Example of a successful retrieval of an article (explicitly not using
1.2640 - an article number):
1.2641 -
1.2642 - [C] GROUP misc.test
1.2643 - [S] 211 1234 3000234 3002322 misc.test
1.2644 - [C] ARTICLE
1.2645 - [S] 220 3000234 <45223423@example.com>
1.2646 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2647 - [S] From: "Demo User" <nobody@example.net>
1.2648 - [S] Newsgroups: misc.test
1.2649 - [S] Subject: I am just a test article
1.2650 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2651 - [S] Organization: An Example Net, Uncertain, Texas
1.2652 - [S] Message-ID: <45223423@example.com>
1.2653 - [S]
1.2654 - [S] This is just a test article.
1.2655 - [S] .
1.2656 -
1.2657 - Example of a successful retrieval of an article by message-id:
1.2658 -
1.2659 - [C] ARTICLE <45223423@example.com>
1.2660 - [S] 220 0 <45223423@example.com>
1.2661 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2662 - [S] From: "Demo User" <nobody@example.net>
1.2663 - [S] Newsgroups: misc.test
1.2664 - [S] Subject: I am just a test article
1.2665 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2666 - [S] Organization: An Example Net, Uncertain, Texas
1.2667 - [S] Message-ID: <45223423@example.com>
1.2668 - [S]
1.2669 - [S] This is just a test article.
1.2670 - [S] .
1.2671 -
1.2672 - Example of an unsuccessful retrieval of an article by message-id:
1.2673 -
1.2674 - [C] ARTICLE <i.am.not.there@example.com>
1.2675 - [S] 430 No Such Article Found
1.2676 -
1.2677 - Example of an unsuccessful retrieval of an article by number:
1.2678 -
1.2679 - [C] GROUP misc.test
1.2680 - [S] 211 1234 3000234 3002322 news.groups
1.2681 - [C] ARTICLE 300256
1.2682 - [S] 423 No article with that number
1.2683 -
1.2684 -
1.2685 -
1.2686 -
1.2687 -
1.2688 -Feather Standards Track [Page 48]
1.2689 -
1.2690 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2691 -
1.2692 -
1.2693 - Example of an unsuccessful retrieval of an article by number because
1.2694 - no newsgroup was selected first:
1.2695 -
1.2696 - [Assumes currently selected newsgroup is invalid.]
1.2697 - [C] ARTICLE 300256
1.2698 - [S] 412 No newsgroup selected
1.2699 -
1.2700 - Example of an attempt to retrieve an article when the currently
1.2701 - selected newsgroup is empty:
1.2702 -
1.2703 - [C] GROUP example.empty.newsgroup
1.2704 - [S] 211 0 0 0 example.empty.newsgroup
1.2705 - [C] ARTICLE
1.2706 - [S] 420 No current article selected
1.2707 -
1.2708 -6.2.2. HEAD
1.2709 -
1.2710 -6.2.2.1. Usage
1.2711 -
1.2712 - This command is mandatory.
1.2713 -
1.2714 - Syntax
1.2715 - HEAD message-id
1.2716 - HEAD number
1.2717 - HEAD
1.2718 -
1.2719 - Responses
1.2720 -
1.2721 - First form (message-id specified)
1.2722 - 221 0|n message-id Headers follow (multi-line)
1.2723 - 430 No article with that message-id
1.2724 -
1.2725 - Second form (article number specified)
1.2726 - 221 n message-id Headers follow (multi-line)
1.2727 - 412 No newsgroup selected
1.2728 - 423 No article with that number
1.2729 -
1.2730 - Third form (current article number used)
1.2731 - 221 n message-id Headers follow (multi-line)
1.2732 - 412 No newsgroup selected
1.2733 - 420 Current article number is invalid
1.2734 -
1.2735 - Parameters
1.2736 - number Requested article number
1.2737 - n Returned article number
1.2738 - message-id Article message-id
1.2739 -
1.2740 -
1.2741 -
1.2742 -
1.2743 -
1.2744 -Feather Standards Track [Page 49]
1.2745 -
1.2746 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2747 -
1.2748 -
1.2749 -6.2.2.2. Description
1.2750 -
1.2751 - The HEAD command behaves identically to the ARTICLE command except
1.2752 - that, if the article exists, the response code is 221 instead of 220
1.2753 - and only the headers are presented (the empty line separating the
1.2754 - headers and body MUST NOT be included).
1.2755 -
1.2756 -6.2.2.3. Examples
1.2757 -
1.2758 - Example of a successful retrieval of the headers of an article
1.2759 - (explicitly not using an article number):
1.2760 -
1.2761 - [C] GROUP misc.test
1.2762 - [S] 211 1234 3000234 3002322 misc.test
1.2763 - [C] HEAD
1.2764 - [S] 221 3000234 <45223423@example.com>
1.2765 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2766 - [S] From: "Demo User" <nobody@example.net>
1.2767 - [S] Newsgroups: misc.test
1.2768 - [S] Subject: I am just a test article
1.2769 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2770 - [S] Organization: An Example Net, Uncertain, Texas
1.2771 - [S] Message-ID: <45223423@example.com>
1.2772 - [S] .
1.2773 -
1.2774 - Example of a successful retrieval of the headers of an article by
1.2775 - message-id:
1.2776 -
1.2777 - [C] HEAD <45223423@example.com>
1.2778 - [S] 221 0 <45223423@example.com>
1.2779 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.2780 - [S] From: "Demo User" <nobody@example.net>
1.2781 - [S] Newsgroups: misc.test
1.2782 - [S] Subject: I am just a test article
1.2783 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.2784 - [S] Organization: An Example Net, Uncertain, Texas
1.2785 - [S] Message-ID: <45223423@example.com>
1.2786 - [S] .
1.2787 -
1.2788 - Example of an unsuccessful retrieval of the headers of an article by
1.2789 - message-id:
1.2790 -
1.2791 - [C] HEAD <i.am.not.there@example.com>
1.2792 - [S] 430 No Such Article Found
1.2793 -
1.2794 -
1.2795 -
1.2796 -
1.2797 -
1.2798 -
1.2799 -
1.2800 -Feather Standards Track [Page 50]
1.2801 -
1.2802 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2803 -
1.2804 -
1.2805 - Example of an unsuccessful retrieval of the headers of an article by
1.2806 - number:
1.2807 -
1.2808 - [C] GROUP misc.test
1.2809 - [S] 211 1234 3000234 3002322 misc.test
1.2810 - [C] HEAD 300256
1.2811 - [S] 423 No article with that number
1.2812 -
1.2813 - Example of an unsuccessful retrieval of the headers of an article by
1.2814 - number because no newsgroup was selected first:
1.2815 -
1.2816 - [Assumes currently selected newsgroup is invalid.]
1.2817 - [C] HEAD 300256
1.2818 - [S] 412 No newsgroup selected
1.2819 -
1.2820 - Example of an attempt to retrieve the headers of an article when the
1.2821 - currently selected newsgroup is empty:
1.2822 -
1.2823 - [C] GROUP example.empty.newsgroup
1.2824 - [S] 211 0 0 0 example.empty.newsgroup
1.2825 - [C] HEAD
1.2826 - [S] 420 No current article selected
1.2827 -
1.2828 -6.2.3. BODY
1.2829 -
1.2830 -6.2.3.1. Usage
1.2831 -
1.2832 - Indicating capability: READER
1.2833 -
1.2834 - Syntax
1.2835 - BODY message-id
1.2836 - BODY number
1.2837 - BODY
1.2838 -
1.2839 - Responses
1.2840 -
1.2841 - First form (message-id specified)
1.2842 - 222 0|n message-id Body follows (multi-line)
1.2843 - 430 No article with that message-id
1.2844 -
1.2845 - Second form (article number specified)
1.2846 - 222 n message-id Body follows (multi-line)
1.2847 - 412 No newsgroup selected
1.2848 - 423 No article with that number
1.2849 -
1.2850 -
1.2851 -
1.2852 -
1.2853 -
1.2854 -
1.2855 -
1.2856 -Feather Standards Track [Page 51]
1.2857 -
1.2858 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2859 -
1.2860 -
1.2861 - Third form (current article number used)
1.2862 - 222 n message-id Body follows (multi-line)
1.2863 - 412 No newsgroup selected
1.2864 - 420 Current article number is invalid
1.2865 -
1.2866 - Parameters
1.2867 - number Requested article number
1.2868 - n Returned article number
1.2869 - message-id Article message-id
1.2870 -
1.2871 -6.2.3.2. Description
1.2872 -
1.2873 - The BODY command behaves identically to the ARTICLE command except
1.2874 - that, if the article exists, the response code is 222 instead of 220
1.2875 - and only the body is presented (the empty line separating the headers
1.2876 - and body MUST NOT be included).
1.2877 -
1.2878 -6.2.3.3. Examples
1.2879 -
1.2880 - Example of a successful retrieval of the body of an article
1.2881 - (explicitly not using an article number):
1.2882 -
1.2883 - [C] GROUP misc.test
1.2884 - [S] 211 1234 3000234 3002322 misc.test
1.2885 - [C] BODY
1.2886 - [S] 222 3000234 <45223423@example.com>
1.2887 - [S] This is just a test article.
1.2888 - [S] .
1.2889 -
1.2890 - Example of a successful retrieval of the body of an article by
1.2891 - message-id:
1.2892 -
1.2893 - [C] BODY <45223423@example.com>
1.2894 - [S] 222 0 <45223423@example.com>
1.2895 - [S] This is just a test article.
1.2896 - [S] .
1.2897 -
1.2898 - Example of an unsuccessful retrieval of the body of an article by
1.2899 - message-id:
1.2900 -
1.2901 - [C] BODY <i.am.not.there@example.com>
1.2902 - [S] 430 No Such Article Found
1.2903 -
1.2904 -
1.2905 -
1.2906 -
1.2907 -
1.2908 -
1.2909 -
1.2910 -
1.2911 -
1.2912 -Feather Standards Track [Page 52]
1.2913 -
1.2914 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2915 -
1.2916 -
1.2917 - Example of an unsuccessful retrieval of the body of an article by
1.2918 - number:
1.2919 -
1.2920 - [C] GROUP misc.test
1.2921 - [S] 211 1234 3000234 3002322 misc.test
1.2922 - [C] BODY 300256
1.2923 - [S] 423 No article with that number
1.2924 -
1.2925 - Example of an unsuccessful retrieval of the body of an article by
1.2926 - number because no newsgroup was selected first:
1.2927 -
1.2928 - [Assumes currently selected newsgroup is invalid.]
1.2929 - [C] BODY 300256
1.2930 - [S] 412 No newsgroup selected
1.2931 -
1.2932 - Example of an attempt to retrieve the body of an article when the
1.2933 - currently selected newsgroup is empty:
1.2934 -
1.2935 - [C] GROUP example.empty.newsgroup
1.2936 - [S] 211 0 0 0 example.empty.newsgroup
1.2937 - [C] BODY
1.2938 - [S] 420 No current article selected
1.2939 -
1.2940 -6.2.4. STAT
1.2941 -
1.2942 -6.2.4.1. Usage
1.2943 -
1.2944 - This command is mandatory.
1.2945 -
1.2946 - Syntax
1.2947 - STAT message-id
1.2948 - STAT number
1.2949 - STAT
1.2950 -
1.2951 - Responses
1.2952 -
1.2953 - First form (message-id specified)
1.2954 - 223 0|n message-id Article exists
1.2955 - 430 No article with that message-id
1.2956 -
1.2957 - Second form (article number specified)
1.2958 - 223 n message-id Article exists
1.2959 - 412 No newsgroup selected
1.2960 - 423 No article with that number
1.2961 -
1.2962 -
1.2963 -
1.2964 -
1.2965 -
1.2966 -
1.2967 -
1.2968 -Feather Standards Track [Page 53]
1.2969 -
1.2970 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.2971 -
1.2972 -
1.2973 - Third form (current article number used)
1.2974 - 223 n message-id Article exists
1.2975 - 412 No newsgroup selected
1.2976 - 420 Current article number is invalid
1.2977 -
1.2978 - Parameters
1.2979 - number Requested article number
1.2980 - n Returned article number
1.2981 - message-id Article message-id
1.2982 -
1.2983 -6.2.4.2. Description
1.2984 -
1.2985 - The STAT command behaves identically to the ARTICLE command except
1.2986 - that, if the article exists, it is NOT presented to the client and
1.2987 - the response code is 223 instead of 220. Note that the response is
1.2988 - NOT multi-line.
1.2989 -
1.2990 - This command allows the client to determine whether an article exists
1.2991 - and, in the second and third forms, what its message-id is, without
1.2992 - having to process an arbitrary amount of text.
1.2993 -
1.2994 -6.2.4.3. Examples
1.2995 -
1.2996 - Example of STAT on an existing article (explicitly not using an
1.2997 - article number):
1.2998 -
1.2999 - [C] GROUP misc.test
1.3000 - [S] 211 1234 3000234 3002322 misc.test
1.3001 - [C] STAT
1.3002 - [S] 223 3000234 <45223423@example.com>
1.3003 -
1.3004 - Example of STAT on an existing article by message-id:
1.3005 -
1.3006 - [C] STAT <45223423@example.com>
1.3007 - [S] 223 0 <45223423@example.com>
1.3008 -
1.3009 - Example of STAT on an article not on the server by message-id:
1.3010 -
1.3011 - [C] STAT <i.am.not.there@example.com>
1.3012 - [S] 430 No Such Article Found
1.3013 -
1.3014 - Example of STAT on an article not in the server by number:
1.3015 -
1.3016 - [C] GROUP misc.test
1.3017 - [S] 211 1234 3000234 3002322 misc.test
1.3018 - [C] STAT 300256
1.3019 - [S] 423 No article with that number
1.3020 -
1.3021 -
1.3022 -
1.3023 -
1.3024 -Feather Standards Track [Page 54]
1.3025 -
1.3026 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3027 -
1.3028 -
1.3029 - Example of STAT on an article by number when no newsgroup was
1.3030 - selected first:
1.3031 -
1.3032 - [Assumes currently selected newsgroup is invalid.]
1.3033 - [C] STAT 300256
1.3034 - [S] 412 No newsgroup selected
1.3035 -
1.3036 - Example of STAT on an article when the currently selected newsgroup
1.3037 - is empty:
1.3038 -
1.3039 - [C] GROUP example.empty.newsgroup
1.3040 - [S] 211 0 0 0 example.empty.newsgroup
1.3041 - [C] STAT
1.3042 - [S] 420 No current article selected
1.3043 -
1.3044 - Example of STAT by message-id on a server that sometimes reports the
1.3045 - actual article number:
1.3046 -
1.3047 - [C] GROUP misc.test
1.3048 - [S] 211 1234 3000234 3002322 misc.test
1.3049 - [C] STAT
1.3050 - [S] 223 3000234 <45223423@example.com>
1.3051 - [C] STAT <45223423@example.com>
1.3052 - [S] 223 0 <45223423@example.com>
1.3053 - [C] STAT <45223423@example.com>
1.3054 - [S] 223 3000234 <45223423@example.com>
1.3055 - [C] GROUP example.empty.newsgroup
1.3056 - [S] 211 0 0 0 example.empty.newsgroup
1.3057 - [C] STAT <45223423@example.com>
1.3058 - [S] 223 0 <45223423@example.com>
1.3059 - [C] GROUP alt.crossposts
1.3060 - [S] 211 9999 111111 222222 alt.crossposts
1.3061 - [C] STAT <45223423@example.com>
1.3062 - [S] 223 123456 <45223423@example.com>
1.3063 - [C] STAT
1.3064 - [S] 223 111111 <23894720@example.com>
1.3065 -
1.3066 - The first STAT command establishes the identity of an article in the
1.3067 - group. The second and third show that the server may, but need not,
1.3068 - give the article number when the message-id is specified. The fourth
1.3069 - STAT command shows that zero must be specified if the article isn't
1.3070 - in the currently selected newsgroup. The fifth shows that the
1.3071 - number, if provided, must be that relating to the currently selected
1.3072 - newsgroup. The last one shows that the current article number is
1.3073 - still not changed by the use of STAT with a message-id even if it
1.3074 - returns an article number.
1.3075 -
1.3076 -
1.3077 -
1.3078 -
1.3079 -
1.3080 -Feather Standards Track [Page 55]
1.3081 -
1.3082 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3083 -
1.3084 -
1.3085 -6.3. Article Posting
1.3086 -
1.3087 - Article posting is done in one of two ways: individual article
1.3088 - posting from news-reading clients using POST, and article transfer
1.3089 - from other news servers using IHAVE.
1.3090 -
1.3091 -6.3.1. POST
1.3092 -
1.3093 -6.3.1.1. Usage
1.3094 -
1.3095 - Indicating capability: POST
1.3096 -
1.3097 - This command MUST NOT be pipelined.
1.3098 -
1.3099 - Syntax
1.3100 - POST
1.3101 -
1.3102 - Responses
1.3103 -
1.3104 - Initial responses
1.3105 - 340 Send article to be posted
1.3106 - 440 Posting not permitted
1.3107 -
1.3108 - Subsequent responses
1.3109 - 240 Article received OK
1.3110 - 441 Posting failed
1.3111 -
1.3112 -6.3.1.2. Description
1.3113 -
1.3114 - If posting is allowed, a 340 response MUST be returned to indicate
1.3115 - that the article to be posted should be sent. If posting is
1.3116 - prohibited for some installation-dependent reason, a 440 response
1.3117 - MUST be returned.
1.3118 -
1.3119 - If posting is permitted, the article MUST be in the format specified
1.3120 - in Section 3.6 and MUST be sent by the client to the server as a
1.3121 - multi-line data block (see Section 3.1.1). Thus a single dot (".")
1.3122 - on a line indicates the end of the text, and lines starting with a
1.3123 - dot in the original text have that dot doubled during transmission.
1.3124 -
1.3125 - Following the presentation of the termination sequence by the client,
1.3126 - the server MUST return a response indicating success or failure of
1.3127 - the article transfer. Note that response codes 340 and 440 are used
1.3128 - in direct response to the POST command while 240 and 441 are returned
1.3129 - after the article is sent.
1.3130 -
1.3131 -
1.3132 -
1.3133 -
1.3134 -
1.3135 -
1.3136 -Feather Standards Track [Page 56]
1.3137 -
1.3138 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3139 -
1.3140 -
1.3141 - A response of 240 SHOULD indicate that, barring unforeseen server
1.3142 - errors, the posted article will be made available on the server
1.3143 - and/or transferred to other servers, as appropriate, possibly
1.3144 - following further processing. In other words, articles not wanted by
1.3145 - the server SHOULD be rejected with a 441 response, rather than being
1.3146 - accepted and then discarded silently. However, the client SHOULD NOT
1.3147 - assume that the article has been successfully transferred unless it
1.3148 - receives an affirmative response from the server and SHOULD NOT
1.3149 - assume that it is being made available to other clients without
1.3150 - explicitly checking (for example, using the STAT command).
1.3151 -
1.3152 - If the session is interrupted before the response is received, it is
1.3153 - possible that an affirmative response was sent but has been lost.
1.3154 - Therefore, in any subsequent session, the client SHOULD either check
1.3155 - whether the article was successfully posted before resending or
1.3156 - ensure that the server will allocate the same message-id to the new
1.3157 - attempt (see Appendix A.2). The latter approach is preferred since
1.3158 - the article might not have been made available for reading yet (for
1.3159 - example, it may have to go through a moderation process).
1.3160 -
1.3161 -6.3.1.3. Examples
1.3162 -
1.3163 - Example of a successful posting:
1.3164 -
1.3165 - [C] POST
1.3166 - [S] 340 Input article; end with <CR-LF>.<CR-LF>
1.3167 - [C] From: "Demo User" <nobody@example.net>
1.3168 - [C] Newsgroups: misc.test
1.3169 - [C] Subject: I am just a test article
1.3170 - [C] Organization: An Example Net
1.3171 - [C]
1.3172 - [C] This is just a test article.
1.3173 - [C] .
1.3174 - [S] 240 Article received OK
1.3175 -
1.3176 - Example of an unsuccessful posting:
1.3177 -
1.3178 - [C] POST
1.3179 - [S] 340 Input article; end with <CR-LF>.<CR-LF>
1.3180 - [C] From: "Demo User" <nobody@example.net>
1.3181 - [C] Newsgroups: misc.test
1.3182 - [C] Subject: I am just a test article
1.3183 - [C] Organization: An Example Net
1.3184 - [C]
1.3185 - [C] This is just a test article.
1.3186 - [C] .
1.3187 - [S] 441 Posting failed
1.3188 -
1.3189 -
1.3190 -
1.3191 -
1.3192 -Feather Standards Track [Page 57]
1.3193 -
1.3194 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3195 -
1.3196 -
1.3197 - Example of an attempt to post when posting is not allowed:
1.3198 -
1.3199 - [Initial connection set-up completed.]
1.3200 - [S] 201 NNTP Service Ready, posting prohibited
1.3201 - [C] POST
1.3202 - [S] 440 Posting not permitted
1.3203 -
1.3204 -6.3.2. IHAVE
1.3205 -
1.3206 -6.3.2.1. Usage
1.3207 -
1.3208 - Indicating capability: IHAVE
1.3209 -
1.3210 - This command MUST NOT be pipelined.
1.3211 -
1.3212 - Syntax
1.3213 - IHAVE message-id
1.3214 -
1.3215 - Responses
1.3216 -
1.3217 - Initial responses
1.3218 - 335 Send article to be transferred
1.3219 - 435 Article not wanted
1.3220 - 436 Transfer not possible; try again later
1.3221 -
1.3222 - Subsequent responses
1.3223 - 235 Article transferred OK
1.3224 - 436 Transfer failed; try again later
1.3225 - 437 Transfer rejected; do not retry
1.3226 -
1.3227 - Parameters
1.3228 - message-id Article message-id
1.3229 -
1.3230 -6.3.2.2. Description
1.3231 -
1.3232 - The IHAVE command informs the server that the client has an article
1.3233 - with the specified message-id. If the server desires a copy of that
1.3234 - article, a 335 response MUST be returned, instructing the client to
1.3235 - send the entire article. If the server does not want the article
1.3236 - (if, for example, the server already has a copy of it), a 435
1.3237 - response MUST be returned, indicating that the article is not wanted.
1.3238 - Finally, if the article isn't wanted immediately but the client
1.3239 - should retry later if possible (if, for example, another client is in
1.3240 - the process of sending the same article to the server), a 436
1.3241 - response MUST be returned.
1.3242 -
1.3243 -
1.3244 -
1.3245 -
1.3246 -
1.3247 -
1.3248 -Feather Standards Track [Page 58]
1.3249 -
1.3250 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3251 -
1.3252 -
1.3253 - If transmission of the article is requested, the client MUST send the
1.3254 - entire article, including headers and body, to the server as a
1.3255 - multi-line data block (see Section 3.1.1). Thus, a single dot (".")
1.3256 - on a line indicates the end of the text, and lines starting with a
1.3257 - dot in the original text have that dot doubled during transmission.
1.3258 - The server MUST return a 235 response, indicating that the article
1.3259 - was successfully transferred; a 436 response, indicating that the
1.3260 - transfer failed but should be tried again later; or a 437 response,
1.3261 - indicating that the article was rejected.
1.3262 -
1.3263 - This function differs from the POST command in that it is intended
1.3264 - for use in transferring already-posted articles between hosts. It
1.3265 - SHOULD NOT be used when the client is a personal news-reading
1.3266 - program, since use of this command indicates that the article has
1.3267 - already been posted at another site and is simply being forwarded
1.3268 - from another host. However, despite this, the server MAY elect not
1.3269 - to post or forward the article if, after further examination of the
1.3270 - article, it deems it inappropriate to do so. Reasons for such
1.3271 - subsequent rejection of an article may include problems such as
1.3272 - inappropriate newsgroups or distributions, disc space limitations,
1.3273 - article lengths, garbled headers, and the like. These are typically
1.3274 - restrictions enforced by the server host's news software and not
1.3275 - necessarily by the NNTP server itself.
1.3276 -
1.3277 - The client SHOULD NOT assume that the article has been successfully
1.3278 - transferred unless it receives an affirmative response from the
1.3279 - server. A lack of response (such as a dropped network connection or
1.3280 - a network timeout) SHOULD be treated the same as a 436 response.
1.3281 -
1.3282 - Because some news server software may not immediately be able to
1.3283 - determine whether an article is suitable for posting or forwarding,
1.3284 - an NNTP server MAY acknowledge the successful transfer of the article
1.3285 - (with a 235 response) but later silently discard it.
1.3286 -
1.3287 -
1.3288 -
1.3289 -
1.3290 -
1.3291 -
1.3292 -
1.3293 -
1.3294 -
1.3295 -
1.3296 -
1.3297 -
1.3298 -
1.3299 -
1.3300 -
1.3301 -
1.3302 -
1.3303 -
1.3304 -Feather Standards Track [Page 59]
1.3305 -
1.3306 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3307 -
1.3308 -
1.3309 -6.3.2.3. Examples
1.3310 -
1.3311 - Example of successfully sending an article to another site:
1.3312 -
1.3313 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3314 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3315 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3316 - [C] From: "Demo User" <nobody@example.com>
1.3317 - [C] Newsgroups: misc.test
1.3318 - [C] Subject: I am just a test article
1.3319 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3320 - [C] Organization: An Example Com, San Jose, CA
1.3321 - [C] Message-ID: <i.am.an.article.you.will.want@example.com>
1.3322 - [C]
1.3323 - [C] This is just a test article.
1.3324 - [C] .
1.3325 - [S] 235 Article transferred OK
1.3326 -
1.3327 - Example of sending an article to another site that rejects it. Note
1.3328 - that the message-id in the IHAVE command is not the same as the one
1.3329 - in the article headers; while this is bad practice and SHOULD NOT be
1.3330 - done, it is not forbidden.
1.3331 -
1.3332 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3333 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3334 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3335 - [C] From: "Demo User" <nobody@example.com>
1.3336 - [C] Newsgroups: misc.test
1.3337 - [C] Subject: I am just a test article
1.3338 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3339 - [C] Organization: An Example Com, San Jose, CA
1.3340 - [C] Message-ID: <i.am.an.article.you.have@example.com>
1.3341 - [C]
1.3342 - [C] This is just a test article.
1.3343 - [C] .
1.3344 - [S] 437 Article rejected; don't send again
1.3345 -
1.3346 -
1.3347 -
1.3348 -
1.3349 -
1.3350 -
1.3351 -
1.3352 -
1.3353 -
1.3354 -
1.3355 -
1.3356 -
1.3357 -
1.3358 -
1.3359 -
1.3360 -Feather Standards Track [Page 60]
1.3361 -
1.3362 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3363 -
1.3364 -
1.3365 - Example of sending an article to another site where the transfer
1.3366 - fails:
1.3367 -
1.3368 - [C] IHAVE <i.am.an.article.you.will.want@example.com>
1.3369 - [S] 335 Send it; end with <CR-LF>.<CR-LF>
1.3370 - [C] Path: pathost!demo!somewhere!not-for-mail
1.3371 - [C] From: "Demo User" <nobody@example.com>
1.3372 - [C] Newsgroups: misc.test
1.3373 - [C] Subject: I am just a test article
1.3374 - [C] Date: 6 Oct 1998 04:38:40 -0500
1.3375 - [C] Organization: An Example Com, San Jose, CA
1.3376 - [C] Message-ID: <i.am.an.article.you.will.want@example.com>
1.3377 - [C]
1.3378 - [C] This is just a test article.
1.3379 - [C] .
1.3380 - [S] 436 Transfer failed
1.3381 -
1.3382 - Example of sending an article to a site that already has it:
1.3383 -
1.3384 - [C] IHAVE <i.am.an.article.you.have@example.com>
1.3385 - [S] 435 Duplicate
1.3386 -
1.3387 - Example of sending an article to a site that requests that the
1.3388 - article be tried again later:
1.3389 -
1.3390 - [C] IHAVE <i.am.an.article.you.defer@example.com>
1.3391 - [S] 436 Retry later
1.3392 -
1.3393 -7. Information Commands
1.3394 -
1.3395 - This section lists other commands that may be used at any time
1.3396 - between the beginning of a session and its termination. Using these
1.3397 - commands does not alter any state information, but the response
1.3398 - generated from their use may provide useful information to clients.
1.3399 -
1.3400 -7.1. DATE
1.3401 -
1.3402 -7.1.1. Usage
1.3403 -
1.3404 - Indicating capability: READER
1.3405 -
1.3406 - Syntax
1.3407 - DATE
1.3408 -
1.3409 - Responses
1.3410 - 111 yyyymmddhhmmss Server date and time
1.3411 -
1.3412 -
1.3413 -
1.3414 -
1.3415 -
1.3416 -Feather Standards Track [Page 61]
1.3417 -
1.3418 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3419 -
1.3420 -
1.3421 - Parameters
1.3422 - yyyymmddhhmmss Current UTC date and time on server
1.3423 -
1.3424 -7.1.2. Description
1.3425 -
1.3426 - This command exists to help clients find out the current Coordinated
1.3427 - Universal Time [TF.686-1] from the server's perspective. This
1.3428 - command SHOULD NOT be used as a substitute for NTP [RFC1305] but to
1.3429 - provide information that might be useful when using the NEWNEWS
1.3430 - command (see Section 7.4).
1.3431 -
1.3432 - The DATE command MUST return a timestamp from the same clock as is
1.3433 - used for determining article arrival and group creation times (see
1.3434 - Section 6). This clock SHOULD be monotonic, and adjustments SHOULD
1.3435 - be made by running it fast or slow compared to "real" time rather
1.3436 - than by making sudden jumps. A system providing NNTP service SHOULD
1.3437 - keep the system clock as accurate as possible, either with NTP or by
1.3438 - some other method.
1.3439 -
1.3440 - The server MUST return a 111 response specifying the date and time on
1.3441 - the server in the form yyyymmddhhmmss. This date and time is in
1.3442 - Coordinated Universal Time.
1.3443 -
1.3444 -7.1.3. Examples
1.3445 -
1.3446 - [C] DATE
1.3447 - [S] 111 19990623135624
1.3448 -
1.3449 -7.2. HELP
1.3450 -
1.3451 -7.2.1. Usage
1.3452 -
1.3453 - This command is mandatory.
1.3454 -
1.3455 - Syntax
1.3456 - HELP
1.3457 -
1.3458 - Responses
1.3459 - 100 Help text follows (multi-line)
1.3460 -
1.3461 -7.2.2. Description
1.3462 -
1.3463 - This command provides a short summary of the commands that are
1.3464 - understood by this implementation of the server. The help text will
1.3465 - be presented as a multi-line data block following the 100 response
1.3466 - code.
1.3467 -
1.3468 -
1.3469 -
1.3470 -
1.3471 -
1.3472 -Feather Standards Track [Page 62]
1.3473 -
1.3474 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3475 -
1.3476 -
1.3477 - This text is not guaranteed to be in any particular format (but must
1.3478 - be UTF-8) and MUST NOT be used by clients as a replacement for the
1.3479 - CAPABILITIES command described in Section 5.2.
1.3480 -
1.3481 -7.2.3. Examples
1.3482 -
1.3483 - [C] HELP
1.3484 - [S] 100 Help text follows
1.3485 - [S] This is some help text. There is no specific
1.3486 - [S] formatting requirement for this test, though
1.3487 - [S] it is customary for it to list the valid commands
1.3488 - [S] and give a brief definition of what they do.
1.3489 - [S] .
1.3490 -
1.3491 -7.3. NEWGROUPS
1.3492 -
1.3493 -7.3.1. Usage
1.3494 -
1.3495 - Indicating capability: READER
1.3496 -
1.3497 - Syntax
1.3498 - NEWGROUPS date time [GMT]
1.3499 -
1.3500 - Responses
1.3501 - 231 List of new newsgroups follows (multi-line)
1.3502 -
1.3503 - Parameters
1.3504 - date Date in yymmdd or yyyymmdd format
1.3505 - time Time in hhmmss format
1.3506 -
1.3507 -7.3.2. Description
1.3508 -
1.3509 - This command returns a list of newsgroups created on the server since
1.3510 - the specified date and time. The results are in the same format as
1.3511 - the LIST ACTIVE command (see Section 7.6.3). However, they MAY
1.3512 - include groups not available on the server (and so not returned by
1.3513 - LIST ACTIVE) and MAY omit groups for which the creation date is not
1.3514 - available.
1.3515 -
1.3516 - The date is specified as 6 or 8 digits in the format [xx]yymmdd,
1.3517 - where xx is the first two digits of the year (19-99), yy is the last
1.3518 - two digits of the year (00-99), mm is the month (01-12), and dd is
1.3519 - the day of the month (01-31). Clients SHOULD specify all four digits
1.3520 - of the year. If the first two digits of the year are not specified
1.3521 - (this is supported only for backward compatibility), the year is to
1.3522 - be taken from the current century if yy is smaller than or equal to
1.3523 - the current year, and the previous century otherwise.
1.3524 -
1.3525 -
1.3526 -
1.3527 -
1.3528 -Feather Standards Track [Page 63]
1.3529 -
1.3530 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3531 -
1.3532 -
1.3533 - The time is specified as 6 digits in the format hhmmss, where hh is
1.3534 - the hours in the 24-hour clock (00-23), mm is the minutes (00-59),
1.3535 - and ss is the seconds (00-60, to allow for leap seconds). The token
1.3536 - "GMT" specifies that the date and time are given in Coordinated
1.3537 - Universal Time [TF.686-1]; if it is omitted, then the date and time
1.3538 - are specified in the server's local timezone. Note that there is no
1.3539 - way of using the protocol specified in this document to establish the
1.3540 - server's local timezone.
1.3541 -
1.3542 - Note that an empty list is a possible valid response and indicates
1.3543 - that there are no new newsgroups since that date-time.
1.3544 -
1.3545 - Clients SHOULD make all queries using Coordinated Universal Time
1.3546 - (i.e., by including the "GMT" argument) when possible.
1.3547 -
1.3548 -7.3.3. Examples
1.3549 -
1.3550 - Example where there are new groups:
1.3551 -
1.3552 - [C] NEWGROUPS 19990624 000000 GMT
1.3553 - [S] 231 list of new newsgroups follows
1.3554 - [S] alt.rfc-writers.recovery 4 1 y
1.3555 - [S] tx.natives.recovery 89 56 y
1.3556 - [S] .
1.3557 -
1.3558 - Example where there are no new groups:
1.3559 -
1.3560 - [C] NEWGROUPS 19990624 000000 GMT
1.3561 - [S] 231 list of new newsgroups follows
1.3562 - [S] .
1.3563 -
1.3564 -7.4. NEWNEWS
1.3565 -
1.3566 -7.4.1. Usage
1.3567 -
1.3568 - Indicating capability: NEWNEWS
1.3569 -
1.3570 - Syntax
1.3571 - NEWNEWS wildmat date time [GMT]
1.3572 -
1.3573 - Responses
1.3574 - 230 List of new articles follows (multi-line)
1.3575 -
1.3576 - Parameters
1.3577 - wildmat Newsgroups of interest
1.3578 - date Date in yymmdd or yyyymmdd format
1.3579 - time Time in hhmmss format
1.3580 -
1.3581 -
1.3582 -
1.3583 -
1.3584 -Feather Standards Track [Page 64]
1.3585 -
1.3586 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3587 -
1.3588 -
1.3589 -7.4.2. Description
1.3590 -
1.3591 - This command returns a list of message-ids of articles posted or
1.3592 - received on the server, in the newsgroups whose names match the
1.3593 - wildmat, since the specified date and time. One message-id is sent
1.3594 - on each line; the order of the response has no specific significance
1.3595 - and may vary from response to response in the same session. A
1.3596 - message-id MAY appear more than once; if it does, it has the same
1.3597 - meaning as if it appeared only once.
1.3598 -
1.3599 - Date and time are in the same format as the NEWGROUPS command (see
1.3600 - Section 7.3).
1.3601 -
1.3602 - Note that an empty list is a possible valid response and indicates
1.3603 - that there is currently no new news in the relevant groups.
1.3604 -
1.3605 - Clients SHOULD make all queries in Coordinated Universal Time (i.e.,
1.3606 - by using the "GMT" argument) when possible.
1.3607 -
1.3608 -7.4.3. Examples
1.3609 -
1.3610 - Example where there are new articles:
1.3611 -
1.3612 - [C] NEWNEWS news.*,sci.* 19990624 000000 GMT
1.3613 - [S] 230 list of new articles by message-id follows
1.3614 - [S] <i.am.a.new.article@example.com>
1.3615 - [S] <i.am.another.new.article@example.com>
1.3616 - [S] .
1.3617 -
1.3618 - Example where there are no new articles:
1.3619 -
1.3620 - [C] NEWNEWS alt.* 19990624 000000 GMT
1.3621 - [S] 230 list of new articles by message-id follows
1.3622 - [S] .
1.3623 -
1.3624 -7.5. Time
1.3625 -
1.3626 - As described in Section 6, each article has an arrival timestamp.
1.3627 - Each newsgroup also has a creation timestamp. These timestamps are
1.3628 - used by the NEWNEWS and NEWGROUP commands to construct their
1.3629 - responses.
1.3630 -
1.3631 - Clients can ensure that they do not have gaps in lists of articles or
1.3632 - groups by using the DATE command in the following manner:
1.3633 -
1.3634 - First session:
1.3635 - Issue DATE command and record result.
1.3636 - Issue NEWNEWS command using a previously chosen timestamp.
1.3637 -
1.3638 -
1.3639 -
1.3640 -Feather Standards Track [Page 65]
1.3641 -
1.3642 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3643 -
1.3644 -
1.3645 - Subsequent sessions:
1.3646 - Issue DATE command and hold result in temporary storage.
1.3647 - Issue NEWNEWS command using timestamp saved from previous session.
1.3648 - Overwrite saved timestamp with that currently in temporary
1.3649 - storage.
1.3650 -
1.3651 - In order to allow for minor errors, clients MAY want to adjust the
1.3652 - timestamp back by two or three minutes before using it in NEWNEWS.
1.3653 -
1.3654 -7.5.1. Examples
1.3655 -
1.3656 - First session:
1.3657 -
1.3658 - [C] DATE
1.3659 - [S] 111 20010203112233
1.3660 - [C] NEWNEWS local.chat 20001231 235959 GMT
1.3661 - [S] 230 list follows
1.3662 - [S] <article.1@local.service>
1.3663 - [S] <article.2@local.service>
1.3664 - [S] <article.3@local.service>
1.3665 - [S] .
1.3666 -
1.3667 - Second session (the client has subtracted 3 minutes from the
1.3668 - timestamp returned previously):
1.3669 -
1.3670 - [C] DATE
1.3671 - [S] 111 20010204003344
1.3672 - [C] NEWNEWS local.chat 20010203 111933 GMT
1.3673 - [S] 230 list follows
1.3674 - [S] <article.3@local.service>
1.3675 - [S] <article.4@local.service>
1.3676 - [S] <article.5@local.service>
1.3677 - [S] .
1.3678 -
1.3679 - Note how <article.3@local.service> arrived in the 3 minute gap and so
1.3680 - is listed in both responses.
1.3681 -
1.3682 -7.6. The LIST Commands
1.3683 -
1.3684 - The LIST family of commands all return information that is multi-line
1.3685 - and that can, in general, be expected not to change during the
1.3686 - session. Often the information is related to newsgroups, in which
1.3687 - case the response has one line per newsgroup and a wildmat MAY be
1.3688 - provided to restrict the groups for which information is returned.
1.3689 -
1.3690 - The set of available keywords (including those provided by
1.3691 - extensions) is given in the capability list with capability label
1.3692 - LIST.
1.3693 -
1.3694 -
1.3695 -
1.3696 -Feather Standards Track [Page 66]
1.3697 -
1.3698 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3699 -
1.3700 -
1.3701 -7.6.1. LIST
1.3702 -
1.3703 -7.6.1.1. Usage
1.3704 -
1.3705 - Indicating capability: LIST
1.3706 -
1.3707 - Syntax
1.3708 - LIST [keyword [wildmat|argument]]
1.3709 -
1.3710 - Responses
1.3711 - 215 Information follows (multi-line)
1.3712 -
1.3713 - Parameters
1.3714 - keyword Information requested [1]
1.3715 - argument Specific to keyword
1.3716 - wildmat Groups of interest
1.3717 -
1.3718 - [1] If no keyword is provided, it defaults to ACTIVE.
1.3719 -
1.3720 -7.6.1.2. Description
1.3721 -
1.3722 - The LIST command allows the server to provide blocks of information
1.3723 - to the client. This information may be global or may be related to
1.3724 - newsgroups; in the latter case, the information may be returned
1.3725 - either for all groups or only for those matching a wildmat. Each
1.3726 - block of information is represented by a different keyword. The
1.3727 - command returns the specific information identified by the keyword.
1.3728 -
1.3729 - If the information is available, it is returned as a multi-line data
1.3730 - block following the 215 response code. The format of the information
1.3731 - depends on the keyword. The information MAY be affected by the
1.3732 - additional argument, but the format MUST NOT be.
1.3733 -
1.3734 - If the information is based on newsgroups and the optional wildmat
1.3735 - argument is specified, the response is limited to only the groups (if
1.3736 - any) whose names match the wildmat and for which the information is
1.3737 - available.
1.3738 -
1.3739 - Note that an empty list is a possible valid response; for a
1.3740 - newsgroup-based keyword, it indicates that there are no groups
1.3741 - meeting the above criteria.
1.3742 -
1.3743 - If the keyword is not recognised, or if an argument is specified and
1.3744 - the keyword does not expect one, a 501 response code MUST BE
1.3745 - returned. If the keyword is recognised but the server does not
1.3746 - maintain the information, a 503 response code MUST BE returned.
1.3747 -
1.3748 -
1.3749 -
1.3750 -
1.3751 -
1.3752 -Feather Standards Track [Page 67]
1.3753 -
1.3754 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3755 -
1.3756 -
1.3757 - The LIST command MUST NOT change the visible state of the server in
1.3758 - any way; that is, the behaviour of subsequent commands MUST NOT be
1.3759 - affected by whether the LIST command was issued. For example, it
1.3760 - MUST NOT make groups available that otherwise would not have been.
1.3761 -
1.3762 -7.6.1.3. Examples
1.3763 -
1.3764 - Example of LIST with the ACTIVE keyword:
1.3765 -
1.3766 - [C] LIST ACTIVE
1.3767 - [S] 215 list of newsgroups follows
1.3768 - [S] misc.test 3002322 3000234 y
1.3769 - [S] comp.risks 442001 441099 m
1.3770 - [S] alt.rfc-writers.recovery 4 1 y
1.3771 - [S] tx.natives.recovery 89 56 y
1.3772 - [S] tx.natives.recovery.d 11 9 n
1.3773 - [S] .
1.3774 -
1.3775 - Example of LIST with no keyword:
1.3776 -
1.3777 - [C] LIST
1.3778 - [S] 215 list of newsgroups follows
1.3779 - [S] misc.test 3002322 3000234 y
1.3780 - [S] comp.risks 442001 441099 m
1.3781 - [S] alt.rfc-writers.recovery 4 1 y
1.3782 - [S] tx.natives.recovery 89 56 y
1.3783 - [S] tx.natives.recovery.d 11 9 n
1.3784 - [S] .
1.3785 -
1.3786 - The output is identical to that of the previous example.
1.3787 -
1.3788 - Example of LIST on a newsgroup-based keyword with and without
1.3789 - wildmat:
1.3790 -
1.3791 - [C] LIST ACTIVE.TIMES
1.3792 - [S] 215 information follows
1.3793 - [S] misc.test 930445408 <creatme@isc.org>
1.3794 - [S] alt.rfc-writers.recovery 930562309 <m@example.com>
1.3795 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3796 - [S] .
1.3797 - [C] LIST ACTIVE.TIMES tx.*
1.3798 - [S] 215 information follows
1.3799 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3800 - [S] .
1.3801 -
1.3802 -
1.3803 -
1.3804 -
1.3805 -
1.3806 -
1.3807 -
1.3808 -Feather Standards Track [Page 68]
1.3809 -
1.3810 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3811 -
1.3812 -
1.3813 - Example of LIST returning an error where the keyword is recognized
1.3814 - but the software does not maintain this information:
1.3815 -
1.3816 - [C] CAPABILITIES
1.3817 - [S] 101 Capability list:
1.3818 - [S] VERSION 2
1.3819 - [S] READER
1.3820 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
1.3821 - [S] .
1.3822 - [C] LIST XTRA.DATA
1.3823 - [S] 503 Data item not stored
1.3824 -
1.3825 - Example of LIST where the keyword is not recognised:
1.3826 -
1.3827 - [C] CAPABILITIES
1.3828 - [S] 101 Capability list:
1.3829 - [S] VERSION 2
1.3830 - [S] READER
1.3831 - [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
1.3832 - [S] .
1.3833 - [C] LIST DISTRIB.PATS
1.3834 - [S] 501 Syntax Error
1.3835 -
1.3836 -7.6.2. Standard LIST Keywords
1.3837 -
1.3838 - This specification defines the following LIST keywords:
1.3839 -
1.3840 - +--------------+---------------+------------------------------------+
1.3841 - | Keyword | Definition | Status |
1.3842 - +--------------+---------------+------------------------------------+
1.3843 - | ACTIVE | Section 7.6.3 | Mandatory if the READER capability |
1.3844 - | | | is advertised |
1.3845 - | | | |
1.3846 - | ACTIVE.TIMES | Section 7.6.4 | Optional |
1.3847 - | | | |
1.3848 - | DISTRIB.PATS | Section 7.6.5 | Optional |
1.3849 - | | | |
1.3850 - | HEADERS | Section 8.6 | Mandatory if the HDR capability is |
1.3851 - | | | advertised |
1.3852 - | | | |
1.3853 - | NEWSGROUPS | Section 7.6.6 | Mandatory if the READER capability |
1.3854 - | | | is advertised |
1.3855 - | | | |
1.3856 - | OVERVIEW.FMT | Section 8.4 | Mandatory if the OVER capability |
1.3857 - | | | is advertised |
1.3858 - +--------------+---------------+------------------------------------+
1.3859 -
1.3860 -
1.3861 -
1.3862 -
1.3863 -
1.3864 -Feather Standards Track [Page 69]
1.3865 -
1.3866 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3867 -
1.3868 -
1.3869 - Where one of these LIST keywords is supported by a server, it MUST
1.3870 - have the meaning given in the relevant sub-section.
1.3871 -
1.3872 -7.6.3. LIST ACTIVE
1.3873 -
1.3874 - This keyword MUST be supported by servers advertising the READER
1.3875 - capability.
1.3876 -
1.3877 - LIST ACTIVE returns a list of valid newsgroups and associated
1.3878 - information. If no wildmat is specified, the server MUST include
1.3879 - every group that the client is permitted to select with the GROUP
1.3880 - command (Section 6.1.1). Each line of this list consists of four
1.3881 - fields separated from each other by one or more spaces:
1.3882 -
1.3883 - o The name of the newsgroup.
1.3884 - o The reported high water mark for the group.
1.3885 - o The reported low water mark for the group.
1.3886 - o The current status of the group on this server.
1.3887 -
1.3888 - The reported high and low water marks are as described in the GROUP
1.3889 - command (see Section 6.1.1), but note that they are in the opposite
1.3890 - order to the 211 response to that command.
1.3891 -
1.3892 - The status field is typically one of the following:
1.3893 -
1.3894 - "y" Posting is permitted.
1.3895 -
1.3896 - "n" Posting is not permitted.
1.3897 -
1.3898 - "m" Postings will be forwarded to the newsgroup moderator.
1.3899 -
1.3900 - The server SHOULD use these values when these meanings are required
1.3901 - and MUST NOT use them with any other meaning. Other values for the
1.3902 - status may exist; the definition of these other values and the
1.3903 - circumstances under which they are returned may be specified in an
1.3904 - extension or may be private to the server. A client SHOULD treat an
1.3905 - unrecognized status as giving no information.
1.3906 -
1.3907 - The status of a newsgroup only indicates how posts to that newsgroup
1.3908 - are normally processed and is not necessarily customised to the
1.3909 - specific client. For example, if the current client is forbidden
1.3910 - from posting, then this will apply equally to groups with status "y".
1.3911 - Conversely, a client with special privileges (not defined by this
1.3912 - specification) might be able to post to a group with status "n".
1.3913 -
1.3914 -
1.3915 -
1.3916 -
1.3917 -
1.3918 -
1.3919 -
1.3920 -Feather Standards Track [Page 70]
1.3921 -
1.3922 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3923 -
1.3924 -
1.3925 - For example:
1.3926 -
1.3927 - [C] LIST ACTIVE
1.3928 - [S] 215 list of newsgroups follows
1.3929 - [S] misc.test 3002322 3000234 y
1.3930 - [S] comp.risks 442001 441099 m
1.3931 - [S] alt.rfc-writers.recovery 4 1 y
1.3932 - [S] tx.natives.recovery 89 56 y
1.3933 - [S] tx.natives.recovery.d 11 9 n
1.3934 - [S] .
1.3935 -
1.3936 - or, on an implementation that includes leading zeroes:
1.3937 -
1.3938 - [C] LIST ACTIVE
1.3939 - [S] 215 list of newsgroups follows
1.3940 - [S] misc.test 0003002322 0003000234 y
1.3941 - [S] comp.risks 0000442001 0000441099 m
1.3942 - [S] alt.rfc-writers.recovery 0000000004 0000000001 y
1.3943 - [S] tx.natives.recovery 0000000089 0000000056 y
1.3944 - [S] tx.natives.recovery.d 0000000011 0000000009 n
1.3945 - [S] .
1.3946 -
1.3947 - The information is newsgroup based, and a wildmat MAY be specified,
1.3948 - in which case the response is limited to only the groups (if any)
1.3949 - whose names match the wildmat. For example:
1.3950 -
1.3951 - [C] LIST ACTIVE *.recovery
1.3952 - [S] 215 list of newsgroups follows
1.3953 - [S] alt.rfc-writers.recovery 4 1 y
1.3954 - [S] tx.natives.recovery 89 56 y
1.3955 - [S] .
1.3956 -
1.3957 -7.6.4. LIST ACTIVE.TIMES
1.3958 -
1.3959 - This keyword is optional.
1.3960 -
1.3961 - The active.times list is maintained by some NNTP servers to contain
1.3962 - information about who created a particular newsgroup and when. Each
1.3963 - line of this list consists of three fields separated from each other
1.3964 - by one or more spaces. The first field is the name of the newsgroup.
1.3965 - The second is the time when this group was created on this news
1.3966 - server, measured in seconds since the start of January 1, 1970. The
1.3967 - third is plain text intended to describe the entity that created the
1.3968 - newsgroup; it is often a mailbox as defined in RFC 2822 [RFC2822].
1.3969 - For example:
1.3970 -
1.3971 -
1.3972 -
1.3973 -
1.3974 -
1.3975 -
1.3976 -Feather Standards Track [Page 71]
1.3977 -
1.3978 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.3979 -
1.3980 -
1.3981 - [C] LIST ACTIVE.TIMES
1.3982 - [S] 215 information follows
1.3983 - [S] misc.test 930445408 <creatme@isc.org>
1.3984 - [S] alt.rfc-writers.recovery 930562309 <m@example.com>
1.3985 - [S] tx.natives.recovery 930678923 <sob@academ.com>
1.3986 - [S] .
1.3987 -
1.3988 - The list MAY omit newsgroups for which the information is unavailable
1.3989 - and MAY include groups not available on the server; in particular, it
1.3990 - MAY omit all groups created before the date and time of the oldest
1.3991 - entry. The client MUST NOT assume that the list is complete or that
1.3992 - it matches the list returned by the LIST ACTIVE command
1.3993 - (Section 7.6.3). The NEWGROUPS command (Section 7.3) may provide a
1.3994 - better way to access this information, and the results of the two
1.3995 - commands SHOULD be consistent except that, if the latter is invoked
1.3996 - with a date and time earlier than the oldest entry in active.times
1.3997 - list, its result may include extra groups.
1.3998 -
1.3999 - The information is newsgroup based, and a wildmat MAY be specified,
1.4000 - in which case the response is limited to only the groups (if any)
1.4001 - whose names match the wildmat.
1.4002 -
1.4003 -7.6.5. LIST DISTRIB.PATS
1.4004 -
1.4005 - This keyword is optional.
1.4006 -
1.4007 - The distrib.pats list is maintained by some NNTP servers to assist
1.4008 - clients to choose a value for the content of the Distribution header
1.4009 - of a news article being posted. Each line of this list consists of
1.4010 - three fields separated from each other by a colon (":"). The first
1.4011 - field is a weight, the second field is a wildmat (which may be a
1.4012 - simple newsgroup name), and the third field is a value for the
1.4013 - Distribution header content. For example:
1.4014 -
1.4015 - [C] LIST DISTRIB.PATS
1.4016 - [S] 215 information follows
1.4017 - [S] 10:local.*:local
1.4018 - [S] 5:*:world
1.4019 - [S] 20:local.here.*:thissite
1.4020 - [S] .
1.4021 -
1.4022 - The client MAY use this information to construct an appropriate
1.4023 - Distribution header given the name of a newsgroup. To do so, it
1.4024 - should determine the lines whose second field matches the newsgroup
1.4025 - name, select from among them the line with the highest weight (with 0
1.4026 - being the lowest), and use the value of the third field to construct
1.4027 - the Distribution header.
1.4028 -
1.4029 -
1.4030 -
1.4031 -
1.4032 -Feather Standards Track [Page 72]
1.4033 -
1.4034 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4035 -
1.4036 -
1.4037 - The information is not newsgroup based, and an argument MUST NOT be
1.4038 - specified.
1.4039 -
1.4040 -7.6.6. LIST NEWSGROUPS
1.4041 -
1.4042 - This keyword MUST be supported by servers advertising the READER
1.4043 - capability.
1.4044 -
1.4045 - The newsgroups list is maintained by NNTP servers to contain the name
1.4046 - of each newsgroup that is available on the server and a short
1.4047 - description about the purpose of the group. Each line of this list
1.4048 - consists of two fields separated from each other by one or more space
1.4049 - or TAB characters (the usual practice is a single TAB). The first
1.4050 - field is the name of the newsgroup, and the second is a short
1.4051 - description of the group. For example:
1.4052 -
1.4053 - [C] LIST NEWSGROUPS
1.4054 - [S] 215 information follows
1.4055 - [S] misc.test General Usenet testing
1.4056 - [S] alt.rfc-writers.recovery RFC Writers Recovery
1.4057 - [S] tx.natives.recovery Texas Natives Recovery
1.4058 - [S] .
1.4059 -
1.4060 - The list MAY omit newsgroups for which the information is unavailable
1.4061 - and MAY include groups not available on the server. The client MUST
1.4062 - NOT assume that the list is complete or that it matches the list
1.4063 - returned by LIST ACTIVE.
1.4064 -
1.4065 - The description SHOULD be in UTF-8. However, servers often obtain
1.4066 - the information from external sources. These sources may have used
1.4067 - different encodings (ones that use octets in the range 128 to 255 in
1.4068 - some other manner) and, in that case, the server MAY pass it on
1.4069 - unchanged. Therefore, clients MUST be prepared to receive such
1.4070 - descriptions.
1.4071 -
1.4072 - The information is newsgroup based, and a wildmat MAY be specified,
1.4073 - in which case the response is limited to only the groups (if any)
1.4074 - whose names match the wildmat.
1.4075 -
1.4076 -8. Article Field Access Commands
1.4077 -
1.4078 - This section lists commands that may be used to access specific
1.4079 - article fields; that is, headers of articles and metadata about
1.4080 - articles. These commands typically fetch data from an "overview
1.4081 - database", which is a database of headers extracted from incoming
1.4082 - articles plus metadata determined as the article arrives. Only
1.4083 - certain fields are included in the database.
1.4084 -
1.4085 -
1.4086 -
1.4087 -
1.4088 -Feather Standards Track [Page 73]
1.4089 -
1.4090 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4091 -
1.4092 -
1.4093 - This section is based on the Overview/NOV database [ROBE1995]
1.4094 - developed by Geoff Collyer.
1.4095 -
1.4096 -8.1. Article Metadata
1.4097 -
1.4098 - Article "metadata" is data about articles that does not occur within
1.4099 - the article itself. Each metadata item has a name that MUST begin
1.4100 - with a colon (and that MUST NOT contain a colon elsewhere within it).
1.4101 - As with header names, metadata item names are not case sensitive.
1.4102 -
1.4103 - When generating a metadata item, the server MUST compute it for
1.4104 - itself and MUST NOT trust any related value provided in the article.
1.4105 - (In particular, a Lines or Bytes header in the article MUST NOT be
1.4106 - assumed to specify the correct number of lines or bytes in the
1.4107 - article.) If the server has access to several non-identical copies
1.4108 - of an article, the value returned MUST be correct for any copy of
1.4109 - that article retrieved during the same session.
1.4110 -
1.4111 - This specification defines two metadata items: ":bytes" and ":lines".
1.4112 - Other metadata items may be defined by extensions. The names of
1.4113 - metadata items defined by registered extensions MUST NOT begin with
1.4114 - ":x-". To avoid the risk of a clash with a future registered
1.4115 - extension, the names of metadata items defined by private extensions
1.4116 - SHOULD begin with ":x-".
1.4117 -
1.4118 -8.1.1. The :bytes Metadata Item
1.4119 -
1.4120 - The :bytes metadata item for an article is a decimal integer. It
1.4121 - SHOULD equal the number of octets in the entire article: headers,
1.4122 - body, and separating empty line (counting a CRLF pair as two octets,
1.4123 - and excluding both the "." CRLF terminating the response and any "."
1.4124 - added for "dot-stuffing" purposes).
1.4125 -
1.4126 - Note to client implementers: some existing servers return a value
1.4127 - different from that above. The commonest reasons for this are as
1.4128 - follows:
1.4129 -
1.4130 - o Counting a CRLF pair as one octet.
1.4131 -
1.4132 - o Including the "." character used for dot-stuffing in the number.
1.4133 -
1.4134 - o Including the terminating "." CRLF in the number.
1.4135 -
1.4136 - o Using one copy of an article for counting the octets but then
1.4137 - returning another one that differs in some (permitted) manner.
1.4138 -
1.4139 - Implementations should be prepared for such variation and MUST NOT
1.4140 - rely on the value being accurate.
1.4141 -
1.4142 -
1.4143 -
1.4144 -Feather Standards Track [Page 74]
1.4145 -
1.4146 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4147 -
1.4148 -
1.4149 -8.1.2. The :lines Metadata Item
1.4150 -
1.4151 - The :lines metadata item for an article is a decimal integer. It
1.4152 - MUST equal the number of lines in the article body (excluding the
1.4153 - empty line separating headers and body). Equivalently, it is two
1.4154 - less than the number of CRLF pairs that the BODY command would return
1.4155 - for that article (the extra two are those following the response code
1.4156 - and the termination octet).
1.4157 -
1.4158 -8.2. Database Consistency
1.4159 -
1.4160 - The information stored in the overview database may change over time.
1.4161 - If the database records the content or absence of a given field (that
1.4162 - is, a header or metadata item) for all articles, it is said to be
1.4163 - "consistent" for that field. If it records the content of a header
1.4164 - for some articles but not for others that nevertheless included that
1.4165 - header, or if it records a metadata item for some articles but not
1.4166 - for others to which that item applies, it is said to be
1.4167 - "inconsistent" for that field.
1.4168 -
1.4169 - The LIST OVERVIEW.FMT command SHOULD list all the fields for which
1.4170 - the database is consistent at that moment. It MAY omit such fields
1.4171 - (for example, if it is not known whether the database is consistent
1.4172 - or inconsistent). It MUST NOT include fields for which the database
1.4173 - is inconsistent or that are not stored in the database. Therefore,
1.4174 - if a header appears in the LIST OVERVIEW.FMT output but not in the
1.4175 - OVER output for a given article, that header does not appear in the
1.4176 - article (similarly for metadata items).
1.4177 -
1.4178 - These rules assume that the fields being stored in the database
1.4179 - remain constant for long periods of time, and therefore the database
1.4180 - will be consistent. When the set of fields to be stored is changed,
1.4181 - it will be inconsistent until either the database is rebuilt or the
1.4182 - only articles remaining are those received since the change.
1.4183 - Therefore, the output from LIST OVERVIEW.FMT needs to be altered
1.4184 - twice. Firstly, before any fields stop being stored they MUST be
1.4185 - removed from the output; then, when the database is once more known
1.4186 - to be consistent, the new fields SHOULD be added to the output.
1.4187 -
1.4188 - If the HDR command uses the overview database rather than taking
1.4189 - information directly from the articles, the same issues of
1.4190 - consistency and inconsistency apply, and the LIST HEADERS command
1.4191 - SHOULD take the same approach as the LIST OVERVIEW.FMT command in
1.4192 - resolving them.
1.4193 -
1.4194 -
1.4195 -
1.4196 -
1.4197 -
1.4198 -
1.4199 -
1.4200 -Feather Standards Track [Page 75]
1.4201 -
1.4202 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4203 -
1.4204 -
1.4205 -8.3. OVER
1.4206 -
1.4207 -8.3.1. Usage
1.4208 -
1.4209 - Indicating capability: OVER
1.4210 -
1.4211 - Syntax
1.4212 - OVER message-id
1.4213 - OVER range
1.4214 - OVER
1.4215 -
1.4216 - Responses
1.4217 -
1.4218 - First form (message-id specified)
1.4219 - 224 Overview information follows (multi-line)
1.4220 - 430 No article with that message-id
1.4221 -
1.4222 - Second form (range specified)
1.4223 - 224 Overview information follows (multi-line)
1.4224 - 412 No newsgroup selected
1.4225 - 423 No articles in that range
1.4226 -
1.4227 - Third form (current article number used)
1.4228 - 224 Overview information follows (multi-line)
1.4229 - 412 No newsgroup selected
1.4230 - 420 Current article number is invalid
1.4231 -
1.4232 - Parameters
1.4233 - range Number(s) of articles
1.4234 - message-id Message-id of article
1.4235 -
1.4236 -8.3.2. Description
1.4237 -
1.4238 - The OVER command returns the contents of all the fields in the
1.4239 - database for an article specified by message-id, or from a specified
1.4240 - article or range of articles in the currently selected newsgroup.
1.4241 -
1.4242 - The message-id argument indicates a specific article. The range
1.4243 - argument may be any of the following:
1.4244 -
1.4245 - o An article number.
1.4246 -
1.4247 - o An article number followed by a dash to indicate all following.
1.4248 -
1.4249 - o An article number followed by a dash followed by another article
1.4250 - number.
1.4251 -
1.4252 - If neither is specified, the current article number is used.
1.4253 -
1.4254 -
1.4255 -
1.4256 -Feather Standards Track [Page 76]
1.4257 -
1.4258 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4259 -
1.4260 -
1.4261 - Support for the first (message-id) form is optional. If it is
1.4262 - supported, the OVER capability line MUST include the argument
1.4263 - "MSGID". Otherwise, the capability line MUST NOT include this
1.4264 - argument, and the OVER command MUST return the generic response code
1.4265 - 503 when this form is used.
1.4266 -
1.4267 - If the information is available, it is returned as a multi-line data
1.4268 - block following the 224 response code and contains one line per
1.4269 - article, sorted in numerical order of article number. (Note that
1.4270 - unless the argument is a range including a dash, there will be
1.4271 - exactly one line in the data block.) Each line consists of a number
1.4272 - of fields separated by a TAB. A field may be empty (in which case
1.4273 - there will be two adjacent TABs), and a sequence of trailing TABs may
1.4274 - be omitted.
1.4275 -
1.4276 - The first 8 fields MUST be the following, in order:
1.4277 -
1.4278 - "0" or article number (see below)
1.4279 - Subject header content
1.4280 - From header content
1.4281 - Date header content
1.4282 - Message-ID header content
1.4283 - References header content
1.4284 - :bytes metadata item
1.4285 - :lines metadata item
1.4286 -
1.4287 - If the article is specified by message-id (the first form of the
1.4288 - command), the article number MUST be replaced with zero, except that
1.4289 - if there is a currently selected newsgroup and the article is present
1.4290 - in that group, the server MAY use the article's number in that group.
1.4291 - (See the ARTICLE command (Section 6.2.1) and STAT examples
1.4292 - (Section 6.2.4.3) for more details.) In the other two forms of the
1.4293 - command, the article number MUST be returned.
1.4294 -
1.4295 - Any subsequent fields are the contents of the other headers and
1.4296 - metadata held in the database.
1.4297 -
1.4298 - For the five mandatory headers, the content of each field MUST be
1.4299 - based on the content of the header (that is, with the header name and
1.4300 - following colon and space removed). If the article does not contain
1.4301 - that header, or if the content is empty, the field MUST be empty.
1.4302 - For the two mandatory metadata items, the content of the field MUST
1.4303 - be just the value, with no other text.
1.4304 -
1.4305 - For all subsequent fields that contain headers, the content MUST be
1.4306 - the entire header line other than the trailing CRLF. For all
1.4307 - subsequent fields that contain metadata, the field consists of the
1.4308 - metadata name, a single space, and then the value.
1.4309 -
1.4310 -
1.4311 -
1.4312 -Feather Standards Track [Page 77]
1.4313 -
1.4314 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4315 -
1.4316 -
1.4317 - For all fields, the value is processed by first removing all CRLF
1.4318 - pairs (that is, undoing any folding and removing the terminating
1.4319 - CRLF) and then replacing each TAB with a single space. If there is
1.4320 - no such header in the article, no such metadata item, or no header or
1.4321 - item stored in the database for that article, the corresponding field
1.4322 - MUST be empty.
1.4323 -
1.4324 - Note that, after unfolding, the characters NUL, LF, and CR cannot
1.4325 - occur in the header of an article offered by a conformant server.
1.4326 - Nevertheless, servers SHOULD check for these characters and replace
1.4327 - each one by a single space (so that, for example, CR LF LF TAB will
1.4328 - become two spaces, since the CR and first LF will be removed by the
1.4329 - unfolding process). This will encourage robustness in the face of
1.4330 - non-conforming data; it is also possible that future versions of this
1.4331 - specification could permit these characters to appear in articles.
1.4332 -
1.4333 - The server SHOULD NOT produce output for articles that no longer
1.4334 - exist.
1.4335 -
1.4336 - If the argument is a message-id and no such article exists, a 430
1.4337 - response MUST be returned. If the argument is a range or is omitted
1.4338 - and the currently selected newsgroup is invalid, a 412 response MUST
1.4339 - be returned. If the argument is a range and no articles in that
1.4340 - number range exist in the currently selected newsgroup, including the
1.4341 - case where the second number is less than the first one, a 423
1.4342 - response MUST be returned. If the argument is omitted and the
1.4343 - current article number is invalid, a 420 response MUST be returned.
1.4344 -
1.4345 -8.3.3. Examples
1.4346 -
1.4347 - In the first four examples, TAB has been replaced by vertical bar and
1.4348 - some lines have been folded for readability.
1.4349 -
1.4350 - Example of a successful retrieval of overview information for an
1.4351 - article (explicitly not using an article number):
1.4352 -
1.4353 - [C] GROUP misc.test
1.4354 - [S] 211 1234 3000234 3002322 misc.test
1.4355 - [C] OVER
1.4356 - [S] 224 Overview information follows
1.4357 - [S] 3000234|I am just a test article|"Demo User"
1.4358 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4359 - <45223423@example.com>|<45454@example.net>|1234|
1.4360 - 17|Xref: news.example.com misc.test:3000363
1.4361 - [S] .
1.4362 -
1.4363 -
1.4364 -
1.4365 -
1.4366 -
1.4367 -
1.4368 -Feather Standards Track [Page 78]
1.4369 -
1.4370 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4371 -
1.4372 -
1.4373 - Example of a successful retrieval of overview information for an
1.4374 - article by message-id:
1.4375 -
1.4376 - [C] CAPABILITIES
1.4377 - [S] 101 Capability list:
1.4378 - [S] VERSION 2
1.4379 - [S] READER
1.4380 - [S] OVER MSGID
1.4381 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
1.4382 - [S] .
1.4383 - [C] OVER <45223423@example.com>
1.4384 - [S] 224 Overview information follows
1.4385 - [S] 0|I am just a test article|"Demo User"
1.4386 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4387 - <45223423@example.com>|<45454@example.net>|1234|
1.4388 - 17|Xref: news.example.com misc.test:3000363
1.4389 - [S] .
1.4390 -
1.4391 - Note that the article number has been replaced by "0".
1.4392 -
1.4393 - Example of the same commands on a system that does not implement
1.4394 - retrieval by message-id:
1.4395 -
1.4396 - [C] CAPABILITIES
1.4397 - [S] 101 Capability list:
1.4398 - [S] VERSION 2
1.4399 - [S] READER
1.4400 - [S] OVER
1.4401 - [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
1.4402 - [S] .
1.4403 - [C] OVER <45223423@example.com>
1.4404 - [S] 503 Overview by message-id unsupported
1.4405 -
1.4406 -
1.4407 -
1.4408 -
1.4409 -
1.4410 -
1.4411 -
1.4412 -
1.4413 -
1.4414 -
1.4415 -
1.4416 -
1.4417 -
1.4418 -
1.4419 -
1.4420 -
1.4421 -
1.4422 -
1.4423 -
1.4424 -Feather Standards Track [Page 79]
1.4425 -
1.4426 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4427 -
1.4428 -
1.4429 - Example of a successful retrieval of overview information for a range
1.4430 - of articles:
1.4431 -
1.4432 - [C] GROUP misc.test
1.4433 - [S] 211 1234 3000234 3002322 misc.test
1.4434 - [C] OVER 3000234-3000240
1.4435 - [S] 224 Overview information follows
1.4436 - [S] 3000234|I am just a test article|"Demo User"
1.4437 - <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
1.4438 - <45223423@example.com>|<45454@example.net>|1234|
1.4439 - 17|Xref: news.example.com misc.test:3000363
1.4440 - [S] 3000235|Another test article|nobody@nowhere.to
1.4441 - (Demo User)|6 Oct 1998 04:38:45 -0500|<45223425@to.to>||
1.4442 - 4818|37||Distribution: fi
1.4443 - [S] 3000238|Re: I am just a test article|somebody@elsewhere.to|
1.4444 - 7 Oct 1998 11:38:40 +1200|<kfwer3v@elsewhere.to>|
1.4445 - <45223423@to.to>|9234|51
1.4446 - [S] .
1.4447 -
1.4448 - Note the missing "References" and Xref headers in the second line,
1.4449 - the missing trailing fields in the first and last lines, and that
1.4450 - there are only results for those articles that still exist.
1.4451 -
1.4452 - Example of an unsuccessful retrieval of overview information on an
1.4453 - article by number:
1.4454 -
1.4455 - [C] GROUP misc.test
1.4456 - [S] 211 1234 3000234 3002322 misc.test
1.4457 - [C] OVER 300256
1.4458 - [S] 423 No such article in this group
1.4459 -
1.4460 - Example of an invalid range:
1.4461 -
1.4462 - [C] GROUP misc.test
1.4463 - [S] 211 1234 3000234 3002322 misc.test
1.4464 - [C] OVER 3000444-3000222
1.4465 - [S] 423 Empty range
1.4466 -
1.4467 - Example of an unsuccessful retrieval of overview information by
1.4468 - number because no newsgroup was selected first:
1.4469 -
1.4470 - [Assumes currently selected newsgroup is invalid.]
1.4471 - [C] OVER
1.4472 - [S] 412 No newsgroup selected
1.4473 -
1.4474 -
1.4475 -
1.4476 -
1.4477 -
1.4478 -
1.4479 -
1.4480 -Feather Standards Track [Page 80]
1.4481 -
1.4482 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4483 -
1.4484 -
1.4485 - Example of an attempt to retrieve information when the currently
1.4486 - selected newsgroup is empty:
1.4487 -
1.4488 - [C] GROUP example.empty.newsgroup
1.4489 - [S] 211 0 0 0 example.empty.newsgroup
1.4490 - [C] OVER
1.4491 - [S] 420 No current article selected
1.4492 -
1.4493 -8.4. LIST OVERVIEW.FMT
1.4494 -
1.4495 -8.4.1. Usage
1.4496 -
1.4497 - Indicating capability: OVER
1.4498 -
1.4499 - Syntax
1.4500 - LIST OVERVIEW.FMT
1.4501 -
1.4502 - Responses
1.4503 - 215 Information follows (multi-line)
1.4504 -
1.4505 -8.4.2. Description
1.4506 -
1.4507 - See Section 7.6.1 for general requirements of the LIST command.
1.4508 -
1.4509 - The LIST OVERVIEW.FMT command returns a description of the fields in
1.4510 - the database for which it is consistent (as described above). The
1.4511 - information is returned as a multi-line data block following the 215
1.4512 - response code. The information contains one line per field in the
1.4513 - order in which they are returned by the OVER command; the first 7
1.4514 - lines MUST (except for the case of letters) be exactly as follows:
1.4515 -
1.4516 - Subject:
1.4517 - From:
1.4518 - Date:
1.4519 - Message-ID:
1.4520 - References:
1.4521 - :bytes
1.4522 - :lines
1.4523 -
1.4524 - For compatibility with existing implementations, the last two lines
1.4525 - MAY instead be:
1.4526 -
1.4527 - Bytes:
1.4528 - Lines:
1.4529 -
1.4530 - even though they refer to metadata, not headers.
1.4531 -
1.4532 -
1.4533 -
1.4534 -
1.4535 -
1.4536 -Feather Standards Track [Page 81]
1.4537 -
1.4538 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4539 -
1.4540 -
1.4541 - All subsequent lines MUST consist of either a header name followed by
1.4542 - ":full", or the name of a piece of metadata.
1.4543 -
1.4544 - There are no leading or trailing spaces in the output.
1.4545 -
1.4546 - Note that the 7 fixed lines describe the 2nd to 8th fields of the
1.4547 - OVER output. The "full" suffix (which may use either uppercase,
1.4548 - lowercase, or a mix) is a reminder that the corresponding fields
1.4549 - include the header name.
1.4550 -
1.4551 - This command MAY generate different results if it is used more than
1.4552 - once in a session.
1.4553 -
1.4554 - If the OVER command is not implemented, the meaning of the output
1.4555 - from this command is not specified, but it must still meet the above
1.4556 - syntactic requirements.
1.4557 -
1.4558 -8.4.3. Examples
1.4559 -
1.4560 - Example of LIST OVERVIEW.FMT output corresponding to the example OVER
1.4561 - output above, in the preferred format:
1.4562 -
1.4563 - [C] LIST OVERVIEW.FMT
1.4564 - [S] 215 Order of fields in overview database.
1.4565 - [S] Subject:
1.4566 - [S] From:
1.4567 - [S] Date:
1.4568 - [S] Message-ID:
1.4569 - [S] References:
1.4570 - [S] :bytes
1.4571 - [S] :lines
1.4572 - [S] Xref:full
1.4573 - [S] Distribution:full
1.4574 - [S] .
1.4575 -
1.4576 -
1.4577 -
1.4578 -
1.4579 -
1.4580 -
1.4581 -
1.4582 -
1.4583 -
1.4584 -
1.4585 -
1.4586 -
1.4587 -
1.4588 -
1.4589 -
1.4590 -
1.4591 -
1.4592 -Feather Standards Track [Page 82]
1.4593 -
1.4594 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4595 -
1.4596 -
1.4597 - Example of LIST OVERVIEW.FMT output corresponding to the example OVER
1.4598 - output above, in the alternative format:
1.4599 -
1.4600 - [C] LIST OVERVIEW.FMT
1.4601 - [S] 215 Order of fields in overview database.
1.4602 - [S] Subject:
1.4603 - [S] From:
1.4604 - [S] Date:
1.4605 - [S] Message-ID:
1.4606 - [S] References:
1.4607 - [S] Bytes:
1.4608 - [S] Lines:
1.4609 - [S] Xref:FULL
1.4610 - [S] Distribution:FULL
1.4611 - [S] .
1.4612 -
1.4613 -8.5. HDR
1.4614 -
1.4615 -8.5.1. Usage
1.4616 -
1.4617 - Indicating capability: HDR
1.4618 -
1.4619 - Syntax
1.4620 - HDR field message-id
1.4621 - HDR field range
1.4622 - HDR field
1.4623 -
1.4624 - Responses
1.4625 -
1.4626 - First form (message-id specified)
1.4627 - 225 Headers follow (multi-line)
1.4628 - 430 No article with that message-id
1.4629 -
1.4630 - Second form (range specified)
1.4631 - 225 Headers follow (multi-line)
1.4632 - 412 No newsgroup selected
1.4633 - 423 No articles in that range
1.4634 -
1.4635 - Third form (current article number used)
1.4636 - 225 Headers follow (multi-line)
1.4637 - 412 No newsgroup selected
1.4638 - 420 Current article number is invalid
1.4639 -
1.4640 - Parameters
1.4641 - field Name of field
1.4642 - range Number(s) of articles
1.4643 - message-id Message-id of article
1.4644 -
1.4645 -
1.4646 -
1.4647 -
1.4648 -Feather Standards Track [Page 83]
1.4649 -
1.4650 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4651 -
1.4652 -
1.4653 -8.5.2. Description
1.4654 -
1.4655 - The HDR command provides access to specific fields from an article
1.4656 - specified by message-id, or from a specified article or range of
1.4657 - articles in the currently selected newsgroup. It MAY take the
1.4658 - information directly from the articles or from the overview database.
1.4659 - In the case of headers, an implementation MAY restrict the use of
1.4660 - this command to a specific list of headers or MAY allow it to be used
1.4661 - with any header; it may behave differently when it is used with a
1.4662 - message-id argument and when it is used with a range or no argument.
1.4663 -
1.4664 - The required field argument is the name of a header with the colon
1.4665 - omitted (e.g., "subject") or the name of a metadata item including
1.4666 - the leading colon (e.g., ":bytes"), and is case insensitive.
1.4667 -
1.4668 - The message-id argument indicates a specific article. The range
1.4669 - argument may be any of the following:
1.4670 -
1.4671 - o An article number.
1.4672 -
1.4673 - o An article number followed by a dash to indicate all following.
1.4674 -
1.4675 - o An article number followed by a dash followed by another article
1.4676 - number.
1.4677 -
1.4678 - If neither is specified, the current article number is used.
1.4679 -
1.4680 - If the information is available, it is returned as a multi-line data
1.4681 - block following the 225 response code and contains one line for each
1.4682 - article in the range that exists. (Note that unless the argument is
1.4683 - a range including a dash, there will be exactly one line in the data
1.4684 - block.) The line consists of the article number, a space, and then
1.4685 - the contents of the field. In the case of a header, the header name,
1.4686 - the colon, and the first space after the colon are all omitted.
1.4687 -
1.4688 - If the article is specified by message-id (the first form of the
1.4689 - command), the article number MUST be replaced with zero, except that
1.4690 - if there is a currently selected newsgroup and the article is present
1.4691 - in that group, the server MAY use the article's number in that group.
1.4692 - (See the ARTICLE command (Section 6.2.1) and STAT examples
1.4693 - (Section 6.2.4.3) for more details.) In the other two forms of the
1.4694 - command, the article number MUST be returned.
1.4695 -
1.4696 - Header contents are modified as follows: all CRLF pairs are removed,
1.4697 - and then each TAB is replaced with a single space. (Note that this
1.4698 - is the same transformation as is performed by the OVER command
1.4699 - (Section 8.3.2), and the same comment concerning NUL, CR, and LF
1.4700 - applies.)
1.4701 -
1.4702 -
1.4703 -
1.4704 -Feather Standards Track [Page 84]
1.4705 -
1.4706 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4707 -
1.4708 -
1.4709 - Note the distinction between headers and metadata appearing to have
1.4710 - the same meaning. Headers are always taken unchanged from the
1.4711 - article; metadata are always calculated. For example, a request for
1.4712 - "Lines" returns the contents of the "Lines" header of the specified
1.4713 - articles, if any, no matter whether they accurately state the number
1.4714 - of lines, while a request for ":lines" returns the line count
1.4715 - metadata, which is always the actual number of lines irrespective of
1.4716 - what any header may state.
1.4717 -
1.4718 - If the requested header is not present in the article, or if it is
1.4719 - present but empty, a line for that article is included in the output,
1.4720 - but the header content portion of the line is empty (the space after
1.4721 - the article number MAY be retained or omitted). If the header occurs
1.4722 - in a given article more than once, only the content of the first
1.4723 - occurrence is returned by HDR. If any article number in the provided
1.4724 - range does not exist in the group, no line for that article number is
1.4725 - included in the output.
1.4726 -
1.4727 - If the second argument is a message-id and no such article exists, a
1.4728 - 430 response MUST be returned. If the second argument is a range or
1.4729 - is omitted and the currently selected newsgroup is invalid, a 412
1.4730 - response MUST be returned. If the second argument is a range and no
1.4731 - articles in that number range exist in the currently selected
1.4732 - newsgroup, including the case where the second number is less than
1.4733 - the first one, a 423 response MUST be returned. If the second
1.4734 - argument is omitted and the current article number is invalid, a 420
1.4735 - response MUST be returned.
1.4736 -
1.4737 - A server MAY only allow HDR commands for a limited set of fields; it
1.4738 - may behave differently in this respect for the first (message-id)
1.4739 - form from how it would for the other forms. If so, it MUST respond
1.4740 - with the generic 503 response to attempts to request other fields,
1.4741 - rather than return erroneous results, such as a successful empty
1.4742 - response.
1.4743 -
1.4744 - If HDR uses the overview database and it is inconsistent for the
1.4745 - requested field, the server MAY return what results it can, or it MAY
1.4746 - respond with the generic 503 response. In the latter case, the field
1.4747 - MUST NOT appear in the output from LIST HEADERS.
1.4748 -
1.4749 -
1.4750 -
1.4751 -
1.4752 -
1.4753 -
1.4754 -
1.4755 -
1.4756 -
1.4757 -
1.4758 -
1.4759 -
1.4760 -Feather Standards Track [Page 85]
1.4761 -
1.4762 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4763 -
1.4764 -
1.4765 -8.5.3. Examples
1.4766 -
1.4767 - Example of a successful retrieval of subject lines from a range of
1.4768 - articles (3000235 has no Subject header, and 3000236 is missing):
1.4769 -
1.4770 - [C] GROUP misc.test
1.4771 - [S] 211 1234 3000234 3002322 misc.test
1.4772 - [C] HDR Subject 3000234-3000238
1.4773 - [S] 225 Headers follow
1.4774 - [S] 3000234 I am just a test article
1.4775 - [S] 3000235
1.4776 - [S] 3000237 Re: I am just a test article
1.4777 - [S] 3000238 Ditto
1.4778 - [S] .
1.4779 -
1.4780 - Example of a successful retrieval of line counts from a range of
1.4781 - articles:
1.4782 -
1.4783 - [C] GROUP misc.test
1.4784 - [S] 211 1234 3000234 3002322 misc.test
1.4785 - [C] HDR :lines 3000234-3000238
1.4786 - [S] 225 Headers follow
1.4787 - [S] 3000234 42
1.4788 - [S] 3000235 5
1.4789 - [S] 3000237 11
1.4790 - [S] 3000238 2378
1.4791 - [S] .
1.4792 -
1.4793 - Example of a successful retrieval of the subject line from an article
1.4794 - by message-id:
1.4795 -
1.4796 - [C] GROUP misc.test
1.4797 - [S] 211 1234 3000234 3002322 misc.test
1.4798 - [C] HDR subject <i.am.a.test.article@example.com>
1.4799 - [S] 225 Header information follows
1.4800 - [S] 0 I am just a test article
1.4801 - [S] .
1.4802 -
1.4803 - Example of a successful retrieval of the subject line from the
1.4804 - current article:
1.4805 -
1.4806 - [C] GROUP misc.test
1.4807 - [S] 211 1234 3000234 3002322 misc.test
1.4808 - [C] HDR subject
1.4809 - [S] 225 Header information follows
1.4810 - [S] 3000234 I am just a test article
1.4811 - [S] .
1.4812 -
1.4813 -
1.4814 -
1.4815 -
1.4816 -Feather Standards Track [Page 86]
1.4817 -
1.4818 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4819 -
1.4820 -
1.4821 - Example of an unsuccessful retrieval of a header from an article by
1.4822 - message-id:
1.4823 -
1.4824 - [C] HDR subject <i.am.not.there@example.com>
1.4825 - [S] 430 No Such Article Found
1.4826 -
1.4827 - Example of an unsuccessful retrieval of headers from articles by
1.4828 - number because no newsgroup was selected first:
1.4829 -
1.4830 - [Assumes currently selected newsgroup is invalid.]
1.4831 - [C] HDR subject 300256-
1.4832 - [S] 412 No newsgroup selected
1.4833 -
1.4834 - Example of an unsuccessful retrieval of headers because the currently
1.4835 - selected newsgroup is empty:
1.4836 -
1.4837 - [C] GROUP example.empty.newsgroup
1.4838 - [S] 211 0 0 0 example.empty.newsgroup
1.4839 - [C] HDR subject 1-
1.4840 - [S] 423 No articles in that range
1.4841 -
1.4842 - Example of an unsuccessful retrieval of headers because the server
1.4843 - does not allow HDR commands for that header:
1.4844 -
1.4845 - [C] GROUP misc.test
1.4846 - [S] 211 1234 3000234 3002322 misc.test
1.4847 - [C] HDR Content-Type 3000234-3000238
1.4848 - [S] 503 HDR not permitted on Content-Type
1.4849 -
1.4850 -8.6. LIST HEADERS
1.4851 -
1.4852 -8.6.1. Usage
1.4853 -
1.4854 - Indicating capability: HDR
1.4855 -
1.4856 - Syntax
1.4857 - LIST HEADERS [MSGID|RANGE]
1.4858 -
1.4859 - Responses
1.4860 - 215 Field list follows (multi-line)
1.4861 -
1.4862 - Parameters
1.4863 - MSGID Requests list for access by message-id
1.4864 - RANGE Requests list for access by range
1.4865 -
1.4866 -
1.4867 -
1.4868 -
1.4869 -
1.4870 -
1.4871 -
1.4872 -Feather Standards Track [Page 87]
1.4873 -
1.4874 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4875 -
1.4876 -
1.4877 -8.6.2. Description
1.4878 -
1.4879 - See Section 7.6.1 for general requirements of the LIST command.
1.4880 -
1.4881 - The LIST HEADERS command returns a list of fields that may be
1.4882 - retrieved using the HDR command.
1.4883 -
1.4884 - The information is returned as a multi-line data block following the
1.4885 - 215 response code and contains one line for each field name
1.4886 - (excluding the trailing colon for headers and including the leading
1.4887 - colon for metadata items). If the implementation allows any header
1.4888 - to be retrieved, it MUST NOT include any header names in the list but
1.4889 - MUST include the special entry ":" (a single colon on its own). It
1.4890 - MUST still explicitly list any metadata items that are available.
1.4891 - The order of items in the list is not significant; the server need
1.4892 - not even consistently return the same order. The list MAY be empty
1.4893 - (though in this circumstance there is little point in providing the
1.4894 - HDR command).
1.4895 -
1.4896 - An implementation that also supports the OVER command SHOULD at least
1.4897 - permit all the headers and metadata items listed in the output from
1.4898 - the LIST OVERVIEW.FMT command.
1.4899 -
1.4900 - If the server treats the first form of the HDR command (message-id
1.4901 - specified) differently from the other two forms (range specified or
1.4902 - current article number used) in respect of which headers or metadata
1.4903 - items are available, then the following apply:
1.4904 -
1.4905 - o If the MSGID argument is specified, the results MUST be those
1.4906 - available for the first form of the HDR command.
1.4907 -
1.4908 - o If the RANGE argument is specified, the results MUST be those
1.4909 - available for the second and third forms of the HDR command.
1.4910 -
1.4911 - o If no argument is specified, the results MUST be those available
1.4912 - in all forms of the HDR command (that is, it MUST only list those
1.4913 - items listed in both the previous cases).
1.4914 -
1.4915 - If the server does not treat the various forms differently, then it
1.4916 - MUST ignore any argument and always produce the same results (though
1.4917 - not necessarily always in the same order).
1.4918 -
1.4919 - If the HDR command is not implemented, the meaning of the output from
1.4920 - this command is not specified, but it must still meet the above
1.4921 - syntactic requirements.
1.4922 -
1.4923 -
1.4924 -
1.4925 -
1.4926 -
1.4927 -
1.4928 -Feather Standards Track [Page 88]
1.4929 -
1.4930 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4931 -
1.4932 -
1.4933 -8.6.3. Examples
1.4934 -
1.4935 - Example of an implementation providing access to only a few headers:
1.4936 -
1.4937 - [C] LIST HEADERS
1.4938 - [S] 215 headers supported:
1.4939 - [S] Subject
1.4940 - [S] Message-ID
1.4941 - [S] Xref
1.4942 - [S] .
1.4943 -
1.4944 - Example of an implementation providing access to the same fields as
1.4945 - the first example in Section 8.4.3:
1.4946 -
1.4947 - [C] CAPABILITIES
1.4948 - [S] 101 Capability list:
1.4949 - [S] VERSION 2
1.4950 - [S] READER
1.4951 - [S] OVER
1.4952 - [S] HDR
1.4953 - [S] LIST ACTIVE NEWSGROUPS HEADERS OVERVIEW.FMT
1.4954 - [S] .
1.4955 - [C] LIST HEADERS
1.4956 - [S] 215 headers and metadata items supported:
1.4957 - [S] Date
1.4958 - [S] Distribution
1.4959 - [S] From
1.4960 - [S] Message-ID
1.4961 - [S] References
1.4962 - [S] Subject
1.4963 - [S] Xref
1.4964 - [S] :bytes
1.4965 - [S] :lines
1.4966 - [S] .
1.4967 -
1.4968 - Example of an implementation providing access to all headers:
1.4969 -
1.4970 - [C] LIST HEADERS
1.4971 - [S] 215 metadata items supported:
1.4972 - [S] :
1.4973 - [S] :lines
1.4974 - [S] :bytes
1.4975 - [S] :x-article-number
1.4976 - [S] .
1.4977 -
1.4978 -
1.4979 -
1.4980 -
1.4981 -
1.4982 -
1.4983 -
1.4984 -Feather Standards Track [Page 89]
1.4985 -
1.4986 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.4987 -
1.4988 -
1.4989 - Example of an implementation distinguishing the first form of the HDR
1.4990 - command from the other two forms:
1.4991 -
1.4992 - [C] LIST HEADERS RANGE
1.4993 - [S] 215 metadata items supported:
1.4994 - [S] :
1.4995 - [S] :lines
1.4996 - [S] :bytes
1.4997 - [S] .
1.4998 - [C] LIST HEADERS MSGID
1.4999 - [S] 215 headers and metadata items supported:
1.5000 - [S] Date
1.5001 - [S] Distribution
1.5002 - [S] From
1.5003 - [S] Message-ID
1.5004 - [S] References
1.5005 - [S] Subject
1.5006 - [S] :lines
1.5007 - [S] :bytes
1.5008 - [S] :x-article-number
1.5009 - [S] .
1.5010 - [C] LIST HEADERS
1.5011 - [S] 215 headers and metadata items supported:
1.5012 - [S] Date
1.5013 - [S] Distribution
1.5014 - [S] From
1.5015 - [S] Message-ID
1.5016 - [S] References
1.5017 - [S] Subject
1.5018 - [S] :lines
1.5019 - [S] :bytes
1.5020 - [S] .
1.5021 -
1.5022 - Note that :x-article-number does not appear in the last set of
1.5023 - output.
1.5024 -
1.5025 -9. Augmented BNF Syntax for NNTP
1.5026 -
1.5027 -9.1. Introduction
1.5028 -
1.5029 - Each of the following sections describes the syntax of a major
1.5030 - element of NNTP. This syntax extends and refines the descriptions
1.5031 - elsewhere in this specification and should be given precedence when
1.5032 - resolving apparent conflicts. Note that ABNF [RFC4234] strings are
1.5033 - case insensitive. Non-terminals used in several places are defined
1.5034 - in a separate section at the end.
1.5035 -
1.5036 -
1.5037 -
1.5038 -
1.5039 -
1.5040 -Feather Standards Track [Page 90]
1.5041 -
1.5042 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5043 -
1.5044 -
1.5045 - Between them, the non-terminals <command-line>, <command-datastream>,
1.5046 - <command-continuation>, and <response> specify the text that flows
1.5047 - between client and server. A consistent naming scheme is used in
1.5048 - this document for the non-terminals relating to each command, and
1.5049 - SHOULD be used by the specification of registered extensions.
1.5050 -
1.5051 - For each command, the sequence is as follows:
1.5052 -
1.5053 - o The client sends an instance of <command-line>; the syntax for the
1.5054 - EXAMPLE command is <example-command>.
1.5055 -
1.5056 - o If the client is one that immediately streams data, it sends an
1.5057 - instance of <command-datastream>; the syntax for the EXAMPLE
1.5058 - command is <example-datastream>.
1.5059 -
1.5060 - o The server sends an instance of <response>.
1.5061 -
1.5062 - * The initial response line is independent of the command that
1.5063 - generated it; if the 000 response has arguments, the syntax of
1.5064 - the initial line is <response-000-content>.
1.5065 -
1.5066 - * If the response is multi-line, the initial line is followed by
1.5067 - a <multi-line-data-block>. The syntax for the contents of this
1.5068 - block after "dot-stuffing" has been removed is (for the 000
1.5069 - response to the EXAMPLE command) <example-000-ml-content> and
1.5070 - is an instance of <multi-line-response-content>.
1.5071 -
1.5072 - o While the latest response is one that indicates more data is
1.5073 - required (in general, a 3xx response):
1.5074 -
1.5075 - * the client sends an instance of <command-continuation>; the
1.5076 - syntax for the EXAMPLE continuation following a 333 response is
1.5077 - <example-333-continuation>;
1.5078 -
1.5079 - * the server sends another instance of <response>, as above.
1.5080 -
1.5081 - (There are no commands in this specification that immediately stream
1.5082 - data, but this non-terminal is defined for the convenience of
1.5083 - extensions.)
1.5084 -
1.5085 -
1.5086 -
1.5087 -
1.5088 -
1.5089 -
1.5090 -
1.5091 -
1.5092 -
1.5093 -
1.5094 -
1.5095 -
1.5096 -Feather Standards Track [Page 91]
1.5097 -
1.5098 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5099 -
1.5100 -
1.5101 -9.2. Commands
1.5102 -
1.5103 - This syntax defines the non-terminal <command-line>, which represents
1.5104 - what is sent from the client to the server (see section 3.1 for
1.5105 - limits on lengths).
1.5106 -
1.5107 - command-line = command EOL
1.5108 - command = X-command
1.5109 - X-command = keyword *(WS token)
1.5110 -
1.5111 - command =/ article-command /
1.5112 - body-command /
1.5113 - capabilities-command /
1.5114 - date-command /
1.5115 - group-command /
1.5116 - hdr-command /
1.5117 - head-command /
1.5118 - help-command /
1.5119 - ihave-command /
1.5120 - last-command /
1.5121 - list-command /
1.5122 - listgroup-command /
1.5123 - mode-reader-command /
1.5124 - newgroups-command /
1.5125 - newnews-command /
1.5126 - next-command /
1.5127 - over-command /
1.5128 - post-command /
1.5129 - quit-command /
1.5130 - stat-command
1.5131 -
1.5132 - article-command = "ARTICLE" [WS article-ref]
1.5133 - body-command = "BODY" [WS article-ref]
1.5134 - capabilities-command = "CAPABILITIES" [WS keyword]
1.5135 - date-command = "DATE"
1.5136 - group-command = "GROUP" [WS newsgroup-name]
1.5137 - hdr-command = "HDR" WS header-meta-name [WS range-ref]
1.5138 - head-command = "HEAD" [WS article-ref]
1.5139 - help-command = "HELP"
1.5140 - ihave-command = "IHAVE" WS message-id
1.5141 - last-command = "LAST"
1.5142 - list-command = "LIST" [WS list-arguments]
1.5143 - listgroup-command = "LISTGROUP" [WS newsgroup-name [WS range]]
1.5144 - mode-reader-command = "MODE" WS "READER"
1.5145 - newgroups-command = "NEWGROUPS" WS date-time
1.5146 - newnews-command = "NEWNEWS" WS wildmat WS date-time
1.5147 - next-command = "NEXT"
1.5148 - over-command = "OVER" [WS range-ref]
1.5149 -
1.5150 -
1.5151 -
1.5152 -Feather Standards Track [Page 92]
1.5153 -
1.5154 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5155 -
1.5156 -
1.5157 - post-command = "POST"
1.5158 - quit-command = "QUIT"
1.5159 - stat-command = "STAT" [WS article-ref]
1.5160 -
1.5161 - article-ref = article-number / message-id
1.5162 - date = date2y / date4y
1.5163 - date4y = 4DIGIT 2DIGIT 2DIGIT
1.5164 - date2y = 2DIGIT 2DIGIT 2DIGIT
1.5165 - date-time = date WS time [WS "GMT"]
1.5166 - header-meta-name = header-name / metadata-name
1.5167 - list-arguments = keyword [WS token]
1.5168 - metadata-name = ":" 1*A-NOTCOLON
1.5169 - range = article-number ["-" [article-number]]
1.5170 - range-ref = range / message-id
1.5171 - time = 2DIGIT 2DIGIT 2DIGIT
1.5172 -
1.5173 -9.3. Command Continuation
1.5174 -
1.5175 - This syntax defines the further material sent by the client in the
1.5176 - case of multi-stage commands and those that stream data.
1.5177 -
1.5178 - command-datastream = UNDEFINED
1.5179 - ; not used, provided as a hook for extensions
1.5180 - command-continuation = ihave-335-continuation /
1.5181 - post-340-continuation
1.5182 -
1.5183 - ihave-335-continuation = encoded-article
1.5184 - post-340-continuation = encoded-article
1.5185 -
1.5186 - encoded-article = multi-line-data-block
1.5187 - ; after undoing the "dot-stuffing", this MUST match <article>
1.5188 -
1.5189 -9.4. Responses
1.5190 -
1.5191 -9.4.1. Generic Responses
1.5192 -
1.5193 - This syntax defines the non-terminal <response>, which represents the
1.5194 - generic form of responses; that is, what is sent from the server to
1.5195 - the client in response to a <command> or a <command-continuation>.
1.5196 -
1.5197 - response = simple-response / multi-line-response
1.5198 - simple-response = initial-response-line
1.5199 - multi-line-response = initial-response-line multi-line-data-block
1.5200 -
1.5201 - initial-response-line =
1.5202 - initial-response-content [SP trailing-comment] CRLF
1.5203 - initial-response-content = X-initial-response-content
1.5204 - X-initial-response-content = 3DIGIT *(SP response-argument)
1.5205 -
1.5206 -
1.5207 -
1.5208 -Feather Standards Track [Page 93]
1.5209 -
1.5210 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5211 -
1.5212 -
1.5213 - response-argument = 1*A-CHAR
1.5214 - trailing-comment = *U-CHAR
1.5215 -
1.5216 -9.4.2. Initial Response Line Contents
1.5217 -
1.5218 - This syntax defines the specific initial response lines for the
1.5219 - various commands in this specification (see section 3.1 for limits on
1.5220 - lengths). Only those response codes with arguments are listed.
1.5221 -
1.5222 - initial-response-content =/ response-111-content /
1.5223 - response-211-content /
1.5224 - response-220-content /
1.5225 - response-221-content /
1.5226 - response-222-content /
1.5227 - response-223-content /
1.5228 - response-401-content
1.5229 -
1.5230 - response-111-content = "111" SP date4y time
1.5231 - response-211-content = "211" 3(SP article-number) SP newsgroup-name
1.5232 - response-220-content = "220" SP article-number SP message-id
1.5233 - response-221-content = "221" SP article-number SP message-id
1.5234 - response-222-content = "222" SP article-number SP message-id
1.5235 - response-223-content = "223" SP article-number SP message-id
1.5236 - response-401-content = "401" SP capability-label
1.5237 -
1.5238 -9.4.3. Multi-line Response Contents
1.5239 -
1.5240 - This syntax defines the content of the various multi-line responses;
1.5241 - more precisely, it defines the part of the response in the multi-line
1.5242 - data block after any "dot-stuffing" has been undone. The numeric
1.5243 - portion of each non-terminal name indicates the response code that is
1.5244 - followed by this data.
1.5245 -
1.5246 - multi-line-response-content = article-220-ml-content /
1.5247 - body-222-ml-content /
1.5248 - capabilities-101-ml-content /
1.5249 - hdr-225-ml-content /
1.5250 - head-221-ml-content /
1.5251 - help-100-ml-content /
1.5252 - list-215-ml-content /
1.5253 - listgroup-211-ml-content /
1.5254 - newgroups-231-ml-content /
1.5255 - newnews-230-ml-content /
1.5256 - over-224-ml-content
1.5257 -
1.5258 - article-220-ml-content = article
1.5259 - body-222-ml-content = body
1.5260 - capabilities-101-ml-content = version-line CRLF
1.5261 -
1.5262 -
1.5263 -
1.5264 -Feather Standards Track [Page 94]
1.5265 -
1.5266 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5267 -
1.5268 -
1.5269 - *(capability-line CRLF)
1.5270 - hdr-225-ml-content = *(article-number SP hdr-content CRLF)
1.5271 - head-221-ml-content = 1*header
1.5272 - help-100-ml-content = *(*U-CHAR CRLF)
1.5273 - list-215-ml-content = list-content
1.5274 - listgroup-211-ml-content = *(article-number CRLF)
1.5275 - newgroups-231-ml-content = active-groups-list
1.5276 - newnews-230-ml-content = *(message-id CRLF)
1.5277 - over-224-ml-content = *(article-number over-content CRLF)
1.5278 -
1.5279 - active-groups-list = *(newsgroup-name SPA article-number
1.5280 - SPA article-number SPA newsgroup-status CRLF)
1.5281 - hdr-content = *S-NONTAB
1.5282 - hdr-n-content = [(header-name ":" / metadata-name) SP hdr-content]
1.5283 - list-content = body
1.5284 - newsgroup-status = %x79 / %x6E / %x6D / private-status
1.5285 - over-content = 1*6(TAB hdr-content) /
1.5286 - 7(TAB hdr-content) *(TAB hdr-n-content)
1.5287 - private-status = token ; except the values in newsgroup-status
1.5288 -
1.5289 -9.5. Capability Lines
1.5290 -
1.5291 - This syntax defines the generic form of a capability line in the
1.5292 - capabilities list (see Section 3.3.1).
1.5293 -
1.5294 - capability-line = capability-entry
1.5295 - capability-entry = X-capability-entry
1.5296 - X-capability-entry = capability-label *(WS capability-argument)
1.5297 - capability-label = keyword
1.5298 - capability-argument = token
1.5299 -
1.5300 - This syntax defines the specific capability entries for the
1.5301 - capabilities in this specification.
1.5302 -
1.5303 - capability-entry =/
1.5304 - hdr-capability /
1.5305 - ihave-capability /
1.5306 - implementation-capability /
1.5307 - list-capability /
1.5308 - mode-reader-capability /
1.5309 - newnews-capability /
1.5310 - over-capability /
1.5311 - post-capability /
1.5312 - reader-capability
1.5313 -
1.5314 - hdr-capability = "HDR"
1.5315 - ihave-capability = "IHAVE"
1.5316 - implementation-capability = "IMPLEMENTATION" *(WS token)
1.5317 -
1.5318 -
1.5319 -
1.5320 -Feather Standards Track [Page 95]
1.5321 -
1.5322 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5323 -
1.5324 -
1.5325 - list-capability = "LIST" 1*(WS keyword)
1.5326 - mode-reader-capability = "MODE-READER"
1.5327 - newnews-capability = "NEWNEWS"
1.5328 - over-capability = "OVER" [WS "MSGID"]
1.5329 - post-capability = "POST"
1.5330 - reader-capability = "READER"
1.5331 -
1.5332 - version-line = "VERSION" 1*(WS version-number)
1.5333 - version-number = nzDIGIT *5DIGIT
1.5334 -
1.5335 -9.6. LIST Variants
1.5336 -
1.5337 - This section defines more specifically the keywords for the LIST
1.5338 - command and the syntax of the corresponding response contents.
1.5339 -
1.5340 - ; active
1.5341 - list-arguments =/ "ACTIVE" [WS wildmat]
1.5342 - list-content =/ list-active-content
1.5343 - list-active-content = active-groups-list
1.5344 -
1.5345 -
1.5346 - ; active.times
1.5347 - list-arguments =/ "ACTIVE.TIMES" [WS wildmat]
1.5348 - list-content =/ list-active-times-content
1.5349 - list-active-times-content =
1.5350 - *(newsgroup-name SPA 1*DIGIT SPA newsgroup-creator CRLF)
1.5351 - newsgroup-creator = U-TEXT
1.5352 -
1.5353 -
1.5354 - ; distrib.pats
1.5355 - list-arguments =/ "DISTRIB.PATS"
1.5356 - list-content =/ list-distrib-pats-content
1.5357 - list-distrib-pats-content =
1.5358 - *(1*DIGIT ":" wildmat ":" distribution CRLF)
1.5359 - distribution = token
1.5360 -
1.5361 -
1.5362 - ; headers
1.5363 - list-arguments =/ "HEADERS" [WS ("MSGID" / "RANGE")]
1.5364 - list-content =/ list-headers-content
1.5365 - list-headers-content = *(header-meta-name CRLF) /
1.5366 - *((metadata-name / ":") CRLF)
1.5367 -
1.5368 -
1.5369 - ; newsgroups
1.5370 - list-arguments =/ "NEWSGROUPS" [WS wildmat]
1.5371 - list-content =/ list-newsgroups-content
1.5372 - list-newsgroups-content =
1.5373 -
1.5374 -
1.5375 -
1.5376 -Feather Standards Track [Page 96]
1.5377 -
1.5378 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5379 -
1.5380 -
1.5381 - *(newsgroup-name WS newsgroup-description CRLF)
1.5382 - newsgroup-description = S-TEXT
1.5383 -
1.5384 -
1.5385 - ; overview.fmt
1.5386 - list-arguments =/ "OVERVIEW.FMT"
1.5387 - list-content =/ list-overview-fmt-content
1.5388 - list-overview-fmt-content = "Subject:" CRLF
1.5389 - "From:" CRLF
1.5390 - "Date:" CRLF
1.5391 - "Message-ID:" CRLF
1.5392 - "References:" CRLF
1.5393 - ( ":bytes" CRLF ":lines" / "Bytes:" CRLF "Lines:") CRLF
1.5394 - *((header-name ":full" / metadata-name) CRLF)
1.5395 -
1.5396 -9.7. Articles
1.5397 -
1.5398 - This syntax defines the non-terminal <article>, which represents the
1.5399 - format of an article as described in Section 3.6.
1.5400 -
1.5401 - article = 1*header CRLF body
1.5402 - header = header-name ":" [CRLF] SP header-content CRLF
1.5403 - header-content = *(S-CHAR / [CRLF] WS)
1.5404 - body = *(*B-CHAR CRLF)
1.5405 -
1.5406 -9.8. General Non-terminals
1.5407 -
1.5408 - These non-terminals are used at various places in the syntax and are
1.5409 - collected here for convenience. A few of these non-terminals are not
1.5410 - used in this specification but are provided for the consistency and
1.5411 - convenience of extension authors.
1.5412 -
1.5413 - multi-line-data-block = content-lines termination
1.5414 - content-lines = *([content-text] CRLF)
1.5415 - content-text = (".." / B-NONDOT) *B-CHAR
1.5416 - termination = "." CRLF
1.5417 -
1.5418 - article-number = 1*16DIGIT
1.5419 - header-name = 1*A-NOTCOLON
1.5420 - keyword = ALPHA 2*(ALPHA / DIGIT / "." / "-")
1.5421 - message-id = "<" 1*248A-NOTGT ">"
1.5422 - newsgroup-name = 1*wildmat-exact
1.5423 - token = 1*P-CHAR
1.5424 -
1.5425 - wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
1.5426 - wildmat-pattern = 1*wildmat-item
1.5427 - wildmat-item = wildmat-exact / wildmat-wild
1.5428 - wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
1.5429 -
1.5430 -
1.5431 -
1.5432 -Feather Standards Track [Page 97]
1.5433 -
1.5434 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5435 -
1.5436 -
1.5437 - UTF8-non-ascii ; exclude ! * , ? [ \ ]
1.5438 - wildmat-wild = "*" / "?"
1.5439 -
1.5440 - base64 = *(4base64-char) [base64-terminal]
1.5441 - base64-char = UPPER / LOWER / DIGIT / "+" / "/"
1.5442 - base64-terminal = 2base64-char "==" / 3base64-char "="
1.5443 -
1.5444 - ; Assorted special character sets
1.5445 - ; A- means based on US-ASCII, excluding controls and SP
1.5446 - ; P- means based on UTF-8, excluding controls and SP
1.5447 - ; U- means based on UTF-8, excluding NUL CR and LF
1.5448 - ; B- means based on bytes, excluding NUL CR and LF
1.5449 - A-CHAR = %x21-7E
1.5450 - A-NOTCOLON = %x21-39 / %x3B-7E ; exclude ":"
1.5451 - A-NOTGT = %x21-3D / %x3F-7E ; exclude ">"
1.5452 - P-CHAR = A-CHAR / UTF8-non-ascii
1.5453 - U-CHAR = CTRL / TAB / SP / A-CHAR / UTF8-non-ascii
1.5454 - U-NONTAB = CTRL / SP / A-CHAR / UTF8-non-ascii
1.5455 - U-TEXT = P-CHAR *U-CHAR
1.5456 - B-CHAR = CTRL / TAB / SP / %x21-FF
1.5457 - B-NONDOT = CTRL / TAB / SP / %x21-2D / %x2F-FF ; exclude "."
1.5458 -
1.5459 - ALPHA = UPPER / LOWER ; use only when case-insensitive
1.5460 - CR = %x0D
1.5461 - CRLF = CR LF
1.5462 - CTRL = %x01-08 / %x0B-0C / %x0E-1F
1.5463 - DIGIT = %x30-39
1.5464 - nzDIGIT = %x31-39
1.5465 - EOL = *(SP / TAB) CRLF
1.5466 - LF = %x0A
1.5467 - LOWER = %x61-7A
1.5468 - SP = %x20
1.5469 - SPA = 1*SP
1.5470 - TAB = %x09
1.5471 - UPPER = %x41-5A
1.5472 - UTF8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4
1.5473 - UTF8-2 = %xC2-DF UTF8-tail
1.5474 - UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2UTF8-tail /
1.5475 - %xED %x80-9F UTF8-tail / %xEE-EF 2UTF8-tail
1.5476 - UTF8-4 = %xF0 %x90-BF 2UTF8-tail / %xF1-F3 3UTF8-tail /
1.5477 - %xF4 %x80-8F 2UTF8-tail
1.5478 - UTF8-tail = %x80-BF
1.5479 - WS = 1*(SP / TAB)
1.5480 -
1.5481 - The following non-terminals require special consideration. They
1.5482 - represent situations where material SHOULD be restricted to UTF-8,
1.5483 - but implementations MUST be able to cope with other character
1.5484 - encodings. Therefore, there are two sets of definitions for them.
1.5485 -
1.5486 -
1.5487 -
1.5488 -Feather Standards Track [Page 98]
1.5489 -
1.5490 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5491 -
1.5492 -
1.5493 - Implementations MUST accept any content that meets this syntax:
1.5494 -
1.5495 - S-CHAR = %x21-FF
1.5496 - S-NONTAB = CTRL / SP / S-CHAR
1.5497 - S-TEXT = (CTRL / S-CHAR) *B-CHAR
1.5498 -
1.5499 - and MAY pass such content on unaltered.
1.5500 -
1.5501 - When generating new content or re-encoding existing content,
1.5502 - implementations SHOULD conform to this syntax:
1.5503 -
1.5504 - S-CHAR = P-CHAR
1.5505 - S-NONTAB = U-NONTAB
1.5506 - S-TEXT = U-TEXT
1.5507 -
1.5508 -9.9. Extensions and Validation
1.5509 -
1.5510 - The specification of a registered extension MUST include formal
1.5511 - syntax that defines additional forms for the following non-terminals:
1.5512 -
1.5513 - command
1.5514 - for each new command other than a variant of the LIST command -
1.5515 - the syntax of each command MUST be compatible with the definition
1.5516 - of <X-command>;
1.5517 -
1.5518 - command-datastream
1.5519 - for each new command that immediately streams data;
1.5520 -
1.5521 - command-continuation
1.5522 - for each new command that sends further material after the initial
1.5523 - command line - the syntax of each continuation MUST be exactly
1.5524 - what is sent to the server, including any escape mechanisms such
1.5525 - as "dot-stuffing";
1.5526 -
1.5527 - initial-response-content
1.5528 - for each new response code that has arguments - the syntax of each
1.5529 - response MUST be compatible with the definition of <X-initial-
1.5530 - response-content>;
1.5531 -
1.5532 - multi-line-response-content
1.5533 - for each new response code that has a multi-line response - the
1.5534 - syntax MUST show the response after the lines containing the
1.5535 - response code and the terminating octet have been removed and any
1.5536 - "dot-stuffing" undone;
1.5537 -
1.5538 - capability-entry
1.5539 - for each new capability label - the syntax of each entry MUST be
1.5540 - compatible with the definition of <X-capability-entry>;
1.5541 -
1.5542 -
1.5543 -
1.5544 -Feather Standards Track [Page 99]
1.5545 -
1.5546 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5547 -
1.5548 -
1.5549 - list-arguments
1.5550 - for each new variant of the LIST command - the syntax of each
1.5551 - entry MUST be compatible with the definition of <X-command>;
1.5552 -
1.5553 - list-content
1.5554 - for each new variant of the LIST command - the syntax MUST show
1.5555 - the response after the lines containing the 215 response code and
1.5556 - the terminating octet have been removed and any "dot-stuffing"
1.5557 - undone.
1.5558 -
1.5559 - The =/ notation of ABNF [RFC4234] and the naming conventions
1.5560 - described in Section 9.1 SHOULD be used for this.
1.5561 -
1.5562 - When the syntax in this specification, or syntax based on it, is
1.5563 - validated, it should be noted that:
1.5564 -
1.5565 - o the non-terminals <command-line>, <command-datastream>,
1.5566 - <command-continuation>, <response>, and
1.5567 - <multi-line-response-content> describe basic concepts of the
1.5568 - protocol and are not referred to by any other rule;
1.5569 -
1.5570 - o the non-terminal <base64> is provided for the convenience of
1.5571 - extension authors and is not referred to by any rule in this
1.5572 - specification;
1.5573 -
1.5574 - o for the reasons given above, the non-terminals <S-CHAR>,
1.5575 - <S-NONTAB>, and <S-TEXT> each have two definitions; and
1.5576 -
1.5577 - o the non-terminal <UNDEFINED> is deliberately not defined.
1.5578 -
1.5579 -10. Internationalisation Considerations
1.5580 -
1.5581 -10.1. Introduction and Historical Situation
1.5582 -
1.5583 - RFC 977 [RFC977] was written at a time when internationalisation was
1.5584 - not seen as a significant issue. As such, it was written on the
1.5585 - assumption that all communication would be in ASCII and use only a
1.5586 - 7-bit transport layer, although in practice just about all known
1.5587 - implementations are 8-bit clean.
1.5588 -
1.5589 - Since then, Usenet and NNTP have spread throughout the world. In the
1.5590 - absence of standards for handling the issues of language and
1.5591 - character sets, countries, newsgroup hierarchies, and individuals
1.5592 - have found a variety of solutions that work for them but that are not
1.5593 - necessarily appropriate elsewhere. For example, some have adopted a
1.5594 - default 8-bit character set appropriate to their needs (such as
1.5595 - ISO/IEC 8859-1 in Western Europe or KOI-8 in Russia), others have
1.5596 - used ASCII (either US-ASCII or national variants) in headers but
1.5597 -
1.5598 -
1.5599 -
1.5600 -Feather Standards Track [Page 100]
1.5601 -
1.5602 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5603 -
1.5604 -
1.5605 - local 16-bit character sets in article bodies, and still others have
1.5606 - gone for a combination of MIME [RFC2045] and UTF-8. With the
1.5607 - increased use of MIME in email, it is becoming more common to find
1.5608 - NNTP articles containing MIME headers that identify the character set
1.5609 - of the body, but this is far from universal.
1.5610 -
1.5611 - The resulting confusion does not help interoperability.
1.5612 -
1.5613 - One point that has been generally accepted is that articles can
1.5614 - contain octets with the top bit set, and NNTP is only expected to
1.5615 - operate on 8-bit clean transport paths.
1.5616 -
1.5617 -10.2. This Specification
1.5618 -
1.5619 - Part of the role of this present specification is to eliminate this
1.5620 - confusion and promote interoperability as far as possible. At the
1.5621 - same time, it is necessary to accept the existence of the present
1.5622 - situation and not break existing implementations and arrangements
1.5623 - gratuitously, even if they are less than optimal. Therefore, the
1.5624 - current practice described above has been taken into consideration in
1.5625 - producing this specification.
1.5626 -
1.5627 - This specification extends NNTP from US-ASCII [ANSI1986] to UTF-8
1.5628 - [RFC3629]. Except in the two areas discussed below, UTF-8 (which is
1.5629 - a superset of US-ASCII) is mandatory, and implementations MUST NOT
1.5630 - use any other encoding.
1.5631 -
1.5632 - Firstly, the use of MIME for article headers and bodies is strongly
1.5633 - recommended. However, given widely divergent existing practices, an
1.5634 - attempt to require a particular encoding and tagging standard would
1.5635 - be premature at this time. Accordingly, this specification allows
1.5636 - the use of arbitrary 8-bit data in articles subject to the following
1.5637 - requirements and recommendations.
1.5638 -
1.5639 - o The names of headers (e.g., "From" or "Subject") MUST be in
1.5640 - US-ASCII.
1.5641 -
1.5642 - o Header values SHOULD use US-ASCII or an encoding based on it, such
1.5643 - as RFC 2047 [RFC2047], until such time as another approach has
1.5644 - been standardised. At present, 8-bit encodings (including UTF-8)
1.5645 - SHOULD NOT be used because they are likely to cause
1.5646 - interoperability problems.
1.5647 -
1.5648 - o The character set of article bodies SHOULD be indicated in the
1.5649 - article headers, and this SHOULD be done in accordance with MIME.
1.5650 -
1.5651 - o Where an article is obtained from an external source, an
1.5652 - implementation MAY pass it on and derive data from it (such as the
1.5653 -
1.5654 -
1.5655 -
1.5656 -Feather Standards Track [Page 101]
1.5657 -
1.5658 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5659 -
1.5660 -
1.5661 - response to the HDR command), even though the article or the data
1.5662 - does not meet the above requirements. Implementations MUST
1.5663 - transfer such articles and data correctly and unchanged; they MUST
1.5664 - NOT attempt to convert or re-encode the article or derived data.
1.5665 - (Nevertheless, a client or server MAY elect not to post or forward
1.5666 - the article if, after further examination of the article, it deems
1.5667 - it inappropriate to do so.)
1.5668 -
1.5669 - This requirement affects the ARTICLE (Section 6.2.1), BODY
1.5670 - (Section 6.2.3), HDR (Section 8.5), HEAD (Section 6.2.2), IHAVE
1.5671 - (Section 6.3.2), OVER (Section 8.3), and POST (Section 6.3.1)
1.5672 - commands.
1.5673 -
1.5674 - Secondly, the following requirements are placed on the newsgroups
1.5675 - list returned by the LIST NEWSGROUPS command (Section 7.6.6):
1.5676 -
1.5677 - o Although this specification allows UTF-8 for newsgroup names, they
1.5678 - SHOULD be restricted to US-ASCII until a successor to RFC 1036
1.5679 - [RFC1036] standardises another approach. 8-bit encodings SHOULD
1.5680 - NOT be used because they are likely to cause interoperability
1.5681 - problems.
1.5682 -
1.5683 - o The newsgroup description SHOULD be in US-ASCII or UTF-8 unless
1.5684 - and until a successor to RFC 1036 standardises other encoding
1.5685 - arrangements. 8-bit encodings other than UTF-8 SHOULD NOT be used
1.5686 - because they are likely to cause interoperability problems.
1.5687 -
1.5688 - o Implementations that obtain this data from an external source MUST
1.5689 - handle it correctly even if it does not meet the above
1.5690 - requirements. Implementations (in particular, clients) MUST
1.5691 - handle such data correctly.
1.5692 -
1.5693 -10.3. Outstanding Issues
1.5694 -
1.5695 - While the primary use of NNTP is for transmitting articles that
1.5696 - conform to RFC 1036 (Netnews articles), it is also used for other
1.5697 - formats (see Appendix A). It is therefore most appropriate that
1.5698 - internationalisation issues related to article formats be addressed
1.5699 - in the relevant specifications. For Netnews articles, this is any
1.5700 - successor to RFC 1036. For email messages, it is RFC 2822 [RFC2822].
1.5701 -
1.5702 - Of course, any article transmitted via NNTP needs to conform to this
1.5703 - specification as well.
1.5704 -
1.5705 - Restricting newsgroup names to UTF-8 is not a complete solution. In
1.5706 - particular, when new newsgroup names are created or a user is asked
1.5707 - to enter a newsgroup name, some scheme of canonicalisation will need
1.5708 - to take place. This specification does not attempt to define that
1.5709 -
1.5710 -
1.5711 -
1.5712 -Feather Standards Track [Page 102]
1.5713 -
1.5714 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5715 -
1.5716 -
1.5717 - canonicalization; further work is needed in this area, in conjunction
1.5718 - with the article format specifications. Until such specifications
1.5719 - are published, implementations SHOULD match newsgroup names octet by
1.5720 - octet. It is anticipated that any approved scheme will be applied
1.5721 - "at the edges", and therefore octet-by-octet comparison will continue
1.5722 - to apply to most, if not all, uses of newsgroup names in NNTP.
1.5723 -
1.5724 - In the meantime, any implementation experimenting with UTF-8
1.5725 - newsgroup names is strongly cautioned that a future specification may
1.5726 - require that those names be canonicalized when used with NNTP in a
1.5727 - way that is not compatible with their experiments.
1.5728 -
1.5729 - Since the primary use of NNTP is with Netnews, and since newsgroup
1.5730 - descriptions are normally distributed through specially formatted
1.5731 - articles, it is recommended that the internationalisation issues
1.5732 - related to them be addressed in any successor to RFC 1036.
1.5733 -
1.5734 -11. IANA Considerations
1.5735 -
1.5736 - This specification requires IANA to keep a registry of capability
1.5737 - labels. The initial contents of this registry are specified in
1.5738 - Section 3.3.4. As described in Section 3.3.3, labels beginning with
1.5739 - X are reserved for private use, while all other names are expected to
1.5740 - be associated with a specification in an RFC on the standards track
1.5741 - or defining an IESG-approved experimental protocol.
1.5742 -
1.5743 - Different entries in the registry MUST use different capability
1.5744 - labels.
1.5745 -
1.5746 - Different entries in the registry MUST NOT use the same command name.
1.5747 - For this purpose, variants distinguished by a second or subsequent
1.5748 - keyword (e.g., "LIST HEADERS" and "LIST OVERVIEW.FMT") count as
1.5749 - different commands. If there is a need for two extensions to use the
1.5750 - same command, a single harmonised specification MUST be registered.
1.5751 -
1.5752 -12. Security Considerations
1.5753 -
1.5754 - This section is meant to inform application developers, information
1.5755 - providers, and users of the security limitations in NNTP as described
1.5756 - by this document. The discussion does not include definitive
1.5757 - solutions to the problems revealed, though it does make some
1.5758 - suggestions for reducing security risks.
1.5759 -
1.5760 -
1.5761 -
1.5762 -
1.5763 -
1.5764 -
1.5765 -
1.5766 -
1.5767 -
1.5768 -Feather Standards Track [Page 103]
1.5769 -
1.5770 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5771 -
1.5772 -
1.5773 -12.1. Personal and Proprietary Information
1.5774 -
1.5775 - NNTP, because it was created to distribute network news articles,
1.5776 - will forward whatever information is stored in those articles.
1.5777 - Specification of that information is outside this scope of this
1.5778 - document, but it is likely that some personal and/or proprietary
1.5779 - information is available in some of those articles. It is very
1.5780 - important that designers and implementers provide informative
1.5781 - warnings to users so that personal and/or proprietary information in
1.5782 - material that is added automatically to articles (e.g., in headers)
1.5783 - is not disclosed inadvertently. Additionally, effective and easily
1.5784 - understood mechanisms to manage the distribution of news articles
1.5785 - SHOULD be provided to NNTP Server administrators, so that they are
1.5786 - able to report with confidence the likely spread of any particular
1.5787 - set of news articles.
1.5788 -
1.5789 -12.2. Abuse of Server Log Information
1.5790 -
1.5791 - A server is in the position to save session data about a user's
1.5792 - requests that might identify their reading patterns or subjects of
1.5793 - interest. This information is clearly confidential in nature, and
1.5794 - its handling can be constrained by law in certain countries. People
1.5795 - using this protocol to provide data are responsible for ensuring that
1.5796 - such material is not distributed without the permission of any
1.5797 - individuals that are identifiable by the published results.
1.5798 -
1.5799 -12.3. Weak Authentication and Access Control
1.5800 -
1.5801 - There is no user-based or token-based authentication in the basic
1.5802 - NNTP specification. Access is normally controlled by server
1.5803 - configuration files. Those files specify access by using domain
1.5804 - names or IP addresses. However, this specification does permit the
1.5805 - creation of extensions to NNTP for such purposes; one such extension
1.5806 - is [NNTP-AUTH]. While including such mechanisms is optional, doing
1.5807 - so is strongly encouraged.
1.5808 -
1.5809 - Other mechanisms are also available. For example, a proxy server
1.5810 - could be put in place that requires authentication before connecting
1.5811 - via the proxy to the NNTP server.
1.5812 -
1.5813 -12.4. DNS Spoofing
1.5814 -
1.5815 - Many existing NNTP implementations authorize incoming connections by
1.5816 - checking the IP address of that connection against the IP addresses
1.5817 - obtained via DNS lookups of lists of domain names given in local
1.5818 - configuration files. Servers that use this type of authentication
1.5819 - and clients that find a server by doing a DNS lookup of the server
1.5820 - name rely very heavily on the Domain Name Service, and are thus
1.5821 -
1.5822 -
1.5823 -
1.5824 -Feather Standards Track [Page 104]
1.5825 -
1.5826 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5827 -
1.5828 -
1.5829 - generally prone to security attacks based on the deliberate
1.5830 - misassociation of IP addresses and DNS names. Clients and servers
1.5831 - need to be cautious in assuming the continuing validity of an IP
1.5832 - number/DNS name association.
1.5833 -
1.5834 - In particular, NNTP clients and servers SHOULD rely on their name
1.5835 - resolver for confirmation of an IP number/DNS name association,
1.5836 - rather than cache the result of previous host name lookups. Many
1.5837 - platforms already can cache host name lookups locally when
1.5838 - appropriate, and they SHOULD be configured to do so. It is proper
1.5839 - for these lookups to be cached, however, only when the TTL (Time To
1.5840 - Live) information reported by the name server makes it likely that
1.5841 - the cached information will remain useful.
1.5842 -
1.5843 - If NNTP clients or servers cache the results of host name lookups in
1.5844 - order to achieve a performance improvement, they MUST observe the TTL
1.5845 - information reported by DNS. If NNTP clients or servers do not
1.5846 - observe this rule, they could be spoofed when a previously accessed
1.5847 - server's IP address changes. As network renumbering is expected to
1.5848 - become increasingly common, the possibility of this form of attack
1.5849 - will increase. Observing this requirement thus reduces this
1.5850 - potential security vulnerability.
1.5851 -
1.5852 - This requirement also improves the load-balancing behaviour of
1.5853 - clients for replicated servers using the same DNS name and reduces
1.5854 - the likelihood of a user's experiencing failure in accessing sites
1.5855 - that use that strategy.
1.5856 -
1.5857 -12.5. UTF-8 Issues
1.5858 -
1.5859 - UTF-8 [RFC3629] permits only certain sequences of octets and
1.5860 - designates others as either malformed or "illegal". The Unicode
1.5861 - standard identifies a number of security issues related to illegal
1.5862 - sequences and forbids their generation by conforming implementations.
1.5863 -
1.5864 - Implementations of this specification MUST NOT generate malformed or
1.5865 - illegal sequences and SHOULD detect them and take some appropriate
1.5866 - action. This could include the following:
1.5867 -
1.5868 - o Generating a 501 response code.
1.5869 -
1.5870 - o Replacing such sequences by the sequence %xEF.BF.BD, which encodes
1.5871 - the "replacement character" U+FFFD.
1.5872 -
1.5873 - o Closing the connection.
1.5874 -
1.5875 - o Replacing such sequences by a "guessed" valid sequence (based on
1.5876 - properties of the UTF-8 encoding).
1.5877 -
1.5878 -
1.5879 -
1.5880 -Feather Standards Track [Page 105]
1.5881 -
1.5882 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5883 -
1.5884 -
1.5885 - In the last case, the implementation MUST ensure that any replacement
1.5886 - cannot be used to bypass validity or security checks. For example,
1.5887 - the illegal sequence %xC0.A0 is an over-long encoding for space
1.5888 - (%x20). If it is replaced by the correct encoding in a command line,
1.5889 - this needs to happen before the command line is parsed into
1.5890 - individual arguments. If the replacement came after parsing, it
1.5891 - would be possible to generate an argument with an embedded space,
1.5892 - which is forbidden. Use of the "replacement character" does not have
1.5893 - this problem, since it is permitted wherever non-US-ASCII characters
1.5894 - are. Implementations SHOULD use one of the first two solutions where
1.5895 - the general structure of the NNTP stream remains intact and SHOULD
1.5896 - close the connection if it is no longer possible to parse it
1.5897 - sensibly.
1.5898 -
1.5899 -12.6. Caching of Capability Lists
1.5900 -
1.5901 - The CAPABILITIES command provides a capability list, which is
1.5902 - information about the current capabilities of the server. Whenever
1.5903 - there is a relevant change to the server state, the results of this
1.5904 - command are required to change accordingly.
1.5905 -
1.5906 - In most situations, the capabilities list in a given server state
1.5907 - will not change from session to session; for example, a given
1.5908 - extension will be installed permanently on a server. Some clients
1.5909 - may therefore wish to remember which extensions a server supports to
1.5910 - avoid the delay of an additional command and response, particularly
1.5911 - if they open multiple connections in the same session.
1.5912 -
1.5913 - However, information about extensions related to security and privacy
1.5914 - MUST NOT be cached, since this could allow a variety of attacks.
1.5915 -
1.5916 - For example, consider a server that permits the use of cleartext
1.5917 - passwords on links that are encrypted but not otherwise:
1.5918 -
1.5919 - [Initial connection set-up completed.]
1.5920 - [S] 200 NNTP Service Ready, posting permitted
1.5921 - [C] CAPABILITIES
1.5922 - [S] 101 Capability list:
1.5923 - [S] VERSION 2
1.5924 - [S] READER
1.5925 - [S] NEWNEWS
1.5926 - [S] POST
1.5927 - [S] XENCRYPT
1.5928 - [S] LIST ACTIVE NEWSGROUPS
1.5929 - [S] .
1.5930 - [C] XENCRYPT
1.5931 - [Client and server negotiate encryption on the link]
1.5932 - [S] 283 Encrypted link established
1.5933 -
1.5934 -
1.5935 -
1.5936 -Feather Standards Track [Page 106]
1.5937 -
1.5938 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5939 -
1.5940 -
1.5941 - [C] CAPABILITIES
1.5942 - [S] 101 Capability list:
1.5943 - [S] VERSION 2
1.5944 - [S] READER
1.5945 - [S] NEWNEWS
1.5946 - [S] POST
1.5947 - [S] XSECRET
1.5948 - [S] LIST ACTIVE NEWSGROUPS
1.5949 - [S] .
1.5950 - [C] XSECRET fred flintstone
1.5951 - [S] 290 Password for fred accepted
1.5952 -
1.5953 - If the client caches the last capabilities list, then on the next
1.5954 - session it will attempt to use XSECRET on an unencrypted link:
1.5955 -
1.5956 - [Initial connection set-up completed.]
1.5957 - [S] 200 NNTP Service Ready, posting permitted
1.5958 - [C] XSECRET fred flintstone
1.5959 - [S] 483 Only permitted on secure links
1.5960 -
1.5961 - This exposes the password to any eavesdropper. While the primary
1.5962 - cause of this is passing a secret without first checking the security
1.5963 - of the link, caching of capability lists can increase the risk.
1.5964 -
1.5965 - Any security extension should include requirements to check the
1.5966 - security state of the link in a manner appropriate to that extension.
1.5967 -
1.5968 - Caching should normally only be considered for anonymous clients that
1.5969 - do not use any security or privacy extensions and for which the time
1.5970 - required for an additional command and response is a noticeable
1.5971 - issue.
1.5972 -
1.5973 -13. Acknowledgements
1.5974 -
1.5975 - This document is the result of much effort by the present and past
1.5976 - members of the NNTP Working Group, chaired by Russ Allbery and Ned
1.5977 - Freed. It could not have been produced without them.
1.5978 -
1.5979 - The author acknowledges the original authors of NNTP as documented in
1.5980 - RFC 977 [RFC977]: Brian Kantor and Phil Lapsey.
1.5981 -
1.5982 - The author gratefully acknowledges the following:
1.5983 -
1.5984 - o The work of the NNTP committee chaired by Eliot Lear. The
1.5985 - organization of this document was influenced by the last available
1.5986 - version from this working group. A special thanks to Eliot for
1.5987 - generously providing the original machine-readable sources for
1.5988 - that document.
1.5989 -
1.5990 -
1.5991 -
1.5992 -Feather Standards Track [Page 107]
1.5993 -
1.5994 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.5995 -
1.5996 -
1.5997 - o The work of the DRUMS working group, specifically RFC 1869
1.5998 - [RFC1869], that drove the original thinking that led to the
1.5999 - CAPABILITIES command and the extensions mechanism detailed in this
1.6000 - document.
1.6001 -
1.6002 - o The authors of RFC 2616 [RFC2616] for providing specific and
1.6003 - relevant examples of security issues that should be considered for
1.6004 - HTTP. Since many of the same considerations exist for NNTP, those
1.6005 - examples that are relevant have been included here with some minor
1.6006 - rewrites.
1.6007 -
1.6008 - o The comments and additional information provided by the following
1.6009 - individuals in preparing one or more of the progenitors of this
1.6010 - document:
1.6011 -
1.6012 - Russ Allbery <rra@stanford.edu>
1.6013 - Wayne Davison <davison@armory.com>
1.6014 - Chris Lewis <clewis@bnr.ca>
1.6015 - Tom Limoncelli <tal@mars.superlink.net>
1.6016 - Eric Schnoebelen <eric@egsner.cirr.com>
1.6017 - Rich Salz <rsalz@osf.org>
1.6018 -
1.6019 - This work was motivated by the work of various news reader authors
1.6020 - and news server authors, including those listed below:
1.6021 -
1.6022 - Rick Adams
1.6023 - Original author of the NNTP extensions to the RN news reader and
1.6024 - last maintainer of Bnews.
1.6025 -
1.6026 - Stan Barber
1.6027 - Original author of the NNTP extensions to the news readers that
1.6028 - are part of Bnews.
1.6029 -
1.6030 - Geoff Collyer
1.6031 - Original author of the OVERVIEW database proposal and one of the
1.6032 - original authors of CNEWS.
1.6033 -
1.6034 - Dan Curry
1.6035 - Original author of the xvnews news reader.
1.6036 -
1.6037 - Wayne Davison
1.6038 - Author of the first threading extensions to the RN news reader
1.6039 - (commonly called TRN).
1.6040 -
1.6041 - Geoff Huston
1.6042 - Original author of ANU NEWS.
1.6043 -
1.6044 -
1.6045 -
1.6046 -
1.6047 -
1.6048 -Feather Standards Track [Page 108]
1.6049 -
1.6050 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6051 -
1.6052 -
1.6053 - Phil Lapsey
1.6054 - Original author of the UNIX reference implementation for NNTP.
1.6055 -
1.6056 - Iain Lea
1.6057 - Original maintainer of the TIN news reader.
1.6058 -
1.6059 - Chris Lewis
1.6060 - First known implementer of the AUTHINFO GENERIC extension.
1.6061 -
1.6062 - Rich Salz
1.6063 - Original author of INN.
1.6064 -
1.6065 - Henry Spencer
1.6066 - One of the original authors of CNEWS.
1.6067 -
1.6068 - Kim Storm
1.6069 - Original author of the NN news reader.
1.6070 -
1.6071 - Other people who contributed to this document include:
1.6072 -
1.6073 - Matthias Andree
1.6074 - Greg Andruk
1.6075 - Daniel Barclay
1.6076 - Maurizio Codogno
1.6077 - Mark Crispin
1.6078 - Andrew Gierth
1.6079 - Juergen Helbing
1.6080 - Scott Hollenbeck
1.6081 - Urs Janssen
1.6082 - Charles Lindsey
1.6083 - Ade Lovett
1.6084 - David Magda
1.6085 - Ken Murchison
1.6086 - Francois Petillon
1.6087 - Peter Robinson
1.6088 - Rob Siemborski
1.6089 - Howard Swinehart
1.6090 - Ruud van Tol
1.6091 - Jeffrey Vinocur
1.6092 - Erik Warmelink
1.6093 -
1.6094 - The author thanks them all and apologises to anyone omitted.
1.6095 -
1.6096 - Finally, the present author gratefully acknowledges the vast amount
1.6097 - of work put into previous versions by the previous author:
1.6098 -
1.6099 - Stan Barber <sob@academ.com>
1.6100 -
1.6101 -
1.6102 -
1.6103 -
1.6104 -Feather Standards Track [Page 109]
1.6105 -
1.6106 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6107 -
1.6108 -
1.6109 -14. References
1.6110 -
1.6111 -14.1. Normative References
1.6112 -
1.6113 - [ANSI1986] American National Standards Institute, "Coded Character
1.6114 - Set - 7-bit American Standard Code for Information
1.6115 - Interchange", ANSI X3.4, 1986.
1.6116 -
1.6117 - [RFC977] Kantor, B. and P. Lapsley, "Network News Transfer
1.6118 - Protocol", RFC 977, February 1986.
1.6119 -
1.6120 - [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet
1.6121 - Mail Extensions (MIME) Part One: Format of Internet
1.6122 - Message Bodies", RFC 2045, November 1996.
1.6123 -
1.6124 - [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail
1.6125 - Extensions) Part Three: Message Header Extensions for
1.6126 - Non-ASCII Text", RFC 2047, November 1996.
1.6127 -
1.6128 - [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1.6129 - Requirement Levels", BCP 14, RFC 2119, March 1997.
1.6130 -
1.6131 - [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
1.6132 - 10646", STD 63, RFC 3629, November 2003.
1.6133 -
1.6134 - [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for
1.6135 - Syntax Specifications: ABNF", RFC 4234, October 2005.
1.6136 -
1.6137 - [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
1.6138 - Encodings", RFC 4648, October 2006.
1.6139 -
1.6140 - [TF.686-1] International Telecommunications Union - Radio,
1.6141 - "Glossary, ITU-R Recommendation TF.686-1",
1.6142 - ITU-R Recommendation TF.686-1, October 1997.
1.6143 -
1.6144 -14.2. Informative References
1.6145 -
1.6146 - [NNTP-AUTH] Vinocur, J., Murchison, K., and C. Newman, "Network
1.6147 - News Transfer Protocol (NNTP) Extension for
1.6148 - Authentication",
1.6149 - RFC 4643, October 2006.
1.6150 -
1.6151 - [NNTP-STREAM] Vinocur, J. and K. Murchison, "Network News Transfer
1.6152 - Protocol (NNTP) Extension for Streaming Feeds",
1.6153 - RFC 4644, October 2006.
1.6154 -
1.6155 -
1.6156 -
1.6157 -
1.6158 -
1.6159 -
1.6160 -Feather Standards Track [Page 110]
1.6161 -
1.6162 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6163 -
1.6164 -
1.6165 - [NNTP-TLS] Murchison, K., Vinocur, J., and C. Newman, "Using
1.6166 - Transport Layer Security (TLS) with Network News
1.6167 - Transfer Protocol (NNTP)", RFC 4642, October 2006.
1.6168 -
1.6169 - [RFC1036] Horton, M. and R. Adams, "Standard for interchange of
1.6170 - USENET messages", RFC 1036, December 1987.
1.6171 -
1.6172 - [RFC1305] Mills, D., "Network Time Protocol (Version 3)
1.6173 - Specification, Implementation and Analysis", RFC 1305,
1.6174 - March 1992.
1.6175 -
1.6176 - [RFC1869] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
1.6177 - Crocker, "SMTP Service Extensions", STD 10, RFC 1869,
1.6178 - November 1995.
1.6179 -
1.6180 - [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
1.6181 - Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
1.6182 - Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
1.6183 -
1.6184 - [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
1.6185 - June 1999.
1.6186 -
1.6187 - [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April
1.6188 - 2001.
1.6189 -
1.6190 - [RFC2980] Barber, S., "Common NNTP Extensions", RFC 2980, October
1.6191 - 2000.
1.6192 -
1.6193 - [ROBE1995] Robertson, R., "FAQ: Overview database / NOV General
1.6194 - Information", January 1995.
1.6195 -
1.6196 - There is no definitive copy of this document known to
1.6197 - the author. It was previously posted as the Usenet
1.6198 - article <news:nov-faq-1-930909720@agate.Berkeley.EDU>
1.6199 -
1.6200 - [SALZ1992] Salz, R., "Manual Page for wildmat(3) from the INN 1.4
1.6201 - distribution, Revision 1.10", April 1992.
1.6202 -
1.6203 - There is no definitive copy of this document known to
1.6204 - the author.
1.6205 -
1.6206 -
1.6207 -
1.6208 -
1.6209 -
1.6210 -
1.6211 -
1.6212 -
1.6213 -
1.6214 -
1.6215 -
1.6216 -Feather Standards Track [Page 111]
1.6217 -
1.6218 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6219 -
1.6220 -
1.6221 -Appendix A. Interaction with Other Specifications
1.6222 -
1.6223 - NNTP is most often used for transferring articles that conform to
1.6224 - RFC 1036 [RFC1036] (such articles are called "Netnews articles"
1.6225 - here). It is also sometimes used for transferring email messages
1.6226 - that conform to RFC 2822 [RFC2822] (such articles are called "email
1.6227 - articles" here). In this situation, articles must conform both to
1.6228 - this specification and to that other one; this appendix describes
1.6229 - some relevant issues.
1.6230 -
1.6231 -A.1. Header Folding
1.6232 -
1.6233 - NNTP allows a header line to be folded (by inserting a CRLF pair)
1.6234 - before any space or TAB character.
1.6235 -
1.6236 - Both email and Netnews articles are required to have at least one
1.6237 - octet other than space or TAB on each header line. Thus, folding can
1.6238 - only happen at one point in each sequence of consecutive spaces or
1.6239 - TABs. Netnews articles are further required to have the header name,
1.6240 - colon, and following space all on the first line; folding may only
1.6241 - happen beyond that space. Finally, some non-conforming software will
1.6242 - remove trailing spaces and TABs from a line. Therefore, it might be
1.6243 - inadvisable to fold a header after a space or TAB.
1.6244 -
1.6245 - For maximum safety, header lines SHOULD conform to the following
1.6246 - syntax rather than to that in Section 9.7.
1.6247 -
1.6248 -
1.6249 - header = header-name ":" SP [header-content] CRLF
1.6250 - header-content = [WS] token *( [CRLF] WS token )
1.6251 -
1.6252 -A.2. Message-IDs
1.6253 -
1.6254 - Every article handled by an NNTP server MUST have a unique
1.6255 - message-id. For the purposes of this specification, a message-id is
1.6256 - an arbitrary opaque string that merely needs to meet certain
1.6257 - syntactic requirements and is just a way to refer to the article.
1.6258 -
1.6259 - Because there is a significant risk that old articles will be
1.6260 - reinjected into the global Usenet system, RFC 1036 [RFC1036] requires
1.6261 - that message-ids are globally unique for all time.
1.6262 -
1.6263 - This specification states that message-ids are the same if and only
1.6264 - if they consist of the same sequence of octets. Other specifications
1.6265 - may define two different sequences as being equal because they are
1.6266 - putting an interpretation on particular characters. RFC 2822
1.6267 - [RFC2822] has a concept of "quoted" and "escaped" characters. It
1.6268 - therefore considers the three message-ids:
1.6269 -
1.6270 -
1.6271 -
1.6272 -Feather Standards Track [Page 112]
1.6273 -
1.6274 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6275 -
1.6276 -
1.6277 - <ab.cd@example.com>
1.6278 - <"ab.cd"@example.com>
1.6279 - <"ab.\cd"@example.com>
1.6280 -
1.6281 - as being identical. Therefore, an NNTP implementation handing email
1.6282 - articles must ensure that only one of these three appears in the
1.6283 - protocol and that the other two are converted to it as and when
1.6284 - necessary, such as when a client checks the results of a NEWNEWS
1.6285 - command against an internal database of message-ids. Note that
1.6286 - RFC 1036 [RFC1036] never treats two different strings as being
1.6287 - identical. Its successor (as of the time of writing) restricts the
1.6288 - syntax of message-ids so that, whenever RFC 2822 would treat two
1.6289 - strings as equivalent, only one of them is valid (in the above
1.6290 - example, only the first string is valid).
1.6291 -
1.6292 - This specification does not describe how the message-id of an article
1.6293 - is determined; it may be deduced from the contents of the article or
1.6294 - derived from some external source. If the server is also conforming
1.6295 - to another specification that contains a definition of message-id
1.6296 - compatible with this one, the server SHOULD use those message-ids. A
1.6297 - common approach, and one that SHOULD be used for email and Netnews
1.6298 - articles, is to extract the message-id from the contents of a header
1.6299 - with name "Message-ID". This may not be as simple as copying the
1.6300 - entire header contents; it may be necessary to strip off comments and
1.6301 - undo quoting, or to reduce "equivalent" message-ids to a canonical
1.6302 - form.
1.6303 -
1.6304 - If an article is obtained through the IHAVE command, there will be a
1.6305 - message-id provided with the command. The server MAY either use it
1.6306 - or determine one from the article contents. However, whichever it
1.6307 - does, it SHOULD ensure that, if the IHAVE command is repeated with
1.6308 - the same argument and article, it will be recognized as a duplicate.
1.6309 -
1.6310 - If an article does not contain a message-id that the server can
1.6311 - identify, it MUST synthesize one. This could, for example, be a
1.6312 - simple sequence number or be based on the date and time when the
1.6313 - article arrived. When email or Netnews articles are handled, a
1.6314 - Message-ID header SHOULD be added to ensure global consistency and
1.6315 - uniqueness.
1.6316 -
1.6317 - Note that, because the message-id might not have been derived from
1.6318 - the Message-ID header in the article, the following example is
1.6319 - legitimate (though unusual):
1.6320 -
1.6321 -
1.6322 -
1.6323 -
1.6324 -
1.6325 -
1.6326 -
1.6327 -
1.6328 -Feather Standards Track [Page 113]
1.6329 -
1.6330 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6331 -
1.6332 -
1.6333 - [C] HEAD <45223423@example.com>
1.6334 - [S] 221 0 <45223423@example.com>
1.6335 - [S] Path: pathost!demo!whitehouse!not-for-mail
1.6336 - [S] Message-ID: <1234@example.net>
1.6337 - [S] From: "Demo User" <nobody@example.net>
1.6338 - [S] Newsgroups: misc.test
1.6339 - [S] Subject: I am just a test article
1.6340 - [S] Date: 6 Oct 1998 04:38:40 -0500
1.6341 - [S] Organization: An Example Net, Uncertain, Texas
1.6342 - [S] .
1.6343 -
1.6344 -A.3. Article Posting
1.6345 -
1.6346 - As far as NNTP is concerned, the POST and IHAVE commands provide the
1.6347 - same basic facilities in a slightly different way. However, they
1.6348 - have rather different intentions.
1.6349 -
1.6350 - The IHAVE command is intended for transmitting conforming articles
1.6351 - between a system of NNTP servers, with all articles perhaps also
1.6352 - conforming to another specification (e.g., all articles are Netnews
1.6353 - articles). It is expected that the client will already have done any
1.6354 - necessary validation (or that it has in turn obtained the article
1.6355 - from a third party that has done so); therefore, the contents SHOULD
1.6356 - be left unchanged.
1.6357 -
1.6358 - In contrast, the POST command is intended for use when an end-user is
1.6359 - injecting a newly created article into a such a system. The article
1.6360 - being transferred might not be a conforming email or Netnews article,
1.6361 - and the server is expected to validate it and, if necessary, to
1.6362 - convert it to the right form for onward distribution. This is often
1.6363 - done by a separate piece of software on the server installation; if
1.6364 - so, the NNTP server SHOULD pass the incoming article to that software
1.6365 - unaltered, making no attempt to filter characters, to fold or limit
1.6366 - lines, or to process the incoming text otherwise.
1.6367 -
1.6368 - The POST command can fail in various ways, and clients should be
1.6369 - prepared to re-send an article. When doing so, however, it is often
1.6370 - important to ensure (as far as possible) that the same message-id is
1.6371 - allocated to both attempts so that the server, or other servers, can
1.6372 - recognize the two articles as duplicates. In the case of email or
1.6373 - Netnews articles, therefore, the posted article SHOULD contain a
1.6374 - header with the name "Message-ID", and the contents of this header
1.6375 - SHOULD be identical on each attempt. The server SHOULD ensure that
1.6376 - two POSTed articles with the same contents for this header are
1.6377 - recognized as identical and that the same message-id is allocated,
1.6378 - whether or not those contents are suitable for use as the message-id.
1.6379 -
1.6380 -
1.6381 -
1.6382 -
1.6383 -
1.6384 -Feather Standards Track [Page 114]
1.6385 -
1.6386 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6387 -
1.6388 -
1.6389 -Appendix B. Summary of Commands
1.6390 -
1.6391 - This section contains a list of every command defined in this
1.6392 - document, ordered by command name and by indicating capability.
1.6393 -
1.6394 - Ordered by command name:
1.6395 -
1.6396 - +-------------------+-----------------------+---------------+
1.6397 - | Command | Indicating capability | Definition |
1.6398 - +-------------------+-----------------------+---------------+
1.6399 - | ARTICLE | READER | Section 6.2.1 |
1.6400 - | BODY | READER | Section 6.2.3 |
1.6401 - | CAPABILITIES | mandatory | Section 5.2 |
1.6402 - | DATE | READER | Section 7.1 |
1.6403 - | GROUP | READER | Section 6.1.1 |
1.6404 - | HDR | HDR | Section 8.5 |
1.6405 - | HEAD | mandatory | Section 6.2.2 |
1.6406 - | HELP | mandatory | Section 7.2 |
1.6407 - | IHAVE | IHAVE | Section 6.3.2 |
1.6408 - | LAST | READER | Section 6.1.3 |
1.6409 - | LIST | LIST | Section 7.6.1 |
1.6410 - | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
1.6411 - | LIST ACTIVE | LIST | Section 7.6.3 |
1.6412 - | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
1.6413 - | LIST HEADERS | HDR | Section 8.6 |
1.6414 - | LIST NEWSGROUPS | LIST | Section 7.6.6 |
1.6415 - | LIST OVERVIEW.FMT | OVER | Section 8.4 |
1.6416 - | LISTGROUP | READER | Section 6.1.2 |
1.6417 - | MODE READER | MODE-READER | Section 5.3 |
1.6418 - | NEWGROUPS | READER | Section 7.3 |
1.6419 - | NEWNEWS | NEWNEWS | Section 7.4 |
1.6420 - | NEXT | READER | Section 6.1.4 |
1.6421 - | OVER | OVER | Section 8.3 |
1.6422 - | POST | POST | Section 6.3.1 |
1.6423 - | QUIT | mandatory | Section 5.4 |
1.6424 - | STAT | mandatory | Section 6.2.4 |
1.6425 - +-------------------+-----------------------+---------------+
1.6426 -
1.6427 -
1.6428 -
1.6429 -
1.6430 -
1.6431 -
1.6432 -
1.6433 -
1.6434 -
1.6435 -
1.6436 -
1.6437 -
1.6438 -
1.6439 -
1.6440 -Feather Standards Track [Page 115]
1.6441 -
1.6442 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6443 -
1.6444 -
1.6445 - Ordered by indicating capability:
1.6446 -
1.6447 - +-------------------+-----------------------+---------------+
1.6448 - | Command | Indicating capability | Definition |
1.6449 - +-------------------+-----------------------+---------------+
1.6450 - | CAPABILITIES | mandatory | Section 5.2 |
1.6451 - | HEAD | mandatory | Section 6.2.2 |
1.6452 - | HELP | mandatory | Section 7.2 |
1.6453 - | QUIT | mandatory | Section 5.4 |
1.6454 - | STAT | mandatory | Section 6.2.4 |
1.6455 - | HDR | HDR | Section 8.5 |
1.6456 - | LIST HEADERS | HDR | Section 8.6 |
1.6457 - | IHAVE | IHAVE | Section 6.3.2 |
1.6458 - | LIST | LIST | Section 7.6.1 |
1.6459 - | LIST ACTIVE | LIST | Section 7.6.3 |
1.6460 - | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
1.6461 - | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
1.6462 - | LIST NEWSGROUPS | LIST | Section 7.6.6 |
1.6463 - | MODE READER | MODE-READER | Section 5.3 |
1.6464 - | NEWNEWS | NEWNEWS | Section 7.4 |
1.6465 - | OVER | OVER | Section 8.3 |
1.6466 - | LIST OVERVIEW.FMT | OVER | Section 8.4 |
1.6467 - | POST | POST | Section 6.3.1 |
1.6468 - | ARTICLE | READER | Section 6.2.1 |
1.6469 - | BODY | READER | Section 6.2.3 |
1.6470 - | DATE | READER | Section 7.1 |
1.6471 - | GROUP | READER | Section 6.1.1 |
1.6472 - | LAST | READER | Section 6.1.3 |
1.6473 - | LISTGROUP | READER | Section 6.1.2 |
1.6474 - | NEWGROUPS | READER | Section 7.3 |
1.6475 - | NEXT | READER | Section 6.1.4 |
1.6476 - +-------------------+-----------------------+---------------+
1.6477 -
1.6478 -
1.6479 -
1.6480 -
1.6481 -
1.6482 -
1.6483 -
1.6484 -
1.6485 -
1.6486 -
1.6487 -
1.6488 -
1.6489 -
1.6490 -
1.6491 -
1.6492 -
1.6493 -
1.6494 -
1.6495 -
1.6496 -Feather Standards Track [Page 116]
1.6497 -
1.6498 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6499 -
1.6500 -
1.6501 -Appendix C. Summary of Response Codes
1.6502 -
1.6503 - This section contains a list of every response code defined in this
1.6504 - document and indicates whether it is multi-line, which commands can
1.6505 - generate it, what arguments it has, and what its meaning is.
1.6506 -
1.6507 - Response code 100 (multi-line)
1.6508 - Generated by: HELP
1.6509 - Meaning: help text follows.
1.6510 -
1.6511 - Response code 101 (multi-line)
1.6512 - Generated by: CAPABILITIES
1.6513 - Meaning: capabilities list follows.
1.6514 -
1.6515 - Response code 111
1.6516 - Generated by: DATE
1.6517 - 1 argument: yyyymmddhhmmss
1.6518 - Meaning: server date and time.
1.6519 -
1.6520 - Response code 200
1.6521 - Generated by: initial connection, MODE READER
1.6522 - Meaning: service available, posting allowed.
1.6523 -
1.6524 - Response code 201
1.6525 - Generated by: initial connection, MODE READER
1.6526 - Meaning: service available, posting prohibited.
1.6527 -
1.6528 - Response code 205
1.6529 - Generated by: QUIT
1.6530 - Meaning: connection closing (the server immediately closes the
1.6531 - connection).
1.6532 -
1.6533 - Response code 211
1.6534 - The 211 response code has two completely different forms,
1.6535 - depending on which command generated it:
1.6536 -
1.6537 - (not multi-line)
1.6538 - Generated by: GROUP
1.6539 - 4 arguments: number low high group
1.6540 - Meaning: group selected.
1.6541 -
1.6542 - (multi-line)
1.6543 - Generated by: LISTGROUP
1.6544 - 4 arguments: number low high group
1.6545 - Meaning: article numbers follow.
1.6546 -
1.6547 -
1.6548 -
1.6549 -
1.6550 -
1.6551 -
1.6552 -Feather Standards Track [Page 117]
1.6553 -
1.6554 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6555 -
1.6556 -
1.6557 - Response code 215 (multi-line)
1.6558 - Generated by: LIST
1.6559 - Meaning: information follows.
1.6560 -
1.6561 - Response code 220 (multi-line)
1.6562 - Generated by: ARTICLE
1.6563 - 2 arguments: n message-id
1.6564 - Meaning: article follows.
1.6565 -
1.6566 - Response code 221 (multi-line)
1.6567 - Generated by: HEAD
1.6568 - 2 arguments: n message-id
1.6569 - Meaning: article headers follow.
1.6570 -
1.6571 - Response code 222 (multi-line)
1.6572 - Generated by: BODY
1.6573 - 2 arguments: n message-id
1.6574 - Meaning: article body follows.
1.6575 -
1.6576 - Response code 223
1.6577 - Generated by: LAST, NEXT, STAT
1.6578 - 2 arguments: n message-id
1.6579 - Meaning: article exists and selected.
1.6580 -
1.6581 - Response code 224 (multi-line)
1.6582 - Generated by: OVER
1.6583 - Meaning: overview information follows.
1.6584 -
1.6585 - Response code 225 (multi-line)
1.6586 - Generated by: HDR
1.6587 - Meaning: headers follow.
1.6588 -
1.6589 - Response code 230 (multi-line)
1.6590 - Generated by: NEWNEWS
1.6591 - Meaning: list of new articles follows.
1.6592 -
1.6593 - Response code 231 (multi-line)
1.6594 - Generated by: NEWGROUPS
1.6595 - Meaning: list of new newsgroups follows.
1.6596 -
1.6597 - Response code 235
1.6598 - Generated by: IHAVE (second stage)
1.6599 - Meaning: article transferred OK.
1.6600 -
1.6601 - Response code 240
1.6602 - Generated by: POST (second stage)
1.6603 - Meaning: article received OK.
1.6604 -
1.6605 -
1.6606 -
1.6607 -
1.6608 -Feather Standards Track [Page 118]
1.6609 -
1.6610 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6611 -
1.6612 -
1.6613 - Response code 335
1.6614 - Generated by: IHAVE (first stage)
1.6615 - Meaning: send article to be transferred.
1.6616 -
1.6617 - Response code 340
1.6618 - Generated by: POST (first stage)
1.6619 - Meaning: send article to be posted.
1.6620 -
1.6621 - Response code 400
1.6622 - Generic response and generated by initial connection
1.6623 - Meaning: service not available or no longer available (the server
1.6624 - immediately closes the connection).
1.6625 -
1.6626 - Response code 401
1.6627 - Generic response
1.6628 - 1 argument: capability-label
1.6629 - Meaning: the server is in the wrong mode; the indicated capability
1.6630 - should be used to change the mode.
1.6631 -
1.6632 - Response code 403
1.6633 - Generic response
1.6634 - Meaning: internal fault or problem preventing action being taken.
1.6635 -
1.6636 - Response code 411
1.6637 - Generated by: GROUP, LISTGROUP
1.6638 - Meaning: no such newsgroup.
1.6639 -
1.6640 - Response code 412
1.6641 - Generated by: ARTICLE, BODY, GROUP, HDR, HEAD, LAST, LISTGROUP,
1.6642 - NEXT, OVER, STAT
1.6643 - Meaning: no newsgroup selected.
1.6644 -
1.6645 - Response code 420
1.6646 - Generated by: ARTICLE, BODY, HDR, HEAD, LAST, NEXT, OVER, STAT
1.6647 - Meaning: current article number is invalid.
1.6648 -
1.6649 - Response code 421
1.6650 - Generated by: NEXT
1.6651 - Meaning: no next article in this group.
1.6652 -
1.6653 - Response code 422
1.6654 - Generated by: LAST
1.6655 - Meaning: no previous article in this group.
1.6656 -
1.6657 - Response code 423
1.6658 - Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
1.6659 - Meaning: no article with that number or in that range.
1.6660 -
1.6661 -
1.6662 -
1.6663 -
1.6664 -Feather Standards Track [Page 119]
1.6665 -
1.6666 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6667 -
1.6668 -
1.6669 - Response code 430
1.6670 - Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
1.6671 - Meaning: no article with that message-id.
1.6672 -
1.6673 - Response code 435
1.6674 - Generated by: IHAVE (first stage)
1.6675 - Meaning: article not wanted.
1.6676 -
1.6677 - Response code 436
1.6678 - Generated by: IHAVE (either stage)
1.6679 - Meaning: transfer not possible (first stage) or failed (second
1.6680 - stage); try again later.
1.6681 -
1.6682 - Response code 437
1.6683 - Generated by: IHAVE (second stage)
1.6684 - Meaning: transfer rejected; do not retry.
1.6685 -
1.6686 - Response code 440
1.6687 - Generated by: POST (first stage)
1.6688 - Meaning: posting not permitted.
1.6689 -
1.6690 - Response code 441
1.6691 - Generated by: POST (second stage)
1.6692 - Meaning: posting failed.
1.6693 -
1.6694 - Response code 480
1.6695 - Generic response
1.6696 - Meaning: command unavailable until the client has authenticated
1.6697 - itself.
1.6698 -
1.6699 - Response code 483
1.6700 - Generic response
1.6701 - Meaning: command unavailable until suitable privacy has been
1.6702 - arranged.
1.6703 -
1.6704 - Response code 500
1.6705 - Generic response
1.6706 - Meaning: unknown command.
1.6707 -
1.6708 - Response code 501
1.6709 - Generic response
1.6710 - Meaning: syntax error in command.
1.6711 -
1.6712 -
1.6713 -
1.6714 -
1.6715 -
1.6716 -
1.6717 -
1.6718 -
1.6719 -
1.6720 -Feather Standards Track [Page 120]
1.6721 -
1.6722 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6723 -
1.6724 -
1.6725 - Response code 502
1.6726 - Generic response and generated by initial connection
1.6727 -
1.6728 - Meaning for the initial connection and the MODE READER command:
1.6729 - service permanently unavailable (the server immediately closes the
1.6730 - connection).
1.6731 -
1.6732 - Meaning for all other commands: command not permitted (and there
1.6733 - is no way for the client to change this).
1.6734 -
1.6735 - Response code 503
1.6736 - Generic response
1.6737 - Meaning: feature not supported.
1.6738 -
1.6739 - Response code 504
1.6740 - Generic response
1.6741 - Meaning: error in base64-encoding [RFC4648] of an argument.
1.6742 -
1.6743 -Appendix D. Changes from RFC 977
1.6744 -
1.6745 - In general every attempt has been made to ensure that the protocol
1.6746 - specification in this document is compatible with the version
1.6747 - specified in RFC 977 [RFC977] and the various facilities adopted from
1.6748 - RFC 2980 [RFC2980]. However, there have been a number of changes,
1.6749 - some compatible and some not.
1.6750 -
1.6751 - This appendix lists these changes. It is not guaranteed to be
1.6752 - exhaustive or correct and MUST NOT be relied on.
1.6753 -
1.6754 - o A formal syntax specification (Section 9) has been added.
1.6755 -
1.6756 - o The default character set is changed from US-ASCII [ANSI1986] to
1.6757 - UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8). This
1.6758 - matter is discussed further in Section 10.
1.6759 -
1.6760 - o All articles are required to have a message-id, eliminating the
1.6761 - "<0>" placeholder used in RFC 977 in some responses.
1.6762 -
1.6763 - o The newsgroup name matching capabilities already documented in
1.6764 - RFC 977 ("wildmats", Section 4) are clarified and extended. The
1.6765 - new facilities (e.g., the use of commas and exclamation marks) are
1.6766 - allowed wherever wildmats appear in the protocol.
1.6767 -
1.6768 - o Support for pipelining of commands (Section 3.5) is made
1.6769 - mandatory.
1.6770 -
1.6771 -
1.6772 -
1.6773 -
1.6774 -
1.6775 -
1.6776 -Feather Standards Track [Page 121]
1.6777 -
1.6778 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6779 -
1.6780 -
1.6781 - o The principles behind response codes (Section 3.2) have been
1.6782 - tidied up. In particular:
1.6783 -
1.6784 - * the x8x response code family, formerly used for private
1.6785 - extensions, is now reserved for authentication and privacy
1.6786 - extensions;
1.6787 -
1.6788 - * the x9x response code family, formerly intended for debugging
1.6789 - facilities, are now reserved for private extensions;
1.6790 -
1.6791 - * the 502 and 503 generic response codes (Section 3.2.1) have
1.6792 - been redefined;
1.6793 -
1.6794 - * new 401, 403, 480, 483, and 504 generic response codes have
1.6795 - been added.
1.6796 -
1.6797 - o The rules for article numbering (Section 6) have been clarified
1.6798 - (also see Section 6.1.1.2).
1.6799 -
1.6800 - o The SLAVE command (which was ill-defined) is removed from the
1.6801 - protocol.
1.6802 -
1.6803 - o Four-digit years are permitted in the NEWNEWS (Section 7.4) and
1.6804 - NEWGROUPS (Section 7.3) commands (two-digit years are still
1.6805 - permitted). The optional distribution parameter to these commands
1.6806 - has been removed.
1.6807 -
1.6808 - o The LIST command (Section 7.6.1) is greatly extended; the original
1.6809 - is available as LIST ACTIVE, while new variants include
1.6810 - ACTIVE.TIMES, DISTRIB.PATS, and NEWSGROUPS. A new "m" status flag
1.6811 - is added to the LIST ACTIVE response.
1.6812 -
1.6813 - o A new CAPABILITIES command (Section 5.2) allows clients to
1.6814 - determine what facilities are supported by a server.
1.6815 -
1.6816 - o The DATE command (Section 7.1) is adopted from RFC 2980
1.6817 - effectively unchanged.
1.6818 -
1.6819 - o The LISTGROUP command (Section 6.1.2) is adopted from RFC 2980.
1.6820 - An optional range argument has been added, and the 211 initial
1.6821 - response line now has the same format as the 211 response from the
1.6822 - GROUP command.
1.6823 -
1.6824 - o The MODE READER command (Section 5.3) is adopted from RFC 2980 and
1.6825 - its meaning and effects clarified.
1.6826 -
1.6827 - o The XHDR command in RFC 2980 has been formalised as the new HDR
1.6828 - (Section 8.5) and LIST HEADERS (Section 8.6) commands.
1.6829 -
1.6830 -
1.6831 -
1.6832 -Feather Standards Track [Page 122]
1.6833 -
1.6834 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6835 -
1.6836 -
1.6837 - o The XOVER command in RFC 2980 has been formalised as the new OVER
1.6838 - (Section 8.3) and LIST OVERVIEW.FMT (Section 8.4) commands. The
1.6839 - former can be applied to a message-id as well as to a range.
1.6840 -
1.6841 - o The concept of article metadata (Section 8.1) has been formalised,
1.6842 - allowing the Bytes and Lines pseudo-headers to be deprecated.
1.6843 -
1.6844 - Client authors should note in particular that lack of support for the
1.6845 - CAPABILITIES command is a good indication that the server does not
1.6846 - support this specification.
1.6847 -
1.6848 -
1.6849 -
1.6850 -
1.6851 -
1.6852 -
1.6853 -
1.6854 -
1.6855 -
1.6856 -
1.6857 -
1.6858 -
1.6859 -
1.6860 -
1.6861 -
1.6862 -
1.6863 -
1.6864 -
1.6865 -
1.6866 -
1.6867 -
1.6868 -
1.6869 -
1.6870 -
1.6871 -
1.6872 -
1.6873 -
1.6874 -
1.6875 -
1.6876 -
1.6877 -
1.6878 -
1.6879 -
1.6880 -
1.6881 -
1.6882 -
1.6883 -
1.6884 -
1.6885 -
1.6886 -
1.6887 -
1.6888 -Feather Standards Track [Page 123]
1.6889 -
1.6890 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6891 -
1.6892 -
1.6893 -Author's Address
1.6894 -
1.6895 - Clive D.W. Feather
1.6896 - THUS plc
1.6897 - 322 Regents Park Road
1.6898 - London
1.6899 - N3 2QQ
1.6900 - United Kingdom
1.6901 -
1.6902 - Phone: +44 20 8495 6138
1.6903 - Fax: +44 870 051 9937
1.6904 - EMail: clive@demon.net
1.6905 - URI: http://www.davros.org/
1.6906 -
1.6907 -
1.6908 -
1.6909 -
1.6910 -
1.6911 -
1.6912 -
1.6913 -
1.6914 -
1.6915 -
1.6916 -
1.6917 -
1.6918 -
1.6919 -
1.6920 -
1.6921 -
1.6922 -
1.6923 -
1.6924 -
1.6925 -
1.6926 -
1.6927 -
1.6928 -
1.6929 -
1.6930 -
1.6931 -
1.6932 -
1.6933 -
1.6934 -
1.6935 -
1.6936 -
1.6937 -
1.6938 -
1.6939 -
1.6940 -
1.6941 -
1.6942 -
1.6943 -
1.6944 -Feather Standards Track [Page 124]
1.6945 -
1.6946 -RFC 3977 Network News Transfer Protocol (NNTP) October 2006
1.6947 -
1.6948 -
1.6949 -Full Copyright Statement
1.6950 -
1.6951 -Copyright (C) The Internet Society (2006).
1.6952 -
1.6953 - This document is subject to the rights, licenses and restrictions
1.6954 - contained in BCP 78, and except as set forth therein, the authors
1.6955 - retain all their rights.
1.6956 -
1.6957 - This document and the information contained herein are provided on an
1.6958 - "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1.6959 - OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1.6960 - ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1.6961 - INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1.6962 - INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1.6963 - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1.6964 -
1.6965 -Intellectual Property
1.6966 -
1.6967 - The IETF takes no position regarding the validity or scope of any
1.6968 - Intellectual Property Rights or other rights that might be claimed to
1.6969 - pertain to the implementation or use of the technology described in
1.6970 - this document or the extent to which any license under such rights
1.6971 - might or might not be available; nor does it represent that it has
1.6972 - made any independent effort to identify any such rights. Information
1.6973 - on the procedures with respect to rights in RFC documents can be
1.6974 - found in BCP 78 and BCP 79.
1.6975 -
1.6976 - Copies of IPR disclosures made to the IETF Secretariat and any
1.6977 - assurances of licenses to be made available, or the result of an
1.6978 - attempt made to obtain a general license or permission for the use of
1.6979 - such proprietary rights by implementers or users of this
1.6980 - specification can be obtained from the IETF on-line IPR repository at
1.6981 - http://www.ietf.org/ipr.
1.6982 -
1.6983 - The IETF invites any interested party to bring to its attention any
1.6984 - copyrights, patents or patent applications, or other proprietary
1.6985 - rights that may cover technology that may be required to implement
1.6986 - this standard. Please address the information to the IETF at ietf-
1.6987 - ipr@ietf.org.
1.6988 -
1.6989 -Acknowledgement
1.6990 -
1.6991 - Funding for the RFC Editor function is provided by the IETF
1.6992 - Administrative Support Activity (IASA).
1.6993 -
1.6994 -
1.6995 -
1.6996 -
1.6997 -
1.6998 -
1.6999 -
1.7000 -Feather Standards Track [Page 125]
1.7001 -
2.1 Binary file RFC3977.pdf has changed
3.1 --- a/build.xml Sun Aug 29 17:28:58 2010 +0200
3.2 +++ b/build.xml Sun Aug 29 17:43:58 2010 +0200
3.3 @@ -49,7 +49,7 @@
3.4 deprecation="${deprecation}"
3.5 optimize="${optimize}"
3.6 classpathref="classpath">
3.7 - <src path="."/>
3.8 + <src path="./src"/>
3.9 <include name="org/sonews/**/*.java"/>
3.10 </javac>
3.11 <javac destdir="${build.class}"
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/doc/RFC3977 Sun Aug 29 17:43:58 2010 +0200
4.3 @@ -0,0 +1,6998 @@
4.4 +
4.5 +Network Working Group C. Feather
4.6 +Request for Comments: 3977 THUS plc
4.7 +Obsoletes: 977 October 2006
4.8 +Updates: 2980
4.9 +Category: Standards Track
4.10 +
4.11 +
4.12 + Network News Transfer Protocol (NNTP)
4.13 +
4.14 +Status of This Memo
4.15 +
4.16 + This document specifies an Internet standards track protocol for the
4.17 + Internet community, and requests discussion and suggestions for
4.18 + improvements. Please refer to the current edition of the "Internet
4.19 + Official Protocol Standards" (STD 1) for the standardization state
4.20 + and status of this protocol. Distribution of this memo is unlimited.
4.21 +
4.22 +Copyright Notice
4.23 +
4.24 + Copyright (C) The Internet Society (2006).
4.25 +
4.26 +Abstract
4.27 +
4.28 + The Network News Transfer Protocol (NNTP) has been in use in the
4.29 + Internet for a decade, and remains one of the most popular protocols
4.30 + (by volume) in use today. This document is a replacement for
4.31 + RFC 977, and officially updates the protocol specification. It
4.32 + clarifies some vagueness in RFC 977, includes some new base
4.33 + functionality, and provides a specific mechanism to add standardized
4.34 + extensions to NNTP.
4.35 +
4.36 +Table of Contents
4.37 +
4.38 + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
4.39 + 1.1. Author's Note . . . . . . . . . . . . . . . . . . . . . . 4
4.40 + 2. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.41 + 3. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . 6
4.42 + 3.1. Commands and Responses . . . . . . . . . . . . . . . . . 6
4.43 + 3.1.1. Multi-line Data Blocks . . . . . . . . . . . . . . . . 8
4.44 + 3.2. Response Codes . . . . . . . . . . . . . . . . . . . . . 9
4.45 + 3.2.1. Generic Response Codes . . . . . . . . . . . . . . . 10
4.46 + 3.2.1.1. Examples . . . . . . . . . . . . . . . . . . . . 12
4.47 + 3.3. Capabilities and Extensions . . . . . . . . . . . . . . . 14
4.48 + 3.3.1. Capability Descriptions . . . . . . . . . . . . . . . 14
4.49 + 3.3.2. Standard Capabilities . . . . . . . . . . . . . . . . 15
4.50 + 3.3.3. Extensions . . . . . . . . . . . . . . . . . . . . . 16
4.51 + 3.3.4. Initial IANA Register . . . . . . . . . . . . . . . . 18
4.52 + 3.4. Mandatory and Optional Commands . . . . . . . . . . . . . 20
4.53 +
4.54 +
4.55 +
4.56 +Feather Standards Track [Page 1]
4.57 +
4.58 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.59 +
4.60 +
4.61 + 3.4.1. Reading and Transit Servers . . . . . . . . . . . . . 21
4.62 + 3.4.2. Mode Switching . . . . . . . . . . . . . . . . . . . 21
4.63 + 3.5. Pipelining . . . . . . . . . . . . . . . . . . . . . . . 22
4.64 + 3.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 23
4.65 + 3.6. Articles . . . . . . . . . . . . . . . . . . . . . . . . 24
4.66 + 4. The WILDMAT Format . . . . . . . . . . . . . . . . . . . . . 25
4.67 + 4.1. Wildmat Syntax . . . . . . . . . . . . . . . . . . . . . 26
4.68 + 4.2. Wildmat Semantics . . . . . . . . . . . . . . . . . . . . 26
4.69 + 4.3. Extensions . . . . . . . . . . . . . . . . . . . . . . . 27
4.70 + 4.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 27
4.71 + 5. Session Administration Commands . . . . . . . . . . . . . . . 28
4.72 + 5.1. Initial Connection . . . . . . . . . . . . . . . . . . . 28
4.73 + 5.2. CAPABILITIES . . . . . . . . . . . . . . . . . . . . . . 29
4.74 + 5.3. MODE READER . . . . . . . . . . . . . . . . . . . . . . . 32
4.75 + 5.4. QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.76 + 6. Article Posting and Retrieval . . . . . . . . . . . . . . . . 35
4.77 + 6.1. Group and Article Selection . . . . . . . . . . . . . . . 36
4.78 + 6.1.1. GROUP . . . . . . . . . . . . . . . . . . . . . . . . 36
4.79 + 6.1.2. LISTGROUP . . . . . . . . . . . . . . . . . . . . . . 39
4.80 + 6.1.3. LAST . . . . . . . . . . . . . . . . . . . . . . . . 42
4.81 + 6.1.4. NEXT . . . . . . . . . . . . . . . . . . . . . . . . 44
4.82 + 6.2. Retrieval of Articles and Article Sections . . . . . . . 45
4.83 + 6.2.1. ARTICLE . . . . . . . . . . . . . . . . . . . . . . . 46
4.84 + 6.2.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . 49
4.85 + 6.2.3. BODY . . . . . . . . . . . . . . . . . . . . . . . . 51
4.86 + 6.2.4. STAT . . . . . . . . . . . . . . . . . . . . . . . . 53
4.87 + 6.3. Article Posting . . . . . . . . . . . . . . . . . . . . . 56
4.88 + 6.3.1. POST . . . . . . . . . . . . . . . . . . . . . . . . 56
4.89 + 6.3.2. IHAVE . . . . . . . . . . . . . . . . . . . . . . . . 58
4.90 + 7. Information Commands . . . . . . . . . . . . . . . . . . . . 61
4.91 + 7.1. DATE . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.92 + 7.2. HELP . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.93 + 7.3. NEWGROUPS . . . . . . . . . . . . . . . . . . . . . . . . 63
4.94 + 7.4. NEWNEWS . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.95 + 7.5. Time . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.96 + 7.5.1. Examples . . . . . . . . . . . . . . . . . . . . . . 66
4.97 + 7.6. The LIST Commands . . . . . . . . . . . . . . . . . . . . 66
4.98 + 7.6.1. LIST . . . . . . . . . . . . . . . . . . . . . . . . 67
4.99 + 7.6.2. Standard LIST Keywords . . . . . . . . . . . . . . . 69
4.100 + 7.6.3. LIST ACTIVE . . . . . . . . . . . . . . . . . . . . . 70
4.101 + 7.6.4. LIST ACTIVE.TIMES . . . . . . . . . . . . . . . . . . 71
4.102 + 7.6.5. LIST DISTRIB.PATS . . . . . . . . . . . . . . . . . . 72
4.103 + 7.6.6. LIST NEWSGROUPS . . . . . . . . . . . . . . . . . . . 73
4.104 + 8. Article Field Access Commands . . . . . . . . . . . . . . . . 73
4.105 + 8.1. Article Metadata . . . . . . . . . . . . . . . . . . . . 74
4.106 + 8.1.1. The :bytes Metadata Item . . . . . . . . . . . . . . 74
4.107 + 8.1.2. The :lines Metadata Item . . . . . . . . . . . . . . 75
4.108 + 8.2. Database Consistency . . . . . . . . . . . . . . . . . . 75
4.109 +
4.110 +
4.111 +
4.112 +Feather Standards Track [Page 2]
4.113 +
4.114 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.115 +
4.116 +
4.117 + 8.3. OVER . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.118 + 8.4. LIST OVERVIEW.FMT . . . . . . . . . . . . . . . . . . . . 81
4.119 + 8.5. HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.120 + 8.6. LIST HEADERS . . . . . . . . . . . . . . . . . . . . . . 87
4.121 + 9. Augmented BNF Syntax for NNTP . . . . . . . . . . . . . . . . 90
4.122 + 9.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 90
4.123 + 9.2. Commands . . . . . . . . . . . . . . . . . . . . . . . . 92
4.124 + 9.3. Command Continuation . . . . . . . . . . . . . . . . . . 93
4.125 + 9.4. Responses . . . . . . . . . . . . . . . . . . . . . . . . 93
4.126 + 9.4.1. Generic Responses . . . . . . . . . . . . . . . . . . 93
4.127 + 9.4.2. Initial Response Line Contents . . . . . . . . . . . 94
4.128 + 9.4.3. Multi-line Response Contents . . . . . . . . . . . . 94
4.129 + 9.5. Capability Lines . . . . . . . . . . . . . . . . . . . . 95
4.130 + 9.6. LIST Variants . . . . . . . . . . . . . . . . . . . . . . 96
4.131 + 9.7. Articles . . . . . . . . . . . . . . . . . . . . . . . . 97
4.132 + 9.8. General Non-terminals . . . . . . . . . . . . . . . . . . 97
4.133 + 9.9. Extensions and Validation . . . . . . . . . . . . . . . . 99
4.134 + 10. Internationalisation Considerations . . . . . . . . . . . . .100
4.135 + 10.1. Introduction and Historical Situation . . . . . . . . . .100
4.136 + 10.2. This Specification . . . . . . . . . . . . . . . . . . .101
4.137 + 10.3. Outstanding Issues . . . . . . . . . . . . . . . . . . .102
4.138 + 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .103
4.139 + 12. Security Considerations . . . . . . . . . . . . . . . . . . .103
4.140 + 12.1. Personal and Proprietary Information . . . . . . . . . .104
4.141 + 12.2. Abuse of Server Log Information . . . . . . . . . . . . .104
4.142 + 12.3. Weak Authentication and Access Control . . . . . . . . .104
4.143 + 12.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . .104
4.144 + 12.5. UTF-8 Issues . . . . . . . . . . . . . . . . . . . . . .105
4.145 + 12.6. Caching of Capability Lists . . . . . . . . . . . . . . .106
4.146 + 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .107
4.147 + 14. References . . . . . . . . . . . . . . . . . . . . . . . . .110
4.148 + 14.1. Normative References . . . . . . . . . . . . . . . . . .110
4.149 + 14.2. Informative References . . . . . . . . . . . . . . . . .110
4.150 + A. Interaction with Other Specifications . . . . . . . . . . . .112
4.151 + A.1. Header Folding . . . . . . . . . . . . . . . . . . . . .112
4.152 + A.2. Message-IDs . . . . . . . . . . . . . . . . . . . . . . .112
4.153 + A.3. Article Posting . . . . . . . . . . . . . . . . . . . . .114
4.154 + B. Summary of Commands . . . . . . . . . . . . . . . . . . . . .115
4.155 + C. Summary of Response Codes . . . . . . . . . . . . . . . . . .117
4.156 + D. Changes from RFC 977 . . . . . . . . . . . . . . . . . . . .121
4.157 +
4.158 +1. Introduction
4.159 +
4.160 + This document specifies the Network News Transfer Protocol (NNTP),
4.161 + which is used for the distribution, inquiry, retrieval, and posting
4.162 + of Netnews articles using a reliable stream-based mechanism. For
4.163 + news-reading clients, NNTP enables retrieval of news articles that
4.164 +
4.165 +
4.166 +
4.167 +
4.168 +Feather Standards Track [Page 3]
4.169 +
4.170 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.171 +
4.172 +
4.173 + are stored in a central database, giving subscribers the ability to
4.174 + select only those articles they wish to read.
4.175 +
4.176 + The Netnews model provides for indexing, cross-referencing, and
4.177 + expiration of aged messages. NNTP is designed for efficient
4.178 + transmission of Netnews articles over a reliable full duplex
4.179 + communication channel.
4.180 +
4.181 + Although the protocol specification in this document is largely
4.182 + compatible with the version specified in RFC 977 [RFC977], a number
4.183 + of changes are summarised in Appendix D. In particular:
4.184 +
4.185 + o the default character set is changed from US-ASCII [ANSI1986] to
4.186 + UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8);
4.187 +
4.188 + o a number of commands that were optional in RFC 977 or that have
4.189 + been taken from RFC 2980 [RFC2980] are now mandatory; and
4.190 +
4.191 + o a CAPABILITIES command has been added to allow clients to
4.192 + determine what functionality is available from a server.
4.193 +
4.194 + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
4.195 + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
4.196 + document are to be interpreted as described in RFC 2119 [RFC2119].
4.197 +
4.198 + An implementation is not compliant if it fails to satisfy one or more
4.199 + of the MUST requirements for this protocol. An implementation that
4.200 + satisfies all the MUST and all the SHOULD requirements for its
4.201 + protocols is said to be "unconditionally compliant"; one that
4.202 + satisfies all the MUST requirements but not all the SHOULD
4.203 + requirements for NNTP is said to be "conditionally compliant".
4.204 +
4.205 + For the remainder of this document, the terms "client" and "client
4.206 + host" refer to a host making use of the NNTP service, while the terms
4.207 + "server" and "server host" refer to a host that offers the NNTP
4.208 + service.
4.209 +
4.210 +1.1. Author's Note
4.211 +
4.212 + This document is written in XML using an NNTP-specific DTD. Custom
4.213 + software is used to convert this to RFC 2629 [RFC2629] format, and
4.214 + then the public "xml2rfc" package to further reduce this to text,
4.215 + nroff source, and HTML.
4.216 +
4.217 + No perl was used in producing this document.
4.218 +
4.219 +
4.220 +
4.221 +
4.222 +
4.223 +
4.224 +Feather Standards Track [Page 4]
4.225 +
4.226 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.227 +
4.228 +
4.229 +2. Notation
4.230 +
4.231 + The following notational conventions are used in this document.
4.232 +
4.233 + UPPERCASE indicates literal text to be included in the
4.234 + command.
4.235 +
4.236 + lowercase indicates a token described elsewhere.
4.237 +
4.238 + [brackets] indicate that the enclosed material is optional.
4.239 +
4.240 + elliptical indicates that the argument may be repeated any
4.241 + ... marks number of times (it must occur at least once).
4.242 +
4.243 + vertical|bar indicates a choice of two mutually exclusive
4.244 + arguments (exactly one must be provided).
4.245 +
4.246 + The name "message-id" for a command or response argument indicates
4.247 + that it is the message-id of an article as described in Section 3.6,
4.248 + including the angle brackets.
4.249 +
4.250 + The name "wildmat" for an argument indicates that it is a wildmat as
4.251 + defined in Section 4. If the argument does not meet the requirements
4.252 + of that section (for example, if it does not fit the grammar of
4.253 + Section 4.1), the NNTP server MAY place some interpretation on it
4.254 + (not specified by this document) or otherwise MUST treat it as a
4.255 + syntax error.
4.256 +
4.257 + Responses for each command will be described in tables listing the
4.258 + required format of a response followed by the meaning that should be
4.259 + ascribed to that response.
4.260 +
4.261 + The terms "NUL", "TAB", "LF", "CR, and "space" refer to the octets
4.262 + %x00, %x09, %x0A, %x0D, and %x20, respectively (that is, the octets
4.263 + with those codes in US-ASCII [ANSI1986] and thus in UTF-8 [RFC3629]).
4.264 + The term "CRLF" or "CRLF pair" means the sequence CR immediately
4.265 + followed by LF (that is, %x0D.0A). A "printable US-ASCII character"
4.266 + is an octet in the range %x21-7E. Quoted characters refer to the
4.267 + octets with those codes in US-ASCII (so "." and "<" refer to %x2E and
4.268 + %x3C) and will always be printable US-ASCII characters; similarly,
4.269 + "digit" refers to the octets %x30-39.
4.270 +
4.271 + A "keyword" MUST consist only of US-ASCII letters, digits, and the
4.272 + characters dot (".") and dash ("-") and MUST begin with a letter.
4.273 + Keywords MUST be at least three characters in length.
4.274 +
4.275 +
4.276 +
4.277 +
4.278 +
4.279 +
4.280 +Feather Standards Track [Page 5]
4.281 +
4.282 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.283 +
4.284 +
4.285 + Examples in this document are not normative but serve to illustrate
4.286 + usages, arguments, and responses. In the examples, a "[C]" will be
4.287 + used to represent the client host and an "[S]" will be used to
4.288 + represent the server host. Most of the examples do not rely on a
4.289 + particular server state. In some cases, however, they do assume that
4.290 + the currently selected newsgroup (see the GROUP command,
4.291 + Section 6.1.1) is invalid; when so, this is indicated at the start of
4.292 + the example. Examples may use commands or other keywords not defined
4.293 + in this specification (such as an XENCRYPT command). These will be
4.294 + used to illustrate some point and do not imply that any such command
4.295 + is defined elsewhere or needs to exist in any particular
4.296 + implementation.
4.297 +
4.298 + Terms that might be read as specifying details of a client or server
4.299 + implementation, such as "database", are used simply to ease
4.300 + description. Provided that implementations conform to the protocol
4.301 + and format specifications in this document, no specific technique is
4.302 + mandated.
4.303 +
4.304 +3. Basic Concepts
4.305 +
4.306 +3.1. Commands and Responses
4.307 +
4.308 + NNTP operates over any reliable bi-directional 8-bit-wide data stream
4.309 + channel. When the connection is established, the NNTP server host
4.310 + MUST send a greeting. The client host and server host then exchange
4.311 + commands and responses (respectively) until the connection is closed
4.312 + or aborted. If the connection used is TCP, then the server host
4.313 + starts the NNTP service by listening on a TCP port. When a client
4.314 + host wishes to make use of the service, it MUST establish a TCP
4.315 + connection with the server host by connecting to that host on the
4.316 + same port on which the server is listening.
4.317 +
4.318 + The character set for all NNTP commands is UTF-8 [RFC3629]. Commands
4.319 + in NNTP MUST consist of a keyword, which MAY be followed by one or
4.320 + more arguments. A CRLF pair MUST terminate all commands. Multiple
4.321 + commands MUST NOT be on the same line. Unless otherwise noted
4.322 + elsewhere in this document, arguments SHOULD consist of printable US-
4.323 + ASCII characters. Keywords and arguments MUST each be separated by
4.324 + one or more space or TAB characters. Command lines MUST NOT exceed
4.325 + 512 octets, which includes the terminating CRLF pair. The arguments
4.326 + MUST NOT exceed 497 octets. A server MAY relax these limits for
4.327 + commands defined in an extension.
4.328 +
4.329 + Where this specification permits UTF-8 characters outside the range
4.330 + of U+0000 to U+007F, implementations MUST NOT use the Byte Order Mark
4.331 + (U+FEFF, encoding %xEF.BB.BF) and MUST use the Word Joiner (U+2060,
4.332 + encoding %xE2.91.A0) for the meaning Zero Width No-Break Space in
4.333 +
4.334 +
4.335 +
4.336 +Feather Standards Track [Page 6]
4.337 +
4.338 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.339 +
4.340 +
4.341 + command lines and the initial lines of responses. Implementations
4.342 + SHOULD apply these same principles throughout.
4.343 +
4.344 + The term "character" means a single Unicode code point.
4.345 + Implementations are not required to carry out Unicode normalisation.
4.346 + Thus, U+0084 (A-dieresis) is one character, while U+0041 U+0308 (A
4.347 + composed with dieresis) is two; the two need not be treated as
4.348 + equivalent.
4.349 +
4.350 + Commands may have variants; if so, they use a second keyword
4.351 + immediately after the first to indicate which variant is required.
4.352 + The only such commands in this specification are LIST and MODE. Note
4.353 + that such variants are sometimes referred to as if they were commands
4.354 + in their own right: "the LIST ACTIVE" command should be read as
4.355 + shorthand for "the ACTIVE variant of the LIST command".
4.356 +
4.357 + Keywords are case insensitive; the case of keywords for commands MUST
4.358 + be ignored by the server. Command and response arguments are case or
4.359 + language specific only when stated, either in this document or in
4.360 + other relevant specifications.
4.361 +
4.362 + In some cases, a command involves more data than just a single line.
4.363 + The further data may be sent either immediately after the command
4.364 + line (there are no instances of this in this specification, but there
4.365 + are in extensions such as [NNTP-STREAM]) or following a request from
4.366 + the server (indicated by a 3xx response).
4.367 +
4.368 + Each response MUST start with a three-digit response code that is
4.369 + sufficient to distinguish all responses. Certain valid responses are
4.370 + defined to be multi-line; for all others, the response is contained
4.371 + in a single line. The initial line of the response MUST NOT exceed
4.372 + 512 octets, which includes the response code and the terminating CRLF
4.373 + pair; an extension MAY specify a greater maximum for commands that it
4.374 + defines, but not for any other command. Single-line responses
4.375 + consist of an initial line only. Multi-line responses consist of an
4.376 + initial line followed by a multi-line data block.
4.377 +
4.378 + An NNTP server MAY have an inactivity autologout timer. Such a timer
4.379 + SHOULD be of at least three minutes' duration, with the exception
4.380 + that there MAY be a shorter limit on how long the server is willing
4.381 + to wait for the first command from the client. The receipt of any
4.382 + command from the client during the timer interval SHOULD suffice to
4.383 + reset the autologout timer. Similarly, the receipt of any
4.384 + significant amount of data from a client that is sending a multi-line
4.385 + data block (such as during a POST or IHAVE command) SHOULD suffice to
4.386 + reset the autologout timer. When the timer expires, the server
4.387 + SHOULD close the connection without sending any response to the
4.388 + client.
4.389 +
4.390 +
4.391 +
4.392 +Feather Standards Track [Page 7]
4.393 +
4.394 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.395 +
4.396 +
4.397 +3.1.1. Multi-line Data Blocks
4.398 +
4.399 + A multi-line data block is used in certain commands and responses.
4.400 + It MUST adhere to the following rules:
4.401 +
4.402 + 1. The block consists of a sequence of zero or more "lines", each
4.403 + being a stream of octets ending with a CRLF pair. Apart from
4.404 + those line endings, the stream MUST NOT include the octets NUL,
4.405 + LF, or CR.
4.406 +
4.407 + 2. In a multi-line response, the block immediately follows the CRLF
4.408 + at the end of the initial line of the response. When used in any
4.409 + other context, the specific command will define when the block is
4.410 + sent.
4.411 +
4.412 + 3. If any line of the data block begins with the "termination octet"
4.413 + ("." or %x2E), that line MUST be "dot-stuffed" by prepending an
4.414 + additional termination octet to that line of the block.
4.415 +
4.416 + 4. The lines of the block MUST be followed by a terminating line
4.417 + consisting of a single termination octet followed by a CRLF pair
4.418 + in the normal way. Thus, unless it is empty, a multi-line block
4.419 + is always terminated with the five octets CRLF "." CRLF
4.420 + (%x0D.0A.2E.0D.0A).
4.421 +
4.422 + 5. When a multi-line block is interpreted, the "dot-stuffing" MUST
4.423 + be undone; i.e., the recipient MUST ensure that, in any line
4.424 + beginning with the termination octet followed by octets other
4.425 + than a CRLF pair, that initial termination octet is disregarded.
4.426 +
4.427 + 6. Likewise, the terminating line ("." CRLF or %x2E.0D.0A) MUST NOT
4.428 + be considered part of the multi-line block; i.e., the recipient
4.429 + MUST ensure that any line beginning with the termination octet
4.430 + followed immediately by a CRLF pair is disregarded. (The first
4.431 + CRLF pair of the terminating CRLF "." CRLF of a non-empty block
4.432 + is, of course, part of the last line of the block.)
4.433 +
4.434 + Note that texts using an encoding (such as UTF-16 or UTF-32) that may
4.435 + contain the octets NUL, LF, or CR other than a CRLF pair cannot be
4.436 + reliably conveyed in the above format (that is, they violate the MUST
4.437 + requirement above). However, except when stated otherwise, this
4.438 + specification does not require the content to be UTF-8, and therefore
4.439 + (subject to that same requirement) it MAY include octets above and
4.440 + below 128 mixed arbitrarily.
4.441 +
4.442 + This document does not place any limit on the length of a line in a
4.443 + multi-line block. However, the standards that define the format of
4.444 + articles may do so.
4.445 +
4.446 +
4.447 +
4.448 +Feather Standards Track [Page 8]
4.449 +
4.450 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.451 +
4.452 +
4.453 +3.2. Response Codes
4.454 +
4.455 + Each response MUST begin with a three-digit status indicator. These
4.456 + are status reports from the server and indicate the response to the
4.457 + last command received from the client.
4.458 +
4.459 + The first digit of the response broadly indicates the success,
4.460 + failure, or progress of the previous command:
4.461 +
4.462 + 1xx - Informative message
4.463 + 2xx - Command completed OK
4.464 + 3xx - Command OK so far; send the rest of it
4.465 + 4xx - Command was syntactically correct but failed for some reason
4.466 + 5xx - Command unknown, unsupported, unavailable, or syntax error
4.467 +
4.468 + The next digit in the code indicates the function response category:
4.469 +
4.470 + x0x - Connection, setup, and miscellaneous messages
4.471 + x1x - Newsgroup selection
4.472 + x2x - Article selection
4.473 + x3x - Distribution functions
4.474 + x4x - Posting
4.475 + x8x - Reserved for authentication and privacy extensions
4.476 + x9x - Reserved for private use (non-standard extensions)
4.477 +
4.478 + Certain responses contain arguments such as numbers and names in
4.479 + addition to the status indicator. In those cases, to simplify
4.480 + interpretation by the client, the number and type of such arguments
4.481 + is fixed for each response code, as is whether the code is
4.482 + single-line or multi-line. Any extension MUST follow this principle
4.483 + as well. Note that, for historical reasons, the 211 response code is
4.484 + an exception to this in that the response may be single-line or
4.485 + multi-line depending on the command (GROUP or LISTGROUP) that
4.486 + generated it. In all other cases, the client MUST only use the
4.487 + status indicator itself to determine the nature of the response. The
4.488 + exact response codes that can be returned by any given command are
4.489 + detailed in the description of that command.
4.490 +
4.491 + Arguments MUST be separated from the numeric status indicator and
4.492 + from each other by a single space. All numeric arguments MUST be in
4.493 + base 10 (decimal) format and MAY have leading zeros. String
4.494 + arguments MUST contain at least one character and MUST NOT contain
4.495 + TAB, LF, CR, or space. The server MAY add any text after the
4.496 + response code or last argument, as appropriate, and the client MUST
4.497 + NOT make decisions based on this text. Such text MUST be separated
4.498 + from the numeric status indicator or the last argument by at least
4.499 + one space.
4.500 +
4.501 +
4.502 +
4.503 +
4.504 +Feather Standards Track [Page 9]
4.505 +
4.506 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.507 +
4.508 +
4.509 + The server MUST respond to any command with the appropriate generic
4.510 + response (given in Section 3.2.1) if it represents the situation.
4.511 + Otherwise, each recognized command MUST return one of the response
4.512 + codes specifically listed in its description or in an extension. A
4.513 + server MAY provide extensions to this specification, including new
4.514 + commands, new variants or features of existing commands, and other
4.515 + ways of changing the internal state of the server. However, the
4.516 + server MUST NOT produce any other responses to a client that does not
4.517 + invoke any of the additional features. (Therefore, a client that
4.518 + restricts itself to this specification will only receive the
4.519 + responses that are listed.)
4.520 +
4.521 + If a client receives an unexpected response, it SHOULD use the first
4.522 + digit of the response to determine the result. For example, an
4.523 + unexpected 2xx should be taken as success, and an unexpected 4xx or
4.524 + 5xx as failure.
4.525 +
4.526 + Response codes not specified in this document MAY be used for any
4.527 + installation-specific additional commands also not specified. These
4.528 + SHOULD be chosen to fit the pattern of x9x specified above.
4.529 +
4.530 + Neither this document nor any registered extension (see
4.531 + Section 3.3.3) will specify any response codes of the x9x pattern.
4.532 + (Implementers of extensions are accordingly cautioned not to use such
4.533 + responses for extensions that may subsequently be submitted for
4.534 + registration.)
4.535 +
4.536 +3.2.1. Generic Response Codes
4.537 +
4.538 + The server MUST respond to any command with the appropriate one of
4.539 + the following generic responses if it represents the situation.
4.540 +
4.541 + If the command is not recognized, or if it is an optional command
4.542 + that is not implemented by the server, the response code 500 MUST be
4.543 + returned.
4.544 +
4.545 + If there is a syntax error in the arguments of a recognized command,
4.546 + including the case where more arguments are provided than the command
4.547 + specifies or the command line is longer than the server accepts, the
4.548 + response code 501 MUST be returned. The line MUST NOT be truncated
4.549 + or split and then interpreted. Note that where a command has
4.550 + variants depending on a second keyword (e.g., LIST ACTIVE and LIST
4.551 + NEWSGROUPS), 501 MUST be used when the base command is implemented
4.552 + but the requested variant is not, and 500 MUST be used only when the
4.553 + base command itself is not implemented.
4.554 +
4.555 + If an argument is required to be a base64-encoded string [RFC4648]
4.556 + (there are no such arguments in this specification, but there may be
4.557 +
4.558 +
4.559 +
4.560 +Feather Standards Track [Page 10]
4.561 +
4.562 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.563 +
4.564 +
4.565 + in extensions) and is not validly encoded, the response code 504 MUST
4.566 + be returned.
4.567 +
4.568 + If the server experiences an internal fault or problem that means it
4.569 + is unable to carry out the command (for example, a necessary file is
4.570 + missing or a necessary service could not be contacted), the response
4.571 + code 403 MUST be returned. If the server recognizes the command but
4.572 + does not provide an optional feature (for example, because it does
4.573 + not store the required information), or if it only handles a subset
4.574 + of legitimate cases (see the HDR command, Section 8.5, for an
4.575 + example), the response code 503 MUST be returned.
4.576 +
4.577 + If the client is not authorized to use the specified facility when
4.578 + the server is in its current state, then the appropriate one of the
4.579 + following response codes MUST be used.
4.580 +
4.581 + 502: It is necessary to terminate the connection and to start a new
4.582 + one with the appropriate authority before the command can be used.
4.583 + Historically, some mode-switching servers (see Section 3.4.1) used
4.584 + this response to indicate that this command will become available
4.585 + after the MODE READER command (Section 5.3) is used, but this
4.586 + usage does not conform to this specification and MUST NOT be used.
4.587 + Note that the server MUST NOT close the connection immediately
4.588 + after a 502 response except at the initial connection
4.589 + (Section 5.1) and with the MODE READER command.
4.590 +
4.591 + 480: The client must authenticate itself to the server (that is, it
4.592 + must provide information as to the identity of the client) before
4.593 + the facility can be used on this connection. This will involve
4.594 + the use of an authentication extension such as [NNTP-AUTH].
4.595 +
4.596 + 483: The client must negotiate appropriate privacy protection on the
4.597 + connection. This will involve the use of a privacy extension such
4.598 + as [NNTP-TLS].
4.599 +
4.600 + 401: The client must change the state of the connection in some other
4.601 + manner. The first argument of the response MUST be the capability
4.602 + label (see Section 5.2) of the facility that provides the
4.603 + necessary mechanism (usually an extension, which may be a private
4.604 + extension). The server MUST NOT use this response code except as
4.605 + specified by the definition of the capability in question.
4.606 +
4.607 + If the server has to terminate the connection for some reason, it
4.608 + MUST give a 400 response code to the next command and then
4.609 + immediately close the connection. Following a 400 response, clients
4.610 + SHOULD NOT simply reconnect immediately and retry the same actions.
4.611 + Rather, a client SHOULD either use an exponentially increasing delay
4.612 + between retries (e.g., double the waiting time after each 400
4.613 +
4.614 +
4.615 +
4.616 +Feather Standards Track [Page 11]
4.617 +
4.618 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.619 +
4.620 +
4.621 + response) or present any associated text to the user for them to
4.622 + decide whether and when to retry.
4.623 +
4.624 + The client MUST be prepared to receive any of these responses for any
4.625 + command (except, of course, that the server MUST NOT generate a 500
4.626 + response code for mandatory commands).
4.627 +
4.628 +3.2.1.1. Examples
4.629 +
4.630 + Example of an unknown command:
4.631 +
4.632 + [C] MAIL
4.633 + [S] 500 Unknown command
4.634 +
4.635 + Example of an unsupported command:
4.636 +
4.637 + [C] CAPABILITIES
4.638 + [S] 101 Capability list:
4.639 + [S] VERSION 2
4.640 + [S] READER
4.641 + [S] NEWNEWS
4.642 + [S] LIST ACTIVE NEWSGROUPS
4.643 + [S] .
4.644 + [C] OVER
4.645 + [S] 500 Unknown command
4.646 +
4.647 + Example of an unsupported variant:
4.648 +
4.649 + [C] MODE POSTER
4.650 + [S] 501 Unknown MODE option
4.651 +
4.652 + Example of a syntax error:
4.653 +
4.654 + [C] ARTICLE a.message.id@no.angle.brackets
4.655 + [S] 501 Syntax error
4.656 +
4.657 + Example of an overlong command line:
4.658 +
4.659 + [C] HEAD 53 54 55
4.660 + [S] 501 Too many arguments
4.661 +
4.662 + Example of a bad wildmat:
4.663 +
4.664 + [C] LIST ACTIVE u[ks].*
4.665 + [S] 501 Syntax error
4.666 +
4.667 +
4.668 +
4.669 +
4.670 +
4.671 +
4.672 +Feather Standards Track [Page 12]
4.673 +
4.674 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.675 +
4.676 +
4.677 + Example of a base64-encoding error (the second argument is meant to
4.678 + be base64 encoded):
4.679 +
4.680 + [C] XENCRYPT RSA abcd=efg
4.681 + [S] 504 Base64 encoding error
4.682 +
4.683 + Example of an attempt to access a facility not available to this
4.684 + connection:
4.685 +
4.686 + [C] MODE READER
4.687 + [S] 200 Reader mode, posting permitted
4.688 + [C] IHAVE <i.am.an.article.you.will.want@example.com>
4.689 + [S] 500 Permission denied
4.690 +
4.691 + Example of an attempt to access a facility requiring authentication:
4.692 +
4.693 + [C] GROUP secret.group
4.694 + [S] 480 Permission denied
4.695 +
4.696 + Example of a successful attempt following such authentication:
4.697 +
4.698 + [C] XSECRET fred flintstone
4.699 + [S] 290 Password for fred accepted
4.700 + [C] GROUP secret.group
4.701 + [S] 211 5 1 20 secret.group selected
4.702 +
4.703 + Example of an attempt to access a facility requiring privacy:
4.704 +
4.705 + [C] GROUP secret.group
4.706 + [S] 483 Secure connection required
4.707 + [C] XENCRYPT
4.708 + [Client and server negotiate encryption on the link]
4.709 + [S] 283 Encrypted link established
4.710 + [C] GROUP secret.group
4.711 + [S] 211 5 1 20 secret.group selected
4.712 +
4.713 + Example of a need to change mode before a facility is used:
4.714 +
4.715 + [C] GROUP binary.group
4.716 + [S] 401 XHOST Not on this virtual host
4.717 + [C] XHOST binary.news.example.org
4.718 + [S] 290 binary.news.example.org virtual host selected
4.719 + [C] GROUP binary.group
4.720 + [S] 211 5 1 77 binary.group selected
4.721 +
4.722 +
4.723 +
4.724 +
4.725 +
4.726 +
4.727 +
4.728 +Feather Standards Track [Page 13]
4.729 +
4.730 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.731 +
4.732 +
4.733 + Example of a temporary failure:
4.734 +
4.735 + [C] GROUP archive.local
4.736 + [S] 403 Archive server temporarily offline
4.737 +
4.738 + Example of the server needing to close down immediately:
4.739 +
4.740 + [C] ARTICLE 123
4.741 + [S] 400 Power supply failed, running on UPS
4.742 + [Server closes connection.]
4.743 +
4.744 +3.3. Capabilities and Extensions
4.745 +
4.746 + Not all NNTP servers provide exactly the same facilities, both
4.747 + because this specification allows variation and because servers may
4.748 + provide extensions. A set of facilities that are related are called
4.749 + a "capability". This specification provides a way to determine what
4.750 + capabilities are available, includes a list of standard capabilities,
4.751 + and includes a mechanism (the extension mechanism) for defining new
4.752 + capabilities.
4.753 +
4.754 +3.3.1. Capability Descriptions
4.755 +
4.756 + A client can determine the available capabilities of the server by
4.757 + using the CAPABILITIES command (Section 5.2). This returns a
4.758 + capability list, which is a list of capability lines. Each line
4.759 + describes one available capability.
4.760 +
4.761 + Each capability line consists of one or more tokens, which MUST be
4.762 + separated by one or more space or TAB characters. A token is a
4.763 + string of 1 or more printable UTF-8 characters (that is, either
4.764 + printable US-ASCII characters or any UTF-8 sequence outside the US-
4.765 + ASCII range, but not space or TAB). Unless stated otherwise, tokens
4.766 + are case insensitive. Each capability line consists of the
4.767 + following:
4.768 +
4.769 + o The capability label, which is a keyword indicating the
4.770 + capability. A capability label may be defined by this
4.771 + specification or a successor, or by an extension.
4.772 +
4.773 + o The label is then followed by zero or more tokens, which are
4.774 + arguments of the capability. The form and meaning of these tokens
4.775 + is specific to each capability.
4.776 +
4.777 + The server MUST ensure that the capability list accurately reflects
4.778 + the capabilities (including extensions) currently available. If a
4.779 + capability is only available with the server in a certain state (for
4.780 + example, only after authentication), the list MUST only include the
4.781 +
4.782 +
4.783 +
4.784 +Feather Standards Track [Page 14]
4.785 +
4.786 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.787 +
4.788 +
4.789 + capability label when the server is in that state. Similarly, if
4.790 + only some of the commands in an extension will be available, or if
4.791 + the behaviour of the extension will change in some other manner,
4.792 + according to the state of the server, this MUST be indicated by
4.793 + different arguments in the capability line.
4.794 +
4.795 + Note that a capability line can only begin with a letter. Lines
4.796 + beginning with other characters are reserved for future versions of
4.797 + this specification. In order to interoperate with such versions,
4.798 + clients MUST be prepared to receive lines beginning with other
4.799 + characters and MUST ignore any they do not understand.
4.800 +
4.801 +3.3.2. Standard Capabilities
4.802 +
4.803 + The following capabilities are defined by this specification.
4.804 +
4.805 + VERSION
4.806 + This capability MUST be advertised by all servers and MUST be the
4.807 + first capability in the capability list; it indicates the
4.808 + version(s) of NNTP that the server supports. There must be at
4.809 + least one argument; each argument is a decimal number and MUST NOT
4.810 + have a leading zero. Version numbers are assigned only in RFCs
4.811 + that update or replace this specification; servers MUST NOT create
4.812 + their own version numbers.
4.813 +
4.814 + The version number of this specification is 2.
4.815 +
4.816 + READER
4.817 + This capability indicates that the server implements the various
4.818 + commands useful for reading clients.
4.819 +
4.820 + IHAVE
4.821 + This capability indicates that the server implements the IHAVE
4.822 + command.
4.823 +
4.824 + POST
4.825 + This capability indicates that the server implements the POST
4.826 + command.
4.827 +
4.828 + NEWNEWS
4.829 + This capability indicates that the server implements the NEWNEWS
4.830 + command.
4.831 +
4.832 + HDR
4.833 + This capability indicates that the server implements the header
4.834 + access commands (HDR and LIST HEADERS).
4.835 +
4.836 +
4.837 +
4.838 +
4.839 +
4.840 +Feather Standards Track [Page 15]
4.841 +
4.842 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.843 +
4.844 +
4.845 + OVER
4.846 + This capability indicates that the server implements the overview
4.847 + access commands (OVER and LIST OVERVIEW.FMT). If and only if the
4.848 + server supports the message-id form of the OVER command, there
4.849 + must be a single argument MSGID.
4.850 +
4.851 + LIST
4.852 + This capability indicates that the server implements at least one
4.853 + variant of the LIST command. There MUST be one argument for each
4.854 + variant of the LIST command supported by the server, giving the
4.855 + keyword for that variant.
4.856 +
4.857 + IMPLEMENTATION
4.858 + This capability MAY be provided by a server. If so, the arguments
4.859 + SHOULD be used to provide information such as the server software
4.860 + name and version number. The client MUST NOT use this line to
4.861 + determine capabilities of the server. (While servers often
4.862 + provide this information in the initial greeting, clients need to
4.863 + guess whether this is the case; this capability makes it clear
4.864 + what the information is.)
4.865 +
4.866 + MODE-READER
4.867 + This capability indicates that the server is mode-switching
4.868 + (Section 3.4.2) and that the MODE READER command needs to be used
4.869 + to enable the READER capability.
4.870 +
4.871 +3.3.3. Extensions
4.872 +
4.873 + Although NNTP is widely and robustly deployed, some parts of the
4.874 + Internet community might wish to extend the NNTP service. It must be
4.875 + emphasized that any extension to NNTP should not be considered
4.876 + lightly. NNTP's strength comes primarily from its simplicity.
4.877 + Experience with many protocols has shown that:
4.878 +
4.879 + Protocols with few options tend towards ubiquity, whilst protocols
4.880 + with many options tend towards obscurity.
4.881 +
4.882 + This means that each and every extension, regardless of its benefits,
4.883 + must be carefully scrutinized with respect to its implementation,
4.884 + deployment, and interoperability costs. In many cases, the cost of
4.885 + extending the NNTP service will likely outweigh the benefit.
4.886 +
4.887 + An extension is a package of associated facilities, often but not
4.888 + always including one or more new commands. Each extension MUST
4.889 + define at least one new capability label (this will often, but need
4.890 + not, be the name of one of these new commands). While any additional
4.891 + capability information can normally be specified using arguments to
4.892 +
4.893 +
4.894 +
4.895 +
4.896 +Feather Standards Track [Page 16]
4.897 +
4.898 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.899 +
4.900 +
4.901 + that label, an extension MAY define more than one capability label.
4.902 + However, this SHOULD be limited to exceptional circumstances.
4.903 +
4.904 + An extension is either a private extension, or its capabilities are
4.905 + included in the IANA registry of capabilities (see Section 3.3.4) and
4.906 + it is defined in an RFC (in which case it is a "registered
4.907 + extension"). Such RFCs either must be on the standards track or must
4.908 + define an IESG-approved experimental protocol.
4.909 +
4.910 + The definition of an extension must include the following:
4.911 +
4.912 + o a descriptive name for the extension.
4.913 +
4.914 + o the capability label or labels defined by the extension (the
4.915 + capability label of a registered extension MUST NOT begin with
4.916 + "X").
4.917 +
4.918 + o The syntax, values, and meanings of any arguments for each
4.919 + capability label defined by the extension.
4.920 +
4.921 + o Any new NNTP commands associated with the extension (the names of
4.922 + commands associated with registered extensions MUST NOT begin with
4.923 + "X").
4.924 +
4.925 + o The syntax and possible values of arguments associated with the
4.926 + new NNTP commands.
4.927 +
4.928 + o The response codes and possible values of arguments for the
4.929 + responses of the new NNTP commands.
4.930 +
4.931 + o Any new arguments the extension associates with any other
4.932 + pre-existing NNTP commands.
4.933 +
4.934 + o Any increase in the maximum length of commands and initial
4.935 + response lines over the value specified in this document.
4.936 +
4.937 + o A specific statement about the effect on pipelining that this
4.938 + extension may have (if any).
4.939 +
4.940 + o A specific statement about the circumstances when use of this
4.941 + extension can alter the contents of the capabilities list (other
4.942 + than the new capability labels it defines).
4.943 +
4.944 + o A specific statement about the circumstances under which the
4.945 + extension can cause any pre-existing command to produce a 401,
4.946 + 480, or 483 response.
4.947 +
4.948 +
4.949 +
4.950 +
4.951 +
4.952 +Feather Standards Track [Page 17]
4.953 +
4.954 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.955 +
4.956 +
4.957 + o A description of how the use of MODE READER on a mode-switching
4.958 + server interacts with the extension.
4.959 +
4.960 + o A description of how support for the extension affects the
4.961 + behaviour of a server and NNTP client in any other manner not
4.962 + outlined above.
4.963 +
4.964 + o Formal syntax as described in Section 9.9.
4.965 +
4.966 + A private extension MAY or MAY NOT be included in the capabilities
4.967 + list. If it is, the capability label MUST begin with "X". A server
4.968 + MAY provide additional keywords (for new commands and also for new
4.969 + variants of existing commands) as part of a private extension. To
4.970 + avoid the risk of a clash with a future registered extension, these
4.971 + keywords SHOULD begin with "X".
4.972 +
4.973 + If the server advertises a capability defined by a registered
4.974 + extension, it MUST implement the extension so as to fully conform
4.975 + with the specification (for example, it MUST implement all the
4.976 + commands that the extension describes as mandatory). If it does not
4.977 + implement the extension as specified, it MUST NOT list the extension
4.978 + in the capabilities list under its registered name. In that case, it
4.979 + MAY, but SHOULD NOT, provide a private extension (not listed, or
4.980 + listed with a different name) that implements part of the extension
4.981 + or implements the commands of the extension with a different meaning.
4.982 +
4.983 + A server MUST NOT send different response codes to basic NNTP
4.984 + commands documented here or to commands documented in registered
4.985 + extensions in response to the availability or use of a private
4.986 + extension.
4.987 +
4.988 +3.3.4. Initial IANA Register
4.989 +
4.990 + IANA will maintain a registry of NNTP capability labels. All
4.991 + capability labels in the registry MUST be keywords and MUST NOT begin
4.992 + with X.
4.993 +
4.994 +
4.995 +
4.996 +
4.997 +
4.998 +
4.999 +
4.1000 +
4.1001 +
4.1002 +
4.1003 +
4.1004 +
4.1005 +
4.1006 +
4.1007 +
4.1008 +Feather Standards Track [Page 18]
4.1009 +
4.1010 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1011 +
4.1012 +
4.1013 + The initial content of the registry consists of these entries:
4.1014 +
4.1015 + +-------------------+--------------------------+--------------------+
4.1016 + | Label | Meaning | Definition |
4.1017 + +-------------------+--------------------------+--------------------+
4.1018 + | AUTHINFO | Authentication | [NNTP-AUTH] |
4.1019 + | | | |
4.1020 + | HDR | Batched header retrieval | Section 3.3.2, |
4.1021 + | | | Section 8.5, and |
4.1022 + | | | Section 8.6 |
4.1023 + | | | |
4.1024 + | IHAVE | IHAVE command available | Section 3.3.2 and |
4.1025 + | | | Section 6.3.2 |
4.1026 + | | | |
4.1027 + | IMPLEMENTATION | Server | Section 3.3.2 |
4.1028 + | | implementation-specific | |
4.1029 + | | information | |
4.1030 + | | | |
4.1031 + | LIST | LIST command variants | Section 3.3.2 and |
4.1032 + | | | Section 7.6.1 |
4.1033 + | | | |
4.1034 + | MODE-READER | Mode-switching server | Section 3.4.2 |
4.1035 + | | and MODE READER command | |
4.1036 + | | available | |
4.1037 + | | | |
4.1038 + | NEWNEWS | NEWNEWS command | Section 3.3.2 and |
4.1039 + | | available | Section 7.4 |
4.1040 + | | | |
4.1041 + | OVER | Overview support | Section 3.3.2, |
4.1042 + | | | Section 8.3, and |
4.1043 + | | | Section 8.4 |
4.1044 + | | | |
4.1045 + | POST | POST command available | Section 3.3.2 and |
4.1046 + | | | Section 6.3.1 |
4.1047 + | | | |
4.1048 + | READER | Reader commands | Section 3.3.2 |
4.1049 + | | available | |
4.1050 + | | | |
4.1051 + | SASL | Supported SASL | [NNTP-AUTH] |
4.1052 + | | mechanisms | |
4.1053 + | | | |
4.1054 + | STARTTLS | Transport layer security | [NNTP-TLS] |
4.1055 + | | | |
4.1056 + | STREAMING | Streaming feeds | [NNTP-STREAM] |
4.1057 + | | | |
4.1058 + | VERSION | Supported NNTP versions | Section 3.3.2 |
4.1059 + +-------------------+--------------------------+--------------------+
4.1060 +
4.1061 +
4.1062 +
4.1063 +
4.1064 +Feather Standards Track [Page 19]
4.1065 +
4.1066 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1067 +
4.1068 +
4.1069 +3.4. Mandatory and Optional Commands
4.1070 +
4.1071 + For a number of reasons, not all the commands in this specification
4.1072 + are mandatory. However, it is equally undesirable for every command
4.1073 + to be optional, since this means that a client will have no idea what
4.1074 + facilities are available. Therefore, as a compromise, some of the
4.1075 + commands in this specification are mandatory (they must be supported
4.1076 + by all servers) while the remainder are not. The latter are then
4.1077 + subdivided into bundles, each indicated by a single capability label.
4.1078 +
4.1079 + o If the label is included in the capability list returned by the
4.1080 + server, the server MUST support all commands in that bundle.
4.1081 +
4.1082 + o If the label is not included, the server MAY support none or some
4.1083 + of the commands but SHOULD NOT support all of them. In general,
4.1084 + there will be no way for a client to determine which commands are
4.1085 + supported without trying them.
4.1086 +
4.1087 + The bundles have been chosen to provide useful functionality, and
4.1088 + therefore server authors are discouraged from implementing only part
4.1089 + of a bundle.
4.1090 +
4.1091 + The description of each command will either indicate that it is
4.1092 + mandatory, or will give, using the term "indicating capability", the
4.1093 + capability label indicating whether the bundle including this command
4.1094 + is available.
4.1095 +
4.1096 + Where a server does not implement a command, it MUST always generate
4.1097 + a 500 generic response code (or a 501 generic response code in the
4.1098 + case of a variant of a command depending on a second keyword where
4.1099 + the base command is recognised). Otherwise, the command MUST be
4.1100 + fully implemented as specified; a server MUST NOT only partially
4.1101 + implement any of the commands in this specification. (Client authors
4.1102 + should note that some servers not conforming to this specification
4.1103 + will return a 502 generic response code to some commands that are not
4.1104 + implemented.)
4.1105 +
4.1106 + Note: some commands have cases that require other commands to be used
4.1107 + first. If the former command is implemented but the latter is not,
4.1108 + the former MUST still generate the relevant specific response code.
4.1109 + For example, if ARTICLE (Section 6.2.1) is implemented but GROUP
4.1110 + (Section 6.1.1) is not, the correct response to "ARTICLE 1234"
4.1111 + remains 412.
4.1112 +
4.1113 +
4.1114 +
4.1115 +
4.1116 +
4.1117 +
4.1118 +
4.1119 +
4.1120 +Feather Standards Track [Page 20]
4.1121 +
4.1122 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1123 +
4.1124 +
4.1125 +3.4.1. Reading and Transit Servers
4.1126 +
4.1127 + NNTP is traditionally used in two different ways. The first use is
4.1128 + "reading", where the client fetches articles from a large store
4.1129 + maintained by the server for immediate or later presentation to a
4.1130 + user and sends articles created by that user back to the server (an
4.1131 + action called "posting") to be stored and distributed to other stores
4.1132 + and users. The second use is for the bulk transfer of articles from
4.1133 + one store to another. Since the hosts making this transfer tend to
4.1134 + be peers in a network that transmit articles among one another, and
4.1135 + not end-user systems, this process is called "peering" or "transit".
4.1136 + (Even so, one host is still the client and the other is the server).
4.1137 +
4.1138 + In practice, these two uses are so different that some server
4.1139 + implementations are optimised for reading or for transit and, as a
4.1140 + result, do not offer the other facility or only offer limited
4.1141 + features. Other implementations are more general and offer both.
4.1142 + This specification allows for this by bundling the relevant commands
4.1143 + accordingly: the IHAVE command is designed for transit, while the
4.1144 + commands indicated by the READER capability are designed for reading
4.1145 + clients.
4.1146 +
4.1147 + Except as an effect of the MODE READER command (Section 5.3) on a
4.1148 + mode-switching server, once a server advertises either or both of the
4.1149 + IHAVE or READER capabilities, it MUST continue to advertise them for
4.1150 + the entire session.
4.1151 +
4.1152 + A server MAY provide different modes of behaviour (transit, reader,
4.1153 + or a combination) to different client connections and MAY use
4.1154 + external information, such as the IP address of the client, to
4.1155 + determine which mode to provide to any given connection.
4.1156 +
4.1157 + The official TCP port for the NNTP service is 119. However, if a
4.1158 + host wishes to offer separate servers for transit and reading
4.1159 + clients, port 433 SHOULD be used for the transit server and 119 for
4.1160 + the reading server.
4.1161 +
4.1162 +3.4.2. Mode Switching
4.1163 +
4.1164 + An implementation MAY, but SHOULD NOT, provide both transit and
4.1165 + reader facilities on the same server but require the client to select
4.1166 + which it wishes to use. Such an arrangement is called a
4.1167 + "mode-switching" server.
4.1168 +
4.1169 +
4.1170 +
4.1171 +
4.1172 +
4.1173 +
4.1174 +
4.1175 +
4.1176 +Feather Standards Track [Page 21]
4.1177 +
4.1178 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1179 +
4.1180 +
4.1181 + A mode-switching server has two modes:
4.1182 +
4.1183 + o Transit mode, which applies after the initial connection.
4.1184 +
4.1185 + * It MUST advertise the MODE-READER capability.
4.1186 +
4.1187 + * It MUST NOT advertise the READER capability.
4.1188 +
4.1189 + However, the server MAY cease to advertise the MODE-READER
4.1190 + capability after the client uses any command except CAPABILITIES.
4.1191 +
4.1192 + o Reading mode, after a successful MODE READER command (see Section
4.1193 + 5.3).
4.1194 +
4.1195 + * It MUST NOT advertise the MODE-READER capability.
4.1196 +
4.1197 + * It MUST advertise the READER capability.
4.1198 +
4.1199 + * It MAY NOT advertise the IHAVE capability, even if it was
4.1200 + advertising it in transit mode.
4.1201 +
4.1202 + A client SHOULD only issue a MODE READER command to a server if it is
4.1203 + advertising the MODE-READER capability. If the server does not
4.1204 + support CAPABILITIES (and therefore does not conform to this
4.1205 + specification), the client MAY use the following heuristic:
4.1206 +
4.1207 + o If the client wishes to use any "reader" commands, it SHOULD use
4.1208 + the MODE READER command immediately after the initial connection.
4.1209 +
4.1210 + o Otherwise, it SHOULD NOT use the MODE READER command.
4.1211 +
4.1212 + In each case, it should be prepared for some commands to be
4.1213 + unavailable that would have been available if it had made the other
4.1214 + choice.
4.1215 +
4.1216 +3.5. Pipelining
4.1217 +
4.1218 + NNTP is designed to operate over a reliable bi-directional
4.1219 + connection, such as TCP. Therefore, if a command does not depend on
4.1220 + the response to the previous one, it should not matter if it is sent
4.1221 + before that response is received. Doing this is called "pipelining".
4.1222 + However, certain server implementations throw away all text received
4.1223 + from the client following certain commands before sending their
4.1224 + response. If this happens, pipelining will be affected because one
4.1225 + or more commands will have been ignored or misinterpreted, and the
4.1226 + client will be matching the wrong responses to each command. Since
4.1227 + there are significant benefits to pipelining, but also circumstances
4.1228 + where it is reasonable or common for servers to behave in the above
4.1229 +
4.1230 +
4.1231 +
4.1232 +Feather Standards Track [Page 22]
4.1233 +
4.1234 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1235 +
4.1236 +
4.1237 + manner, this document puts certain requirements on both clients and
4.1238 + servers.
4.1239 +
4.1240 + Except where stated otherwise, a client MAY use pipelining. That is,
4.1241 + it may send a command before receiving the response for the previous
4.1242 + command. The server MUST allow pipelining and MUST NOT throw away
4.1243 + any text received after a command. Irrespective of whether
4.1244 + pipelining is used, the server MUST process commands in the order
4.1245 + they are sent.
4.1246 +
4.1247 + If the specific description of a command says it "MUST NOT be
4.1248 + pipelined", that command MUST end any pipeline of commands. That is,
4.1249 + the client MUST NOT send any following command until it receives the
4.1250 + CRLF at the end of the response from the command. The server MAY
4.1251 + ignore any data received after the command and before the CRLF at the
4.1252 + end of the response is sent to the client.
4.1253 +
4.1254 + The initial connection must not be part of a pipeline; that is, the
4.1255 + client MUST NOT send any command until it receives the CRLF at the
4.1256 + end of the greeting.
4.1257 +
4.1258 + If the client uses blocking system calls to send commands, it MUST
4.1259 + ensure that the amount of text sent in pipelining does not cause a
4.1260 + deadlock between transmission and reception. The amount of text
4.1261 + involved will depend on window sizes in the transmission layer;
4.1262 + typically, it is 4k octets for TCP. (Since the server only sends
4.1263 + data in response to commands from the client, the converse problem
4.1264 + does not occur.)
4.1265 +
4.1266 +3.5.1. Examples
4.1267 +
4.1268 + Example of correct use of pipelining:
4.1269 +
4.1270 + [C] GROUP misc.test
4.1271 + [C] STAT
4.1272 + [C] NEXT
4.1273 + [S] 211 1234 3000234 3002322 misc.test
4.1274 + [S] 223 3000234 <45223423@example.com> retrieved
4.1275 + [S] 223 3000237 <668929@example.org> retrieved
4.1276 +
4.1277 + Example of incorrect use of pipelining (the MODE READER command may
4.1278 + not be pipelined):
4.1279 +
4.1280 + [C] MODE READER
4.1281 + [C] DATE
4.1282 + [C] NEXT
4.1283 + [S] 200 Server ready, posting allowed
4.1284 + [S] 223 3000237 <668929@example.org> retrieved
4.1285 +
4.1286 +
4.1287 +
4.1288 +Feather Standards Track [Page 23]
4.1289 +
4.1290 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1291 +
4.1292 +
4.1293 + The DATE command has been thrown away by the server, so there is no
4.1294 + 111 response to match it.
4.1295 +
4.1296 +3.6. Articles
4.1297 +
4.1298 + NNTP is intended to transfer articles between clients and servers.
4.1299 + For the purposes of this specification, articles are required to
4.1300 + conform to the rules in this section, and clients and servers MUST
4.1301 + correctly process any article received from the other that does so.
4.1302 + Note that this requirement applies only to the contents of
4.1303 + communications over NNTP; it does not prevent the client or server
4.1304 + from subsequently rejecting an article for reasons of local policy.
4.1305 + Also see Appendix A for further restrictions on the format of
4.1306 + articles in some uses of NNTP.
4.1307 +
4.1308 + An article consists of two parts: the headers and the body. They are
4.1309 + separated by a single empty line, or in other words by two
4.1310 + consecutive CRLF pairs (if there is more than one empty line, the
4.1311 + second and subsequent ones are part of the body). In order to meet
4.1312 + the general requirements of NNTP, an article MUST NOT include the
4.1313 + octet NUL, MUST NOT contain the octets LF and CR other than as part
4.1314 + of a CRLF pair, and MUST end with a CRLF pair. This specification
4.1315 + puts no further restrictions on the body; in particular, it MAY be
4.1316 + empty.
4.1317 +
4.1318 + The headers of an article consist of one or more header lines. Each
4.1319 + header line consists of a header name, a colon, a space, the header
4.1320 + content, and a CRLF, in that order. The name consists of one or more
4.1321 + printable US-ASCII characters other than colon and, for the purposes
4.1322 + of this specification, is not case sensitive. There MAY be more than
4.1323 + one header line with the same name. The content MUST NOT contain
4.1324 + CRLF; it MAY be empty. A header may be "folded"; that is, a CRLF
4.1325 + pair may be placed before any TAB or space in the line. There MUST
4.1326 + still be some other octet between any two CRLF pairs in a header
4.1327 + line. (Note that folding means that the header line occupies more
4.1328 + than one line when displayed or transmitted; nevertheless, it is
4.1329 + still referred to as "a" header line.) The presence or absence of
4.1330 + folding does not affect the meaning of the header line; that is, the
4.1331 + CRLF pairs introduced by folding are not considered part of the
4.1332 + header content. Header lines SHOULD NOT be folded before the space
4.1333 + after the colon that follows the header name and SHOULD include at
4.1334 + least one octet other than %x09 or %x20 between CRLF pairs. However,
4.1335 + if an article that fails to satisfy this requirement has been
4.1336 + received from elsewhere, clients and servers MAY transfer it to each
4.1337 + other without re-folding it.
4.1338 +
4.1339 +
4.1340 +
4.1341 +
4.1342 +
4.1343 +
4.1344 +Feather Standards Track [Page 24]
4.1345 +
4.1346 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1347 +
4.1348 +
4.1349 + The content of a header SHOULD be in UTF-8. However, if an
4.1350 + implementation receives an article from elsewhere that uses octets in
4.1351 + the range 128 to 255 in some other manner, it MAY pass it to a client
4.1352 + or server without modification. Therefore, implementations MUST be
4.1353 + prepared to receive such headers, and data derived from them (e.g.,
4.1354 + in the responses from the OVER command, Section 8.3), and MUST NOT
4.1355 + assume that they are always UTF-8. Any external processing of those
4.1356 + headers, including identifying the encoding used, is outside the
4.1357 + scope of this document.
4.1358 +
4.1359 + Each article MUST have a unique message-id; two articles offered by
4.1360 + an NNTP server MUST NOT have the same message-id. For the purposes
4.1361 + of this specification, message-ids are opaque strings that MUST meet
4.1362 + the following requirements:
4.1363 +
4.1364 + o A message-id MUST begin with "<", end with ">", and MUST NOT
4.1365 + contain the latter except at the end.
4.1366 +
4.1367 + o A message-id MUST be between 3 and 250 octets in length.
4.1368 +
4.1369 + o A message-id MUST NOT contain octets other than printable US-ASCII
4.1370 + characters.
4.1371 +
4.1372 + Two message-ids are the same if and only if they consist of the same
4.1373 + sequence of octets.
4.1374 +
4.1375 + This specification does not describe how the message-id of an article
4.1376 + is determined. If the server does not have any way to determine a
4.1377 + message-id from the article itself, it MUST synthesize one (this
4.1378 + specification does not require that the article be changed as a
4.1379 + result). See also Appendix A.2.
4.1380 +
4.1381 +4. The WILDMAT Format
4.1382 +
4.1383 + The WILDMAT format described here is based on the version first
4.1384 + developed by Rich Salz [SALZ1992], which was in turn derived from the
4.1385 + format used in the UNIX "find" command to articulate file names. It
4.1386 + was developed to provide a uniform mechanism for matching patterns in
4.1387 + the same manner that the UNIX shell matches filenames.
4.1388 +
4.1389 +
4.1390 +
4.1391 +
4.1392 +
4.1393 +
4.1394 +
4.1395 +
4.1396 +
4.1397 +
4.1398 +
4.1399 +
4.1400 +Feather Standards Track [Page 25]
4.1401 +
4.1402 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1403 +
4.1404 +
4.1405 +4.1. Wildmat Syntax
4.1406 +
4.1407 + A wildmat is described by the following ABNF [RFC4234] syntax, which
4.1408 + is an extract of that in Section 9.8.
4.1409 +
4.1410 + wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
4.1411 + wildmat-pattern = 1*wildmat-item
4.1412 + wildmat-item = wildmat-exact / wildmat-wild
4.1413 + wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
4.1414 + UTF8-non-ascii ; exclude ! * , ? [ \ ]
4.1415 + wildmat-wild = "*" / "?"
4.1416 +
4.1417 + Note: the characters ",", "\", "[", and "]" are not allowed in
4.1418 + wildmats, while * and ? are always wildcards. This should not be a
4.1419 + problem, since these characters cannot occur in newsgroup names,
4.1420 + which is the only current use of wildmats. Backslash is commonly
4.1421 + used to suppress the special meaning of characters, whereas brackets
4.1422 + are used to introduce sets. However, these usages are not universal,
4.1423 + and interpretation of these characters in the context of UTF-8
4.1424 + strings is potentially complex and differs from existing practice, so
4.1425 + they were omitted from this specification. A future extension to
4.1426 + this specification may provide semantics for these characters.
4.1427 +
4.1428 +4.2. Wildmat Semantics
4.1429 +
4.1430 + A wildmat is tested against a string and either matches or does not
4.1431 + match. To do this, each constituent <wildmat-pattern> is matched
4.1432 + against the string, and the rightmost pattern that matches is
4.1433 + identified. If that <wildmat-pattern> is not preceded with "!", the
4.1434 + whole wildmat matches. If it is preceded by "!", or if no <wildmat-
4.1435 + pattern> matches, the whole wildmat does not match.
4.1436 +
4.1437 + For example, consider the wildmat "a*,!*b,*c*":
4.1438 +
4.1439 + o The string "aaa" matches because the rightmost match is with "a*".
4.1440 +
4.1441 + o The string "abb" does not match because the rightmost match is
4.1442 + with "*b".
4.1443 +
4.1444 + o The string "ccb" matches because the rightmost match is with
4.1445 + "*c*".
4.1446 +
4.1447 + o The string "xxx" does not match because no <wildmat-pattern>
4.1448 + matches.
4.1449 +
4.1450 + A <wildmat-pattern> matches a string if the string can be broken into
4.1451 + components, each of which matches the corresponding <wildmat-item> in
4.1452 + the pattern. The matches must be in the same order, and the whole
4.1453 +
4.1454 +
4.1455 +
4.1456 +Feather Standards Track [Page 26]
4.1457 +
4.1458 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1459 +
4.1460 +
4.1461 + string must be used in the match. The pattern is "anchored"; that
4.1462 + is, the first and last characters in the string must match the first
4.1463 + and last item, respectively (unless that item is an asterisk matching
4.1464 + zero characters).
4.1465 +
4.1466 + A <wildmat-exact> matches the same character (which may be more than
4.1467 + one octet in UTF-8).
4.1468 +
4.1469 + "?" matches exactly one character (which may be more than one octet).
4.1470 +
4.1471 + "*" matches zero or more characters. It can match an empty string,
4.1472 + but it cannot match a subsequence of a UTF-8 sequence that is not
4.1473 + aligned to the character boundaries.
4.1474 +
4.1475 +4.3. Extensions
4.1476 +
4.1477 + An NNTP server or extension MAY extend the syntax or semantics of
4.1478 + wildmats provided that all wildmats that meet the requirements of
4.1479 + Section 4.1 have the meaning ascribed to them by Section 4.2. Future
4.1480 + editions of this document may also extend wildmats.
4.1481 +
4.1482 +4.4. Examples
4.1483 +
4.1484 + In these examples, $ and @ are used to represent the two octets %xC2
4.1485 + and %xA3, respectively; $@ is thus the UTF-8 encoding for the pound
4.1486 + sterling symbol, shown as # in the descriptions.
4.1487 +
4.1488 + Wildmat Description of strings that match
4.1489 + abc The one string "abc"
4.1490 + abc,def The two strings "abc" and "def"
4.1491 + $@ The one character string "#"
4.1492 + a* Any string that begins with "a"
4.1493 + a*b Any string that begins with "a" and ends with "b"
4.1494 + a*,*b Any string that begins with "a" or ends with "b"
4.1495 + a*,!*b Any string that begins with "a" and does not end with
4.1496 + "b"
4.1497 + a*,!*b,c* Any string that begins with "a" and does not end with
4.1498 + "b", and any string that begins with "c" no matter
4.1499 + what it ends with
4.1500 + a*,c*,!*b Any string that begins with "a" or "c" and does not
4.1501 + end with "b"
4.1502 + ?a* Any string with "a" as its second character
4.1503 + ??a* Any string with "a" as its third character
4.1504 + *a? Any string with "a" as its penultimate character
4.1505 + *a?? Any string with "a" as its antepenultimate character
4.1506 +
4.1507 +
4.1508 +
4.1509 +
4.1510 +
4.1511 +
4.1512 +Feather Standards Track [Page 27]
4.1513 +
4.1514 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1515 +
4.1516 +
4.1517 +5. Session Administration Commands
4.1518 +
4.1519 +5.1. Initial Connection
4.1520 +
4.1521 +5.1.1. Usage
4.1522 +
4.1523 + This command MUST NOT be pipelined.
4.1524 +
4.1525 + Responses [1]
4.1526 + 200 Service available, posting allowed
4.1527 + 201 Service available, posting prohibited
4.1528 + 400 Service temporarily unavailable [2]
4.1529 + 502 Service permanently unavailable [2]
4.1530 +
4.1531 + [1] These are the only valid response codes for the initial greeting;
4.1532 + the server MUST not return any other generic response code.
4.1533 +
4.1534 + [2] Following a 400 or 502 response, the server MUST immediately
4.1535 + close the connection.
4.1536 +
4.1537 +5.1.2. Description
4.1538 +
4.1539 + There is no command presented by the client upon initial connection
4.1540 + to the server. The server MUST present an appropriate response code
4.1541 + as a greeting to the client. This response informs the client
4.1542 + whether service is available and whether the client is permitted to
4.1543 + post.
4.1544 +
4.1545 + If the server will accept further commands from the client including
4.1546 + POST, the server MUST present a 200 greeting code. If the server
4.1547 + will accept further commands from the client, but the client is not
4.1548 + authorized to post articles using the POST command, the server MUST
4.1549 + present a 201 greeting code.
4.1550 +
4.1551 + Otherwise, the server MUST present a 400 or 502 greeting code and
4.1552 + then immediately close the connection. 400 SHOULD be used if the
4.1553 + issue is only temporary (for example, because of load) and the client
4.1554 + can expect to be able to connect successfully at some point in the
4.1555 + future without making any changes. 502 MUST be used if the client is
4.1556 + not permitted under any circumstances to interact with the server,
4.1557 + and MAY be used if the server has insufficient information to
4.1558 + determine whether the issue is temporary or permanent.
4.1559 +
4.1560 + Note: the distinction between the 200 and 201 response codes has
4.1561 + turned out in practice to be insufficient; for example, some servers
4.1562 + do not allow posting until the client has authenticated, while other
4.1563 + clients assume that a 201 response means that posting will never be
4.1564 + possible even after authentication. Therefore, clients SHOULD use
4.1565 +
4.1566 +
4.1567 +
4.1568 +Feather Standards Track [Page 28]
4.1569 +
4.1570 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1571 +
4.1572 +
4.1573 + the CAPABILITIES command (Section 5.2) rather than rely on this
4.1574 + response.
4.1575 +
4.1576 +5.1.3. Examples
4.1577 +
4.1578 + Example of a normal connection from an authorized client that then
4.1579 + terminates the session (see Section 5.4):
4.1580 +
4.1581 + [Initial connection set-up completed.]
4.1582 + [S] 200 NNTP Service Ready, posting permitted
4.1583 + [C] QUIT
4.1584 + [S] 205 NNTP Service exits normally
4.1585 + [Server closes connection.]
4.1586 +
4.1587 + Example of a normal connection from an authorized client that is not
4.1588 + permitted to post, which also immediately terminates the session:
4.1589 +
4.1590 + [Initial connection set-up completed.]
4.1591 + [S] 201 NNTP Service Ready, posting prohibited
4.1592 + [C] QUIT
4.1593 + [S] 205 NNTP Service exits normally
4.1594 + [Server closes connection.]
4.1595 +
4.1596 + Example of a normal connection from an unauthorized client:
4.1597 +
4.1598 + [Initial connection set-up completed.]
4.1599 + [S] 502 NNTP Service permanently unavailable
4.1600 + [Server closes connection.]
4.1601 +
4.1602 + Example of a connection from a client if the server is unable to
4.1603 + provide service:
4.1604 +
4.1605 + [Initial connection set-up completed.]
4.1606 + [S] 400 NNTP Service temporarily unavailable
4.1607 + [Server closes connection.]
4.1608 +
4.1609 +5.2. CAPABILITIES
4.1610 +
4.1611 +5.2.1. Usage
4.1612 +
4.1613 + This command is mandatory.
4.1614 +
4.1615 + Syntax
4.1616 + CAPABILITIES [keyword]
4.1617 +
4.1618 + Responses
4.1619 + 101 Capability list follows (multi-line)
4.1620 +
4.1621 +
4.1622 +
4.1623 +
4.1624 +Feather Standards Track [Page 29]
4.1625 +
4.1626 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1627 +
4.1628 +
4.1629 + Parameters
4.1630 + keyword additional feature, see description
4.1631 +
4.1632 +5.2.2. Description
4.1633 +
4.1634 + The CAPABILITIES command allows a client to determine the
4.1635 + capabilities of the server at any given time.
4.1636 +
4.1637 + This command MAY be issued at any time; the server MUST NOT require
4.1638 + it to be issued in order to make use of any capability. The response
4.1639 + generated by this command MAY change during a session because of
4.1640 + other state information (which, in turn, may be changed by the
4.1641 + effects of other commands or by external events). An NNTP client is
4.1642 + only able to get the current and correct information concerning
4.1643 + available capabilities at any point during a session by issuing a
4.1644 + CAPABILITIES command at that point of that session and processing the
4.1645 + response.
4.1646 +
4.1647 + The capability list is returned as a multi-line data block following
4.1648 + the 101 response code. Each capability is described by a separate
4.1649 + capability line. The server MUST NOT list the same capability twice
4.1650 + in the response, even with different arguments. Except that the
4.1651 + VERSION capability MUST be the first line, the order in which the
4.1652 + capability lines appears is not significant; the server need not even
4.1653 + consistently return the same order.
4.1654 +
4.1655 + While some capabilities are likely to be always available or never
4.1656 + available, others (notably extensions) will appear and disappear
4.1657 + depending on server state changes within the session or on external
4.1658 + events between sessions. An NNTP client MAY cache the results of
4.1659 + this command, but MUST NOT rely on the correctness of any cached
4.1660 + results, whether from earlier in this session or from a previous
4.1661 + session, MUST cope gracefully with the cached status being out of
4.1662 + date, and SHOULD (if caching results) provide a way to force the
4.1663 + cached information to be refreshed. Furthermore, a client MUST NOT
4.1664 + use cached results in relation to security, privacy, and
4.1665 + authentication extensions. See Section 12.6 for further discussion
4.1666 + of this topic.
4.1667 +
4.1668 + The keyword argument is not used by this specification. It is
4.1669 + provided so that extensions or revisions to this specification can
4.1670 + include extra features for this command without requiring the
4.1671 + CAPABILITIES command to be used twice (once to determine if the extra
4.1672 + features are available, and a second time to make use of them). If
4.1673 + the server does not recognise the argument (and it is a keyword), it
4.1674 + MUST respond with the 101 response code as if the argument had been
4.1675 + omitted. If an argument is provided that the server does recognise,
4.1676 + it MAY use the 101 response code or MAY use some other response code
4.1677 +
4.1678 +
4.1679 +
4.1680 +Feather Standards Track [Page 30]
4.1681 +
4.1682 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1683 +
4.1684 +
4.1685 + (which will be defined in the specification of that feature). If the
4.1686 + argument is not a keyword, the 501 generic response code MUST be
4.1687 + returned. The server MUST NOT generate any other response code to
4.1688 + the CAPABILITIES command.
4.1689 +
4.1690 +5.2.3. Examples
4.1691 +
4.1692 + Example of a minimal response (a read-only server):
4.1693 +
4.1694 + [C] CAPABILITIES
4.1695 + [S] 101 Capability list:
4.1696 + [S] VERSION 2
4.1697 + [S] READER
4.1698 + [S] LIST ACTIVE NEWSGROUPS
4.1699 + [S] .
4.1700 +
4.1701 + Example of a response from a server that has a range of facilities
4.1702 + and that also describes itself:
4.1703 +
4.1704 + [C] CAPABILITIES
4.1705 + [S] 101 Capability list:
4.1706 + [S] VERSION 2
4.1707 + [S] READER
4.1708 + [S] IHAVE
4.1709 + [S] POST
4.1710 + [S] NEWNEWS
4.1711 + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES OVERVIEW.FMT
4.1712 + [S] IMPLEMENTATION INN 4.2 2004-12-25
4.1713 + [S] OVER MSGID
4.1714 + [S] STREAMING
4.1715 + [S] XSECRET
4.1716 + [S] .
4.1717 +
4.1718 + Example of a server that supports more than one version of NNTP:
4.1719 +
4.1720 + [C] CAPABILITIES
4.1721 + [S] 101 Capability list:
4.1722 + [S] VERSION 2 3
4.1723 + [S] READER
4.1724 + [S] LIST ACTIVE NEWSGROUPS
4.1725 + [S] .
4.1726 +
4.1727 +
4.1728 +
4.1729 +
4.1730 +
4.1731 +
4.1732 +
4.1733 +
4.1734 +
4.1735 +
4.1736 +Feather Standards Track [Page 31]
4.1737 +
4.1738 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1739 +
4.1740 +
4.1741 + Example of a client attempting to use a feature of the CAPABILITIES
4.1742 + command that the server does not support:
4.1743 +
4.1744 + [C] CAPABILITIES AUTOUPDATE
4.1745 + [S] 101 Capability list:
4.1746 + [S] VERSION 2
4.1747 + [S] READER
4.1748 + [S] IHAVE
4.1749 + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT HEADERS
4.1750 + [S] OVER MSGID
4.1751 + [S] HDR
4.1752 + [S] NEWNEWS
4.1753 + [S] .
4.1754 +
4.1755 +5.3. MODE READER
4.1756 +
4.1757 +5.3.1. Usage
4.1758 +
4.1759 + Indicating capability: MODE-READER
4.1760 +
4.1761 + This command MUST NOT be pipelined.
4.1762 +
4.1763 + Syntax
4.1764 + MODE READER
4.1765 +
4.1766 + Responses
4.1767 + 200 Posting allowed
4.1768 + 201 Posting prohibited
4.1769 + 502 Reading service permanently unavailable [1]
4.1770 +
4.1771 + [1] Following a 502 response the server MUST immediately close the
4.1772 + connection.
4.1773 +
4.1774 +5.3.2. Description
4.1775 +
4.1776 + The MODE READER command instructs a mode-switching server to switch
4.1777 + modes, as described in Section 3.4.2.
4.1778 +
4.1779 + If the server is mode-switching, it switches from its transit mode to
4.1780 + its reader mode, indicating this by changing the capability list
4.1781 + accordingly. It MUST then return a 200 or 201 response with the same
4.1782 + meaning as for the initial greeting (as described in Section 5.1.1).
4.1783 + Note that the response need not be the same as that presented during
4.1784 + the initial greeting. The client MUST NOT issue MODE READER more
4.1785 + than once in a session or after any security or privacy commands are
4.1786 + issued. When the MODE READER command is issued, the server MAY reset
4.1787 + its state to that immediately after the initial connection before
4.1788 + switching mode.
4.1789 +
4.1790 +
4.1791 +
4.1792 +Feather Standards Track [Page 32]
4.1793 +
4.1794 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1795 +
4.1796 +
4.1797 + If the server is not mode-switching, then the following apply:
4.1798 +
4.1799 + o If it advertises the READER capability, it MUST return a 200 or
4.1800 + 201 response with the same meaning as for the initial greeting; in
4.1801 + this case, the command MUST NOT affect the server state in any
4.1802 + way.
4.1803 +
4.1804 + o If it does not advertise the READER capability, it MUST return a
4.1805 + 502 response and then immediately close the connection.
4.1806 +
4.1807 +5.3.3. Examples
4.1808 +
4.1809 + Example of use of the MODE READER command on a transit-only server
4.1810 + (which therefore does not providing reading facilities):
4.1811 +
4.1812 + [C] CAPABILITIES
4.1813 + [S] 101 Capability list:
4.1814 + [S] VERSION 2
4.1815 + [S] IHAVE
4.1816 + [S] .
4.1817 + [C] MODE READER
4.1818 + [S] 502 Transit service only
4.1819 + [Server closes connection.]
4.1820 +
4.1821 + Example of use of the MODE READER command on a server that provides
4.1822 + reading facilities:
4.1823 +
4.1824 + [C] CAPABILITIES
4.1825 + [S] 101 Capability list:
4.1826 + [S] VERSION 2
4.1827 + [S] READER
4.1828 + [S] LIST ACTIVE NEWSGROUPS
4.1829 + [S] .
4.1830 + [C] MODE READER
4.1831 + [S] 200 Reader mode, posting permitted
4.1832 + [C] IHAVE <i.am.an.article.you.have@example.com>
4.1833 + [S] 500 Permission denied
4.1834 + [C] GROUP misc.test
4.1835 + [S] 211 1234 3000234 3002322 misc.test
4.1836 +
4.1837 + Note that in both of these situations, the client SHOULD NOT use MODE
4.1838 + READER.
4.1839 +
4.1840 +
4.1841 +
4.1842 +
4.1843 +
4.1844 +
4.1845 +
4.1846 +
4.1847 +
4.1848 +Feather Standards Track [Page 33]
4.1849 +
4.1850 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1851 +
4.1852 +
4.1853 + Example of use of the MODE READER command on a mode-switching server:
4.1854 +
4.1855 + [C] CAPABILITIES
4.1856 + [S] 101 Capability list:
4.1857 + [S] VERSION 2
4.1858 + [S] IHAVE
4.1859 + [S] MODE-READER
4.1860 + [S] .
4.1861 + [C] MODE READER
4.1862 + [S] 200 Reader mode, posting permitted
4.1863 + [C] CAPABILITIES
4.1864 + [S] 101 Capability list:
4.1865 + [S] VERSION 2
4.1866 + [S] READER
4.1867 + [S] NEWNEWS
4.1868 + [S] LIST ACTIVE NEWSGROUPS
4.1869 + [S] STARTTLS
4.1870 + [S] .
4.1871 +
4.1872 + In this case, the server offers (but does not require) TLS privacy in
4.1873 + its reading mode but not in its transit mode.
4.1874 +
4.1875 + Example of use of the MODE READER command where the client is not
4.1876 + permitted to post:
4.1877 +
4.1878 + [C] MODE READER
4.1879 + [S] 201 NNTP Service Ready, posting prohibited
4.1880 +
4.1881 +5.4. QUIT
4.1882 +
4.1883 +5.4.1. Usage
4.1884 +
4.1885 + This command is mandatory.
4.1886 +
4.1887 + Syntax
4.1888 + QUIT
4.1889 +
4.1890 + Responses
4.1891 + 205 Connection closing
4.1892 +
4.1893 +5.4.2. Description
4.1894 +
4.1895 + The client uses the QUIT command to terminate the session. The
4.1896 + server MUST acknowledge the QUIT command and then close the
4.1897 + connection to the client. This is the preferred method for a client
4.1898 + to indicate that it has finished all of its transactions with the
4.1899 + NNTP server.
4.1900 +
4.1901 +
4.1902 +
4.1903 +
4.1904 +Feather Standards Track [Page 34]
4.1905 +
4.1906 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1907 +
4.1908 +
4.1909 + If a client simply disconnects (or if the connection times out or
4.1910 + some other fault occurs), the server MUST gracefully cease its
4.1911 + attempts to service the client, disconnecting from its end if
4.1912 + necessary.
4.1913 +
4.1914 + The server MUST NOT generate any response code to the QUIT command
4.1915 + other than 205 or, if any arguments are provided, 501.
4.1916 +
4.1917 +5.4.3. Examples
4.1918 +
4.1919 + [C] QUIT
4.1920 + [S] 205 closing connection
4.1921 + [Server closes connection.]
4.1922 +
4.1923 +6. Article Posting and Retrieval
4.1924 +
4.1925 + News-reading clients have available a variety of mechanisms to
4.1926 + retrieve articles via NNTP. The news articles are stored and indexed
4.1927 + using three types of keys. The first type of key is the message-id
4.1928 + of an article and is globally unique. The second type of key is
4.1929 + composed of a newsgroup name and an article number within that
4.1930 + newsgroup. On a particular server, there MUST only be one article
4.1931 + with a given number within any newsgroup, and an article MUST NOT
4.1932 + have two different numbers in the same newsgroup. An article can be
4.1933 + cross-posted to multiple newsgroups, so there may be multiple keys
4.1934 + that point to the same article on the same server; these MAY have
4.1935 + different numbers in each newsgroup. However, this type of key is
4.1936 + not required to be globally unique, so the same key MAY refer to
4.1937 + different articles on different servers. (Note that the terms
4.1938 + "group" and "newsgroup" are equivalent.)
4.1939 +
4.1940 + The final type of key is the arrival timestamp, giving the time that
4.1941 + the article arrived at the server. The server MUST ensure that
4.1942 + article numbers are issued in order of arrival timestamp; that is,
4.1943 + articles arriving later MUST have higher numbers than those that
4.1944 + arrive earlier. The server SHOULD allocate the next sequential
4.1945 + unused number to each new article.
4.1946 +
4.1947 + Article numbers MUST lie between 1 and 2,147,483,647, inclusive. The
4.1948 + client and server MAY use leading zeroes in specifying article
4.1949 + numbers but MUST NOT use more than 16 digits. In some situations,
4.1950 + the value zero replaces an article number to show some special
4.1951 + situation.
4.1952 +
4.1953 + Note that it is likely that the article number limit of 2,147,483,647
4.1954 + will be increased by a future revision or extension to this
4.1955 + specification. While servers MUST NOT send article numbers greater
4.1956 + than this current limit, client and server developers are advised to
4.1957 +
4.1958 +
4.1959 +
4.1960 +Feather Standards Track [Page 35]
4.1961 +
4.1962 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.1963 +
4.1964 +
4.1965 + use internal structures and datatypes capable of handling larger
4.1966 + values in anticipation of such a change.
4.1967 +
4.1968 +6.1. Group and Article Selection
4.1969 +
4.1970 + The following commands are used to set the "currently selected
4.1971 + newsgroup" and the "current article number", which are used by
4.1972 + various commands. At the start of an NNTP session, both of these
4.1973 + values are set to the special value "invalid".
4.1974 +
4.1975 +6.1.1. GROUP
4.1976 +
4.1977 +6.1.1.1. Usage
4.1978 +
4.1979 + Indicating capability: READER
4.1980 +
4.1981 + Syntax
4.1982 + GROUP group
4.1983 +
4.1984 + Responses
4.1985 + 211 number low high group Group successfully selected
4.1986 + 411 No such newsgroup
4.1987 +
4.1988 + Parameters
4.1989 + group Name of newsgroup
4.1990 + number Estimated number of articles in the group
4.1991 + low Reported low water mark
4.1992 + high Reported high water mark
4.1993 +
4.1994 +6.1.1.2. Description
4.1995 +
4.1996 + The GROUP command selects a newsgroup as the currently selected
4.1997 + newsgroup and returns summary information about it.
4.1998 +
4.1999 + The required argument is the name of the newsgroup to be selected
4.2000 + (e.g., "news.software.nntp"). A list of valid newsgroups may be
4.2001 + obtained by using the LIST ACTIVE command (see Section 7.6.3).
4.2002 +
4.2003 + The successful selection response will return the article numbers of
4.2004 + the first and last articles in the group at the moment of selection
4.2005 + (these numbers are referred to as the "reported low water mark" and
4.2006 + the "reported high water mark") and an estimate of the number of
4.2007 + articles in the group currently available.
4.2008 +
4.2009 + If the group is not empty, the estimate MUST be at least the actual
4.2010 + number of articles available and MUST be no greater than one more
4.2011 + than the difference between the reported low and high water marks.
4.2012 + (Some implementations will actually count the number of articles
4.2013 +
4.2014 +
4.2015 +
4.2016 +Feather Standards Track [Page 36]
4.2017 +
4.2018 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2019 +
4.2020 +
4.2021 + currently stored. Others will just subtract the low water mark from
4.2022 + the high water mark and add one to get an estimate.)
4.2023 +
4.2024 + If the group is empty, one of the following three situations will
4.2025 + occur. Clients MUST accept all three cases; servers MUST NOT
4.2026 + represent an empty group in any other way.
4.2027 +
4.2028 + o The high water mark will be one less than the low water mark, and
4.2029 + the estimated article count will be zero. Servers SHOULD use this
4.2030 + method to show an empty group. This is the only time that the
4.2031 + high water mark can be less than the low water mark.
4.2032 +
4.2033 + o All three numbers will be zero.
4.2034 +
4.2035 + o The high water mark is greater than or equal to the low water
4.2036 + mark. The estimated article count might be zero or non-zero; if
4.2037 + it is non-zero, the same requirements apply as for a non-empty
4.2038 + group.
4.2039 +
4.2040 + The set of articles in a group may change after the GROUP command is
4.2041 + carried out:
4.2042 +
4.2043 + o Articles may be removed from the group.
4.2044 +
4.2045 + o Articles may be reinstated in the group with the same article
4.2046 + number, but those articles MUST have numbers no less than the
4.2047 + reported low water mark (note that this is a reinstatement of the
4.2048 + previous article, not a new article reusing the number).
4.2049 +
4.2050 + o New articles may be added with article numbers greater than the
4.2051 + reported high water mark. (If an article that was the one with
4.2052 + the highest number has been removed and the high water mark has
4.2053 + been adjusted accordingly, the next new article will not have the
4.2054 + number one greater than the reported high water mark.)
4.2055 +
4.2056 + Except when the group is empty and all three numbers are zero,
4.2057 + whenever a subsequent GROUP command for the same newsgroup is issued,
4.2058 + either by the same client or a different client, the reported low
4.2059 + water mark in the response MUST be no less than that in any previous
4.2060 + response for that newsgroup in this session, and it SHOULD be no less
4.2061 + than that in any previous response for that newsgroup ever sent to
4.2062 + any client. Any failure to meet the latter condition SHOULD be
4.2063 + transient only. The client may make use of the low water mark to
4.2064 + remove all remembered information about articles with lower numbers,
4.2065 + as these will never recur. This includes the situation when the high
4.2066 + water mark is one less than the low water mark. No similar
4.2067 + assumption can be made about the high water mark, as this can
4.2068 +
4.2069 +
4.2070 +
4.2071 +
4.2072 +Feather Standards Track [Page 37]
4.2073 +
4.2074 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2075 +
4.2076 +
4.2077 + decrease if an article is removed and then increase again if it is
4.2078 + reinstated or if new articles arrive.
4.2079 +
4.2080 + When a valid group is selected by means of this command, the
4.2081 + currently selected newsgroup MUST be set to that group, and the
4.2082 + current article number MUST be set to the first article in the group
4.2083 + (this applies even if the group is already the currently selected
4.2084 + newsgroup). If an empty newsgroup is selected, the current article
4.2085 + number is made invalid. If an invalid group is specified, the
4.2086 + currently selected newsgroup and current article number MUST NOT be
4.2087 + changed.
4.2088 +
4.2089 + The GROUP or LISTGROUP command (see Section 6.1.2) MUST be used by a
4.2090 + client, and a successful response received, before any other command
4.2091 + is used that depends on the value of the currently selected newsgroup
4.2092 + or current article number.
4.2093 +
4.2094 + If the group specified is not available on the server, a 411 response
4.2095 + MUST be returned.
4.2096 +
4.2097 +6.1.1.3. Examples
4.2098 +
4.2099 + Example for a group known to the server:
4.2100 +
4.2101 + [C] GROUP misc.test
4.2102 + [S] 211 1234 3000234 3002322 misc.test
4.2103 +
4.2104 + Example for a group unknown to the server:
4.2105 +
4.2106 + [C] GROUP example.is.sob.bradner.or.barber
4.2107 + [S] 411 example.is.sob.bradner.or.barber is unknown
4.2108 +
4.2109 + Example of an empty group using the preferred response:
4.2110 +
4.2111 + [C] GROUP example.currently.empty.newsgroup
4.2112 + [S] 211 0 4000 3999 example.currently.empty.newsgroup
4.2113 +
4.2114 + Example of an empty group using an alternative response:
4.2115 +
4.2116 + [C] GROUP example.currently.empty.newsgroup
4.2117 + [S] 211 0 0 0 example.currently.empty.newsgroup
4.2118 +
4.2119 + Example of an empty group using a different alternative response:
4.2120 +
4.2121 + [C] GROUP example.currently.empty.newsgroup
4.2122 + [S] 211 0 4000 4321 example.currently.empty.newsgroup
4.2123 +
4.2124 +
4.2125 +
4.2126 +
4.2127 +
4.2128 +Feather Standards Track [Page 38]
4.2129 +
4.2130 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2131 +
4.2132 +
4.2133 + Example reselecting the currently selected newsgroup:
4.2134 +
4.2135 + [C] GROUP misc.test
4.2136 + [S] 211 1234 234 567 misc.test
4.2137 + [C] STAT 444
4.2138 + [S] 223 444 <123456@example.net> retrieved
4.2139 + [C] GROUP misc.test
4.2140 + [S] 211 1234 234 567 misc.test
4.2141 + [C] STAT
4.2142 + [S] 223 234 <different@example.net> retrieved
4.2143 +
4.2144 +6.1.2. LISTGROUP
4.2145 +
4.2146 +6.1.2.1. Usage
4.2147 +
4.2148 + Indicating capability: READER
4.2149 +
4.2150 + Syntax
4.2151 + LISTGROUP [group [range]]
4.2152 +
4.2153 + Responses
4.2154 + 211 number low high group Article numbers follow (multi-line)
4.2155 + 411 No such newsgroup
4.2156 + 412 No newsgroup selected [1]
4.2157 +
4.2158 + Parameters
4.2159 + group Name of newsgroup
4.2160 + range Range of articles to report
4.2161 + number Estimated number of articles in the group
4.2162 + low Reported low water mark
4.2163 + high Reported high water mark
4.2164 +
4.2165 + [1] The 412 response can only occur if no group has been specified.
4.2166 +
4.2167 +6.1.2.2. Description
4.2168 +
4.2169 + The LISTGROUP command selects a newsgroup in the same manner as the
4.2170 + GROUP command (see Section 6.1.1) but also provides a list of article
4.2171 + numbers in the newsgroup. If no group is specified, the currently
4.2172 + selected newsgroup is used.
4.2173 +
4.2174 + On success, a list of article numbers is returned as a multi-line
4.2175 + data block following the 211 response code (the arguments on the
4.2176 + initial response line are the same as for the GROUP command). The
4.2177 + list contains one number per line and is in numerical order. It
4.2178 + lists precisely those articles that exist in the group at the moment
4.2179 + of selection (therefore, an empty group produces an empty list). If
4.2180 + the optional range argument is specified, only articles within the
4.2181 +
4.2182 +
4.2183 +
4.2184 +Feather Standards Track [Page 39]
4.2185 +
4.2186 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2187 +
4.2188 +
4.2189 + range are included in the list (therefore, the list MAY be empty even
4.2190 + if the group is not).
4.2191 +
4.2192 + The range argument may be any of the following:
4.2193 +
4.2194 + o An article number.
4.2195 +
4.2196 + o An article number followed by a dash to indicate all following.
4.2197 +
4.2198 + o An article number followed by a dash followed by another article
4.2199 + number.
4.2200 +
4.2201 + In the last case, if the second number is less than the first number,
4.2202 + then the range contains no articles. Omitting the range is
4.2203 + equivalent to the range 1- being specified.
4.2204 +
4.2205 + If the group specified is not available on the server, a 411 response
4.2206 + MUST be returned. If no group is specified and the currently
4.2207 + selected newsgroup is invalid, a 412 response MUST be returned.
4.2208 +
4.2209 + Except that the group argument is optional, that a range argument can
4.2210 + be specified, and that a multi-line data block follows the 211
4.2211 + response code, the LISTGROUP command is identical to the GROUP
4.2212 + command. In particular, when successful, the command sets the
4.2213 + current article number to the first article in the group, if any,
4.2214 + even if this is not within the range specified by the second
4.2215 + argument.
4.2216 +
4.2217 + Note that the range argument is a new feature in this specification
4.2218 + and servers that do not support CAPABILITIES (and therefore do not
4.2219 + conform to this specification) are unlikely to support it.
4.2220 +
4.2221 +6.1.2.3. Examples
4.2222 +
4.2223 + Example of LISTGROUP being used to select a group:
4.2224 +
4.2225 + [C] LISTGROUP misc.test
4.2226 + [S] 211 2000 3000234 3002322 misc.test list follows
4.2227 + [S] 3000234
4.2228 + [S] 3000237
4.2229 + [S] 3000238
4.2230 + [S] 3000239
4.2231 + [S] 3002322
4.2232 + [S] .
4.2233 +
4.2234 +
4.2235 +
4.2236 +
4.2237 +
4.2238 +
4.2239 +
4.2240 +Feather Standards Track [Page 40]
4.2241 +
4.2242 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2243 +
4.2244 +
4.2245 + Example of LISTGROUP on an empty group:
4.2246 +
4.2247 + [C] LISTGROUP example.empty.newsgroup
4.2248 + [S] 211 0 0 0 example.empty.newsgroup list follows
4.2249 + [S] .
4.2250 +
4.2251 + Example of LISTGROUP on a valid, currently selected newsgroup:
4.2252 +
4.2253 + [C] GROUP misc.test
4.2254 + [S] 211 2000 3000234 3002322 misc.test
4.2255 + [C] LISTGROUP
4.2256 + [S] 211 2000 3000234 3002322 misc.test list follows
4.2257 + [S] 3000234
4.2258 + [S] 3000237
4.2259 + [S] 3000238
4.2260 + [S] 3000239
4.2261 + [S] 3002322
4.2262 + [S] .
4.2263 +
4.2264 + Example of LISTGROUP with a range:
4.2265 +
4.2266 + [C] LISTGROUP misc.test 3000238-3000248
4.2267 + [S] 211 2000 3000234 3002322 misc.test list follows
4.2268 + [S] 3000238
4.2269 + [S] 3000239
4.2270 + [S] .
4.2271 +
4.2272 + Example of LISTGROUP with an empty range:
4.2273 +
4.2274 + [C] LISTGROUP misc.test 12345678-
4.2275 + [S] 211 2000 3000234 3002322 misc.test list follows
4.2276 + [S] .
4.2277 +
4.2278 + Example of LISTGROUP with an invalid range:
4.2279 +
4.2280 + [C] LISTGROUP misc.test 9999-111
4.2281 + [S] 211 2000 3000234 3002322 misc.test list follows
4.2282 + [S] .
4.2283 +
4.2284 +
4.2285 +
4.2286 +
4.2287 +
4.2288 +
4.2289 +
4.2290 +
4.2291 +
4.2292 +
4.2293 +
4.2294 +
4.2295 +
4.2296 +Feather Standards Track [Page 41]
4.2297 +
4.2298 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2299 +
4.2300 +
4.2301 +6.1.3. LAST
4.2302 +
4.2303 +6.1.3.1. Usage
4.2304 +
4.2305 + Indicating capability: READER
4.2306 +
4.2307 + Syntax
4.2308 + LAST
4.2309 +
4.2310 + Responses
4.2311 + 223 n message-id Article found
4.2312 + 412 No newsgroup selected
4.2313 + 420 Current article number is invalid
4.2314 + 422 No previous article in this group
4.2315 +
4.2316 + Parameters
4.2317 + n Article number
4.2318 + message-id Article message-id
4.2319 +
4.2320 +6.1.3.2. Description
4.2321 +
4.2322 + If the currently selected newsgroup is valid, the current article
4.2323 + number MUST be set to the previous article in that newsgroup (that
4.2324 + is, the highest existing article number less than the current article
4.2325 + number). If successful, a response indicating the new current
4.2326 + article number and the message-id of that article MUST be returned.
4.2327 + No article text is sent in response to this command.
4.2328 +
4.2329 + There MAY be no previous article in the group, although the current
4.2330 + article number is not the reported low water mark. There MUST NOT be
4.2331 + a previous article when the current article number is the reported
4.2332 + low water mark.
4.2333 +
4.2334 + Because articles can be removed and added, the results of multiple
4.2335 + LAST and NEXT commands MAY not be consistent over the life of a
4.2336 + particular NNTP session.
4.2337 +
4.2338 + If the current article number is already the first article of the
4.2339 + newsgroup, a 422 response MUST be returned. If the current article
4.2340 + number is invalid, a 420 response MUST be returned. If the currently
4.2341 + selected newsgroup is invalid, a 412 response MUST be returned. In
4.2342 + all three cases, the currently selected newsgroup and current article
4.2343 + number MUST NOT be altered.
4.2344 +
4.2345 +
4.2346 +
4.2347 +
4.2348 +
4.2349 +
4.2350 +
4.2351 +
4.2352 +Feather Standards Track [Page 42]
4.2353 +
4.2354 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2355 +
4.2356 +
4.2357 +6.1.3.3. Examples
4.2358 +
4.2359 + Example of a successful article retrieval using LAST:
4.2360 +
4.2361 + [C] GROUP misc.test
4.2362 + [S] 211 1234 3000234 3002322 misc.test
4.2363 + [C] NEXT
4.2364 + [S] 223 3000237 <668929@example.org> retrieved
4.2365 + [C] LAST
4.2366 + [S] 223 3000234 <45223423@example.com> retrieved
4.2367 +
4.2368 + Example of an attempt to retrieve an article without having selected
4.2369 + a group (via the GROUP command) first:
4.2370 +
4.2371 + [Assumes currently selected newsgroup is invalid.]
4.2372 + [C] LAST
4.2373 + [S] 412 no newsgroup selected
4.2374 +
4.2375 + Example of an attempt to retrieve an article using the LAST command
4.2376 + when the current article number is that of the first article in the
4.2377 + group:
4.2378 +
4.2379 + [C] GROUP misc.test
4.2380 + [S] 211 1234 3000234 3002322 misc.test
4.2381 + [C] LAST
4.2382 + [S] 422 No previous article to retrieve
4.2383 +
4.2384 + Example of an attempt to retrieve an article using the LAST command
4.2385 + when the currently selected newsgroup is empty:
4.2386 +
4.2387 + [C] GROUP example.empty.newsgroup
4.2388 + [S] 211 0 0 0 example.empty.newsgroup
4.2389 + [C] LAST
4.2390 + [S] 420 No current article selected
4.2391 +
4.2392 +
4.2393 +
4.2394 +
4.2395 +
4.2396 +
4.2397 +
4.2398 +
4.2399 +
4.2400 +
4.2401 +
4.2402 +
4.2403 +
4.2404 +
4.2405 +
4.2406 +
4.2407 +
4.2408 +Feather Standards Track [Page 43]
4.2409 +
4.2410 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2411 +
4.2412 +
4.2413 +6.1.4. NEXT
4.2414 +
4.2415 +6.1.4.1. Usage
4.2416 +
4.2417 + Indicating capability: READER
4.2418 +
4.2419 + Syntax
4.2420 + NEXT
4.2421 +
4.2422 + Responses
4.2423 + 223 n message-id Article found
4.2424 + 412 No newsgroup selected
4.2425 + 420 Current article number is invalid
4.2426 + 421 No next article in this group
4.2427 +
4.2428 + Parameters
4.2429 + n Article number
4.2430 + message-id Article message-id
4.2431 +
4.2432 +6.1.4.2. Description
4.2433 +
4.2434 + If the currently selected newsgroup is valid, the current article
4.2435 + number MUST be set to the next article in that newsgroup (that is,
4.2436 + the lowest existing article number greater than the current article
4.2437 + number). If successful, a response indicating the new current
4.2438 + article number and the message-id of that article MUST be returned.
4.2439 + No article text is sent in response to this command.
4.2440 +
4.2441 + If the current article number is already the last article of the
4.2442 + newsgroup, a 421 response MUST be returned. In all other aspects
4.2443 + (apart, of course, from the lack of 422 response), this command is
4.2444 + identical to the LAST command (Section 6.1.3).
4.2445 +
4.2446 +6.1.4.3. Examples
4.2447 +
4.2448 + Example of a successful article retrieval using NEXT:
4.2449 +
4.2450 + [C] GROUP misc.test
4.2451 + [S] 211 1234 3000234 3002322 misc.test
4.2452 + [C] NEXT
4.2453 + [S] 223 3000237 <668929@example.org> retrieved
4.2454 +
4.2455 +
4.2456 +
4.2457 +
4.2458 +
4.2459 +
4.2460 +
4.2461 +
4.2462 +
4.2463 +
4.2464 +Feather Standards Track [Page 44]
4.2465 +
4.2466 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2467 +
4.2468 +
4.2469 + Example of an attempt to retrieve an article without having selected
4.2470 + a group (via the GROUP command) first:
4.2471 +
4.2472 + [Assumes currently selected newsgroup is invalid.]
4.2473 + [C] NEXT
4.2474 + [S] 412 no newsgroup selected
4.2475 +
4.2476 + Example of an attempt to retrieve an article using the NEXT command
4.2477 + when the current article number is that of the last article in the
4.2478 + group:
4.2479 +
4.2480 + [C] GROUP misc.test
4.2481 + [S] 211 1234 3000234 3002322 misc.test
4.2482 + [C] STAT 3002322
4.2483 + [S] 223 3002322 <411@example.net> retrieved
4.2484 + [C] NEXT
4.2485 + [S] 421 No next article to retrieve
4.2486 +
4.2487 + Example of an attempt to retrieve an article using the NEXT command
4.2488 + when the currently selected newsgroup is empty:
4.2489 +
4.2490 + [C] GROUP example.empty.newsgroup
4.2491 + [S] 211 0 0 0 example.empty.newsgroup
4.2492 + [C] NEXT
4.2493 + [S] 420 No current article selected
4.2494 +
4.2495 +6.2. Retrieval of Articles and Article Sections
4.2496 +
4.2497 + The ARTICLE, BODY, HEAD, and STAT commands are very similar. They
4.2498 + differ only in the parts of the article that are presented to the
4.2499 + client and in the successful response code. The ARTICLE command is
4.2500 + described here in full, while the other three commands are described
4.2501 + in terms of the differences. As specified in Section 3.6, an article
4.2502 + consists of two parts: the article headers and the article body.
4.2503 +
4.2504 + When responding to one of these commands, the server MUST present the
4.2505 + entire article or appropriate part and MUST NOT attempt to alter or
4.2506 + translate it in any way.
4.2507 +
4.2508 +
4.2509 +
4.2510 +
4.2511 +
4.2512 +
4.2513 +
4.2514 +
4.2515 +
4.2516 +
4.2517 +
4.2518 +
4.2519 +
4.2520 +Feather Standards Track [Page 45]
4.2521 +
4.2522 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2523 +
4.2524 +
4.2525 +6.2.1. ARTICLE
4.2526 +
4.2527 +6.2.1.1. Usage
4.2528 +
4.2529 + Indicating capability: READER
4.2530 +
4.2531 + Syntax
4.2532 + ARTICLE message-id
4.2533 + ARTICLE number
4.2534 + ARTICLE
4.2535 +
4.2536 + Responses
4.2537 +
4.2538 + First form (message-id specified)
4.2539 + 220 0|n message-id Article follows (multi-line)
4.2540 + 430 No article with that message-id
4.2541 +
4.2542 + Second form (article number specified)
4.2543 + 220 n message-id Article follows (multi-line)
4.2544 + 412 No newsgroup selected
4.2545 + 423 No article with that number
4.2546 +
4.2547 + Third form (current article number used)
4.2548 + 220 n message-id Article follows (multi-line)
4.2549 + 412 No newsgroup selected
4.2550 + 420 Current article number is invalid
4.2551 +
4.2552 + Parameters
4.2553 + number Requested article number
4.2554 + n Returned article number
4.2555 + message-id Article message-id
4.2556 +
4.2557 +6.2.1.2. Description
4.2558 +
4.2559 + The ARTICLE command selects an article according to the arguments and
4.2560 + presents the entire article (that is, the headers, an empty line, and
4.2561 + the body, in that order) to the client. The command has three forms.
4.2562 +
4.2563 + In the first form, a message-id is specified, and the server presents
4.2564 + the article with that message-id. In this case, the server MUST NOT
4.2565 + alter the currently selected newsgroup or current article number.
4.2566 + This is both to facilitate the presentation of articles that may be
4.2567 + referenced within another article being read, and because of the
4.2568 + semantic difficulties of determining the proper sequence and
4.2569 + membership of an article that may have been cross-posted to more than
4.2570 + one newsgroup.
4.2571 +
4.2572 +
4.2573 +
4.2574 +
4.2575 +
4.2576 +Feather Standards Track [Page 46]
4.2577 +
4.2578 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2579 +
4.2580 +
4.2581 + In the response, the article number MUST be replaced with zero,
4.2582 + unless there is a currently selected newsgroup and the article is
4.2583 + present in that group, in which case the server MAY use the article's
4.2584 + number in that group. (The server is not required to determine
4.2585 + whether the article is in the currently selected newsgroup or, if so,
4.2586 + what article number it has; the client MUST always be prepared for
4.2587 + zero to be specified.) The server MUST NOT provide an article number
4.2588 + unless use of that number in a second ARTICLE command immediately
4.2589 + following this one would return the same article. Even if the server
4.2590 + chooses to return article numbers in these circumstances, it need not
4.2591 + do so consistently; it MAY return zero to any such command (also see
4.2592 + the STAT examples, Section 6.2.4.3).
4.2593 +
4.2594 + In the second form, an article number is specified. If there is an
4.2595 + article with that number in the currently selected newsgroup, the
4.2596 + server MUST set the current article number to that number.
4.2597 +
4.2598 + In the third form, the article indicated by the current article
4.2599 + number in the currently selected newsgroup is used.
4.2600 +
4.2601 + Note that a previously valid article number MAY become invalid if the
4.2602 + article has been removed. A previously invalid article number MAY
4.2603 + become valid if the article has been reinstated, but this article
4.2604 + number MUST be no less than the reported low water mark for that
4.2605 + group.
4.2606 +
4.2607 + The server MUST NOT change the currently selected newsgroup as a
4.2608 + result of this command. The server MUST NOT change the current
4.2609 + article number except when an article number argument was provided
4.2610 + and the article exists; in particular, it MUST NOT change it
4.2611 + following an unsuccessful response.
4.2612 +
4.2613 + Since the message-id is unique for each article, it may be used by a
4.2614 + client to skip duplicate displays of articles that have been posted
4.2615 + more than once, or to more than one newsgroup.
4.2616 +
4.2617 + The article is returned as a multi-line data block following the 220
4.2618 + response code.
4.2619 +
4.2620 + If the argument is a message-id and no such article exists, a 430
4.2621 + response MUST be returned. If the argument is a number or is omitted
4.2622 + and the currently selected newsgroup is invalid, a 412 response MUST
4.2623 + be returned. If the argument is a number and that article does not
4.2624 + exist in the currently selected newsgroup, a 423 response MUST be
4.2625 + returned. If the argument is omitted and the current article number
4.2626 + is invalid, a 420 response MUST be returned.
4.2627 +
4.2628 +
4.2629 +
4.2630 +
4.2631 +
4.2632 +Feather Standards Track [Page 47]
4.2633 +
4.2634 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2635 +
4.2636 +
4.2637 +6.2.1.3. Examples
4.2638 +
4.2639 + Example of a successful retrieval of an article (explicitly not using
4.2640 + an article number):
4.2641 +
4.2642 + [C] GROUP misc.test
4.2643 + [S] 211 1234 3000234 3002322 misc.test
4.2644 + [C] ARTICLE
4.2645 + [S] 220 3000234 <45223423@example.com>
4.2646 + [S] Path: pathost!demo!whitehouse!not-for-mail
4.2647 + [S] From: "Demo User" <nobody@example.net>
4.2648 + [S] Newsgroups: misc.test
4.2649 + [S] Subject: I am just a test article
4.2650 + [S] Date: 6 Oct 1998 04:38:40 -0500
4.2651 + [S] Organization: An Example Net, Uncertain, Texas
4.2652 + [S] Message-ID: <45223423@example.com>
4.2653 + [S]
4.2654 + [S] This is just a test article.
4.2655 + [S] .
4.2656 +
4.2657 + Example of a successful retrieval of an article by message-id:
4.2658 +
4.2659 + [C] ARTICLE <45223423@example.com>
4.2660 + [S] 220 0 <45223423@example.com>
4.2661 + [S] Path: pathost!demo!whitehouse!not-for-mail
4.2662 + [S] From: "Demo User" <nobody@example.net>
4.2663 + [S] Newsgroups: misc.test
4.2664 + [S] Subject: I am just a test article
4.2665 + [S] Date: 6 Oct 1998 04:38:40 -0500
4.2666 + [S] Organization: An Example Net, Uncertain, Texas
4.2667 + [S] Message-ID: <45223423@example.com>
4.2668 + [S]
4.2669 + [S] This is just a test article.
4.2670 + [S] .
4.2671 +
4.2672 + Example of an unsuccessful retrieval of an article by message-id:
4.2673 +
4.2674 + [C] ARTICLE <i.am.not.there@example.com>
4.2675 + [S] 430 No Such Article Found
4.2676 +
4.2677 + Example of an unsuccessful retrieval of an article by number:
4.2678 +
4.2679 + [C] GROUP misc.test
4.2680 + [S] 211 1234 3000234 3002322 news.groups
4.2681 + [C] ARTICLE 300256
4.2682 + [S] 423 No article with that number
4.2683 +
4.2684 +
4.2685 +
4.2686 +
4.2687 +
4.2688 +Feather Standards Track [Page 48]
4.2689 +
4.2690 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2691 +
4.2692 +
4.2693 + Example of an unsuccessful retrieval of an article by number because
4.2694 + no newsgroup was selected first:
4.2695 +
4.2696 + [Assumes currently selected newsgroup is invalid.]
4.2697 + [C] ARTICLE 300256
4.2698 + [S] 412 No newsgroup selected
4.2699 +
4.2700 + Example of an attempt to retrieve an article when the currently
4.2701 + selected newsgroup is empty:
4.2702 +
4.2703 + [C] GROUP example.empty.newsgroup
4.2704 + [S] 211 0 0 0 example.empty.newsgroup
4.2705 + [C] ARTICLE
4.2706 + [S] 420 No current article selected
4.2707 +
4.2708 +6.2.2. HEAD
4.2709 +
4.2710 +6.2.2.1. Usage
4.2711 +
4.2712 + This command is mandatory.
4.2713 +
4.2714 + Syntax
4.2715 + HEAD message-id
4.2716 + HEAD number
4.2717 + HEAD
4.2718 +
4.2719 + Responses
4.2720 +
4.2721 + First form (message-id specified)
4.2722 + 221 0|n message-id Headers follow (multi-line)
4.2723 + 430 No article with that message-id
4.2724 +
4.2725 + Second form (article number specified)
4.2726 + 221 n message-id Headers follow (multi-line)
4.2727 + 412 No newsgroup selected
4.2728 + 423 No article with that number
4.2729 +
4.2730 + Third form (current article number used)
4.2731 + 221 n message-id Headers follow (multi-line)
4.2732 + 412 No newsgroup selected
4.2733 + 420 Current article number is invalid
4.2734 +
4.2735 + Parameters
4.2736 + number Requested article number
4.2737 + n Returned article number
4.2738 + message-id Article message-id
4.2739 +
4.2740 +
4.2741 +
4.2742 +
4.2743 +
4.2744 +Feather Standards Track [Page 49]
4.2745 +
4.2746 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2747 +
4.2748 +
4.2749 +6.2.2.2. Description
4.2750 +
4.2751 + The HEAD command behaves identically to the ARTICLE command except
4.2752 + that, if the article exists, the response code is 221 instead of 220
4.2753 + and only the headers are presented (the empty line separating the
4.2754 + headers and body MUST NOT be included).
4.2755 +
4.2756 +6.2.2.3. Examples
4.2757 +
4.2758 + Example of a successful retrieval of the headers of an article
4.2759 + (explicitly not using an article number):
4.2760 +
4.2761 + [C] GROUP misc.test
4.2762 + [S] 211 1234 3000234 3002322 misc.test
4.2763 + [C] HEAD
4.2764 + [S] 221 3000234 <45223423@example.com>
4.2765 + [S] Path: pathost!demo!whitehouse!not-for-mail
4.2766 + [S] From: "Demo User" <nobody@example.net>
4.2767 + [S] Newsgroups: misc.test
4.2768 + [S] Subject: I am just a test article
4.2769 + [S] Date: 6 Oct 1998 04:38:40 -0500
4.2770 + [S] Organization: An Example Net, Uncertain, Texas
4.2771 + [S] Message-ID: <45223423@example.com>
4.2772 + [S] .
4.2773 +
4.2774 + Example of a successful retrieval of the headers of an article by
4.2775 + message-id:
4.2776 +
4.2777 + [C] HEAD <45223423@example.com>
4.2778 + [S] 221 0 <45223423@example.com>
4.2779 + [S] Path: pathost!demo!whitehouse!not-for-mail
4.2780 + [S] From: "Demo User" <nobody@example.net>
4.2781 + [S] Newsgroups: misc.test
4.2782 + [S] Subject: I am just a test article
4.2783 + [S] Date: 6 Oct 1998 04:38:40 -0500
4.2784 + [S] Organization: An Example Net, Uncertain, Texas
4.2785 + [S] Message-ID: <45223423@example.com>
4.2786 + [S] .
4.2787 +
4.2788 + Example of an unsuccessful retrieval of the headers of an article by
4.2789 + message-id:
4.2790 +
4.2791 + [C] HEAD <i.am.not.there@example.com>
4.2792 + [S] 430 No Such Article Found
4.2793 +
4.2794 +
4.2795 +
4.2796 +
4.2797 +
4.2798 +
4.2799 +
4.2800 +Feather Standards Track [Page 50]
4.2801 +
4.2802 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2803 +
4.2804 +
4.2805 + Example of an unsuccessful retrieval of the headers of an article by
4.2806 + number:
4.2807 +
4.2808 + [C] GROUP misc.test
4.2809 + [S] 211 1234 3000234 3002322 misc.test
4.2810 + [C] HEAD 300256
4.2811 + [S] 423 No article with that number
4.2812 +
4.2813 + Example of an unsuccessful retrieval of the headers of an article by
4.2814 + number because no newsgroup was selected first:
4.2815 +
4.2816 + [Assumes currently selected newsgroup is invalid.]
4.2817 + [C] HEAD 300256
4.2818 + [S] 412 No newsgroup selected
4.2819 +
4.2820 + Example of an attempt to retrieve the headers of an article when the
4.2821 + currently selected newsgroup is empty:
4.2822 +
4.2823 + [C] GROUP example.empty.newsgroup
4.2824 + [S] 211 0 0 0 example.empty.newsgroup
4.2825 + [C] HEAD
4.2826 + [S] 420 No current article selected
4.2827 +
4.2828 +6.2.3. BODY
4.2829 +
4.2830 +6.2.3.1. Usage
4.2831 +
4.2832 + Indicating capability: READER
4.2833 +
4.2834 + Syntax
4.2835 + BODY message-id
4.2836 + BODY number
4.2837 + BODY
4.2838 +
4.2839 + Responses
4.2840 +
4.2841 + First form (message-id specified)
4.2842 + 222 0|n message-id Body follows (multi-line)
4.2843 + 430 No article with that message-id
4.2844 +
4.2845 + Second form (article number specified)
4.2846 + 222 n message-id Body follows (multi-line)
4.2847 + 412 No newsgroup selected
4.2848 + 423 No article with that number
4.2849 +
4.2850 +
4.2851 +
4.2852 +
4.2853 +
4.2854 +
4.2855 +
4.2856 +Feather Standards Track [Page 51]
4.2857 +
4.2858 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2859 +
4.2860 +
4.2861 + Third form (current article number used)
4.2862 + 222 n message-id Body follows (multi-line)
4.2863 + 412 No newsgroup selected
4.2864 + 420 Current article number is invalid
4.2865 +
4.2866 + Parameters
4.2867 + number Requested article number
4.2868 + n Returned article number
4.2869 + message-id Article message-id
4.2870 +
4.2871 +6.2.3.2. Description
4.2872 +
4.2873 + The BODY command behaves identically to the ARTICLE command except
4.2874 + that, if the article exists, the response code is 222 instead of 220
4.2875 + and only the body is presented (the empty line separating the headers
4.2876 + and body MUST NOT be included).
4.2877 +
4.2878 +6.2.3.3. Examples
4.2879 +
4.2880 + Example of a successful retrieval of the body of an article
4.2881 + (explicitly not using an article number):
4.2882 +
4.2883 + [C] GROUP misc.test
4.2884 + [S] 211 1234 3000234 3002322 misc.test
4.2885 + [C] BODY
4.2886 + [S] 222 3000234 <45223423@example.com>
4.2887 + [S] This is just a test article.
4.2888 + [S] .
4.2889 +
4.2890 + Example of a successful retrieval of the body of an article by
4.2891 + message-id:
4.2892 +
4.2893 + [C] BODY <45223423@example.com>
4.2894 + [S] 222 0 <45223423@example.com>
4.2895 + [S] This is just a test article.
4.2896 + [S] .
4.2897 +
4.2898 + Example of an unsuccessful retrieval of the body of an article by
4.2899 + message-id:
4.2900 +
4.2901 + [C] BODY <i.am.not.there@example.com>
4.2902 + [S] 430 No Such Article Found
4.2903 +
4.2904 +
4.2905 +
4.2906 +
4.2907 +
4.2908 +
4.2909 +
4.2910 +
4.2911 +
4.2912 +Feather Standards Track [Page 52]
4.2913 +
4.2914 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2915 +
4.2916 +
4.2917 + Example of an unsuccessful retrieval of the body of an article by
4.2918 + number:
4.2919 +
4.2920 + [C] GROUP misc.test
4.2921 + [S] 211 1234 3000234 3002322 misc.test
4.2922 + [C] BODY 300256
4.2923 + [S] 423 No article with that number
4.2924 +
4.2925 + Example of an unsuccessful retrieval of the body of an article by
4.2926 + number because no newsgroup was selected first:
4.2927 +
4.2928 + [Assumes currently selected newsgroup is invalid.]
4.2929 + [C] BODY 300256
4.2930 + [S] 412 No newsgroup selected
4.2931 +
4.2932 + Example of an attempt to retrieve the body of an article when the
4.2933 + currently selected newsgroup is empty:
4.2934 +
4.2935 + [C] GROUP example.empty.newsgroup
4.2936 + [S] 211 0 0 0 example.empty.newsgroup
4.2937 + [C] BODY
4.2938 + [S] 420 No current article selected
4.2939 +
4.2940 +6.2.4. STAT
4.2941 +
4.2942 +6.2.4.1. Usage
4.2943 +
4.2944 + This command is mandatory.
4.2945 +
4.2946 + Syntax
4.2947 + STAT message-id
4.2948 + STAT number
4.2949 + STAT
4.2950 +
4.2951 + Responses
4.2952 +
4.2953 + First form (message-id specified)
4.2954 + 223 0|n message-id Article exists
4.2955 + 430 No article with that message-id
4.2956 +
4.2957 + Second form (article number specified)
4.2958 + 223 n message-id Article exists
4.2959 + 412 No newsgroup selected
4.2960 + 423 No article with that number
4.2961 +
4.2962 +
4.2963 +
4.2964 +
4.2965 +
4.2966 +
4.2967 +
4.2968 +Feather Standards Track [Page 53]
4.2969 +
4.2970 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.2971 +
4.2972 +
4.2973 + Third form (current article number used)
4.2974 + 223 n message-id Article exists
4.2975 + 412 No newsgroup selected
4.2976 + 420 Current article number is invalid
4.2977 +
4.2978 + Parameters
4.2979 + number Requested article number
4.2980 + n Returned article number
4.2981 + message-id Article message-id
4.2982 +
4.2983 +6.2.4.2. Description
4.2984 +
4.2985 + The STAT command behaves identically to the ARTICLE command except
4.2986 + that, if the article exists, it is NOT presented to the client and
4.2987 + the response code is 223 instead of 220. Note that the response is
4.2988 + NOT multi-line.
4.2989 +
4.2990 + This command allows the client to determine whether an article exists
4.2991 + and, in the second and third forms, what its message-id is, without
4.2992 + having to process an arbitrary amount of text.
4.2993 +
4.2994 +6.2.4.3. Examples
4.2995 +
4.2996 + Example of STAT on an existing article (explicitly not using an
4.2997 + article number):
4.2998 +
4.2999 + [C] GROUP misc.test
4.3000 + [S] 211 1234 3000234 3002322 misc.test
4.3001 + [C] STAT
4.3002 + [S] 223 3000234 <45223423@example.com>
4.3003 +
4.3004 + Example of STAT on an existing article by message-id:
4.3005 +
4.3006 + [C] STAT <45223423@example.com>
4.3007 + [S] 223 0 <45223423@example.com>
4.3008 +
4.3009 + Example of STAT on an article not on the server by message-id:
4.3010 +
4.3011 + [C] STAT <i.am.not.there@example.com>
4.3012 + [S] 430 No Such Article Found
4.3013 +
4.3014 + Example of STAT on an article not in the server by number:
4.3015 +
4.3016 + [C] GROUP misc.test
4.3017 + [S] 211 1234 3000234 3002322 misc.test
4.3018 + [C] STAT 300256
4.3019 + [S] 423 No article with that number
4.3020 +
4.3021 +
4.3022 +
4.3023 +
4.3024 +Feather Standards Track [Page 54]
4.3025 +
4.3026 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3027 +
4.3028 +
4.3029 + Example of STAT on an article by number when no newsgroup was
4.3030 + selected first:
4.3031 +
4.3032 + [Assumes currently selected newsgroup is invalid.]
4.3033 + [C] STAT 300256
4.3034 + [S] 412 No newsgroup selected
4.3035 +
4.3036 + Example of STAT on an article when the currently selected newsgroup
4.3037 + is empty:
4.3038 +
4.3039 + [C] GROUP example.empty.newsgroup
4.3040 + [S] 211 0 0 0 example.empty.newsgroup
4.3041 + [C] STAT
4.3042 + [S] 420 No current article selected
4.3043 +
4.3044 + Example of STAT by message-id on a server that sometimes reports the
4.3045 + actual article number:
4.3046 +
4.3047 + [C] GROUP misc.test
4.3048 + [S] 211 1234 3000234 3002322 misc.test
4.3049 + [C] STAT
4.3050 + [S] 223 3000234 <45223423@example.com>
4.3051 + [C] STAT <45223423@example.com>
4.3052 + [S] 223 0 <45223423@example.com>
4.3053 + [C] STAT <45223423@example.com>
4.3054 + [S] 223 3000234 <45223423@example.com>
4.3055 + [C] GROUP example.empty.newsgroup
4.3056 + [S] 211 0 0 0 example.empty.newsgroup
4.3057 + [C] STAT <45223423@example.com>
4.3058 + [S] 223 0 <45223423@example.com>
4.3059 + [C] GROUP alt.crossposts
4.3060 + [S] 211 9999 111111 222222 alt.crossposts
4.3061 + [C] STAT <45223423@example.com>
4.3062 + [S] 223 123456 <45223423@example.com>
4.3063 + [C] STAT
4.3064 + [S] 223 111111 <23894720@example.com>
4.3065 +
4.3066 + The first STAT command establishes the identity of an article in the
4.3067 + group. The second and third show that the server may, but need not,
4.3068 + give the article number when the message-id is specified. The fourth
4.3069 + STAT command shows that zero must be specified if the article isn't
4.3070 + in the currently selected newsgroup. The fifth shows that the
4.3071 + number, if provided, must be that relating to the currently selected
4.3072 + newsgroup. The last one shows that the current article number is
4.3073 + still not changed by the use of STAT with a message-id even if it
4.3074 + returns an article number.
4.3075 +
4.3076 +
4.3077 +
4.3078 +
4.3079 +
4.3080 +Feather Standards Track [Page 55]
4.3081 +
4.3082 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3083 +
4.3084 +
4.3085 +6.3. Article Posting
4.3086 +
4.3087 + Article posting is done in one of two ways: individual article
4.3088 + posting from news-reading clients using POST, and article transfer
4.3089 + from other news servers using IHAVE.
4.3090 +
4.3091 +6.3.1. POST
4.3092 +
4.3093 +6.3.1.1. Usage
4.3094 +
4.3095 + Indicating capability: POST
4.3096 +
4.3097 + This command MUST NOT be pipelined.
4.3098 +
4.3099 + Syntax
4.3100 + POST
4.3101 +
4.3102 + Responses
4.3103 +
4.3104 + Initial responses
4.3105 + 340 Send article to be posted
4.3106 + 440 Posting not permitted
4.3107 +
4.3108 + Subsequent responses
4.3109 + 240 Article received OK
4.3110 + 441 Posting failed
4.3111 +
4.3112 +6.3.1.2. Description
4.3113 +
4.3114 + If posting is allowed, a 340 response MUST be returned to indicate
4.3115 + that the article to be posted should be sent. If posting is
4.3116 + prohibited for some installation-dependent reason, a 440 response
4.3117 + MUST be returned.
4.3118 +
4.3119 + If posting is permitted, the article MUST be in the format specified
4.3120 + in Section 3.6 and MUST be sent by the client to the server as a
4.3121 + multi-line data block (see Section 3.1.1). Thus a single dot (".")
4.3122 + on a line indicates the end of the text, and lines starting with a
4.3123 + dot in the original text have that dot doubled during transmission.
4.3124 +
4.3125 + Following the presentation of the termination sequence by the client,
4.3126 + the server MUST return a response indicating success or failure of
4.3127 + the article transfer. Note that response codes 340 and 440 are used
4.3128 + in direct response to the POST command while 240 and 441 are returned
4.3129 + after the article is sent.
4.3130 +
4.3131 +
4.3132 +
4.3133 +
4.3134 +
4.3135 +
4.3136 +Feather Standards Track [Page 56]
4.3137 +
4.3138 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3139 +
4.3140 +
4.3141 + A response of 240 SHOULD indicate that, barring unforeseen server
4.3142 + errors, the posted article will be made available on the server
4.3143 + and/or transferred to other servers, as appropriate, possibly
4.3144 + following further processing. In other words, articles not wanted by
4.3145 + the server SHOULD be rejected with a 441 response, rather than being
4.3146 + accepted and then discarded silently. However, the client SHOULD NOT
4.3147 + assume that the article has been successfully transferred unless it
4.3148 + receives an affirmative response from the server and SHOULD NOT
4.3149 + assume that it is being made available to other clients without
4.3150 + explicitly checking (for example, using the STAT command).
4.3151 +
4.3152 + If the session is interrupted before the response is received, it is
4.3153 + possible that an affirmative response was sent but has been lost.
4.3154 + Therefore, in any subsequent session, the client SHOULD either check
4.3155 + whether the article was successfully posted before resending or
4.3156 + ensure that the server will allocate the same message-id to the new
4.3157 + attempt (see Appendix A.2). The latter approach is preferred since
4.3158 + the article might not have been made available for reading yet (for
4.3159 + example, it may have to go through a moderation process).
4.3160 +
4.3161 +6.3.1.3. Examples
4.3162 +
4.3163 + Example of a successful posting:
4.3164 +
4.3165 + [C] POST
4.3166 + [S] 340 Input article; end with <CR-LF>.<CR-LF>
4.3167 + [C] From: "Demo User" <nobody@example.net>
4.3168 + [C] Newsgroups: misc.test
4.3169 + [C] Subject: I am just a test article
4.3170 + [C] Organization: An Example Net
4.3171 + [C]
4.3172 + [C] This is just a test article.
4.3173 + [C] .
4.3174 + [S] 240 Article received OK
4.3175 +
4.3176 + Example of an unsuccessful posting:
4.3177 +
4.3178 + [C] POST
4.3179 + [S] 340 Input article; end with <CR-LF>.<CR-LF>
4.3180 + [C] From: "Demo User" <nobody@example.net>
4.3181 + [C] Newsgroups: misc.test
4.3182 + [C] Subject: I am just a test article
4.3183 + [C] Organization: An Example Net
4.3184 + [C]
4.3185 + [C] This is just a test article.
4.3186 + [C] .
4.3187 + [S] 441 Posting failed
4.3188 +
4.3189 +
4.3190 +
4.3191 +
4.3192 +Feather Standards Track [Page 57]
4.3193 +
4.3194 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3195 +
4.3196 +
4.3197 + Example of an attempt to post when posting is not allowed:
4.3198 +
4.3199 + [Initial connection set-up completed.]
4.3200 + [S] 201 NNTP Service Ready, posting prohibited
4.3201 + [C] POST
4.3202 + [S] 440 Posting not permitted
4.3203 +
4.3204 +6.3.2. IHAVE
4.3205 +
4.3206 +6.3.2.1. Usage
4.3207 +
4.3208 + Indicating capability: IHAVE
4.3209 +
4.3210 + This command MUST NOT be pipelined.
4.3211 +
4.3212 + Syntax
4.3213 + IHAVE message-id
4.3214 +
4.3215 + Responses
4.3216 +
4.3217 + Initial responses
4.3218 + 335 Send article to be transferred
4.3219 + 435 Article not wanted
4.3220 + 436 Transfer not possible; try again later
4.3221 +
4.3222 + Subsequent responses
4.3223 + 235 Article transferred OK
4.3224 + 436 Transfer failed; try again later
4.3225 + 437 Transfer rejected; do not retry
4.3226 +
4.3227 + Parameters
4.3228 + message-id Article message-id
4.3229 +
4.3230 +6.3.2.2. Description
4.3231 +
4.3232 + The IHAVE command informs the server that the client has an article
4.3233 + with the specified message-id. If the server desires a copy of that
4.3234 + article, a 335 response MUST be returned, instructing the client to
4.3235 + send the entire article. If the server does not want the article
4.3236 + (if, for example, the server already has a copy of it), a 435
4.3237 + response MUST be returned, indicating that the article is not wanted.
4.3238 + Finally, if the article isn't wanted immediately but the client
4.3239 + should retry later if possible (if, for example, another client is in
4.3240 + the process of sending the same article to the server), a 436
4.3241 + response MUST be returned.
4.3242 +
4.3243 +
4.3244 +
4.3245 +
4.3246 +
4.3247 +
4.3248 +Feather Standards Track [Page 58]
4.3249 +
4.3250 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3251 +
4.3252 +
4.3253 + If transmission of the article is requested, the client MUST send the
4.3254 + entire article, including headers and body, to the server as a
4.3255 + multi-line data block (see Section 3.1.1). Thus, a single dot (".")
4.3256 + on a line indicates the end of the text, and lines starting with a
4.3257 + dot in the original text have that dot doubled during transmission.
4.3258 + The server MUST return a 235 response, indicating that the article
4.3259 + was successfully transferred; a 436 response, indicating that the
4.3260 + transfer failed but should be tried again later; or a 437 response,
4.3261 + indicating that the article was rejected.
4.3262 +
4.3263 + This function differs from the POST command in that it is intended
4.3264 + for use in transferring already-posted articles between hosts. It
4.3265 + SHOULD NOT be used when the client is a personal news-reading
4.3266 + program, since use of this command indicates that the article has
4.3267 + already been posted at another site and is simply being forwarded
4.3268 + from another host. However, despite this, the server MAY elect not
4.3269 + to post or forward the article if, after further examination of the
4.3270 + article, it deems it inappropriate to do so. Reasons for such
4.3271 + subsequent rejection of an article may include problems such as
4.3272 + inappropriate newsgroups or distributions, disc space limitations,
4.3273 + article lengths, garbled headers, and the like. These are typically
4.3274 + restrictions enforced by the server host's news software and not
4.3275 + necessarily by the NNTP server itself.
4.3276 +
4.3277 + The client SHOULD NOT assume that the article has been successfully
4.3278 + transferred unless it receives an affirmative response from the
4.3279 + server. A lack of response (such as a dropped network connection or
4.3280 + a network timeout) SHOULD be treated the same as a 436 response.
4.3281 +
4.3282 + Because some news server software may not immediately be able to
4.3283 + determine whether an article is suitable for posting or forwarding,
4.3284 + an NNTP server MAY acknowledge the successful transfer of the article
4.3285 + (with a 235 response) but later silently discard it.
4.3286 +
4.3287 +
4.3288 +
4.3289 +
4.3290 +
4.3291 +
4.3292 +
4.3293 +
4.3294 +
4.3295 +
4.3296 +
4.3297 +
4.3298 +
4.3299 +
4.3300 +
4.3301 +
4.3302 +
4.3303 +
4.3304 +Feather Standards Track [Page 59]
4.3305 +
4.3306 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3307 +
4.3308 +
4.3309 +6.3.2.3. Examples
4.3310 +
4.3311 + Example of successfully sending an article to another site:
4.3312 +
4.3313 + [C] IHAVE <i.am.an.article.you.will.want@example.com>
4.3314 + [S] 335 Send it; end with <CR-LF>.<CR-LF>
4.3315 + [C] Path: pathost!demo!somewhere!not-for-mail
4.3316 + [C] From: "Demo User" <nobody@example.com>
4.3317 + [C] Newsgroups: misc.test
4.3318 + [C] Subject: I am just a test article
4.3319 + [C] Date: 6 Oct 1998 04:38:40 -0500
4.3320 + [C] Organization: An Example Com, San Jose, CA
4.3321 + [C] Message-ID: <i.am.an.article.you.will.want@example.com>
4.3322 + [C]
4.3323 + [C] This is just a test article.
4.3324 + [C] .
4.3325 + [S] 235 Article transferred OK
4.3326 +
4.3327 + Example of sending an article to another site that rejects it. Note
4.3328 + that the message-id in the IHAVE command is not the same as the one
4.3329 + in the article headers; while this is bad practice and SHOULD NOT be
4.3330 + done, it is not forbidden.
4.3331 +
4.3332 + [C] IHAVE <i.am.an.article.you.will.want@example.com>
4.3333 + [S] 335 Send it; end with <CR-LF>.<CR-LF>
4.3334 + [C] Path: pathost!demo!somewhere!not-for-mail
4.3335 + [C] From: "Demo User" <nobody@example.com>
4.3336 + [C] Newsgroups: misc.test
4.3337 + [C] Subject: I am just a test article
4.3338 + [C] Date: 6 Oct 1998 04:38:40 -0500
4.3339 + [C] Organization: An Example Com, San Jose, CA
4.3340 + [C] Message-ID: <i.am.an.article.you.have@example.com>
4.3341 + [C]
4.3342 + [C] This is just a test article.
4.3343 + [C] .
4.3344 + [S] 437 Article rejected; don't send again
4.3345 +
4.3346 +
4.3347 +
4.3348 +
4.3349 +
4.3350 +
4.3351 +
4.3352 +
4.3353 +
4.3354 +
4.3355 +
4.3356 +
4.3357 +
4.3358 +
4.3359 +
4.3360 +Feather Standards Track [Page 60]
4.3361 +
4.3362 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3363 +
4.3364 +
4.3365 + Example of sending an article to another site where the transfer
4.3366 + fails:
4.3367 +
4.3368 + [C] IHAVE <i.am.an.article.you.will.want@example.com>
4.3369 + [S] 335 Send it; end with <CR-LF>.<CR-LF>
4.3370 + [C] Path: pathost!demo!somewhere!not-for-mail
4.3371 + [C] From: "Demo User" <nobody@example.com>
4.3372 + [C] Newsgroups: misc.test
4.3373 + [C] Subject: I am just a test article
4.3374 + [C] Date: 6 Oct 1998 04:38:40 -0500
4.3375 + [C] Organization: An Example Com, San Jose, CA
4.3376 + [C] Message-ID: <i.am.an.article.you.will.want@example.com>
4.3377 + [C]
4.3378 + [C] This is just a test article.
4.3379 + [C] .
4.3380 + [S] 436 Transfer failed
4.3381 +
4.3382 + Example of sending an article to a site that already has it:
4.3383 +
4.3384 + [C] IHAVE <i.am.an.article.you.have@example.com>
4.3385 + [S] 435 Duplicate
4.3386 +
4.3387 + Example of sending an article to a site that requests that the
4.3388 + article be tried again later:
4.3389 +
4.3390 + [C] IHAVE <i.am.an.article.you.defer@example.com>
4.3391 + [S] 436 Retry later
4.3392 +
4.3393 +7. Information Commands
4.3394 +
4.3395 + This section lists other commands that may be used at any time
4.3396 + between the beginning of a session and its termination. Using these
4.3397 + commands does not alter any state information, but the response
4.3398 + generated from their use may provide useful information to clients.
4.3399 +
4.3400 +7.1. DATE
4.3401 +
4.3402 +7.1.1. Usage
4.3403 +
4.3404 + Indicating capability: READER
4.3405 +
4.3406 + Syntax
4.3407 + DATE
4.3408 +
4.3409 + Responses
4.3410 + 111 yyyymmddhhmmss Server date and time
4.3411 +
4.3412 +
4.3413 +
4.3414 +
4.3415 +
4.3416 +Feather Standards Track [Page 61]
4.3417 +
4.3418 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3419 +
4.3420 +
4.3421 + Parameters
4.3422 + yyyymmddhhmmss Current UTC date and time on server
4.3423 +
4.3424 +7.1.2. Description
4.3425 +
4.3426 + This command exists to help clients find out the current Coordinated
4.3427 + Universal Time [TF.686-1] from the server's perspective. This
4.3428 + command SHOULD NOT be used as a substitute for NTP [RFC1305] but to
4.3429 + provide information that might be useful when using the NEWNEWS
4.3430 + command (see Section 7.4).
4.3431 +
4.3432 + The DATE command MUST return a timestamp from the same clock as is
4.3433 + used for determining article arrival and group creation times (see
4.3434 + Section 6). This clock SHOULD be monotonic, and adjustments SHOULD
4.3435 + be made by running it fast or slow compared to "real" time rather
4.3436 + than by making sudden jumps. A system providing NNTP service SHOULD
4.3437 + keep the system clock as accurate as possible, either with NTP or by
4.3438 + some other method.
4.3439 +
4.3440 + The server MUST return a 111 response specifying the date and time on
4.3441 + the server in the form yyyymmddhhmmss. This date and time is in
4.3442 + Coordinated Universal Time.
4.3443 +
4.3444 +7.1.3. Examples
4.3445 +
4.3446 + [C] DATE
4.3447 + [S] 111 19990623135624
4.3448 +
4.3449 +7.2. HELP
4.3450 +
4.3451 +7.2.1. Usage
4.3452 +
4.3453 + This command is mandatory.
4.3454 +
4.3455 + Syntax
4.3456 + HELP
4.3457 +
4.3458 + Responses
4.3459 + 100 Help text follows (multi-line)
4.3460 +
4.3461 +7.2.2. Description
4.3462 +
4.3463 + This command provides a short summary of the commands that are
4.3464 + understood by this implementation of the server. The help text will
4.3465 + be presented as a multi-line data block following the 100 response
4.3466 + code.
4.3467 +
4.3468 +
4.3469 +
4.3470 +
4.3471 +
4.3472 +Feather Standards Track [Page 62]
4.3473 +
4.3474 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3475 +
4.3476 +
4.3477 + This text is not guaranteed to be in any particular format (but must
4.3478 + be UTF-8) and MUST NOT be used by clients as a replacement for the
4.3479 + CAPABILITIES command described in Section 5.2.
4.3480 +
4.3481 +7.2.3. Examples
4.3482 +
4.3483 + [C] HELP
4.3484 + [S] 100 Help text follows
4.3485 + [S] This is some help text. There is no specific
4.3486 + [S] formatting requirement for this test, though
4.3487 + [S] it is customary for it to list the valid commands
4.3488 + [S] and give a brief definition of what they do.
4.3489 + [S] .
4.3490 +
4.3491 +7.3. NEWGROUPS
4.3492 +
4.3493 +7.3.1. Usage
4.3494 +
4.3495 + Indicating capability: READER
4.3496 +
4.3497 + Syntax
4.3498 + NEWGROUPS date time [GMT]
4.3499 +
4.3500 + Responses
4.3501 + 231 List of new newsgroups follows (multi-line)
4.3502 +
4.3503 + Parameters
4.3504 + date Date in yymmdd or yyyymmdd format
4.3505 + time Time in hhmmss format
4.3506 +
4.3507 +7.3.2. Description
4.3508 +
4.3509 + This command returns a list of newsgroups created on the server since
4.3510 + the specified date and time. The results are in the same format as
4.3511 + the LIST ACTIVE command (see Section 7.6.3). However, they MAY
4.3512 + include groups not available on the server (and so not returned by
4.3513 + LIST ACTIVE) and MAY omit groups for which the creation date is not
4.3514 + available.
4.3515 +
4.3516 + The date is specified as 6 or 8 digits in the format [xx]yymmdd,
4.3517 + where xx is the first two digits of the year (19-99), yy is the last
4.3518 + two digits of the year (00-99), mm is the month (01-12), and dd is
4.3519 + the day of the month (01-31). Clients SHOULD specify all four digits
4.3520 + of the year. If the first two digits of the year are not specified
4.3521 + (this is supported only for backward compatibility), the year is to
4.3522 + be taken from the current century if yy is smaller than or equal to
4.3523 + the current year, and the previous century otherwise.
4.3524 +
4.3525 +
4.3526 +
4.3527 +
4.3528 +Feather Standards Track [Page 63]
4.3529 +
4.3530 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3531 +
4.3532 +
4.3533 + The time is specified as 6 digits in the format hhmmss, where hh is
4.3534 + the hours in the 24-hour clock (00-23), mm is the minutes (00-59),
4.3535 + and ss is the seconds (00-60, to allow for leap seconds). The token
4.3536 + "GMT" specifies that the date and time are given in Coordinated
4.3537 + Universal Time [TF.686-1]; if it is omitted, then the date and time
4.3538 + are specified in the server's local timezone. Note that there is no
4.3539 + way of using the protocol specified in this document to establish the
4.3540 + server's local timezone.
4.3541 +
4.3542 + Note that an empty list is a possible valid response and indicates
4.3543 + that there are no new newsgroups since that date-time.
4.3544 +
4.3545 + Clients SHOULD make all queries using Coordinated Universal Time
4.3546 + (i.e., by including the "GMT" argument) when possible.
4.3547 +
4.3548 +7.3.3. Examples
4.3549 +
4.3550 + Example where there are new groups:
4.3551 +
4.3552 + [C] NEWGROUPS 19990624 000000 GMT
4.3553 + [S] 231 list of new newsgroups follows
4.3554 + [S] alt.rfc-writers.recovery 4 1 y
4.3555 + [S] tx.natives.recovery 89 56 y
4.3556 + [S] .
4.3557 +
4.3558 + Example where there are no new groups:
4.3559 +
4.3560 + [C] NEWGROUPS 19990624 000000 GMT
4.3561 + [S] 231 list of new newsgroups follows
4.3562 + [S] .
4.3563 +
4.3564 +7.4. NEWNEWS
4.3565 +
4.3566 +7.4.1. Usage
4.3567 +
4.3568 + Indicating capability: NEWNEWS
4.3569 +
4.3570 + Syntax
4.3571 + NEWNEWS wildmat date time [GMT]
4.3572 +
4.3573 + Responses
4.3574 + 230 List of new articles follows (multi-line)
4.3575 +
4.3576 + Parameters
4.3577 + wildmat Newsgroups of interest
4.3578 + date Date in yymmdd or yyyymmdd format
4.3579 + time Time in hhmmss format
4.3580 +
4.3581 +
4.3582 +
4.3583 +
4.3584 +Feather Standards Track [Page 64]
4.3585 +
4.3586 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3587 +
4.3588 +
4.3589 +7.4.2. Description
4.3590 +
4.3591 + This command returns a list of message-ids of articles posted or
4.3592 + received on the server, in the newsgroups whose names match the
4.3593 + wildmat, since the specified date and time. One message-id is sent
4.3594 + on each line; the order of the response has no specific significance
4.3595 + and may vary from response to response in the same session. A
4.3596 + message-id MAY appear more than once; if it does, it has the same
4.3597 + meaning as if it appeared only once.
4.3598 +
4.3599 + Date and time are in the same format as the NEWGROUPS command (see
4.3600 + Section 7.3).
4.3601 +
4.3602 + Note that an empty list is a possible valid response and indicates
4.3603 + that there is currently no new news in the relevant groups.
4.3604 +
4.3605 + Clients SHOULD make all queries in Coordinated Universal Time (i.e.,
4.3606 + by using the "GMT" argument) when possible.
4.3607 +
4.3608 +7.4.3. Examples
4.3609 +
4.3610 + Example where there are new articles:
4.3611 +
4.3612 + [C] NEWNEWS news.*,sci.* 19990624 000000 GMT
4.3613 + [S] 230 list of new articles by message-id follows
4.3614 + [S] <i.am.a.new.article@example.com>
4.3615 + [S] <i.am.another.new.article@example.com>
4.3616 + [S] .
4.3617 +
4.3618 + Example where there are no new articles:
4.3619 +
4.3620 + [C] NEWNEWS alt.* 19990624 000000 GMT
4.3621 + [S] 230 list of new articles by message-id follows
4.3622 + [S] .
4.3623 +
4.3624 +7.5. Time
4.3625 +
4.3626 + As described in Section 6, each article has an arrival timestamp.
4.3627 + Each newsgroup also has a creation timestamp. These timestamps are
4.3628 + used by the NEWNEWS and NEWGROUP commands to construct their
4.3629 + responses.
4.3630 +
4.3631 + Clients can ensure that they do not have gaps in lists of articles or
4.3632 + groups by using the DATE command in the following manner:
4.3633 +
4.3634 + First session:
4.3635 + Issue DATE command and record result.
4.3636 + Issue NEWNEWS command using a previously chosen timestamp.
4.3637 +
4.3638 +
4.3639 +
4.3640 +Feather Standards Track [Page 65]
4.3641 +
4.3642 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3643 +
4.3644 +
4.3645 + Subsequent sessions:
4.3646 + Issue DATE command and hold result in temporary storage.
4.3647 + Issue NEWNEWS command using timestamp saved from previous session.
4.3648 + Overwrite saved timestamp with that currently in temporary
4.3649 + storage.
4.3650 +
4.3651 + In order to allow for minor errors, clients MAY want to adjust the
4.3652 + timestamp back by two or three minutes before using it in NEWNEWS.
4.3653 +
4.3654 +7.5.1. Examples
4.3655 +
4.3656 + First session:
4.3657 +
4.3658 + [C] DATE
4.3659 + [S] 111 20010203112233
4.3660 + [C] NEWNEWS local.chat 20001231 235959 GMT
4.3661 + [S] 230 list follows
4.3662 + [S] <article.1@local.service>
4.3663 + [S] <article.2@local.service>
4.3664 + [S] <article.3@local.service>
4.3665 + [S] .
4.3666 +
4.3667 + Second session (the client has subtracted 3 minutes from the
4.3668 + timestamp returned previously):
4.3669 +
4.3670 + [C] DATE
4.3671 + [S] 111 20010204003344
4.3672 + [C] NEWNEWS local.chat 20010203 111933 GMT
4.3673 + [S] 230 list follows
4.3674 + [S] <article.3@local.service>
4.3675 + [S] <article.4@local.service>
4.3676 + [S] <article.5@local.service>
4.3677 + [S] .
4.3678 +
4.3679 + Note how <article.3@local.service> arrived in the 3 minute gap and so
4.3680 + is listed in both responses.
4.3681 +
4.3682 +7.6. The LIST Commands
4.3683 +
4.3684 + The LIST family of commands all return information that is multi-line
4.3685 + and that can, in general, be expected not to change during the
4.3686 + session. Often the information is related to newsgroups, in which
4.3687 + case the response has one line per newsgroup and a wildmat MAY be
4.3688 + provided to restrict the groups for which information is returned.
4.3689 +
4.3690 + The set of available keywords (including those provided by
4.3691 + extensions) is given in the capability list with capability label
4.3692 + LIST.
4.3693 +
4.3694 +
4.3695 +
4.3696 +Feather Standards Track [Page 66]
4.3697 +
4.3698 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3699 +
4.3700 +
4.3701 +7.6.1. LIST
4.3702 +
4.3703 +7.6.1.1. Usage
4.3704 +
4.3705 + Indicating capability: LIST
4.3706 +
4.3707 + Syntax
4.3708 + LIST [keyword [wildmat|argument]]
4.3709 +
4.3710 + Responses
4.3711 + 215 Information follows (multi-line)
4.3712 +
4.3713 + Parameters
4.3714 + keyword Information requested [1]
4.3715 + argument Specific to keyword
4.3716 + wildmat Groups of interest
4.3717 +
4.3718 + [1] If no keyword is provided, it defaults to ACTIVE.
4.3719 +
4.3720 +7.6.1.2. Description
4.3721 +
4.3722 + The LIST command allows the server to provide blocks of information
4.3723 + to the client. This information may be global or may be related to
4.3724 + newsgroups; in the latter case, the information may be returned
4.3725 + either for all groups or only for those matching a wildmat. Each
4.3726 + block of information is represented by a different keyword. The
4.3727 + command returns the specific information identified by the keyword.
4.3728 +
4.3729 + If the information is available, it is returned as a multi-line data
4.3730 + block following the 215 response code. The format of the information
4.3731 + depends on the keyword. The information MAY be affected by the
4.3732 + additional argument, but the format MUST NOT be.
4.3733 +
4.3734 + If the information is based on newsgroups and the optional wildmat
4.3735 + argument is specified, the response is limited to only the groups (if
4.3736 + any) whose names match the wildmat and for which the information is
4.3737 + available.
4.3738 +
4.3739 + Note that an empty list is a possible valid response; for a
4.3740 + newsgroup-based keyword, it indicates that there are no groups
4.3741 + meeting the above criteria.
4.3742 +
4.3743 + If the keyword is not recognised, or if an argument is specified and
4.3744 + the keyword does not expect one, a 501 response code MUST BE
4.3745 + returned. If the keyword is recognised but the server does not
4.3746 + maintain the information, a 503 response code MUST BE returned.
4.3747 +
4.3748 +
4.3749 +
4.3750 +
4.3751 +
4.3752 +Feather Standards Track [Page 67]
4.3753 +
4.3754 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3755 +
4.3756 +
4.3757 + The LIST command MUST NOT change the visible state of the server in
4.3758 + any way; that is, the behaviour of subsequent commands MUST NOT be
4.3759 + affected by whether the LIST command was issued. For example, it
4.3760 + MUST NOT make groups available that otherwise would not have been.
4.3761 +
4.3762 +7.6.1.3. Examples
4.3763 +
4.3764 + Example of LIST with the ACTIVE keyword:
4.3765 +
4.3766 + [C] LIST ACTIVE
4.3767 + [S] 215 list of newsgroups follows
4.3768 + [S] misc.test 3002322 3000234 y
4.3769 + [S] comp.risks 442001 441099 m
4.3770 + [S] alt.rfc-writers.recovery 4 1 y
4.3771 + [S] tx.natives.recovery 89 56 y
4.3772 + [S] tx.natives.recovery.d 11 9 n
4.3773 + [S] .
4.3774 +
4.3775 + Example of LIST with no keyword:
4.3776 +
4.3777 + [C] LIST
4.3778 + [S] 215 list of newsgroups follows
4.3779 + [S] misc.test 3002322 3000234 y
4.3780 + [S] comp.risks 442001 441099 m
4.3781 + [S] alt.rfc-writers.recovery 4 1 y
4.3782 + [S] tx.natives.recovery 89 56 y
4.3783 + [S] tx.natives.recovery.d 11 9 n
4.3784 + [S] .
4.3785 +
4.3786 + The output is identical to that of the previous example.
4.3787 +
4.3788 + Example of LIST on a newsgroup-based keyword with and without
4.3789 + wildmat:
4.3790 +
4.3791 + [C] LIST ACTIVE.TIMES
4.3792 + [S] 215 information follows
4.3793 + [S] misc.test 930445408 <creatme@isc.org>
4.3794 + [S] alt.rfc-writers.recovery 930562309 <m@example.com>
4.3795 + [S] tx.natives.recovery 930678923 <sob@academ.com>
4.3796 + [S] .
4.3797 + [C] LIST ACTIVE.TIMES tx.*
4.3798 + [S] 215 information follows
4.3799 + [S] tx.natives.recovery 930678923 <sob@academ.com>
4.3800 + [S] .
4.3801 +
4.3802 +
4.3803 +
4.3804 +
4.3805 +
4.3806 +
4.3807 +
4.3808 +Feather Standards Track [Page 68]
4.3809 +
4.3810 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3811 +
4.3812 +
4.3813 + Example of LIST returning an error where the keyword is recognized
4.3814 + but the software does not maintain this information:
4.3815 +
4.3816 + [C] CAPABILITIES
4.3817 + [S] 101 Capability list:
4.3818 + [S] VERSION 2
4.3819 + [S] READER
4.3820 + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
4.3821 + [S] .
4.3822 + [C] LIST XTRA.DATA
4.3823 + [S] 503 Data item not stored
4.3824 +
4.3825 + Example of LIST where the keyword is not recognised:
4.3826 +
4.3827 + [C] CAPABILITIES
4.3828 + [S] 101 Capability list:
4.3829 + [S] VERSION 2
4.3830 + [S] READER
4.3831 + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA
4.3832 + [S] .
4.3833 + [C] LIST DISTRIB.PATS
4.3834 + [S] 501 Syntax Error
4.3835 +
4.3836 +7.6.2. Standard LIST Keywords
4.3837 +
4.3838 + This specification defines the following LIST keywords:
4.3839 +
4.3840 + +--------------+---------------+------------------------------------+
4.3841 + | Keyword | Definition | Status |
4.3842 + +--------------+---------------+------------------------------------+
4.3843 + | ACTIVE | Section 7.6.3 | Mandatory if the READER capability |
4.3844 + | | | is advertised |
4.3845 + | | | |
4.3846 + | ACTIVE.TIMES | Section 7.6.4 | Optional |
4.3847 + | | | |
4.3848 + | DISTRIB.PATS | Section 7.6.5 | Optional |
4.3849 + | | | |
4.3850 + | HEADERS | Section 8.6 | Mandatory if the HDR capability is |
4.3851 + | | | advertised |
4.3852 + | | | |
4.3853 + | NEWSGROUPS | Section 7.6.6 | Mandatory if the READER capability |
4.3854 + | | | is advertised |
4.3855 + | | | |
4.3856 + | OVERVIEW.FMT | Section 8.4 | Mandatory if the OVER capability |
4.3857 + | | | is advertised |
4.3858 + +--------------+---------------+------------------------------------+
4.3859 +
4.3860 +
4.3861 +
4.3862 +
4.3863 +
4.3864 +Feather Standards Track [Page 69]
4.3865 +
4.3866 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3867 +
4.3868 +
4.3869 + Where one of these LIST keywords is supported by a server, it MUST
4.3870 + have the meaning given in the relevant sub-section.
4.3871 +
4.3872 +7.6.3. LIST ACTIVE
4.3873 +
4.3874 + This keyword MUST be supported by servers advertising the READER
4.3875 + capability.
4.3876 +
4.3877 + LIST ACTIVE returns a list of valid newsgroups and associated
4.3878 + information. If no wildmat is specified, the server MUST include
4.3879 + every group that the client is permitted to select with the GROUP
4.3880 + command (Section 6.1.1). Each line of this list consists of four
4.3881 + fields separated from each other by one or more spaces:
4.3882 +
4.3883 + o The name of the newsgroup.
4.3884 + o The reported high water mark for the group.
4.3885 + o The reported low water mark for the group.
4.3886 + o The current status of the group on this server.
4.3887 +
4.3888 + The reported high and low water marks are as described in the GROUP
4.3889 + command (see Section 6.1.1), but note that they are in the opposite
4.3890 + order to the 211 response to that command.
4.3891 +
4.3892 + The status field is typically one of the following:
4.3893 +
4.3894 + "y" Posting is permitted.
4.3895 +
4.3896 + "n" Posting is not permitted.
4.3897 +
4.3898 + "m" Postings will be forwarded to the newsgroup moderator.
4.3899 +
4.3900 + The server SHOULD use these values when these meanings are required
4.3901 + and MUST NOT use them with any other meaning. Other values for the
4.3902 + status may exist; the definition of these other values and the
4.3903 + circumstances under which they are returned may be specified in an
4.3904 + extension or may be private to the server. A client SHOULD treat an
4.3905 + unrecognized status as giving no information.
4.3906 +
4.3907 + The status of a newsgroup only indicates how posts to that newsgroup
4.3908 + are normally processed and is not necessarily customised to the
4.3909 + specific client. For example, if the current client is forbidden
4.3910 + from posting, then this will apply equally to groups with status "y".
4.3911 + Conversely, a client with special privileges (not defined by this
4.3912 + specification) might be able to post to a group with status "n".
4.3913 +
4.3914 +
4.3915 +
4.3916 +
4.3917 +
4.3918 +
4.3919 +
4.3920 +Feather Standards Track [Page 70]
4.3921 +
4.3922 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3923 +
4.3924 +
4.3925 + For example:
4.3926 +
4.3927 + [C] LIST ACTIVE
4.3928 + [S] 215 list of newsgroups follows
4.3929 + [S] misc.test 3002322 3000234 y
4.3930 + [S] comp.risks 442001 441099 m
4.3931 + [S] alt.rfc-writers.recovery 4 1 y
4.3932 + [S] tx.natives.recovery 89 56 y
4.3933 + [S] tx.natives.recovery.d 11 9 n
4.3934 + [S] .
4.3935 +
4.3936 + or, on an implementation that includes leading zeroes:
4.3937 +
4.3938 + [C] LIST ACTIVE
4.3939 + [S] 215 list of newsgroups follows
4.3940 + [S] misc.test 0003002322 0003000234 y
4.3941 + [S] comp.risks 0000442001 0000441099 m
4.3942 + [S] alt.rfc-writers.recovery 0000000004 0000000001 y
4.3943 + [S] tx.natives.recovery 0000000089 0000000056 y
4.3944 + [S] tx.natives.recovery.d 0000000011 0000000009 n
4.3945 + [S] .
4.3946 +
4.3947 + The information is newsgroup based, and a wildmat MAY be specified,
4.3948 + in which case the response is limited to only the groups (if any)
4.3949 + whose names match the wildmat. For example:
4.3950 +
4.3951 + [C] LIST ACTIVE *.recovery
4.3952 + [S] 215 list of newsgroups follows
4.3953 + [S] alt.rfc-writers.recovery 4 1 y
4.3954 + [S] tx.natives.recovery 89 56 y
4.3955 + [S] .
4.3956 +
4.3957 +7.6.4. LIST ACTIVE.TIMES
4.3958 +
4.3959 + This keyword is optional.
4.3960 +
4.3961 + The active.times list is maintained by some NNTP servers to contain
4.3962 + information about who created a particular newsgroup and when. Each
4.3963 + line of this list consists of three fields separated from each other
4.3964 + by one or more spaces. The first field is the name of the newsgroup.
4.3965 + The second is the time when this group was created on this news
4.3966 + server, measured in seconds since the start of January 1, 1970. The
4.3967 + third is plain text intended to describe the entity that created the
4.3968 + newsgroup; it is often a mailbox as defined in RFC 2822 [RFC2822].
4.3969 + For example:
4.3970 +
4.3971 +
4.3972 +
4.3973 +
4.3974 +
4.3975 +
4.3976 +Feather Standards Track [Page 71]
4.3977 +
4.3978 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.3979 +
4.3980 +
4.3981 + [C] LIST ACTIVE.TIMES
4.3982 + [S] 215 information follows
4.3983 + [S] misc.test 930445408 <creatme@isc.org>
4.3984 + [S] alt.rfc-writers.recovery 930562309 <m@example.com>
4.3985 + [S] tx.natives.recovery 930678923 <sob@academ.com>
4.3986 + [S] .
4.3987 +
4.3988 + The list MAY omit newsgroups for which the information is unavailable
4.3989 + and MAY include groups not available on the server; in particular, it
4.3990 + MAY omit all groups created before the date and time of the oldest
4.3991 + entry. The client MUST NOT assume that the list is complete or that
4.3992 + it matches the list returned by the LIST ACTIVE command
4.3993 + (Section 7.6.3). The NEWGROUPS command (Section 7.3) may provide a
4.3994 + better way to access this information, and the results of the two
4.3995 + commands SHOULD be consistent except that, if the latter is invoked
4.3996 + with a date and time earlier than the oldest entry in active.times
4.3997 + list, its result may include extra groups.
4.3998 +
4.3999 + The information is newsgroup based, and a wildmat MAY be specified,
4.4000 + in which case the response is limited to only the groups (if any)
4.4001 + whose names match the wildmat.
4.4002 +
4.4003 +7.6.5. LIST DISTRIB.PATS
4.4004 +
4.4005 + This keyword is optional.
4.4006 +
4.4007 + The distrib.pats list is maintained by some NNTP servers to assist
4.4008 + clients to choose a value for the content of the Distribution header
4.4009 + of a news article being posted. Each line of this list consists of
4.4010 + three fields separated from each other by a colon (":"). The first
4.4011 + field is a weight, the second field is a wildmat (which may be a
4.4012 + simple newsgroup name), and the third field is a value for the
4.4013 + Distribution header content. For example:
4.4014 +
4.4015 + [C] LIST DISTRIB.PATS
4.4016 + [S] 215 information follows
4.4017 + [S] 10:local.*:local
4.4018 + [S] 5:*:world
4.4019 + [S] 20:local.here.*:thissite
4.4020 + [S] .
4.4021 +
4.4022 + The client MAY use this information to construct an appropriate
4.4023 + Distribution header given the name of a newsgroup. To do so, it
4.4024 + should determine the lines whose second field matches the newsgroup
4.4025 + name, select from among them the line with the highest weight (with 0
4.4026 + being the lowest), and use the value of the third field to construct
4.4027 + the Distribution header.
4.4028 +
4.4029 +
4.4030 +
4.4031 +
4.4032 +Feather Standards Track [Page 72]
4.4033 +
4.4034 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4035 +
4.4036 +
4.4037 + The information is not newsgroup based, and an argument MUST NOT be
4.4038 + specified.
4.4039 +
4.4040 +7.6.6. LIST NEWSGROUPS
4.4041 +
4.4042 + This keyword MUST be supported by servers advertising the READER
4.4043 + capability.
4.4044 +
4.4045 + The newsgroups list is maintained by NNTP servers to contain the name
4.4046 + of each newsgroup that is available on the server and a short
4.4047 + description about the purpose of the group. Each line of this list
4.4048 + consists of two fields separated from each other by one or more space
4.4049 + or TAB characters (the usual practice is a single TAB). The first
4.4050 + field is the name of the newsgroup, and the second is a short
4.4051 + description of the group. For example:
4.4052 +
4.4053 + [C] LIST NEWSGROUPS
4.4054 + [S] 215 information follows
4.4055 + [S] misc.test General Usenet testing
4.4056 + [S] alt.rfc-writers.recovery RFC Writers Recovery
4.4057 + [S] tx.natives.recovery Texas Natives Recovery
4.4058 + [S] .
4.4059 +
4.4060 + The list MAY omit newsgroups for which the information is unavailable
4.4061 + and MAY include groups not available on the server. The client MUST
4.4062 + NOT assume that the list is complete or that it matches the list
4.4063 + returned by LIST ACTIVE.
4.4064 +
4.4065 + The description SHOULD be in UTF-8. However, servers often obtain
4.4066 + the information from external sources. These sources may have used
4.4067 + different encodings (ones that use octets in the range 128 to 255 in
4.4068 + some other manner) and, in that case, the server MAY pass it on
4.4069 + unchanged. Therefore, clients MUST be prepared to receive such
4.4070 + descriptions.
4.4071 +
4.4072 + The information is newsgroup based, and a wildmat MAY be specified,
4.4073 + in which case the response is limited to only the groups (if any)
4.4074 + whose names match the wildmat.
4.4075 +
4.4076 +8. Article Field Access Commands
4.4077 +
4.4078 + This section lists commands that may be used to access specific
4.4079 + article fields; that is, headers of articles and metadata about
4.4080 + articles. These commands typically fetch data from an "overview
4.4081 + database", which is a database of headers extracted from incoming
4.4082 + articles plus metadata determined as the article arrives. Only
4.4083 + certain fields are included in the database.
4.4084 +
4.4085 +
4.4086 +
4.4087 +
4.4088 +Feather Standards Track [Page 73]
4.4089 +
4.4090 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4091 +
4.4092 +
4.4093 + This section is based on the Overview/NOV database [ROBE1995]
4.4094 + developed by Geoff Collyer.
4.4095 +
4.4096 +8.1. Article Metadata
4.4097 +
4.4098 + Article "metadata" is data about articles that does not occur within
4.4099 + the article itself. Each metadata item has a name that MUST begin
4.4100 + with a colon (and that MUST NOT contain a colon elsewhere within it).
4.4101 + As with header names, metadata item names are not case sensitive.
4.4102 +
4.4103 + When generating a metadata item, the server MUST compute it for
4.4104 + itself and MUST NOT trust any related value provided in the article.
4.4105 + (In particular, a Lines or Bytes header in the article MUST NOT be
4.4106 + assumed to specify the correct number of lines or bytes in the
4.4107 + article.) If the server has access to several non-identical copies
4.4108 + of an article, the value returned MUST be correct for any copy of
4.4109 + that article retrieved during the same session.
4.4110 +
4.4111 + This specification defines two metadata items: ":bytes" and ":lines".
4.4112 + Other metadata items may be defined by extensions. The names of
4.4113 + metadata items defined by registered extensions MUST NOT begin with
4.4114 + ":x-". To avoid the risk of a clash with a future registered
4.4115 + extension, the names of metadata items defined by private extensions
4.4116 + SHOULD begin with ":x-".
4.4117 +
4.4118 +8.1.1. The :bytes Metadata Item
4.4119 +
4.4120 + The :bytes metadata item for an article is a decimal integer. It
4.4121 + SHOULD equal the number of octets in the entire article: headers,
4.4122 + body, and separating empty line (counting a CRLF pair as two octets,
4.4123 + and excluding both the "." CRLF terminating the response and any "."
4.4124 + added for "dot-stuffing" purposes).
4.4125 +
4.4126 + Note to client implementers: some existing servers return a value
4.4127 + different from that above. The commonest reasons for this are as
4.4128 + follows:
4.4129 +
4.4130 + o Counting a CRLF pair as one octet.
4.4131 +
4.4132 + o Including the "." character used for dot-stuffing in the number.
4.4133 +
4.4134 + o Including the terminating "." CRLF in the number.
4.4135 +
4.4136 + o Using one copy of an article for counting the octets but then
4.4137 + returning another one that differs in some (permitted) manner.
4.4138 +
4.4139 + Implementations should be prepared for such variation and MUST NOT
4.4140 + rely on the value being accurate.
4.4141 +
4.4142 +
4.4143 +
4.4144 +Feather Standards Track [Page 74]
4.4145 +
4.4146 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4147 +
4.4148 +
4.4149 +8.1.2. The :lines Metadata Item
4.4150 +
4.4151 + The :lines metadata item for an article is a decimal integer. It
4.4152 + MUST equal the number of lines in the article body (excluding the
4.4153 + empty line separating headers and body). Equivalently, it is two
4.4154 + less than the number of CRLF pairs that the BODY command would return
4.4155 + for that article (the extra two are those following the response code
4.4156 + and the termination octet).
4.4157 +
4.4158 +8.2. Database Consistency
4.4159 +
4.4160 + The information stored in the overview database may change over time.
4.4161 + If the database records the content or absence of a given field (that
4.4162 + is, a header or metadata item) for all articles, it is said to be
4.4163 + "consistent" for that field. If it records the content of a header
4.4164 + for some articles but not for others that nevertheless included that
4.4165 + header, or if it records a metadata item for some articles but not
4.4166 + for others to which that item applies, it is said to be
4.4167 + "inconsistent" for that field.
4.4168 +
4.4169 + The LIST OVERVIEW.FMT command SHOULD list all the fields for which
4.4170 + the database is consistent at that moment. It MAY omit such fields
4.4171 + (for example, if it is not known whether the database is consistent
4.4172 + or inconsistent). It MUST NOT include fields for which the database
4.4173 + is inconsistent or that are not stored in the database. Therefore,
4.4174 + if a header appears in the LIST OVERVIEW.FMT output but not in the
4.4175 + OVER output for a given article, that header does not appear in the
4.4176 + article (similarly for metadata items).
4.4177 +
4.4178 + These rules assume that the fields being stored in the database
4.4179 + remain constant for long periods of time, and therefore the database
4.4180 + will be consistent. When the set of fields to be stored is changed,
4.4181 + it will be inconsistent until either the database is rebuilt or the
4.4182 + only articles remaining are those received since the change.
4.4183 + Therefore, the output from LIST OVERVIEW.FMT needs to be altered
4.4184 + twice. Firstly, before any fields stop being stored they MUST be
4.4185 + removed from the output; then, when the database is once more known
4.4186 + to be consistent, the new fields SHOULD be added to the output.
4.4187 +
4.4188 + If the HDR command uses the overview database rather than taking
4.4189 + information directly from the articles, the same issues of
4.4190 + consistency and inconsistency apply, and the LIST HEADERS command
4.4191 + SHOULD take the same approach as the LIST OVERVIEW.FMT command in
4.4192 + resolving them.
4.4193 +
4.4194 +
4.4195 +
4.4196 +
4.4197 +
4.4198 +
4.4199 +
4.4200 +Feather Standards Track [Page 75]
4.4201 +
4.4202 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4203 +
4.4204 +
4.4205 +8.3. OVER
4.4206 +
4.4207 +8.3.1. Usage
4.4208 +
4.4209 + Indicating capability: OVER
4.4210 +
4.4211 + Syntax
4.4212 + OVER message-id
4.4213 + OVER range
4.4214 + OVER
4.4215 +
4.4216 + Responses
4.4217 +
4.4218 + First form (message-id specified)
4.4219 + 224 Overview information follows (multi-line)
4.4220 + 430 No article with that message-id
4.4221 +
4.4222 + Second form (range specified)
4.4223 + 224 Overview information follows (multi-line)
4.4224 + 412 No newsgroup selected
4.4225 + 423 No articles in that range
4.4226 +
4.4227 + Third form (current article number used)
4.4228 + 224 Overview information follows (multi-line)
4.4229 + 412 No newsgroup selected
4.4230 + 420 Current article number is invalid
4.4231 +
4.4232 + Parameters
4.4233 + range Number(s) of articles
4.4234 + message-id Message-id of article
4.4235 +
4.4236 +8.3.2. Description
4.4237 +
4.4238 + The OVER command returns the contents of all the fields in the
4.4239 + database for an article specified by message-id, or from a specified
4.4240 + article or range of articles in the currently selected newsgroup.
4.4241 +
4.4242 + The message-id argument indicates a specific article. The range
4.4243 + argument may be any of the following:
4.4244 +
4.4245 + o An article number.
4.4246 +
4.4247 + o An article number followed by a dash to indicate all following.
4.4248 +
4.4249 + o An article number followed by a dash followed by another article
4.4250 + number.
4.4251 +
4.4252 + If neither is specified, the current article number is used.
4.4253 +
4.4254 +
4.4255 +
4.4256 +Feather Standards Track [Page 76]
4.4257 +
4.4258 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4259 +
4.4260 +
4.4261 + Support for the first (message-id) form is optional. If it is
4.4262 + supported, the OVER capability line MUST include the argument
4.4263 + "MSGID". Otherwise, the capability line MUST NOT include this
4.4264 + argument, and the OVER command MUST return the generic response code
4.4265 + 503 when this form is used.
4.4266 +
4.4267 + If the information is available, it is returned as a multi-line data
4.4268 + block following the 224 response code and contains one line per
4.4269 + article, sorted in numerical order of article number. (Note that
4.4270 + unless the argument is a range including a dash, there will be
4.4271 + exactly one line in the data block.) Each line consists of a number
4.4272 + of fields separated by a TAB. A field may be empty (in which case
4.4273 + there will be two adjacent TABs), and a sequence of trailing TABs may
4.4274 + be omitted.
4.4275 +
4.4276 + The first 8 fields MUST be the following, in order:
4.4277 +
4.4278 + "0" or article number (see below)
4.4279 + Subject header content
4.4280 + From header content
4.4281 + Date header content
4.4282 + Message-ID header content
4.4283 + References header content
4.4284 + :bytes metadata item
4.4285 + :lines metadata item
4.4286 +
4.4287 + If the article is specified by message-id (the first form of the
4.4288 + command), the article number MUST be replaced with zero, except that
4.4289 + if there is a currently selected newsgroup and the article is present
4.4290 + in that group, the server MAY use the article's number in that group.
4.4291 + (See the ARTICLE command (Section 6.2.1) and STAT examples
4.4292 + (Section 6.2.4.3) for more details.) In the other two forms of the
4.4293 + command, the article number MUST be returned.
4.4294 +
4.4295 + Any subsequent fields are the contents of the other headers and
4.4296 + metadata held in the database.
4.4297 +
4.4298 + For the five mandatory headers, the content of each field MUST be
4.4299 + based on the content of the header (that is, with the header name and
4.4300 + following colon and space removed). If the article does not contain
4.4301 + that header, or if the content is empty, the field MUST be empty.
4.4302 + For the two mandatory metadata items, the content of the field MUST
4.4303 + be just the value, with no other text.
4.4304 +
4.4305 + For all subsequent fields that contain headers, the content MUST be
4.4306 + the entire header line other than the trailing CRLF. For all
4.4307 + subsequent fields that contain metadata, the field consists of the
4.4308 + metadata name, a single space, and then the value.
4.4309 +
4.4310 +
4.4311 +
4.4312 +Feather Standards Track [Page 77]
4.4313 +
4.4314 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4315 +
4.4316 +
4.4317 + For all fields, the value is processed by first removing all CRLF
4.4318 + pairs (that is, undoing any folding and removing the terminating
4.4319 + CRLF) and then replacing each TAB with a single space. If there is
4.4320 + no such header in the article, no such metadata item, or no header or
4.4321 + item stored in the database for that article, the corresponding field
4.4322 + MUST be empty.
4.4323 +
4.4324 + Note that, after unfolding, the characters NUL, LF, and CR cannot
4.4325 + occur in the header of an article offered by a conformant server.
4.4326 + Nevertheless, servers SHOULD check for these characters and replace
4.4327 + each one by a single space (so that, for example, CR LF LF TAB will
4.4328 + become two spaces, since the CR and first LF will be removed by the
4.4329 + unfolding process). This will encourage robustness in the face of
4.4330 + non-conforming data; it is also possible that future versions of this
4.4331 + specification could permit these characters to appear in articles.
4.4332 +
4.4333 + The server SHOULD NOT produce output for articles that no longer
4.4334 + exist.
4.4335 +
4.4336 + If the argument is a message-id and no such article exists, a 430
4.4337 + response MUST be returned. If the argument is a range or is omitted
4.4338 + and the currently selected newsgroup is invalid, a 412 response MUST
4.4339 + be returned. If the argument is a range and no articles in that
4.4340 + number range exist in the currently selected newsgroup, including the
4.4341 + case where the second number is less than the first one, a 423
4.4342 + response MUST be returned. If the argument is omitted and the
4.4343 + current article number is invalid, a 420 response MUST be returned.
4.4344 +
4.4345 +8.3.3. Examples
4.4346 +
4.4347 + In the first four examples, TAB has been replaced by vertical bar and
4.4348 + some lines have been folded for readability.
4.4349 +
4.4350 + Example of a successful retrieval of overview information for an
4.4351 + article (explicitly not using an article number):
4.4352 +
4.4353 + [C] GROUP misc.test
4.4354 + [S] 211 1234 3000234 3002322 misc.test
4.4355 + [C] OVER
4.4356 + [S] 224 Overview information follows
4.4357 + [S] 3000234|I am just a test article|"Demo User"
4.4358 + <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
4.4359 + <45223423@example.com>|<45454@example.net>|1234|
4.4360 + 17|Xref: news.example.com misc.test:3000363
4.4361 + [S] .
4.4362 +
4.4363 +
4.4364 +
4.4365 +
4.4366 +
4.4367 +
4.4368 +Feather Standards Track [Page 78]
4.4369 +
4.4370 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4371 +
4.4372 +
4.4373 + Example of a successful retrieval of overview information for an
4.4374 + article by message-id:
4.4375 +
4.4376 + [C] CAPABILITIES
4.4377 + [S] 101 Capability list:
4.4378 + [S] VERSION 2
4.4379 + [S] READER
4.4380 + [S] OVER MSGID
4.4381 + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
4.4382 + [S] .
4.4383 + [C] OVER <45223423@example.com>
4.4384 + [S] 224 Overview information follows
4.4385 + [S] 0|I am just a test article|"Demo User"
4.4386 + <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
4.4387 + <45223423@example.com>|<45454@example.net>|1234|
4.4388 + 17|Xref: news.example.com misc.test:3000363
4.4389 + [S] .
4.4390 +
4.4391 + Note that the article number has been replaced by "0".
4.4392 +
4.4393 + Example of the same commands on a system that does not implement
4.4394 + retrieval by message-id:
4.4395 +
4.4396 + [C] CAPABILITIES
4.4397 + [S] 101 Capability list:
4.4398 + [S] VERSION 2
4.4399 + [S] READER
4.4400 + [S] OVER
4.4401 + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT
4.4402 + [S] .
4.4403 + [C] OVER <45223423@example.com>
4.4404 + [S] 503 Overview by message-id unsupported
4.4405 +
4.4406 +
4.4407 +
4.4408 +
4.4409 +
4.4410 +
4.4411 +
4.4412 +
4.4413 +
4.4414 +
4.4415 +
4.4416 +
4.4417 +
4.4418 +
4.4419 +
4.4420 +
4.4421 +
4.4422 +
4.4423 +
4.4424 +Feather Standards Track [Page 79]
4.4425 +
4.4426 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4427 +
4.4428 +
4.4429 + Example of a successful retrieval of overview information for a range
4.4430 + of articles:
4.4431 +
4.4432 + [C] GROUP misc.test
4.4433 + [S] 211 1234 3000234 3002322 misc.test
4.4434 + [C] OVER 3000234-3000240
4.4435 + [S] 224 Overview information follows
4.4436 + [S] 3000234|I am just a test article|"Demo User"
4.4437 + <nobody@example.com>|6 Oct 1998 04:38:40 -0500|
4.4438 + <45223423@example.com>|<45454@example.net>|1234|
4.4439 + 17|Xref: news.example.com misc.test:3000363
4.4440 + [S] 3000235|Another test article|nobody@nowhere.to
4.4441 + (Demo User)|6 Oct 1998 04:38:45 -0500|<45223425@to.to>||
4.4442 + 4818|37||Distribution: fi
4.4443 + [S] 3000238|Re: I am just a test article|somebody@elsewhere.to|
4.4444 + 7 Oct 1998 11:38:40 +1200|<kfwer3v@elsewhere.to>|
4.4445 + <45223423@to.to>|9234|51
4.4446 + [S] .
4.4447 +
4.4448 + Note the missing "References" and Xref headers in the second line,
4.4449 + the missing trailing fields in the first and last lines, and that
4.4450 + there are only results for those articles that still exist.
4.4451 +
4.4452 + Example of an unsuccessful retrieval of overview information on an
4.4453 + article by number:
4.4454 +
4.4455 + [C] GROUP misc.test
4.4456 + [S] 211 1234 3000234 3002322 misc.test
4.4457 + [C] OVER 300256
4.4458 + [S] 423 No such article in this group
4.4459 +
4.4460 + Example of an invalid range:
4.4461 +
4.4462 + [C] GROUP misc.test
4.4463 + [S] 211 1234 3000234 3002322 misc.test
4.4464 + [C] OVER 3000444-3000222
4.4465 + [S] 423 Empty range
4.4466 +
4.4467 + Example of an unsuccessful retrieval of overview information by
4.4468 + number because no newsgroup was selected first:
4.4469 +
4.4470 + [Assumes currently selected newsgroup is invalid.]
4.4471 + [C] OVER
4.4472 + [S] 412 No newsgroup selected
4.4473 +
4.4474 +
4.4475 +
4.4476 +
4.4477 +
4.4478 +
4.4479 +
4.4480 +Feather Standards Track [Page 80]
4.4481 +
4.4482 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4483 +
4.4484 +
4.4485 + Example of an attempt to retrieve information when the currently
4.4486 + selected newsgroup is empty:
4.4487 +
4.4488 + [C] GROUP example.empty.newsgroup
4.4489 + [S] 211 0 0 0 example.empty.newsgroup
4.4490 + [C] OVER
4.4491 + [S] 420 No current article selected
4.4492 +
4.4493 +8.4. LIST OVERVIEW.FMT
4.4494 +
4.4495 +8.4.1. Usage
4.4496 +
4.4497 + Indicating capability: OVER
4.4498 +
4.4499 + Syntax
4.4500 + LIST OVERVIEW.FMT
4.4501 +
4.4502 + Responses
4.4503 + 215 Information follows (multi-line)
4.4504 +
4.4505 +8.4.2. Description
4.4506 +
4.4507 + See Section 7.6.1 for general requirements of the LIST command.
4.4508 +
4.4509 + The LIST OVERVIEW.FMT command returns a description of the fields in
4.4510 + the database for which it is consistent (as described above). The
4.4511 + information is returned as a multi-line data block following the 215
4.4512 + response code. The information contains one line per field in the
4.4513 + order in which they are returned by the OVER command; the first 7
4.4514 + lines MUST (except for the case of letters) be exactly as follows:
4.4515 +
4.4516 + Subject:
4.4517 + From:
4.4518 + Date:
4.4519 + Message-ID:
4.4520 + References:
4.4521 + :bytes
4.4522 + :lines
4.4523 +
4.4524 + For compatibility with existing implementations, the last two lines
4.4525 + MAY instead be:
4.4526 +
4.4527 + Bytes:
4.4528 + Lines:
4.4529 +
4.4530 + even though they refer to metadata, not headers.
4.4531 +
4.4532 +
4.4533 +
4.4534 +
4.4535 +
4.4536 +Feather Standards Track [Page 81]
4.4537 +
4.4538 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4539 +
4.4540 +
4.4541 + All subsequent lines MUST consist of either a header name followed by
4.4542 + ":full", or the name of a piece of metadata.
4.4543 +
4.4544 + There are no leading or trailing spaces in the output.
4.4545 +
4.4546 + Note that the 7 fixed lines describe the 2nd to 8th fields of the
4.4547 + OVER output. The "full" suffix (which may use either uppercase,
4.4548 + lowercase, or a mix) is a reminder that the corresponding fields
4.4549 + include the header name.
4.4550 +
4.4551 + This command MAY generate different results if it is used more than
4.4552 + once in a session.
4.4553 +
4.4554 + If the OVER command is not implemented, the meaning of the output
4.4555 + from this command is not specified, but it must still meet the above
4.4556 + syntactic requirements.
4.4557 +
4.4558 +8.4.3. Examples
4.4559 +
4.4560 + Example of LIST OVERVIEW.FMT output corresponding to the example OVER
4.4561 + output above, in the preferred format:
4.4562 +
4.4563 + [C] LIST OVERVIEW.FMT
4.4564 + [S] 215 Order of fields in overview database.
4.4565 + [S] Subject:
4.4566 + [S] From:
4.4567 + [S] Date:
4.4568 + [S] Message-ID:
4.4569 + [S] References:
4.4570 + [S] :bytes
4.4571 + [S] :lines
4.4572 + [S] Xref:full
4.4573 + [S] Distribution:full
4.4574 + [S] .
4.4575 +
4.4576 +
4.4577 +
4.4578 +
4.4579 +
4.4580 +
4.4581 +
4.4582 +
4.4583 +
4.4584 +
4.4585 +
4.4586 +
4.4587 +
4.4588 +
4.4589 +
4.4590 +
4.4591 +
4.4592 +Feather Standards Track [Page 82]
4.4593 +
4.4594 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4595 +
4.4596 +
4.4597 + Example of LIST OVERVIEW.FMT output corresponding to the example OVER
4.4598 + output above, in the alternative format:
4.4599 +
4.4600 + [C] LIST OVERVIEW.FMT
4.4601 + [S] 215 Order of fields in overview database.
4.4602 + [S] Subject:
4.4603 + [S] From:
4.4604 + [S] Date:
4.4605 + [S] Message-ID:
4.4606 + [S] References:
4.4607 + [S] Bytes:
4.4608 + [S] Lines:
4.4609 + [S] Xref:FULL
4.4610 + [S] Distribution:FULL
4.4611 + [S] .
4.4612 +
4.4613 +8.5. HDR
4.4614 +
4.4615 +8.5.1. Usage
4.4616 +
4.4617 + Indicating capability: HDR
4.4618 +
4.4619 + Syntax
4.4620 + HDR field message-id
4.4621 + HDR field range
4.4622 + HDR field
4.4623 +
4.4624 + Responses
4.4625 +
4.4626 + First form (message-id specified)
4.4627 + 225 Headers follow (multi-line)
4.4628 + 430 No article with that message-id
4.4629 +
4.4630 + Second form (range specified)
4.4631 + 225 Headers follow (multi-line)
4.4632 + 412 No newsgroup selected
4.4633 + 423 No articles in that range
4.4634 +
4.4635 + Third form (current article number used)
4.4636 + 225 Headers follow (multi-line)
4.4637 + 412 No newsgroup selected
4.4638 + 420 Current article number is invalid
4.4639 +
4.4640 + Parameters
4.4641 + field Name of field
4.4642 + range Number(s) of articles
4.4643 + message-id Message-id of article
4.4644 +
4.4645 +
4.4646 +
4.4647 +
4.4648 +Feather Standards Track [Page 83]
4.4649 +
4.4650 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4651 +
4.4652 +
4.4653 +8.5.2. Description
4.4654 +
4.4655 + The HDR command provides access to specific fields from an article
4.4656 + specified by message-id, or from a specified article or range of
4.4657 + articles in the currently selected newsgroup. It MAY take the
4.4658 + information directly from the articles or from the overview database.
4.4659 + In the case of headers, an implementation MAY restrict the use of
4.4660 + this command to a specific list of headers or MAY allow it to be used
4.4661 + with any header; it may behave differently when it is used with a
4.4662 + message-id argument and when it is used with a range or no argument.
4.4663 +
4.4664 + The required field argument is the name of a header with the colon
4.4665 + omitted (e.g., "subject") or the name of a metadata item including
4.4666 + the leading colon (e.g., ":bytes"), and is case insensitive.
4.4667 +
4.4668 + The message-id argument indicates a specific article. The range
4.4669 + argument may be any of the following:
4.4670 +
4.4671 + o An article number.
4.4672 +
4.4673 + o An article number followed by a dash to indicate all following.
4.4674 +
4.4675 + o An article number followed by a dash followed by another article
4.4676 + number.
4.4677 +
4.4678 + If neither is specified, the current article number is used.
4.4679 +
4.4680 + If the information is available, it is returned as a multi-line data
4.4681 + block following the 225 response code and contains one line for each
4.4682 + article in the range that exists. (Note that unless the argument is
4.4683 + a range including a dash, there will be exactly one line in the data
4.4684 + block.) The line consists of the article number, a space, and then
4.4685 + the contents of the field. In the case of a header, the header name,
4.4686 + the colon, and the first space after the colon are all omitted.
4.4687 +
4.4688 + If the article is specified by message-id (the first form of the
4.4689 + command), the article number MUST be replaced with zero, except that
4.4690 + if there is a currently selected newsgroup and the article is present
4.4691 + in that group, the server MAY use the article's number in that group.
4.4692 + (See the ARTICLE command (Section 6.2.1) and STAT examples
4.4693 + (Section 6.2.4.3) for more details.) In the other two forms of the
4.4694 + command, the article number MUST be returned.
4.4695 +
4.4696 + Header contents are modified as follows: all CRLF pairs are removed,
4.4697 + and then each TAB is replaced with a single space. (Note that this
4.4698 + is the same transformation as is performed by the OVER command
4.4699 + (Section 8.3.2), and the same comment concerning NUL, CR, and LF
4.4700 + applies.)
4.4701 +
4.4702 +
4.4703 +
4.4704 +Feather Standards Track [Page 84]
4.4705 +
4.4706 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4707 +
4.4708 +
4.4709 + Note the distinction between headers and metadata appearing to have
4.4710 + the same meaning. Headers are always taken unchanged from the
4.4711 + article; metadata are always calculated. For example, a request for
4.4712 + "Lines" returns the contents of the "Lines" header of the specified
4.4713 + articles, if any, no matter whether they accurately state the number
4.4714 + of lines, while a request for ":lines" returns the line count
4.4715 + metadata, which is always the actual number of lines irrespective of
4.4716 + what any header may state.
4.4717 +
4.4718 + If the requested header is not present in the article, or if it is
4.4719 + present but empty, a line for that article is included in the output,
4.4720 + but the header content portion of the line is empty (the space after
4.4721 + the article number MAY be retained or omitted). If the header occurs
4.4722 + in a given article more than once, only the content of the first
4.4723 + occurrence is returned by HDR. If any article number in the provided
4.4724 + range does not exist in the group, no line for that article number is
4.4725 + included in the output.
4.4726 +
4.4727 + If the second argument is a message-id and no such article exists, a
4.4728 + 430 response MUST be returned. If the second argument is a range or
4.4729 + is omitted and the currently selected newsgroup is invalid, a 412
4.4730 + response MUST be returned. If the second argument is a range and no
4.4731 + articles in that number range exist in the currently selected
4.4732 + newsgroup, including the case where the second number is less than
4.4733 + the first one, a 423 response MUST be returned. If the second
4.4734 + argument is omitted and the current article number is invalid, a 420
4.4735 + response MUST be returned.
4.4736 +
4.4737 + A server MAY only allow HDR commands for a limited set of fields; it
4.4738 + may behave differently in this respect for the first (message-id)
4.4739 + form from how it would for the other forms. If so, it MUST respond
4.4740 + with the generic 503 response to attempts to request other fields,
4.4741 + rather than return erroneous results, such as a successful empty
4.4742 + response.
4.4743 +
4.4744 + If HDR uses the overview database and it is inconsistent for the
4.4745 + requested field, the server MAY return what results it can, or it MAY
4.4746 + respond with the generic 503 response. In the latter case, the field
4.4747 + MUST NOT appear in the output from LIST HEADERS.
4.4748 +
4.4749 +
4.4750 +
4.4751 +
4.4752 +
4.4753 +
4.4754 +
4.4755 +
4.4756 +
4.4757 +
4.4758 +
4.4759 +
4.4760 +Feather Standards Track [Page 85]
4.4761 +
4.4762 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4763 +
4.4764 +
4.4765 +8.5.3. Examples
4.4766 +
4.4767 + Example of a successful retrieval of subject lines from a range of
4.4768 + articles (3000235 has no Subject header, and 3000236 is missing):
4.4769 +
4.4770 + [C] GROUP misc.test
4.4771 + [S] 211 1234 3000234 3002322 misc.test
4.4772 + [C] HDR Subject 3000234-3000238
4.4773 + [S] 225 Headers follow
4.4774 + [S] 3000234 I am just a test article
4.4775 + [S] 3000235
4.4776 + [S] 3000237 Re: I am just a test article
4.4777 + [S] 3000238 Ditto
4.4778 + [S] .
4.4779 +
4.4780 + Example of a successful retrieval of line counts from a range of
4.4781 + articles:
4.4782 +
4.4783 + [C] GROUP misc.test
4.4784 + [S] 211 1234 3000234 3002322 misc.test
4.4785 + [C] HDR :lines 3000234-3000238
4.4786 + [S] 225 Headers follow
4.4787 + [S] 3000234 42
4.4788 + [S] 3000235 5
4.4789 + [S] 3000237 11
4.4790 + [S] 3000238 2378
4.4791 + [S] .
4.4792 +
4.4793 + Example of a successful retrieval of the subject line from an article
4.4794 + by message-id:
4.4795 +
4.4796 + [C] GROUP misc.test
4.4797 + [S] 211 1234 3000234 3002322 misc.test
4.4798 + [C] HDR subject <i.am.a.test.article@example.com>
4.4799 + [S] 225 Header information follows
4.4800 + [S] 0 I am just a test article
4.4801 + [S] .
4.4802 +
4.4803 + Example of a successful retrieval of the subject line from the
4.4804 + current article:
4.4805 +
4.4806 + [C] GROUP misc.test
4.4807 + [S] 211 1234 3000234 3002322 misc.test
4.4808 + [C] HDR subject
4.4809 + [S] 225 Header information follows
4.4810 + [S] 3000234 I am just a test article
4.4811 + [S] .
4.4812 +
4.4813 +
4.4814 +
4.4815 +
4.4816 +Feather Standards Track [Page 86]
4.4817 +
4.4818 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4819 +
4.4820 +
4.4821 + Example of an unsuccessful retrieval of a header from an article by
4.4822 + message-id:
4.4823 +
4.4824 + [C] HDR subject <i.am.not.there@example.com>
4.4825 + [S] 430 No Such Article Found
4.4826 +
4.4827 + Example of an unsuccessful retrieval of headers from articles by
4.4828 + number because no newsgroup was selected first:
4.4829 +
4.4830 + [Assumes currently selected newsgroup is invalid.]
4.4831 + [C] HDR subject 300256-
4.4832 + [S] 412 No newsgroup selected
4.4833 +
4.4834 + Example of an unsuccessful retrieval of headers because the currently
4.4835 + selected newsgroup is empty:
4.4836 +
4.4837 + [C] GROUP example.empty.newsgroup
4.4838 + [S] 211 0 0 0 example.empty.newsgroup
4.4839 + [C] HDR subject 1-
4.4840 + [S] 423 No articles in that range
4.4841 +
4.4842 + Example of an unsuccessful retrieval of headers because the server
4.4843 + does not allow HDR commands for that header:
4.4844 +
4.4845 + [C] GROUP misc.test
4.4846 + [S] 211 1234 3000234 3002322 misc.test
4.4847 + [C] HDR Content-Type 3000234-3000238
4.4848 + [S] 503 HDR not permitted on Content-Type
4.4849 +
4.4850 +8.6. LIST HEADERS
4.4851 +
4.4852 +8.6.1. Usage
4.4853 +
4.4854 + Indicating capability: HDR
4.4855 +
4.4856 + Syntax
4.4857 + LIST HEADERS [MSGID|RANGE]
4.4858 +
4.4859 + Responses
4.4860 + 215 Field list follows (multi-line)
4.4861 +
4.4862 + Parameters
4.4863 + MSGID Requests list for access by message-id
4.4864 + RANGE Requests list for access by range
4.4865 +
4.4866 +
4.4867 +
4.4868 +
4.4869 +
4.4870 +
4.4871 +
4.4872 +Feather Standards Track [Page 87]
4.4873 +
4.4874 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4875 +
4.4876 +
4.4877 +8.6.2. Description
4.4878 +
4.4879 + See Section 7.6.1 for general requirements of the LIST command.
4.4880 +
4.4881 + The LIST HEADERS command returns a list of fields that may be
4.4882 + retrieved using the HDR command.
4.4883 +
4.4884 + The information is returned as a multi-line data block following the
4.4885 + 215 response code and contains one line for each field name
4.4886 + (excluding the trailing colon for headers and including the leading
4.4887 + colon for metadata items). If the implementation allows any header
4.4888 + to be retrieved, it MUST NOT include any header names in the list but
4.4889 + MUST include the special entry ":" (a single colon on its own). It
4.4890 + MUST still explicitly list any metadata items that are available.
4.4891 + The order of items in the list is not significant; the server need
4.4892 + not even consistently return the same order. The list MAY be empty
4.4893 + (though in this circumstance there is little point in providing the
4.4894 + HDR command).
4.4895 +
4.4896 + An implementation that also supports the OVER command SHOULD at least
4.4897 + permit all the headers and metadata items listed in the output from
4.4898 + the LIST OVERVIEW.FMT command.
4.4899 +
4.4900 + If the server treats the first form of the HDR command (message-id
4.4901 + specified) differently from the other two forms (range specified or
4.4902 + current article number used) in respect of which headers or metadata
4.4903 + items are available, then the following apply:
4.4904 +
4.4905 + o If the MSGID argument is specified, the results MUST be those
4.4906 + available for the first form of the HDR command.
4.4907 +
4.4908 + o If the RANGE argument is specified, the results MUST be those
4.4909 + available for the second and third forms of the HDR command.
4.4910 +
4.4911 + o If no argument is specified, the results MUST be those available
4.4912 + in all forms of the HDR command (that is, it MUST only list those
4.4913 + items listed in both the previous cases).
4.4914 +
4.4915 + If the server does not treat the various forms differently, then it
4.4916 + MUST ignore any argument and always produce the same results (though
4.4917 + not necessarily always in the same order).
4.4918 +
4.4919 + If the HDR command is not implemented, the meaning of the output from
4.4920 + this command is not specified, but it must still meet the above
4.4921 + syntactic requirements.
4.4922 +
4.4923 +
4.4924 +
4.4925 +
4.4926 +
4.4927 +
4.4928 +Feather Standards Track [Page 88]
4.4929 +
4.4930 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4931 +
4.4932 +
4.4933 +8.6.3. Examples
4.4934 +
4.4935 + Example of an implementation providing access to only a few headers:
4.4936 +
4.4937 + [C] LIST HEADERS
4.4938 + [S] 215 headers supported:
4.4939 + [S] Subject
4.4940 + [S] Message-ID
4.4941 + [S] Xref
4.4942 + [S] .
4.4943 +
4.4944 + Example of an implementation providing access to the same fields as
4.4945 + the first example in Section 8.4.3:
4.4946 +
4.4947 + [C] CAPABILITIES
4.4948 + [S] 101 Capability list:
4.4949 + [S] VERSION 2
4.4950 + [S] READER
4.4951 + [S] OVER
4.4952 + [S] HDR
4.4953 + [S] LIST ACTIVE NEWSGROUPS HEADERS OVERVIEW.FMT
4.4954 + [S] .
4.4955 + [C] LIST HEADERS
4.4956 + [S] 215 headers and metadata items supported:
4.4957 + [S] Date
4.4958 + [S] Distribution
4.4959 + [S] From
4.4960 + [S] Message-ID
4.4961 + [S] References
4.4962 + [S] Subject
4.4963 + [S] Xref
4.4964 + [S] :bytes
4.4965 + [S] :lines
4.4966 + [S] .
4.4967 +
4.4968 + Example of an implementation providing access to all headers:
4.4969 +
4.4970 + [C] LIST HEADERS
4.4971 + [S] 215 metadata items supported:
4.4972 + [S] :
4.4973 + [S] :lines
4.4974 + [S] :bytes
4.4975 + [S] :x-article-number
4.4976 + [S] .
4.4977 +
4.4978 +
4.4979 +
4.4980 +
4.4981 +
4.4982 +
4.4983 +
4.4984 +Feather Standards Track [Page 89]
4.4985 +
4.4986 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.4987 +
4.4988 +
4.4989 + Example of an implementation distinguishing the first form of the HDR
4.4990 + command from the other two forms:
4.4991 +
4.4992 + [C] LIST HEADERS RANGE
4.4993 + [S] 215 metadata items supported:
4.4994 + [S] :
4.4995 + [S] :lines
4.4996 + [S] :bytes
4.4997 + [S] .
4.4998 + [C] LIST HEADERS MSGID
4.4999 + [S] 215 headers and metadata items supported:
4.5000 + [S] Date
4.5001 + [S] Distribution
4.5002 + [S] From
4.5003 + [S] Message-ID
4.5004 + [S] References
4.5005 + [S] Subject
4.5006 + [S] :lines
4.5007 + [S] :bytes
4.5008 + [S] :x-article-number
4.5009 + [S] .
4.5010 + [C] LIST HEADERS
4.5011 + [S] 215 headers and metadata items supported:
4.5012 + [S] Date
4.5013 + [S] Distribution
4.5014 + [S] From
4.5015 + [S] Message-ID
4.5016 + [S] References
4.5017 + [S] Subject
4.5018 + [S] :lines
4.5019 + [S] :bytes
4.5020 + [S] .
4.5021 +
4.5022 + Note that :x-article-number does not appear in the last set of
4.5023 + output.
4.5024 +
4.5025 +9. Augmented BNF Syntax for NNTP
4.5026 +
4.5027 +9.1. Introduction
4.5028 +
4.5029 + Each of the following sections describes the syntax of a major
4.5030 + element of NNTP. This syntax extends and refines the descriptions
4.5031 + elsewhere in this specification and should be given precedence when
4.5032 + resolving apparent conflicts. Note that ABNF [RFC4234] strings are
4.5033 + case insensitive. Non-terminals used in several places are defined
4.5034 + in a separate section at the end.
4.5035 +
4.5036 +
4.5037 +
4.5038 +
4.5039 +
4.5040 +Feather Standards Track [Page 90]
4.5041 +
4.5042 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5043 +
4.5044 +
4.5045 + Between them, the non-terminals <command-line>, <command-datastream>,
4.5046 + <command-continuation>, and <response> specify the text that flows
4.5047 + between client and server. A consistent naming scheme is used in
4.5048 + this document for the non-terminals relating to each command, and
4.5049 + SHOULD be used by the specification of registered extensions.
4.5050 +
4.5051 + For each command, the sequence is as follows:
4.5052 +
4.5053 + o The client sends an instance of <command-line>; the syntax for the
4.5054 + EXAMPLE command is <example-command>.
4.5055 +
4.5056 + o If the client is one that immediately streams data, it sends an
4.5057 + instance of <command-datastream>; the syntax for the EXAMPLE
4.5058 + command is <example-datastream>.
4.5059 +
4.5060 + o The server sends an instance of <response>.
4.5061 +
4.5062 + * The initial response line is independent of the command that
4.5063 + generated it; if the 000 response has arguments, the syntax of
4.5064 + the initial line is <response-000-content>.
4.5065 +
4.5066 + * If the response is multi-line, the initial line is followed by
4.5067 + a <multi-line-data-block>. The syntax for the contents of this
4.5068 + block after "dot-stuffing" has been removed is (for the 000
4.5069 + response to the EXAMPLE command) <example-000-ml-content> and
4.5070 + is an instance of <multi-line-response-content>.
4.5071 +
4.5072 + o While the latest response is one that indicates more data is
4.5073 + required (in general, a 3xx response):
4.5074 +
4.5075 + * the client sends an instance of <command-continuation>; the
4.5076 + syntax for the EXAMPLE continuation following a 333 response is
4.5077 + <example-333-continuation>;
4.5078 +
4.5079 + * the server sends another instance of <response>, as above.
4.5080 +
4.5081 + (There are no commands in this specification that immediately stream
4.5082 + data, but this non-terminal is defined for the convenience of
4.5083 + extensions.)
4.5084 +
4.5085 +
4.5086 +
4.5087 +
4.5088 +
4.5089 +
4.5090 +
4.5091 +
4.5092 +
4.5093 +
4.5094 +
4.5095 +
4.5096 +Feather Standards Track [Page 91]
4.5097 +
4.5098 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5099 +
4.5100 +
4.5101 +9.2. Commands
4.5102 +
4.5103 + This syntax defines the non-terminal <command-line>, which represents
4.5104 + what is sent from the client to the server (see section 3.1 for
4.5105 + limits on lengths).
4.5106 +
4.5107 + command-line = command EOL
4.5108 + command = X-command
4.5109 + X-command = keyword *(WS token)
4.5110 +
4.5111 + command =/ article-command /
4.5112 + body-command /
4.5113 + capabilities-command /
4.5114 + date-command /
4.5115 + group-command /
4.5116 + hdr-command /
4.5117 + head-command /
4.5118 + help-command /
4.5119 + ihave-command /
4.5120 + last-command /
4.5121 + list-command /
4.5122 + listgroup-command /
4.5123 + mode-reader-command /
4.5124 + newgroups-command /
4.5125 + newnews-command /
4.5126 + next-command /
4.5127 + over-command /
4.5128 + post-command /
4.5129 + quit-command /
4.5130 + stat-command
4.5131 +
4.5132 + article-command = "ARTICLE" [WS article-ref]
4.5133 + body-command = "BODY" [WS article-ref]
4.5134 + capabilities-command = "CAPABILITIES" [WS keyword]
4.5135 + date-command = "DATE"
4.5136 + group-command = "GROUP" [WS newsgroup-name]
4.5137 + hdr-command = "HDR" WS header-meta-name [WS range-ref]
4.5138 + head-command = "HEAD" [WS article-ref]
4.5139 + help-command = "HELP"
4.5140 + ihave-command = "IHAVE" WS message-id
4.5141 + last-command = "LAST"
4.5142 + list-command = "LIST" [WS list-arguments]
4.5143 + listgroup-command = "LISTGROUP" [WS newsgroup-name [WS range]]
4.5144 + mode-reader-command = "MODE" WS "READER"
4.5145 + newgroups-command = "NEWGROUPS" WS date-time
4.5146 + newnews-command = "NEWNEWS" WS wildmat WS date-time
4.5147 + next-command = "NEXT"
4.5148 + over-command = "OVER" [WS range-ref]
4.5149 +
4.5150 +
4.5151 +
4.5152 +Feather Standards Track [Page 92]
4.5153 +
4.5154 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5155 +
4.5156 +
4.5157 + post-command = "POST"
4.5158 + quit-command = "QUIT"
4.5159 + stat-command = "STAT" [WS article-ref]
4.5160 +
4.5161 + article-ref = article-number / message-id
4.5162 + date = date2y / date4y
4.5163 + date4y = 4DIGIT 2DIGIT 2DIGIT
4.5164 + date2y = 2DIGIT 2DIGIT 2DIGIT
4.5165 + date-time = date WS time [WS "GMT"]
4.5166 + header-meta-name = header-name / metadata-name
4.5167 + list-arguments = keyword [WS token]
4.5168 + metadata-name = ":" 1*A-NOTCOLON
4.5169 + range = article-number ["-" [article-number]]
4.5170 + range-ref = range / message-id
4.5171 + time = 2DIGIT 2DIGIT 2DIGIT
4.5172 +
4.5173 +9.3. Command Continuation
4.5174 +
4.5175 + This syntax defines the further material sent by the client in the
4.5176 + case of multi-stage commands and those that stream data.
4.5177 +
4.5178 + command-datastream = UNDEFINED
4.5179 + ; not used, provided as a hook for extensions
4.5180 + command-continuation = ihave-335-continuation /
4.5181 + post-340-continuation
4.5182 +
4.5183 + ihave-335-continuation = encoded-article
4.5184 + post-340-continuation = encoded-article
4.5185 +
4.5186 + encoded-article = multi-line-data-block
4.5187 + ; after undoing the "dot-stuffing", this MUST match <article>
4.5188 +
4.5189 +9.4. Responses
4.5190 +
4.5191 +9.4.1. Generic Responses
4.5192 +
4.5193 + This syntax defines the non-terminal <response>, which represents the
4.5194 + generic form of responses; that is, what is sent from the server to
4.5195 + the client in response to a <command> or a <command-continuation>.
4.5196 +
4.5197 + response = simple-response / multi-line-response
4.5198 + simple-response = initial-response-line
4.5199 + multi-line-response = initial-response-line multi-line-data-block
4.5200 +
4.5201 + initial-response-line =
4.5202 + initial-response-content [SP trailing-comment] CRLF
4.5203 + initial-response-content = X-initial-response-content
4.5204 + X-initial-response-content = 3DIGIT *(SP response-argument)
4.5205 +
4.5206 +
4.5207 +
4.5208 +Feather Standards Track [Page 93]
4.5209 +
4.5210 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5211 +
4.5212 +
4.5213 + response-argument = 1*A-CHAR
4.5214 + trailing-comment = *U-CHAR
4.5215 +
4.5216 +9.4.2. Initial Response Line Contents
4.5217 +
4.5218 + This syntax defines the specific initial response lines for the
4.5219 + various commands in this specification (see section 3.1 for limits on
4.5220 + lengths). Only those response codes with arguments are listed.
4.5221 +
4.5222 + initial-response-content =/ response-111-content /
4.5223 + response-211-content /
4.5224 + response-220-content /
4.5225 + response-221-content /
4.5226 + response-222-content /
4.5227 + response-223-content /
4.5228 + response-401-content
4.5229 +
4.5230 + response-111-content = "111" SP date4y time
4.5231 + response-211-content = "211" 3(SP article-number) SP newsgroup-name
4.5232 + response-220-content = "220" SP article-number SP message-id
4.5233 + response-221-content = "221" SP article-number SP message-id
4.5234 + response-222-content = "222" SP article-number SP message-id
4.5235 + response-223-content = "223" SP article-number SP message-id
4.5236 + response-401-content = "401" SP capability-label
4.5237 +
4.5238 +9.4.3. Multi-line Response Contents
4.5239 +
4.5240 + This syntax defines the content of the various multi-line responses;
4.5241 + more precisely, it defines the part of the response in the multi-line
4.5242 + data block after any "dot-stuffing" has been undone. The numeric
4.5243 + portion of each non-terminal name indicates the response code that is
4.5244 + followed by this data.
4.5245 +
4.5246 + multi-line-response-content = article-220-ml-content /
4.5247 + body-222-ml-content /
4.5248 + capabilities-101-ml-content /
4.5249 + hdr-225-ml-content /
4.5250 + head-221-ml-content /
4.5251 + help-100-ml-content /
4.5252 + list-215-ml-content /
4.5253 + listgroup-211-ml-content /
4.5254 + newgroups-231-ml-content /
4.5255 + newnews-230-ml-content /
4.5256 + over-224-ml-content
4.5257 +
4.5258 + article-220-ml-content = article
4.5259 + body-222-ml-content = body
4.5260 + capabilities-101-ml-content = version-line CRLF
4.5261 +
4.5262 +
4.5263 +
4.5264 +Feather Standards Track [Page 94]
4.5265 +
4.5266 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5267 +
4.5268 +
4.5269 + *(capability-line CRLF)
4.5270 + hdr-225-ml-content = *(article-number SP hdr-content CRLF)
4.5271 + head-221-ml-content = 1*header
4.5272 + help-100-ml-content = *(*U-CHAR CRLF)
4.5273 + list-215-ml-content = list-content
4.5274 + listgroup-211-ml-content = *(article-number CRLF)
4.5275 + newgroups-231-ml-content = active-groups-list
4.5276 + newnews-230-ml-content = *(message-id CRLF)
4.5277 + over-224-ml-content = *(article-number over-content CRLF)
4.5278 +
4.5279 + active-groups-list = *(newsgroup-name SPA article-number
4.5280 + SPA article-number SPA newsgroup-status CRLF)
4.5281 + hdr-content = *S-NONTAB
4.5282 + hdr-n-content = [(header-name ":" / metadata-name) SP hdr-content]
4.5283 + list-content = body
4.5284 + newsgroup-status = %x79 / %x6E / %x6D / private-status
4.5285 + over-content = 1*6(TAB hdr-content) /
4.5286 + 7(TAB hdr-content) *(TAB hdr-n-content)
4.5287 + private-status = token ; except the values in newsgroup-status
4.5288 +
4.5289 +9.5. Capability Lines
4.5290 +
4.5291 + This syntax defines the generic form of a capability line in the
4.5292 + capabilities list (see Section 3.3.1).
4.5293 +
4.5294 + capability-line = capability-entry
4.5295 + capability-entry = X-capability-entry
4.5296 + X-capability-entry = capability-label *(WS capability-argument)
4.5297 + capability-label = keyword
4.5298 + capability-argument = token
4.5299 +
4.5300 + This syntax defines the specific capability entries for the
4.5301 + capabilities in this specification.
4.5302 +
4.5303 + capability-entry =/
4.5304 + hdr-capability /
4.5305 + ihave-capability /
4.5306 + implementation-capability /
4.5307 + list-capability /
4.5308 + mode-reader-capability /
4.5309 + newnews-capability /
4.5310 + over-capability /
4.5311 + post-capability /
4.5312 + reader-capability
4.5313 +
4.5314 + hdr-capability = "HDR"
4.5315 + ihave-capability = "IHAVE"
4.5316 + implementation-capability = "IMPLEMENTATION" *(WS token)
4.5317 +
4.5318 +
4.5319 +
4.5320 +Feather Standards Track [Page 95]
4.5321 +
4.5322 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5323 +
4.5324 +
4.5325 + list-capability = "LIST" 1*(WS keyword)
4.5326 + mode-reader-capability = "MODE-READER"
4.5327 + newnews-capability = "NEWNEWS"
4.5328 + over-capability = "OVER" [WS "MSGID"]
4.5329 + post-capability = "POST"
4.5330 + reader-capability = "READER"
4.5331 +
4.5332 + version-line = "VERSION" 1*(WS version-number)
4.5333 + version-number = nzDIGIT *5DIGIT
4.5334 +
4.5335 +9.6. LIST Variants
4.5336 +
4.5337 + This section defines more specifically the keywords for the LIST
4.5338 + command and the syntax of the corresponding response contents.
4.5339 +
4.5340 + ; active
4.5341 + list-arguments =/ "ACTIVE" [WS wildmat]
4.5342 + list-content =/ list-active-content
4.5343 + list-active-content = active-groups-list
4.5344 +
4.5345 +
4.5346 + ; active.times
4.5347 + list-arguments =/ "ACTIVE.TIMES" [WS wildmat]
4.5348 + list-content =/ list-active-times-content
4.5349 + list-active-times-content =
4.5350 + *(newsgroup-name SPA 1*DIGIT SPA newsgroup-creator CRLF)
4.5351 + newsgroup-creator = U-TEXT
4.5352 +
4.5353 +
4.5354 + ; distrib.pats
4.5355 + list-arguments =/ "DISTRIB.PATS"
4.5356 + list-content =/ list-distrib-pats-content
4.5357 + list-distrib-pats-content =
4.5358 + *(1*DIGIT ":" wildmat ":" distribution CRLF)
4.5359 + distribution = token
4.5360 +
4.5361 +
4.5362 + ; headers
4.5363 + list-arguments =/ "HEADERS" [WS ("MSGID" / "RANGE")]
4.5364 + list-content =/ list-headers-content
4.5365 + list-headers-content = *(header-meta-name CRLF) /
4.5366 + *((metadata-name / ":") CRLF)
4.5367 +
4.5368 +
4.5369 + ; newsgroups
4.5370 + list-arguments =/ "NEWSGROUPS" [WS wildmat]
4.5371 + list-content =/ list-newsgroups-content
4.5372 + list-newsgroups-content =
4.5373 +
4.5374 +
4.5375 +
4.5376 +Feather Standards Track [Page 96]
4.5377 +
4.5378 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5379 +
4.5380 +
4.5381 + *(newsgroup-name WS newsgroup-description CRLF)
4.5382 + newsgroup-description = S-TEXT
4.5383 +
4.5384 +
4.5385 + ; overview.fmt
4.5386 + list-arguments =/ "OVERVIEW.FMT"
4.5387 + list-content =/ list-overview-fmt-content
4.5388 + list-overview-fmt-content = "Subject:" CRLF
4.5389 + "From:" CRLF
4.5390 + "Date:" CRLF
4.5391 + "Message-ID:" CRLF
4.5392 + "References:" CRLF
4.5393 + ( ":bytes" CRLF ":lines" / "Bytes:" CRLF "Lines:") CRLF
4.5394 + *((header-name ":full" / metadata-name) CRLF)
4.5395 +
4.5396 +9.7. Articles
4.5397 +
4.5398 + This syntax defines the non-terminal <article>, which represents the
4.5399 + format of an article as described in Section 3.6.
4.5400 +
4.5401 + article = 1*header CRLF body
4.5402 + header = header-name ":" [CRLF] SP header-content CRLF
4.5403 + header-content = *(S-CHAR / [CRLF] WS)
4.5404 + body = *(*B-CHAR CRLF)
4.5405 +
4.5406 +9.8. General Non-terminals
4.5407 +
4.5408 + These non-terminals are used at various places in the syntax and are
4.5409 + collected here for convenience. A few of these non-terminals are not
4.5410 + used in this specification but are provided for the consistency and
4.5411 + convenience of extension authors.
4.5412 +
4.5413 + multi-line-data-block = content-lines termination
4.5414 + content-lines = *([content-text] CRLF)
4.5415 + content-text = (".." / B-NONDOT) *B-CHAR
4.5416 + termination = "." CRLF
4.5417 +
4.5418 + article-number = 1*16DIGIT
4.5419 + header-name = 1*A-NOTCOLON
4.5420 + keyword = ALPHA 2*(ALPHA / DIGIT / "." / "-")
4.5421 + message-id = "<" 1*248A-NOTGT ">"
4.5422 + newsgroup-name = 1*wildmat-exact
4.5423 + token = 1*P-CHAR
4.5424 +
4.5425 + wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
4.5426 + wildmat-pattern = 1*wildmat-item
4.5427 + wildmat-item = wildmat-exact / wildmat-wild
4.5428 + wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
4.5429 +
4.5430 +
4.5431 +
4.5432 +Feather Standards Track [Page 97]
4.5433 +
4.5434 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5435 +
4.5436 +
4.5437 + UTF8-non-ascii ; exclude ! * , ? [ \ ]
4.5438 + wildmat-wild = "*" / "?"
4.5439 +
4.5440 + base64 = *(4base64-char) [base64-terminal]
4.5441 + base64-char = UPPER / LOWER / DIGIT / "+" / "/"
4.5442 + base64-terminal = 2base64-char "==" / 3base64-char "="
4.5443 +
4.5444 + ; Assorted special character sets
4.5445 + ; A- means based on US-ASCII, excluding controls and SP
4.5446 + ; P- means based on UTF-8, excluding controls and SP
4.5447 + ; U- means based on UTF-8, excluding NUL CR and LF
4.5448 + ; B- means based on bytes, excluding NUL CR and LF
4.5449 + A-CHAR = %x21-7E
4.5450 + A-NOTCOLON = %x21-39 / %x3B-7E ; exclude ":"
4.5451 + A-NOTGT = %x21-3D / %x3F-7E ; exclude ">"
4.5452 + P-CHAR = A-CHAR / UTF8-non-ascii
4.5453 + U-CHAR = CTRL / TAB / SP / A-CHAR / UTF8-non-ascii
4.5454 + U-NONTAB = CTRL / SP / A-CHAR / UTF8-non-ascii
4.5455 + U-TEXT = P-CHAR *U-CHAR
4.5456 + B-CHAR = CTRL / TAB / SP / %x21-FF
4.5457 + B-NONDOT = CTRL / TAB / SP / %x21-2D / %x2F-FF ; exclude "."
4.5458 +
4.5459 + ALPHA = UPPER / LOWER ; use only when case-insensitive
4.5460 + CR = %x0D
4.5461 + CRLF = CR LF
4.5462 + CTRL = %x01-08 / %x0B-0C / %x0E-1F
4.5463 + DIGIT = %x30-39
4.5464 + nzDIGIT = %x31-39
4.5465 + EOL = *(SP / TAB) CRLF
4.5466 + LF = %x0A
4.5467 + LOWER = %x61-7A
4.5468 + SP = %x20
4.5469 + SPA = 1*SP
4.5470 + TAB = %x09
4.5471 + UPPER = %x41-5A
4.5472 + UTF8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4
4.5473 + UTF8-2 = %xC2-DF UTF8-tail
4.5474 + UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2UTF8-tail /
4.5475 + %xED %x80-9F UTF8-tail / %xEE-EF 2UTF8-tail
4.5476 + UTF8-4 = %xF0 %x90-BF 2UTF8-tail / %xF1-F3 3UTF8-tail /
4.5477 + %xF4 %x80-8F 2UTF8-tail
4.5478 + UTF8-tail = %x80-BF
4.5479 + WS = 1*(SP / TAB)
4.5480 +
4.5481 + The following non-terminals require special consideration. They
4.5482 + represent situations where material SHOULD be restricted to UTF-8,
4.5483 + but implementations MUST be able to cope with other character
4.5484 + encodings. Therefore, there are two sets of definitions for them.
4.5485 +
4.5486 +
4.5487 +
4.5488 +Feather Standards Track [Page 98]
4.5489 +
4.5490 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5491 +
4.5492 +
4.5493 + Implementations MUST accept any content that meets this syntax:
4.5494 +
4.5495 + S-CHAR = %x21-FF
4.5496 + S-NONTAB = CTRL / SP / S-CHAR
4.5497 + S-TEXT = (CTRL / S-CHAR) *B-CHAR
4.5498 +
4.5499 + and MAY pass such content on unaltered.
4.5500 +
4.5501 + When generating new content or re-encoding existing content,
4.5502 + implementations SHOULD conform to this syntax:
4.5503 +
4.5504 + S-CHAR = P-CHAR
4.5505 + S-NONTAB = U-NONTAB
4.5506 + S-TEXT = U-TEXT
4.5507 +
4.5508 +9.9. Extensions and Validation
4.5509 +
4.5510 + The specification of a registered extension MUST include formal
4.5511 + syntax that defines additional forms for the following non-terminals:
4.5512 +
4.5513 + command
4.5514 + for each new command other than a variant of the LIST command -
4.5515 + the syntax of each command MUST be compatible with the definition
4.5516 + of <X-command>;
4.5517 +
4.5518 + command-datastream
4.5519 + for each new command that immediately streams data;
4.5520 +
4.5521 + command-continuation
4.5522 + for each new command that sends further material after the initial
4.5523 + command line - the syntax of each continuation MUST be exactly
4.5524 + what is sent to the server, including any escape mechanisms such
4.5525 + as "dot-stuffing";
4.5526 +
4.5527 + initial-response-content
4.5528 + for each new response code that has arguments - the syntax of each
4.5529 + response MUST be compatible with the definition of <X-initial-
4.5530 + response-content>;
4.5531 +
4.5532 + multi-line-response-content
4.5533 + for each new response code that has a multi-line response - the
4.5534 + syntax MUST show the response after the lines containing the
4.5535 + response code and the terminating octet have been removed and any
4.5536 + "dot-stuffing" undone;
4.5537 +
4.5538 + capability-entry
4.5539 + for each new capability label - the syntax of each entry MUST be
4.5540 + compatible with the definition of <X-capability-entry>;
4.5541 +
4.5542 +
4.5543 +
4.5544 +Feather Standards Track [Page 99]
4.5545 +
4.5546 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5547 +
4.5548 +
4.5549 + list-arguments
4.5550 + for each new variant of the LIST command - the syntax of each
4.5551 + entry MUST be compatible with the definition of <X-command>;
4.5552 +
4.5553 + list-content
4.5554 + for each new variant of the LIST command - the syntax MUST show
4.5555 + the response after the lines containing the 215 response code and
4.5556 + the terminating octet have been removed and any "dot-stuffing"
4.5557 + undone.
4.5558 +
4.5559 + The =/ notation of ABNF [RFC4234] and the naming conventions
4.5560 + described in Section 9.1 SHOULD be used for this.
4.5561 +
4.5562 + When the syntax in this specification, or syntax based on it, is
4.5563 + validated, it should be noted that:
4.5564 +
4.5565 + o the non-terminals <command-line>, <command-datastream>,
4.5566 + <command-continuation>, <response>, and
4.5567 + <multi-line-response-content> describe basic concepts of the
4.5568 + protocol and are not referred to by any other rule;
4.5569 +
4.5570 + o the non-terminal <base64> is provided for the convenience of
4.5571 + extension authors and is not referred to by any rule in this
4.5572 + specification;
4.5573 +
4.5574 + o for the reasons given above, the non-terminals <S-CHAR>,
4.5575 + <S-NONTAB>, and <S-TEXT> each have two definitions; and
4.5576 +
4.5577 + o the non-terminal <UNDEFINED> is deliberately not defined.
4.5578 +
4.5579 +10. Internationalisation Considerations
4.5580 +
4.5581 +10.1. Introduction and Historical Situation
4.5582 +
4.5583 + RFC 977 [RFC977] was written at a time when internationalisation was
4.5584 + not seen as a significant issue. As such, it was written on the
4.5585 + assumption that all communication would be in ASCII and use only a
4.5586 + 7-bit transport layer, although in practice just about all known
4.5587 + implementations are 8-bit clean.
4.5588 +
4.5589 + Since then, Usenet and NNTP have spread throughout the world. In the
4.5590 + absence of standards for handling the issues of language and
4.5591 + character sets, countries, newsgroup hierarchies, and individuals
4.5592 + have found a variety of solutions that work for them but that are not
4.5593 + necessarily appropriate elsewhere. For example, some have adopted a
4.5594 + default 8-bit character set appropriate to their needs (such as
4.5595 + ISO/IEC 8859-1 in Western Europe or KOI-8 in Russia), others have
4.5596 + used ASCII (either US-ASCII or national variants) in headers but
4.5597 +
4.5598 +
4.5599 +
4.5600 +Feather Standards Track [Page 100]
4.5601 +
4.5602 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5603 +
4.5604 +
4.5605 + local 16-bit character sets in article bodies, and still others have
4.5606 + gone for a combination of MIME [RFC2045] and UTF-8. With the
4.5607 + increased use of MIME in email, it is becoming more common to find
4.5608 + NNTP articles containing MIME headers that identify the character set
4.5609 + of the body, but this is far from universal.
4.5610 +
4.5611 + The resulting confusion does not help interoperability.
4.5612 +
4.5613 + One point that has been generally accepted is that articles can
4.5614 + contain octets with the top bit set, and NNTP is only expected to
4.5615 + operate on 8-bit clean transport paths.
4.5616 +
4.5617 +10.2. This Specification
4.5618 +
4.5619 + Part of the role of this present specification is to eliminate this
4.5620 + confusion and promote interoperability as far as possible. At the
4.5621 + same time, it is necessary to accept the existence of the present
4.5622 + situation and not break existing implementations and arrangements
4.5623 + gratuitously, even if they are less than optimal. Therefore, the
4.5624 + current practice described above has been taken into consideration in
4.5625 + producing this specification.
4.5626 +
4.5627 + This specification extends NNTP from US-ASCII [ANSI1986] to UTF-8
4.5628 + [RFC3629]. Except in the two areas discussed below, UTF-8 (which is
4.5629 + a superset of US-ASCII) is mandatory, and implementations MUST NOT
4.5630 + use any other encoding.
4.5631 +
4.5632 + Firstly, the use of MIME for article headers and bodies is strongly
4.5633 + recommended. However, given widely divergent existing practices, an
4.5634 + attempt to require a particular encoding and tagging standard would
4.5635 + be premature at this time. Accordingly, this specification allows
4.5636 + the use of arbitrary 8-bit data in articles subject to the following
4.5637 + requirements and recommendations.
4.5638 +
4.5639 + o The names of headers (e.g., "From" or "Subject") MUST be in
4.5640 + US-ASCII.
4.5641 +
4.5642 + o Header values SHOULD use US-ASCII or an encoding based on it, such
4.5643 + as RFC 2047 [RFC2047], until such time as another approach has
4.5644 + been standardised. At present, 8-bit encodings (including UTF-8)
4.5645 + SHOULD NOT be used because they are likely to cause
4.5646 + interoperability problems.
4.5647 +
4.5648 + o The character set of article bodies SHOULD be indicated in the
4.5649 + article headers, and this SHOULD be done in accordance with MIME.
4.5650 +
4.5651 + o Where an article is obtained from an external source, an
4.5652 + implementation MAY pass it on and derive data from it (such as the
4.5653 +
4.5654 +
4.5655 +
4.5656 +Feather Standards Track [Page 101]
4.5657 +
4.5658 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5659 +
4.5660 +
4.5661 + response to the HDR command), even though the article or the data
4.5662 + does not meet the above requirements. Implementations MUST
4.5663 + transfer such articles and data correctly and unchanged; they MUST
4.5664 + NOT attempt to convert or re-encode the article or derived data.
4.5665 + (Nevertheless, a client or server MAY elect not to post or forward
4.5666 + the article if, after further examination of the article, it deems
4.5667 + it inappropriate to do so.)
4.5668 +
4.5669 + This requirement affects the ARTICLE (Section 6.2.1), BODY
4.5670 + (Section 6.2.3), HDR (Section 8.5), HEAD (Section 6.2.2), IHAVE
4.5671 + (Section 6.3.2), OVER (Section 8.3), and POST (Section 6.3.1)
4.5672 + commands.
4.5673 +
4.5674 + Secondly, the following requirements are placed on the newsgroups
4.5675 + list returned by the LIST NEWSGROUPS command (Section 7.6.6):
4.5676 +
4.5677 + o Although this specification allows UTF-8 for newsgroup names, they
4.5678 + SHOULD be restricted to US-ASCII until a successor to RFC 1036
4.5679 + [RFC1036] standardises another approach. 8-bit encodings SHOULD
4.5680 + NOT be used because they are likely to cause interoperability
4.5681 + problems.
4.5682 +
4.5683 + o The newsgroup description SHOULD be in US-ASCII or UTF-8 unless
4.5684 + and until a successor to RFC 1036 standardises other encoding
4.5685 + arrangements. 8-bit encodings other than UTF-8 SHOULD NOT be used
4.5686 + because they are likely to cause interoperability problems.
4.5687 +
4.5688 + o Implementations that obtain this data from an external source MUST
4.5689 + handle it correctly even if it does not meet the above
4.5690 + requirements. Implementations (in particular, clients) MUST
4.5691 + handle such data correctly.
4.5692 +
4.5693 +10.3. Outstanding Issues
4.5694 +
4.5695 + While the primary use of NNTP is for transmitting articles that
4.5696 + conform to RFC 1036 (Netnews articles), it is also used for other
4.5697 + formats (see Appendix A). It is therefore most appropriate that
4.5698 + internationalisation issues related to article formats be addressed
4.5699 + in the relevant specifications. For Netnews articles, this is any
4.5700 + successor to RFC 1036. For email messages, it is RFC 2822 [RFC2822].
4.5701 +
4.5702 + Of course, any article transmitted via NNTP needs to conform to this
4.5703 + specification as well.
4.5704 +
4.5705 + Restricting newsgroup names to UTF-8 is not a complete solution. In
4.5706 + particular, when new newsgroup names are created or a user is asked
4.5707 + to enter a newsgroup name, some scheme of canonicalisation will need
4.5708 + to take place. This specification does not attempt to define that
4.5709 +
4.5710 +
4.5711 +
4.5712 +Feather Standards Track [Page 102]
4.5713 +
4.5714 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5715 +
4.5716 +
4.5717 + canonicalization; further work is needed in this area, in conjunction
4.5718 + with the article format specifications. Until such specifications
4.5719 + are published, implementations SHOULD match newsgroup names octet by
4.5720 + octet. It is anticipated that any approved scheme will be applied
4.5721 + "at the edges", and therefore octet-by-octet comparison will continue
4.5722 + to apply to most, if not all, uses of newsgroup names in NNTP.
4.5723 +
4.5724 + In the meantime, any implementation experimenting with UTF-8
4.5725 + newsgroup names is strongly cautioned that a future specification may
4.5726 + require that those names be canonicalized when used with NNTP in a
4.5727 + way that is not compatible with their experiments.
4.5728 +
4.5729 + Since the primary use of NNTP is with Netnews, and since newsgroup
4.5730 + descriptions are normally distributed through specially formatted
4.5731 + articles, it is recommended that the internationalisation issues
4.5732 + related to them be addressed in any successor to RFC 1036.
4.5733 +
4.5734 +11. IANA Considerations
4.5735 +
4.5736 + This specification requires IANA to keep a registry of capability
4.5737 + labels. The initial contents of this registry are specified in
4.5738 + Section 3.3.4. As described in Section 3.3.3, labels beginning with
4.5739 + X are reserved for private use, while all other names are expected to
4.5740 + be associated with a specification in an RFC on the standards track
4.5741 + or defining an IESG-approved experimental protocol.
4.5742 +
4.5743 + Different entries in the registry MUST use different capability
4.5744 + labels.
4.5745 +
4.5746 + Different entries in the registry MUST NOT use the same command name.
4.5747 + For this purpose, variants distinguished by a second or subsequent
4.5748 + keyword (e.g., "LIST HEADERS" and "LIST OVERVIEW.FMT") count as
4.5749 + different commands. If there is a need for two extensions to use the
4.5750 + same command, a single harmonised specification MUST be registered.
4.5751 +
4.5752 +12. Security Considerations
4.5753 +
4.5754 + This section is meant to inform application developers, information
4.5755 + providers, and users of the security limitations in NNTP as described
4.5756 + by this document. The discussion does not include definitive
4.5757 + solutions to the problems revealed, though it does make some
4.5758 + suggestions for reducing security risks.
4.5759 +
4.5760 +
4.5761 +
4.5762 +
4.5763 +
4.5764 +
4.5765 +
4.5766 +
4.5767 +
4.5768 +Feather Standards Track [Page 103]
4.5769 +
4.5770 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5771 +
4.5772 +
4.5773 +12.1. Personal and Proprietary Information
4.5774 +
4.5775 + NNTP, because it was created to distribute network news articles,
4.5776 + will forward whatever information is stored in those articles.
4.5777 + Specification of that information is outside this scope of this
4.5778 + document, but it is likely that some personal and/or proprietary
4.5779 + information is available in some of those articles. It is very
4.5780 + important that designers and implementers provide informative
4.5781 + warnings to users so that personal and/or proprietary information in
4.5782 + material that is added automatically to articles (e.g., in headers)
4.5783 + is not disclosed inadvertently. Additionally, effective and easily
4.5784 + understood mechanisms to manage the distribution of news articles
4.5785 + SHOULD be provided to NNTP Server administrators, so that they are
4.5786 + able to report with confidence the likely spread of any particular
4.5787 + set of news articles.
4.5788 +
4.5789 +12.2. Abuse of Server Log Information
4.5790 +
4.5791 + A server is in the position to save session data about a user's
4.5792 + requests that might identify their reading patterns or subjects of
4.5793 + interest. This information is clearly confidential in nature, and
4.5794 + its handling can be constrained by law in certain countries. People
4.5795 + using this protocol to provide data are responsible for ensuring that
4.5796 + such material is not distributed without the permission of any
4.5797 + individuals that are identifiable by the published results.
4.5798 +
4.5799 +12.3. Weak Authentication and Access Control
4.5800 +
4.5801 + There is no user-based or token-based authentication in the basic
4.5802 + NNTP specification. Access is normally controlled by server
4.5803 + configuration files. Those files specify access by using domain
4.5804 + names or IP addresses. However, this specification does permit the
4.5805 + creation of extensions to NNTP for such purposes; one such extension
4.5806 + is [NNTP-AUTH]. While including such mechanisms is optional, doing
4.5807 + so is strongly encouraged.
4.5808 +
4.5809 + Other mechanisms are also available. For example, a proxy server
4.5810 + could be put in place that requires authentication before connecting
4.5811 + via the proxy to the NNTP server.
4.5812 +
4.5813 +12.4. DNS Spoofing
4.5814 +
4.5815 + Many existing NNTP implementations authorize incoming connections by
4.5816 + checking the IP address of that connection against the IP addresses
4.5817 + obtained via DNS lookups of lists of domain names given in local
4.5818 + configuration files. Servers that use this type of authentication
4.5819 + and clients that find a server by doing a DNS lookup of the server
4.5820 + name rely very heavily on the Domain Name Service, and are thus
4.5821 +
4.5822 +
4.5823 +
4.5824 +Feather Standards Track [Page 104]
4.5825 +
4.5826 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5827 +
4.5828 +
4.5829 + generally prone to security attacks based on the deliberate
4.5830 + misassociation of IP addresses and DNS names. Clients and servers
4.5831 + need to be cautious in assuming the continuing validity of an IP
4.5832 + number/DNS name association.
4.5833 +
4.5834 + In particular, NNTP clients and servers SHOULD rely on their name
4.5835 + resolver for confirmation of an IP number/DNS name association,
4.5836 + rather than cache the result of previous host name lookups. Many
4.5837 + platforms already can cache host name lookups locally when
4.5838 + appropriate, and they SHOULD be configured to do so. It is proper
4.5839 + for these lookups to be cached, however, only when the TTL (Time To
4.5840 + Live) information reported by the name server makes it likely that
4.5841 + the cached information will remain useful.
4.5842 +
4.5843 + If NNTP clients or servers cache the results of host name lookups in
4.5844 + order to achieve a performance improvement, they MUST observe the TTL
4.5845 + information reported by DNS. If NNTP clients or servers do not
4.5846 + observe this rule, they could be spoofed when a previously accessed
4.5847 + server's IP address changes. As network renumbering is expected to
4.5848 + become increasingly common, the possibility of this form of attack
4.5849 + will increase. Observing this requirement thus reduces this
4.5850 + potential security vulnerability.
4.5851 +
4.5852 + This requirement also improves the load-balancing behaviour of
4.5853 + clients for replicated servers using the same DNS name and reduces
4.5854 + the likelihood of a user's experiencing failure in accessing sites
4.5855 + that use that strategy.
4.5856 +
4.5857 +12.5. UTF-8 Issues
4.5858 +
4.5859 + UTF-8 [RFC3629] permits only certain sequences of octets and
4.5860 + designates others as either malformed or "illegal". The Unicode
4.5861 + standard identifies a number of security issues related to illegal
4.5862 + sequences and forbids their generation by conforming implementations.
4.5863 +
4.5864 + Implementations of this specification MUST NOT generate malformed or
4.5865 + illegal sequences and SHOULD detect them and take some appropriate
4.5866 + action. This could include the following:
4.5867 +
4.5868 + o Generating a 501 response code.
4.5869 +
4.5870 + o Replacing such sequences by the sequence %xEF.BF.BD, which encodes
4.5871 + the "replacement character" U+FFFD.
4.5872 +
4.5873 + o Closing the connection.
4.5874 +
4.5875 + o Replacing such sequences by a "guessed" valid sequence (based on
4.5876 + properties of the UTF-8 encoding).
4.5877 +
4.5878 +
4.5879 +
4.5880 +Feather Standards Track [Page 105]
4.5881 +
4.5882 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5883 +
4.5884 +
4.5885 + In the last case, the implementation MUST ensure that any replacement
4.5886 + cannot be used to bypass validity or security checks. For example,
4.5887 + the illegal sequence %xC0.A0 is an over-long encoding for space
4.5888 + (%x20). If it is replaced by the correct encoding in a command line,
4.5889 + this needs to happen before the command line is parsed into
4.5890 + individual arguments. If the replacement came after parsing, it
4.5891 + would be possible to generate an argument with an embedded space,
4.5892 + which is forbidden. Use of the "replacement character" does not have
4.5893 + this problem, since it is permitted wherever non-US-ASCII characters
4.5894 + are. Implementations SHOULD use one of the first two solutions where
4.5895 + the general structure of the NNTP stream remains intact and SHOULD
4.5896 + close the connection if it is no longer possible to parse it
4.5897 + sensibly.
4.5898 +
4.5899 +12.6. Caching of Capability Lists
4.5900 +
4.5901 + The CAPABILITIES command provides a capability list, which is
4.5902 + information about the current capabilities of the server. Whenever
4.5903 + there is a relevant change to the server state, the results of this
4.5904 + command are required to change accordingly.
4.5905 +
4.5906 + In most situations, the capabilities list in a given server state
4.5907 + will not change from session to session; for example, a given
4.5908 + extension will be installed permanently on a server. Some clients
4.5909 + may therefore wish to remember which extensions a server supports to
4.5910 + avoid the delay of an additional command and response, particularly
4.5911 + if they open multiple connections in the same session.
4.5912 +
4.5913 + However, information about extensions related to security and privacy
4.5914 + MUST NOT be cached, since this could allow a variety of attacks.
4.5915 +
4.5916 + For example, consider a server that permits the use of cleartext
4.5917 + passwords on links that are encrypted but not otherwise:
4.5918 +
4.5919 + [Initial connection set-up completed.]
4.5920 + [S] 200 NNTP Service Ready, posting permitted
4.5921 + [C] CAPABILITIES
4.5922 + [S] 101 Capability list:
4.5923 + [S] VERSION 2
4.5924 + [S] READER
4.5925 + [S] NEWNEWS
4.5926 + [S] POST
4.5927 + [S] XENCRYPT
4.5928 + [S] LIST ACTIVE NEWSGROUPS
4.5929 + [S] .
4.5930 + [C] XENCRYPT
4.5931 + [Client and server negotiate encryption on the link]
4.5932 + [S] 283 Encrypted link established
4.5933 +
4.5934 +
4.5935 +
4.5936 +Feather Standards Track [Page 106]
4.5937 +
4.5938 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5939 +
4.5940 +
4.5941 + [C] CAPABILITIES
4.5942 + [S] 101 Capability list:
4.5943 + [S] VERSION 2
4.5944 + [S] READER
4.5945 + [S] NEWNEWS
4.5946 + [S] POST
4.5947 + [S] XSECRET
4.5948 + [S] LIST ACTIVE NEWSGROUPS
4.5949 + [S] .
4.5950 + [C] XSECRET fred flintstone
4.5951 + [S] 290 Password for fred accepted
4.5952 +
4.5953 + If the client caches the last capabilities list, then on the next
4.5954 + session it will attempt to use XSECRET on an unencrypted link:
4.5955 +
4.5956 + [Initial connection set-up completed.]
4.5957 + [S] 200 NNTP Service Ready, posting permitted
4.5958 + [C] XSECRET fred flintstone
4.5959 + [S] 483 Only permitted on secure links
4.5960 +
4.5961 + This exposes the password to any eavesdropper. While the primary
4.5962 + cause of this is passing a secret without first checking the security
4.5963 + of the link, caching of capability lists can increase the risk.
4.5964 +
4.5965 + Any security extension should include requirements to check the
4.5966 + security state of the link in a manner appropriate to that extension.
4.5967 +
4.5968 + Caching should normally only be considered for anonymous clients that
4.5969 + do not use any security or privacy extensions and for which the time
4.5970 + required for an additional command and response is a noticeable
4.5971 + issue.
4.5972 +
4.5973 +13. Acknowledgements
4.5974 +
4.5975 + This document is the result of much effort by the present and past
4.5976 + members of the NNTP Working Group, chaired by Russ Allbery and Ned
4.5977 + Freed. It could not have been produced without them.
4.5978 +
4.5979 + The author acknowledges the original authors of NNTP as documented in
4.5980 + RFC 977 [RFC977]: Brian Kantor and Phil Lapsey.
4.5981 +
4.5982 + The author gratefully acknowledges the following:
4.5983 +
4.5984 + o The work of the NNTP committee chaired by Eliot Lear. The
4.5985 + organization of this document was influenced by the last available
4.5986 + version from this working group. A special thanks to Eliot for
4.5987 + generously providing the original machine-readable sources for
4.5988 + that document.
4.5989 +
4.5990 +
4.5991 +
4.5992 +Feather Standards Track [Page 107]
4.5993 +
4.5994 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.5995 +
4.5996 +
4.5997 + o The work of the DRUMS working group, specifically RFC 1869
4.5998 + [RFC1869], that drove the original thinking that led to the
4.5999 + CAPABILITIES command and the extensions mechanism detailed in this
4.6000 + document.
4.6001 +
4.6002 + o The authors of RFC 2616 [RFC2616] for providing specific and
4.6003 + relevant examples of security issues that should be considered for
4.6004 + HTTP. Since many of the same considerations exist for NNTP, those
4.6005 + examples that are relevant have been included here with some minor
4.6006 + rewrites.
4.6007 +
4.6008 + o The comments and additional information provided by the following
4.6009 + individuals in preparing one or more of the progenitors of this
4.6010 + document:
4.6011 +
4.6012 + Russ Allbery <rra@stanford.edu>
4.6013 + Wayne Davison <davison@armory.com>
4.6014 + Chris Lewis <clewis@bnr.ca>
4.6015 + Tom Limoncelli <tal@mars.superlink.net>
4.6016 + Eric Schnoebelen <eric@egsner.cirr.com>
4.6017 + Rich Salz <rsalz@osf.org>
4.6018 +
4.6019 + This work was motivated by the work of various news reader authors
4.6020 + and news server authors, including those listed below:
4.6021 +
4.6022 + Rick Adams
4.6023 + Original author of the NNTP extensions to the RN news reader and
4.6024 + last maintainer of Bnews.
4.6025 +
4.6026 + Stan Barber
4.6027 + Original author of the NNTP extensions to the news readers that
4.6028 + are part of Bnews.
4.6029 +
4.6030 + Geoff Collyer
4.6031 + Original author of the OVERVIEW database proposal and one of the
4.6032 + original authors of CNEWS.
4.6033 +
4.6034 + Dan Curry
4.6035 + Original author of the xvnews news reader.
4.6036 +
4.6037 + Wayne Davison
4.6038 + Author of the first threading extensions to the RN news reader
4.6039 + (commonly called TRN).
4.6040 +
4.6041 + Geoff Huston
4.6042 + Original author of ANU NEWS.
4.6043 +
4.6044 +
4.6045 +
4.6046 +
4.6047 +
4.6048 +Feather Standards Track [Page 108]
4.6049 +
4.6050 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6051 +
4.6052 +
4.6053 + Phil Lapsey
4.6054 + Original author of the UNIX reference implementation for NNTP.
4.6055 +
4.6056 + Iain Lea
4.6057 + Original maintainer of the TIN news reader.
4.6058 +
4.6059 + Chris Lewis
4.6060 + First known implementer of the AUTHINFO GENERIC extension.
4.6061 +
4.6062 + Rich Salz
4.6063 + Original author of INN.
4.6064 +
4.6065 + Henry Spencer
4.6066 + One of the original authors of CNEWS.
4.6067 +
4.6068 + Kim Storm
4.6069 + Original author of the NN news reader.
4.6070 +
4.6071 + Other people who contributed to this document include:
4.6072 +
4.6073 + Matthias Andree
4.6074 + Greg Andruk
4.6075 + Daniel Barclay
4.6076 + Maurizio Codogno
4.6077 + Mark Crispin
4.6078 + Andrew Gierth
4.6079 + Juergen Helbing
4.6080 + Scott Hollenbeck
4.6081 + Urs Janssen
4.6082 + Charles Lindsey
4.6083 + Ade Lovett
4.6084 + David Magda
4.6085 + Ken Murchison
4.6086 + Francois Petillon
4.6087 + Peter Robinson
4.6088 + Rob Siemborski
4.6089 + Howard Swinehart
4.6090 + Ruud van Tol
4.6091 + Jeffrey Vinocur
4.6092 + Erik Warmelink
4.6093 +
4.6094 + The author thanks them all and apologises to anyone omitted.
4.6095 +
4.6096 + Finally, the present author gratefully acknowledges the vast amount
4.6097 + of work put into previous versions by the previous author:
4.6098 +
4.6099 + Stan Barber <sob@academ.com>
4.6100 +
4.6101 +
4.6102 +
4.6103 +
4.6104 +Feather Standards Track [Page 109]
4.6105 +
4.6106 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6107 +
4.6108 +
4.6109 +14. References
4.6110 +
4.6111 +14.1. Normative References
4.6112 +
4.6113 + [ANSI1986] American National Standards Institute, "Coded Character
4.6114 + Set - 7-bit American Standard Code for Information
4.6115 + Interchange", ANSI X3.4, 1986.
4.6116 +
4.6117 + [RFC977] Kantor, B. and P. Lapsley, "Network News Transfer
4.6118 + Protocol", RFC 977, February 1986.
4.6119 +
4.6120 + [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet
4.6121 + Mail Extensions (MIME) Part One: Format of Internet
4.6122 + Message Bodies", RFC 2045, November 1996.
4.6123 +
4.6124 + [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail
4.6125 + Extensions) Part Three: Message Header Extensions for
4.6126 + Non-ASCII Text", RFC 2047, November 1996.
4.6127 +
4.6128 + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
4.6129 + Requirement Levels", BCP 14, RFC 2119, March 1997.
4.6130 +
4.6131 + [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
4.6132 + 10646", STD 63, RFC 3629, November 2003.
4.6133 +
4.6134 + [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for
4.6135 + Syntax Specifications: ABNF", RFC 4234, October 2005.
4.6136 +
4.6137 + [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
4.6138 + Encodings", RFC 4648, October 2006.
4.6139 +
4.6140 + [TF.686-1] International Telecommunications Union - Radio,
4.6141 + "Glossary, ITU-R Recommendation TF.686-1",
4.6142 + ITU-R Recommendation TF.686-1, October 1997.
4.6143 +
4.6144 +14.2. Informative References
4.6145 +
4.6146 + [NNTP-AUTH] Vinocur, J., Murchison, K., and C. Newman, "Network
4.6147 + News Transfer Protocol (NNTP) Extension for
4.6148 + Authentication",
4.6149 + RFC 4643, October 2006.
4.6150 +
4.6151 + [NNTP-STREAM] Vinocur, J. and K. Murchison, "Network News Transfer
4.6152 + Protocol (NNTP) Extension for Streaming Feeds",
4.6153 + RFC 4644, October 2006.
4.6154 +
4.6155 +
4.6156 +
4.6157 +
4.6158 +
4.6159 +
4.6160 +Feather Standards Track [Page 110]
4.6161 +
4.6162 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6163 +
4.6164 +
4.6165 + [NNTP-TLS] Murchison, K., Vinocur, J., and C. Newman, "Using
4.6166 + Transport Layer Security (TLS) with Network News
4.6167 + Transfer Protocol (NNTP)", RFC 4642, October 2006.
4.6168 +
4.6169 + [RFC1036] Horton, M. and R. Adams, "Standard for interchange of
4.6170 + USENET messages", RFC 1036, December 1987.
4.6171 +
4.6172 + [RFC1305] Mills, D., "Network Time Protocol (Version 3)
4.6173 + Specification, Implementation and Analysis", RFC 1305,
4.6174 + March 1992.
4.6175 +
4.6176 + [RFC1869] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
4.6177 + Crocker, "SMTP Service Extensions", STD 10, RFC 1869,
4.6178 + November 1995.
4.6179 +
4.6180 + [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
4.6181 + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
4.6182 + Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
4.6183 +
4.6184 + [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
4.6185 + June 1999.
4.6186 +
4.6187 + [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April
4.6188 + 2001.
4.6189 +
4.6190 + [RFC2980] Barber, S., "Common NNTP Extensions", RFC 2980, October
4.6191 + 2000.
4.6192 +
4.6193 + [ROBE1995] Robertson, R., "FAQ: Overview database / NOV General
4.6194 + Information", January 1995.
4.6195 +
4.6196 + There is no definitive copy of this document known to
4.6197 + the author. It was previously posted as the Usenet
4.6198 + article <news:nov-faq-1-930909720@agate.Berkeley.EDU>
4.6199 +
4.6200 + [SALZ1992] Salz, R., "Manual Page for wildmat(3) from the INN 1.4
4.6201 + distribution, Revision 1.10", April 1992.
4.6202 +
4.6203 + There is no definitive copy of this document known to
4.6204 + the author.
4.6205 +
4.6206 +
4.6207 +
4.6208 +
4.6209 +
4.6210 +
4.6211 +
4.6212 +
4.6213 +
4.6214 +
4.6215 +
4.6216 +Feather Standards Track [Page 111]
4.6217 +
4.6218 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6219 +
4.6220 +
4.6221 +Appendix A. Interaction with Other Specifications
4.6222 +
4.6223 + NNTP is most often used for transferring articles that conform to
4.6224 + RFC 1036 [RFC1036] (such articles are called "Netnews articles"
4.6225 + here). It is also sometimes used for transferring email messages
4.6226 + that conform to RFC 2822 [RFC2822] (such articles are called "email
4.6227 + articles" here). In this situation, articles must conform both to
4.6228 + this specification and to that other one; this appendix describes
4.6229 + some relevant issues.
4.6230 +
4.6231 +A.1. Header Folding
4.6232 +
4.6233 + NNTP allows a header line to be folded (by inserting a CRLF pair)
4.6234 + before any space or TAB character.
4.6235 +
4.6236 + Both email and Netnews articles are required to have at least one
4.6237 + octet other than space or TAB on each header line. Thus, folding can
4.6238 + only happen at one point in each sequence of consecutive spaces or
4.6239 + TABs. Netnews articles are further required to have the header name,
4.6240 + colon, and following space all on the first line; folding may only
4.6241 + happen beyond that space. Finally, some non-conforming software will
4.6242 + remove trailing spaces and TABs from a line. Therefore, it might be
4.6243 + inadvisable to fold a header after a space or TAB.
4.6244 +
4.6245 + For maximum safety, header lines SHOULD conform to the following
4.6246 + syntax rather than to that in Section 9.7.
4.6247 +
4.6248 +
4.6249 + header = header-name ":" SP [header-content] CRLF
4.6250 + header-content = [WS] token *( [CRLF] WS token )
4.6251 +
4.6252 +A.2. Message-IDs
4.6253 +
4.6254 + Every article handled by an NNTP server MUST have a unique
4.6255 + message-id. For the purposes of this specification, a message-id is
4.6256 + an arbitrary opaque string that merely needs to meet certain
4.6257 + syntactic requirements and is just a way to refer to the article.
4.6258 +
4.6259 + Because there is a significant risk that old articles will be
4.6260 + reinjected into the global Usenet system, RFC 1036 [RFC1036] requires
4.6261 + that message-ids are globally unique for all time.
4.6262 +
4.6263 + This specification states that message-ids are the same if and only
4.6264 + if they consist of the same sequence of octets. Other specifications
4.6265 + may define two different sequences as being equal because they are
4.6266 + putting an interpretation on particular characters. RFC 2822
4.6267 + [RFC2822] has a concept of "quoted" and "escaped" characters. It
4.6268 + therefore considers the three message-ids:
4.6269 +
4.6270 +
4.6271 +
4.6272 +Feather Standards Track [Page 112]
4.6273 +
4.6274 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6275 +
4.6276 +
4.6277 + <ab.cd@example.com>
4.6278 + <"ab.cd"@example.com>
4.6279 + <"ab.\cd"@example.com>
4.6280 +
4.6281 + as being identical. Therefore, an NNTP implementation handing email
4.6282 + articles must ensure that only one of these three appears in the
4.6283 + protocol and that the other two are converted to it as and when
4.6284 + necessary, such as when a client checks the results of a NEWNEWS
4.6285 + command against an internal database of message-ids. Note that
4.6286 + RFC 1036 [RFC1036] never treats two different strings as being
4.6287 + identical. Its successor (as of the time of writing) restricts the
4.6288 + syntax of message-ids so that, whenever RFC 2822 would treat two
4.6289 + strings as equivalent, only one of them is valid (in the above
4.6290 + example, only the first string is valid).
4.6291 +
4.6292 + This specification does not describe how the message-id of an article
4.6293 + is determined; it may be deduced from the contents of the article or
4.6294 + derived from some external source. If the server is also conforming
4.6295 + to another specification that contains a definition of message-id
4.6296 + compatible with this one, the server SHOULD use those message-ids. A
4.6297 + common approach, and one that SHOULD be used for email and Netnews
4.6298 + articles, is to extract the message-id from the contents of a header
4.6299 + with name "Message-ID". This may not be as simple as copying the
4.6300 + entire header contents; it may be necessary to strip off comments and
4.6301 + undo quoting, or to reduce "equivalent" message-ids to a canonical
4.6302 + form.
4.6303 +
4.6304 + If an article is obtained through the IHAVE command, there will be a
4.6305 + message-id provided with the command. The server MAY either use it
4.6306 + or determine one from the article contents. However, whichever it
4.6307 + does, it SHOULD ensure that, if the IHAVE command is repeated with
4.6308 + the same argument and article, it will be recognized as a duplicate.
4.6309 +
4.6310 + If an article does not contain a message-id that the server can
4.6311 + identify, it MUST synthesize one. This could, for example, be a
4.6312 + simple sequence number or be based on the date and time when the
4.6313 + article arrived. When email or Netnews articles are handled, a
4.6314 + Message-ID header SHOULD be added to ensure global consistency and
4.6315 + uniqueness.
4.6316 +
4.6317 + Note that, because the message-id might not have been derived from
4.6318 + the Message-ID header in the article, the following example is
4.6319 + legitimate (though unusual):
4.6320 +
4.6321 +
4.6322 +
4.6323 +
4.6324 +
4.6325 +
4.6326 +
4.6327 +
4.6328 +Feather Standards Track [Page 113]
4.6329 +
4.6330 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6331 +
4.6332 +
4.6333 + [C] HEAD <45223423@example.com>
4.6334 + [S] 221 0 <45223423@example.com>
4.6335 + [S] Path: pathost!demo!whitehouse!not-for-mail
4.6336 + [S] Message-ID: <1234@example.net>
4.6337 + [S] From: "Demo User" <nobody@example.net>
4.6338 + [S] Newsgroups: misc.test
4.6339 + [S] Subject: I am just a test article
4.6340 + [S] Date: 6 Oct 1998 04:38:40 -0500
4.6341 + [S] Organization: An Example Net, Uncertain, Texas
4.6342 + [S] .
4.6343 +
4.6344 +A.3. Article Posting
4.6345 +
4.6346 + As far as NNTP is concerned, the POST and IHAVE commands provide the
4.6347 + same basic facilities in a slightly different way. However, they
4.6348 + have rather different intentions.
4.6349 +
4.6350 + The IHAVE command is intended for transmitting conforming articles
4.6351 + between a system of NNTP servers, with all articles perhaps also
4.6352 + conforming to another specification (e.g., all articles are Netnews
4.6353 + articles). It is expected that the client will already have done any
4.6354 + necessary validation (or that it has in turn obtained the article
4.6355 + from a third party that has done so); therefore, the contents SHOULD
4.6356 + be left unchanged.
4.6357 +
4.6358 + In contrast, the POST command is intended for use when an end-user is
4.6359 + injecting a newly created article into a such a system. The article
4.6360 + being transferred might not be a conforming email or Netnews article,
4.6361 + and the server is expected to validate it and, if necessary, to
4.6362 + convert it to the right form for onward distribution. This is often
4.6363 + done by a separate piece of software on the server installation; if
4.6364 + so, the NNTP server SHOULD pass the incoming article to that software
4.6365 + unaltered, making no attempt to filter characters, to fold or limit
4.6366 + lines, or to process the incoming text otherwise.
4.6367 +
4.6368 + The POST command can fail in various ways, and clients should be
4.6369 + prepared to re-send an article. When doing so, however, it is often
4.6370 + important to ensure (as far as possible) that the same message-id is
4.6371 + allocated to both attempts so that the server, or other servers, can
4.6372 + recognize the two articles as duplicates. In the case of email or
4.6373 + Netnews articles, therefore, the posted article SHOULD contain a
4.6374 + header with the name "Message-ID", and the contents of this header
4.6375 + SHOULD be identical on each attempt. The server SHOULD ensure that
4.6376 + two POSTed articles with the same contents for this header are
4.6377 + recognized as identical and that the same message-id is allocated,
4.6378 + whether or not those contents are suitable for use as the message-id.
4.6379 +
4.6380 +
4.6381 +
4.6382 +
4.6383 +
4.6384 +Feather Standards Track [Page 114]
4.6385 +
4.6386 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6387 +
4.6388 +
4.6389 +Appendix B. Summary of Commands
4.6390 +
4.6391 + This section contains a list of every command defined in this
4.6392 + document, ordered by command name and by indicating capability.
4.6393 +
4.6394 + Ordered by command name:
4.6395 +
4.6396 + +-------------------+-----------------------+---------------+
4.6397 + | Command | Indicating capability | Definition |
4.6398 + +-------------------+-----------------------+---------------+
4.6399 + | ARTICLE | READER | Section 6.2.1 |
4.6400 + | BODY | READER | Section 6.2.3 |
4.6401 + | CAPABILITIES | mandatory | Section 5.2 |
4.6402 + | DATE | READER | Section 7.1 |
4.6403 + | GROUP | READER | Section 6.1.1 |
4.6404 + | HDR | HDR | Section 8.5 |
4.6405 + | HEAD | mandatory | Section 6.2.2 |
4.6406 + | HELP | mandatory | Section 7.2 |
4.6407 + | IHAVE | IHAVE | Section 6.3.2 |
4.6408 + | LAST | READER | Section 6.1.3 |
4.6409 + | LIST | LIST | Section 7.6.1 |
4.6410 + | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
4.6411 + | LIST ACTIVE | LIST | Section 7.6.3 |
4.6412 + | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
4.6413 + | LIST HEADERS | HDR | Section 8.6 |
4.6414 + | LIST NEWSGROUPS | LIST | Section 7.6.6 |
4.6415 + | LIST OVERVIEW.FMT | OVER | Section 8.4 |
4.6416 + | LISTGROUP | READER | Section 6.1.2 |
4.6417 + | MODE READER | MODE-READER | Section 5.3 |
4.6418 + | NEWGROUPS | READER | Section 7.3 |
4.6419 + | NEWNEWS | NEWNEWS | Section 7.4 |
4.6420 + | NEXT | READER | Section 6.1.4 |
4.6421 + | OVER | OVER | Section 8.3 |
4.6422 + | POST | POST | Section 6.3.1 |
4.6423 + | QUIT | mandatory | Section 5.4 |
4.6424 + | STAT | mandatory | Section 6.2.4 |
4.6425 + +-------------------+-----------------------+---------------+
4.6426 +
4.6427 +
4.6428 +
4.6429 +
4.6430 +
4.6431 +
4.6432 +
4.6433 +
4.6434 +
4.6435 +
4.6436 +
4.6437 +
4.6438 +
4.6439 +
4.6440 +Feather Standards Track [Page 115]
4.6441 +
4.6442 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6443 +
4.6444 +
4.6445 + Ordered by indicating capability:
4.6446 +
4.6447 + +-------------------+-----------------------+---------------+
4.6448 + | Command | Indicating capability | Definition |
4.6449 + +-------------------+-----------------------+---------------+
4.6450 + | CAPABILITIES | mandatory | Section 5.2 |
4.6451 + | HEAD | mandatory | Section 6.2.2 |
4.6452 + | HELP | mandatory | Section 7.2 |
4.6453 + | QUIT | mandatory | Section 5.4 |
4.6454 + | STAT | mandatory | Section 6.2.4 |
4.6455 + | HDR | HDR | Section 8.5 |
4.6456 + | LIST HEADERS | HDR | Section 8.6 |
4.6457 + | IHAVE | IHAVE | Section 6.3.2 |
4.6458 + | LIST | LIST | Section 7.6.1 |
4.6459 + | LIST ACTIVE | LIST | Section 7.6.3 |
4.6460 + | LIST ACTIVE.TIMES | LIST | Section 7.6.4 |
4.6461 + | LIST DISTRIB.PATS | LIST | Section 7.6.5 |
4.6462 + | LIST NEWSGROUPS | LIST | Section 7.6.6 |
4.6463 + | MODE READER | MODE-READER | Section 5.3 |
4.6464 + | NEWNEWS | NEWNEWS | Section 7.4 |
4.6465 + | OVER | OVER | Section 8.3 |
4.6466 + | LIST OVERVIEW.FMT | OVER | Section 8.4 |
4.6467 + | POST | POST | Section 6.3.1 |
4.6468 + | ARTICLE | READER | Section 6.2.1 |
4.6469 + | BODY | READER | Section 6.2.3 |
4.6470 + | DATE | READER | Section 7.1 |
4.6471 + | GROUP | READER | Section 6.1.1 |
4.6472 + | LAST | READER | Section 6.1.3 |
4.6473 + | LISTGROUP | READER | Section 6.1.2 |
4.6474 + | NEWGROUPS | READER | Section 7.3 |
4.6475 + | NEXT | READER | Section 6.1.4 |
4.6476 + +-------------------+-----------------------+---------------+
4.6477 +
4.6478 +
4.6479 +
4.6480 +
4.6481 +
4.6482 +
4.6483 +
4.6484 +
4.6485 +
4.6486 +
4.6487 +
4.6488 +
4.6489 +
4.6490 +
4.6491 +
4.6492 +
4.6493 +
4.6494 +
4.6495 +
4.6496 +Feather Standards Track [Page 116]
4.6497 +
4.6498 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6499 +
4.6500 +
4.6501 +Appendix C. Summary of Response Codes
4.6502 +
4.6503 + This section contains a list of every response code defined in this
4.6504 + document and indicates whether it is multi-line, which commands can
4.6505 + generate it, what arguments it has, and what its meaning is.
4.6506 +
4.6507 + Response code 100 (multi-line)
4.6508 + Generated by: HELP
4.6509 + Meaning: help text follows.
4.6510 +
4.6511 + Response code 101 (multi-line)
4.6512 + Generated by: CAPABILITIES
4.6513 + Meaning: capabilities list follows.
4.6514 +
4.6515 + Response code 111
4.6516 + Generated by: DATE
4.6517 + 1 argument: yyyymmddhhmmss
4.6518 + Meaning: server date and time.
4.6519 +
4.6520 + Response code 200
4.6521 + Generated by: initial connection, MODE READER
4.6522 + Meaning: service available, posting allowed.
4.6523 +
4.6524 + Response code 201
4.6525 + Generated by: initial connection, MODE READER
4.6526 + Meaning: service available, posting prohibited.
4.6527 +
4.6528 + Response code 205
4.6529 + Generated by: QUIT
4.6530 + Meaning: connection closing (the server immediately closes the
4.6531 + connection).
4.6532 +
4.6533 + Response code 211
4.6534 + The 211 response code has two completely different forms,
4.6535 + depending on which command generated it:
4.6536 +
4.6537 + (not multi-line)
4.6538 + Generated by: GROUP
4.6539 + 4 arguments: number low high group
4.6540 + Meaning: group selected.
4.6541 +
4.6542 + (multi-line)
4.6543 + Generated by: LISTGROUP
4.6544 + 4 arguments: number low high group
4.6545 + Meaning: article numbers follow.
4.6546 +
4.6547 +
4.6548 +
4.6549 +
4.6550 +
4.6551 +
4.6552 +Feather Standards Track [Page 117]
4.6553 +
4.6554 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6555 +
4.6556 +
4.6557 + Response code 215 (multi-line)
4.6558 + Generated by: LIST
4.6559 + Meaning: information follows.
4.6560 +
4.6561 + Response code 220 (multi-line)
4.6562 + Generated by: ARTICLE
4.6563 + 2 arguments: n message-id
4.6564 + Meaning: article follows.
4.6565 +
4.6566 + Response code 221 (multi-line)
4.6567 + Generated by: HEAD
4.6568 + 2 arguments: n message-id
4.6569 + Meaning: article headers follow.
4.6570 +
4.6571 + Response code 222 (multi-line)
4.6572 + Generated by: BODY
4.6573 + 2 arguments: n message-id
4.6574 + Meaning: article body follows.
4.6575 +
4.6576 + Response code 223
4.6577 + Generated by: LAST, NEXT, STAT
4.6578 + 2 arguments: n message-id
4.6579 + Meaning: article exists and selected.
4.6580 +
4.6581 + Response code 224 (multi-line)
4.6582 + Generated by: OVER
4.6583 + Meaning: overview information follows.
4.6584 +
4.6585 + Response code 225 (multi-line)
4.6586 + Generated by: HDR
4.6587 + Meaning: headers follow.
4.6588 +
4.6589 + Response code 230 (multi-line)
4.6590 + Generated by: NEWNEWS
4.6591 + Meaning: list of new articles follows.
4.6592 +
4.6593 + Response code 231 (multi-line)
4.6594 + Generated by: NEWGROUPS
4.6595 + Meaning: list of new newsgroups follows.
4.6596 +
4.6597 + Response code 235
4.6598 + Generated by: IHAVE (second stage)
4.6599 + Meaning: article transferred OK.
4.6600 +
4.6601 + Response code 240
4.6602 + Generated by: POST (second stage)
4.6603 + Meaning: article received OK.
4.6604 +
4.6605 +
4.6606 +
4.6607 +
4.6608 +Feather Standards Track [Page 118]
4.6609 +
4.6610 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6611 +
4.6612 +
4.6613 + Response code 335
4.6614 + Generated by: IHAVE (first stage)
4.6615 + Meaning: send article to be transferred.
4.6616 +
4.6617 + Response code 340
4.6618 + Generated by: POST (first stage)
4.6619 + Meaning: send article to be posted.
4.6620 +
4.6621 + Response code 400
4.6622 + Generic response and generated by initial connection
4.6623 + Meaning: service not available or no longer available (the server
4.6624 + immediately closes the connection).
4.6625 +
4.6626 + Response code 401
4.6627 + Generic response
4.6628 + 1 argument: capability-label
4.6629 + Meaning: the server is in the wrong mode; the indicated capability
4.6630 + should be used to change the mode.
4.6631 +
4.6632 + Response code 403
4.6633 + Generic response
4.6634 + Meaning: internal fault or problem preventing action being taken.
4.6635 +
4.6636 + Response code 411
4.6637 + Generated by: GROUP, LISTGROUP
4.6638 + Meaning: no such newsgroup.
4.6639 +
4.6640 + Response code 412
4.6641 + Generated by: ARTICLE, BODY, GROUP, HDR, HEAD, LAST, LISTGROUP,
4.6642 + NEXT, OVER, STAT
4.6643 + Meaning: no newsgroup selected.
4.6644 +
4.6645 + Response code 420
4.6646 + Generated by: ARTICLE, BODY, HDR, HEAD, LAST, NEXT, OVER, STAT
4.6647 + Meaning: current article number is invalid.
4.6648 +
4.6649 + Response code 421
4.6650 + Generated by: NEXT
4.6651 + Meaning: no next article in this group.
4.6652 +
4.6653 + Response code 422
4.6654 + Generated by: LAST
4.6655 + Meaning: no previous article in this group.
4.6656 +
4.6657 + Response code 423
4.6658 + Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
4.6659 + Meaning: no article with that number or in that range.
4.6660 +
4.6661 +
4.6662 +
4.6663 +
4.6664 +Feather Standards Track [Page 119]
4.6665 +
4.6666 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6667 +
4.6668 +
4.6669 + Response code 430
4.6670 + Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT
4.6671 + Meaning: no article with that message-id.
4.6672 +
4.6673 + Response code 435
4.6674 + Generated by: IHAVE (first stage)
4.6675 + Meaning: article not wanted.
4.6676 +
4.6677 + Response code 436
4.6678 + Generated by: IHAVE (either stage)
4.6679 + Meaning: transfer not possible (first stage) or failed (second
4.6680 + stage); try again later.
4.6681 +
4.6682 + Response code 437
4.6683 + Generated by: IHAVE (second stage)
4.6684 + Meaning: transfer rejected; do not retry.
4.6685 +
4.6686 + Response code 440
4.6687 + Generated by: POST (first stage)
4.6688 + Meaning: posting not permitted.
4.6689 +
4.6690 + Response code 441
4.6691 + Generated by: POST (second stage)
4.6692 + Meaning: posting failed.
4.6693 +
4.6694 + Response code 480
4.6695 + Generic response
4.6696 + Meaning: command unavailable until the client has authenticated
4.6697 + itself.
4.6698 +
4.6699 + Response code 483
4.6700 + Generic response
4.6701 + Meaning: command unavailable until suitable privacy has been
4.6702 + arranged.
4.6703 +
4.6704 + Response code 500
4.6705 + Generic response
4.6706 + Meaning: unknown command.
4.6707 +
4.6708 + Response code 501
4.6709 + Generic response
4.6710 + Meaning: syntax error in command.
4.6711 +
4.6712 +
4.6713 +
4.6714 +
4.6715 +
4.6716 +
4.6717 +
4.6718 +
4.6719 +
4.6720 +Feather Standards Track [Page 120]
4.6721 +
4.6722 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6723 +
4.6724 +
4.6725 + Response code 502
4.6726 + Generic response and generated by initial connection
4.6727 +
4.6728 + Meaning for the initial connection and the MODE READER command:
4.6729 + service permanently unavailable (the server immediately closes the
4.6730 + connection).
4.6731 +
4.6732 + Meaning for all other commands: command not permitted (and there
4.6733 + is no way for the client to change this).
4.6734 +
4.6735 + Response code 503
4.6736 + Generic response
4.6737 + Meaning: feature not supported.
4.6738 +
4.6739 + Response code 504
4.6740 + Generic response
4.6741 + Meaning: error in base64-encoding [RFC4648] of an argument.
4.6742 +
4.6743 +Appendix D. Changes from RFC 977
4.6744 +
4.6745 + In general every attempt has been made to ensure that the protocol
4.6746 + specification in this document is compatible with the version
4.6747 + specified in RFC 977 [RFC977] and the various facilities adopted from
4.6748 + RFC 2980 [RFC2980]. However, there have been a number of changes,
4.6749 + some compatible and some not.
4.6750 +
4.6751 + This appendix lists these changes. It is not guaranteed to be
4.6752 + exhaustive or correct and MUST NOT be relied on.
4.6753 +
4.6754 + o A formal syntax specification (Section 9) has been added.
4.6755 +
4.6756 + o The default character set is changed from US-ASCII [ANSI1986] to
4.6757 + UTF-8 [RFC3629] (note that US-ASCII is a subset of UTF-8). This
4.6758 + matter is discussed further in Section 10.
4.6759 +
4.6760 + o All articles are required to have a message-id, eliminating the
4.6761 + "<0>" placeholder used in RFC 977 in some responses.
4.6762 +
4.6763 + o The newsgroup name matching capabilities already documented in
4.6764 + RFC 977 ("wildmats", Section 4) are clarified and extended. The
4.6765 + new facilities (e.g., the use of commas and exclamation marks) are
4.6766 + allowed wherever wildmats appear in the protocol.
4.6767 +
4.6768 + o Support for pipelining of commands (Section 3.5) is made
4.6769 + mandatory.
4.6770 +
4.6771 +
4.6772 +
4.6773 +
4.6774 +
4.6775 +
4.6776 +Feather Standards Track [Page 121]
4.6777 +
4.6778 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6779 +
4.6780 +
4.6781 + o The principles behind response codes (Section 3.2) have been
4.6782 + tidied up. In particular:
4.6783 +
4.6784 + * the x8x response code family, formerly used for private
4.6785 + extensions, is now reserved for authentication and privacy
4.6786 + extensions;
4.6787 +
4.6788 + * the x9x response code family, formerly intended for debugging
4.6789 + facilities, are now reserved for private extensions;
4.6790 +
4.6791 + * the 502 and 503 generic response codes (Section 3.2.1) have
4.6792 + been redefined;
4.6793 +
4.6794 + * new 401, 403, 480, 483, and 504 generic response codes have
4.6795 + been added.
4.6796 +
4.6797 + o The rules for article numbering (Section 6) have been clarified
4.6798 + (also see Section 6.1.1.2).
4.6799 +
4.6800 + o The SLAVE command (which was ill-defined) is removed from the
4.6801 + protocol.
4.6802 +
4.6803 + o Four-digit years are permitted in the NEWNEWS (Section 7.4) and
4.6804 + NEWGROUPS (Section 7.3) commands (two-digit years are still
4.6805 + permitted). The optional distribution parameter to these commands
4.6806 + has been removed.
4.6807 +
4.6808 + o The LIST command (Section 7.6.1) is greatly extended; the original
4.6809 + is available as LIST ACTIVE, while new variants include
4.6810 + ACTIVE.TIMES, DISTRIB.PATS, and NEWSGROUPS. A new "m" status flag
4.6811 + is added to the LIST ACTIVE response.
4.6812 +
4.6813 + o A new CAPABILITIES command (Section 5.2) allows clients to
4.6814 + determine what facilities are supported by a server.
4.6815 +
4.6816 + o The DATE command (Section 7.1) is adopted from RFC 2980
4.6817 + effectively unchanged.
4.6818 +
4.6819 + o The LISTGROUP command (Section 6.1.2) is adopted from RFC 2980.
4.6820 + An optional range argument has been added, and the 211 initial
4.6821 + response line now has the same format as the 211 response from the
4.6822 + GROUP command.
4.6823 +
4.6824 + o The MODE READER command (Section 5.3) is adopted from RFC 2980 and
4.6825 + its meaning and effects clarified.
4.6826 +
4.6827 + o The XHDR command in RFC 2980 has been formalised as the new HDR
4.6828 + (Section 8.5) and LIST HEADERS (Section 8.6) commands.
4.6829 +
4.6830 +
4.6831 +
4.6832 +Feather Standards Track [Page 122]
4.6833 +
4.6834 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6835 +
4.6836 +
4.6837 + o The XOVER command in RFC 2980 has been formalised as the new OVER
4.6838 + (Section 8.3) and LIST OVERVIEW.FMT (Section 8.4) commands. The
4.6839 + former can be applied to a message-id as well as to a range.
4.6840 +
4.6841 + o The concept of article metadata (Section 8.1) has been formalised,
4.6842 + allowing the Bytes and Lines pseudo-headers to be deprecated.
4.6843 +
4.6844 + Client authors should note in particular that lack of support for the
4.6845 + CAPABILITIES command is a good indication that the server does not
4.6846 + support this specification.
4.6847 +
4.6848 +
4.6849 +
4.6850 +
4.6851 +
4.6852 +
4.6853 +
4.6854 +
4.6855 +
4.6856 +
4.6857 +
4.6858 +
4.6859 +
4.6860 +
4.6861 +
4.6862 +
4.6863 +
4.6864 +
4.6865 +
4.6866 +
4.6867 +
4.6868 +
4.6869 +
4.6870 +
4.6871 +
4.6872 +
4.6873 +
4.6874 +
4.6875 +
4.6876 +
4.6877 +
4.6878 +
4.6879 +
4.6880 +
4.6881 +
4.6882 +
4.6883 +
4.6884 +
4.6885 +
4.6886 +
4.6887 +
4.6888 +Feather Standards Track [Page 123]
4.6889 +
4.6890 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6891 +
4.6892 +
4.6893 +Author's Address
4.6894 +
4.6895 + Clive D.W. Feather
4.6896 + THUS plc
4.6897 + 322 Regents Park Road
4.6898 + London
4.6899 + N3 2QQ
4.6900 + United Kingdom
4.6901 +
4.6902 + Phone: +44 20 8495 6138
4.6903 + Fax: +44 870 051 9937
4.6904 + EMail: clive@demon.net
4.6905 + URI: http://www.davros.org/
4.6906 +
4.6907 +
4.6908 +
4.6909 +
4.6910 +
4.6911 +
4.6912 +
4.6913 +
4.6914 +
4.6915 +
4.6916 +
4.6917 +
4.6918 +
4.6919 +
4.6920 +
4.6921 +
4.6922 +
4.6923 +
4.6924 +
4.6925 +
4.6926 +
4.6927 +
4.6928 +
4.6929 +
4.6930 +
4.6931 +
4.6932 +
4.6933 +
4.6934 +
4.6935 +
4.6936 +
4.6937 +
4.6938 +
4.6939 +
4.6940 +
4.6941 +
4.6942 +
4.6943 +
4.6944 +Feather Standards Track [Page 124]
4.6945 +
4.6946 +RFC 3977 Network News Transfer Protocol (NNTP) October 2006
4.6947 +
4.6948 +
4.6949 +Full Copyright Statement
4.6950 +
4.6951 +Copyright (C) The Internet Society (2006).
4.6952 +
4.6953 + This document is subject to the rights, licenses and restrictions
4.6954 + contained in BCP 78, and except as set forth therein, the authors
4.6955 + retain all their rights.
4.6956 +
4.6957 + This document and the information contained herein are provided on an
4.6958 + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
4.6959 + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
4.6960 + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
4.6961 + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
4.6962 + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
4.6963 + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
4.6964 +
4.6965 +Intellectual Property
4.6966 +
4.6967 + The IETF takes no position regarding the validity or scope of any
4.6968 + Intellectual Property Rights or other rights that might be claimed to
4.6969 + pertain to the implementation or use of the technology described in
4.6970 + this document or the extent to which any license under such rights
4.6971 + might or might not be available; nor does it represent that it has
4.6972 + made any independent effort to identify any such rights. Information
4.6973 + on the procedures with respect to rights in RFC documents can be
4.6974 + found in BCP 78 and BCP 79.
4.6975 +
4.6976 + Copies of IPR disclosures made to the IETF Secretariat and any
4.6977 + assurances of licenses to be made available, or the result of an
4.6978 + attempt made to obtain a general license or permission for the use of
4.6979 + such proprietary rights by implementers or users of this
4.6980 + specification can be obtained from the IETF on-line IPR repository at
4.6981 + http://www.ietf.org/ipr.
4.6982 +
4.6983 + The IETF invites any interested party to bring to its attention any
4.6984 + copyrights, patents or patent applications, or other proprietary
4.6985 + rights that may cover technology that may be required to implement
4.6986 + this standard. Please address the information to the IETF at ietf-
4.6987 + ipr@ietf.org.
4.6988 +
4.6989 +Acknowledgement
4.6990 +
4.6991 + Funding for the RFC Editor function is provided by the IETF
4.6992 + Administrative Support Activity (IASA).
4.6993 +
4.6994 +
4.6995 +
4.6996 +
4.6997 +
4.6998 +
4.6999 +
4.7000 +Feather Standards Track [Page 125]
4.7001 +
5.1 Binary file doc/RFC3977.pdf has changed
6.1 --- a/src/org/sonews/mlgw/Dispatcher.java Sun Aug 29 17:28:58 2010 +0200
6.2 +++ b/src/org/sonews/mlgw/Dispatcher.java Sun Aug 29 17:43:58 2010 +0200
6.3 @@ -143,6 +143,11 @@
6.4 */
6.5 public static boolean toGroup(final Message msg)
6.6 {
6.7 + if(msg == null)
6.8 + {
6.9 + throw new IllegalArgumentException("Argument 'msg' must not be null!");
6.10 + }
6.11 +
6.12 try
6.13 {
6.14 // Create new Article object
6.15 @@ -159,14 +164,17 @@
6.16 {
6.17 // Check for duplicate entries of the same group
6.18 Article oldArticle = StorageManager.current().getArticle(article.getMessageID());
6.19 - List<Group> oldGroups = oldArticle.getGroups();
6.20 - for(Group oldGroup : oldGroups)
6.21 - {
6.22 - if(!newsgroups.contains(oldGroup.getName()))
6.23 + if(oldArticle != null)
6.24 + {
6.25 + List<Group> oldGroups = oldArticle.getGroups();
6.26 + for(Group oldGroup : oldGroups)
6.27 {
6.28 - oldgroups.add(oldGroup.getName());
6.29 + if(!newsgroups.contains(oldGroup.getName()))
6.30 + {
6.31 + oldgroups.add(oldGroup.getName());
6.32 + }
6.33 }
6.34 - }
6.35 + }
6.36 }
6.37
6.38 if(newsgroups.size() > 0)
7.1 --- a/src/org/sonews/util/Purger.java Sun Aug 29 17:28:58 2010 +0200
7.2 +++ b/src/org/sonews/util/Purger.java Sun Aug 29 17:43:58 2010 +0200
7.3 @@ -18,12 +18,12 @@
7.4
7.5 package org.sonews.util;
7.6
7.7 +import java.util.Date;
7.8 +import java.util.List;
7.9 import org.sonews.daemon.AbstractDaemon;
7.10 import org.sonews.config.Config;
7.11 import org.sonews.storage.Article;
7.12 import org.sonews.storage.Headers;
7.13 -import java.util.Date;
7.14 -import java.util.List;
7.15 import org.sonews.storage.Channel;
7.16 import org.sonews.storage.Group;
7.17 import org.sonews.storage.StorageBackendException;