idnits 2.17.1 draft-ietf-nntpext-base-13.txt: ** The Abstract section seems to be numbered Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-04-25) according to https://trustee.ietf.org/license-info : IETF Trust Legal Provisions of 28-dec-2009, Section 6.a: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 2: Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 3: This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing document type: Expected "INTERNET-DRAFT" in the upper left hand corner of the first page ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity. ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 5 longer pages, the longest (page 2) being 61 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an Abstract section. (A line matching the expected section header was found, but with an unexpected indentation: ' 2. Abstract' ) ** The document seems to lack a Security Considerations section. (A line matching the expected section header was found, but with an unexpected indentation: ' 14. Security Considerations' ) ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack an Authors' Addresses Section. ** There are 466 instances of too long lines in the document, the longest one being 3 characters in excess of 72. ** There is 1 instance of lines with control characters in the document. ** The abstract seems to contain references ([2], [3], [4], [0-9a-zA-Z], [5], [6], [C], [7], [8], [9], [GMT], [S], [XX], [1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There is 6 instances of lines with non-RFC2606-compliant FQDNs in the document. == There is 3 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 393 has weird spacing: '...wercase ind...' == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: The server SHOULD not produce output for articles that no longer exist. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (March 2001) is 8442 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Missing reference section? '1' on line 2690 looks like a reference -- Missing reference section? '2' on line 2692 looks like a reference -- Missing reference section? '3' on line 2694 looks like a reference -- Missing reference section? '4' on line 83 looks like a reference -- Missing reference section? '5' on line 2698 looks like a reference -- Missing reference section? '0-9a-zA-Z' on line 370 looks like a reference -- Missing reference section? '6' on line 2700 looks like a reference -- Missing reference section? 'C' on line 2383 looks like a reference -- Missing reference section? 'S' on line 2385 looks like a reference -- Missing reference section? '7' on line 2703 looks like a reference -- Missing reference section? '8' on line 2705 looks like a reference -- Missing reference section? 'GMT' on line 2342 looks like a reference -- Missing reference section? '9' on line 2711 looks like a reference Summary: 15 errors (**), 0 flaws (~~), 6 warnings (==), 15 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET DRAFT S. Barber 3 Expires: October 30, 2001 Academ Consulting Services 4 March 2001 5 Network News Transport Protocol 7 draft-ietf-nntpext-base-13.txt 9 1. Status of this Document 11 This document is an Internet-Draft and is in full conformance 12 with Section 10 of RFC 2026. Internet-Drafts are working 13 documents of the Internet Engineering Task Force (IETF), its 14 areas, and its working groups. Note that other groups may 15 also distribute working documents as Internet-Drafts. 16 Internet-Drafts are draft documents valid for a maximum of six 17 months and may be updated, replaced, or made obsolete by other 18 documents at any time. It is inappropriate to use Internet- 19 Drafts as reference material or to cite them other than as 20 "work in progress." 22 The list of current Internet-Drafts can be accesses at 23 http://www.ietf.org/ietf/1id-abstracts.txt. 24 The list of Internet-Draft shadow directories can be accessed 25 at http://www.ietf.org/shadow.html. 27 This section will be updated with the appropriate verbiage 28 from RFC 2223 should this document has been found ready for 29 publication as an RFC. 31 This document is a product of the NNTP Working Group, chaired 32 by Ned Freed and Stan Barber. 34 2. Abstract 36 The Network News Transport Protocol has been in use in the 37 Internet for a decade and remains one of the most popular 38 protocols (by volume) in use today. This document is a 39 replacement for RFC 977 and officially updates the protocol 40 specification. It clarifies some vagueness in RFC 977, 41 includes some new base functionality and provides a specific 42 mechanism to add standardized extensions to NNTP. 44 3. Introduction 46 This document specifies the Network News Transport Protocol 47 (NNTP), which is used for the distribution, inquiry, 48 retrieval, and posting of net news articles using a reliable 49 stream-based mechanism. For news reading clients, NNTP enables 50 retrieval of news articles that are stored in a central 51 Expires: October 30, 2001 Academ Consulting Services 52 March 2001 53 database, giving subscribers the ability to select only those 54 articles they wish to read. 56 The netnews model provides for indexing, cross-referencing, 57 and expiration of aged messages. For server-to-server 58 interaction, NNTP is designed for efficient transmission of 59 net news articles over a reliable full duplex communication 60 method. 62 Every attempt is made to insure that the protocol 63 specification in this document is compatible with the version 64 specified in RFC 977[1]. However, this version does not 65 support the ill-defined SLAVE command and permits four digit 66 years to be specified in the NEWNEWS and NEWGROUPS commands. 67 It changes the default character set to UTF-8[2] instead of 68 US-ASCII[3]. It also extends the newsgroup name matching 69 capabilities already documented in RFC 977. 71 Generally, new functionality is available using new keywords. 72 Part of that new functionality involves a mechanism to 73 discover what new functionality is available to clients from a 74 server. 76 This mechanism can also be used to add more functionality as 77 needs merit such additions. 79 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 80 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 81 "OPTIONAL" in this document are to be interpreted as described 82 in RFC 2119[4]. 84 An implementation is not compliant if it fails to satisfy one 85 or more of the MUST requirements for this protocol. An 86 implementation that satisfies all the MUST and all the SHOULD 87 requirements for its protocols is said to be "unconditionally 88 compliant"; one that satisfies all the MUST requirements but 89 not all the SHOULD requirements for NNTP is said to be 90 "conditionally compliant". 92 For the remainder of this memo, the term "client host" refers 93 to a host making use of the NNTP service, while the term 94 "server host" refers to a host that offers the NNTP service. 96 In addition, where examples of interactions between a client 97 host and a server host are provided a "[C]" will be used to 98 represent the client host and a "[S]" will be used to 99 represent the server host. 101 4. Basic Operation. 103 Every NNTP session MUST involve the following in this order: 105 Expires: October 30, 2001 Academ Consulting Services 106 March 2001 107 CONNECTION 108 GREETING 109 DISCONNECTION 111 Other steps may occur between the GREETING and DISCONNECTION 112 step. They are: 114 CAPABILITIES DISCOVERY 115 NEWS EXCHANGE 116 CONCLUSION 118 NNTP operates over any reliable data stream 8-bit-wide 119 channel. When running over TCP/IP, the official port for the 120 NNTP service is 119. Initially, the server host starts the 121 NNTP service by listening on a TCP port. When a client host 122 wishes to make use of the service, it MUST establish a TCP 123 connection with the server host by connecting to that host on 124 the same port on which the server is listening. This is the 125 CONNECTION step. When the connection is established, the NNTP 126 server host MUST send a greeting. This is the GREETING step. 127 The client host and server host SHOULD then exchange commands 128 and responses (respectively) until the connection is closed or 129 aborted. This final step is called the DISCONNECTION step. 131 If there is a CONCLUSION step, it MUST immediately precede the 132 DISCONNECTION step. There MUST be only one CONNECTION, 133 CONCLUSION and DISCONNECTION step for each NNTP session. All 134 other steps MAY be repeated as needed. For example, the 135 GREETING step may be repeated if the client makes use of the 136 MODE READER command (See Section 7.2 for more on the MODE 137 READER command). 139 The character set for all NNTP commands is UTF-8. Commands in 140 the NNTP MUST consist of an US-ASCII case-insensitive keyword, 141 which MAY be followed by one or more arguments. An US-ASCII 142 CRLF pair MUST terminate all commands. Multiple commands MUST 143 NOT be on the same line. Keywords MUST consist of printable 144 US-ASCII characters. Unless otherwise noted elsewhere in this 145 document, arguments SHOULD consist of printable US-ASCII 146 characters. Keywords and arguments MUST be each separated by 147 one or more US-ASCII SPACE or US-ASCII TAB characters. 148 Keywords MUST be at least three US-ASCII characters and MUST 149 NOT exceed 12 US-ASCII characters. Command lines MUST NOT 150 exceed 512 octets, which includes the terminating US-ASCII 151 CRLF pair. Arguments MUST NOT exceed 497 octets. 153 Each response MUST start with a three-digit response code that 154 is sufficient to distinguish all responses. Certain valid 155 responses are defined to be multi-line; for all others, the 156 response is contained in a single line. All multi-line 157 Expires: October 30, 2001 Academ Consulting Services 158 March 2001 159 responses MUST adhere to the following format: After sending 160 the first line of the response and an US-ASCII CRLF, any 161 additional lines are sent, each terminated by an US-ASCII CRLF 162 pair. When all lines of the response have been sent, a final 163 line MUST be sent, consisting of a termination octet (US-ASCII 164 decimal code 046, ".") and an US-ASCII CRLF pair. If any line 165 of the multi-line response begins with the termination octet, 166 the line MUST be "byte-stuffed" by pre-pending the termination 167 octet to that line of the response. Hence, a multi-line 168 response is terminated with the five octets "CRLF.CRLF" (in 169 US-ASCII). When examining a multi-line response, the client 170 MUST check to see if the line begins with the termination 171 octet. If so and if octets other than US-ASCII CRLF follow, 172 the first octet of the line (the termination octet) MUST be 173 stripped away. If so and if US-ASCII CRLF immediately follows 174 the termination character, then the response from the NNTP 175 server is ended and the line containing ".CRLF" (in US-ASCII) 176 MUST NOT be considered part of the multi-line response. Where 177 a response is multi-line, the description of the command will 178 define the format of the response before "byte-stuffing" takes 179 place. 181 An NNTP server MAY have an inactivity autologout timer. Such a 182 timer MUST be of at least three minutes duration. The receipt 183 of any command from the client during that interval SHOULD 184 suffice to reset the autologout timer. When the timer 185 expires, the server should close the TCP connection without 186 sending any response to the client. 188 4.1 Response Codes 190 Each response MUST begin with a three-digit status indicator. 191 These are status reports from the server and indicate the 192 response to the last command received from the client. 194 The first digit of the response broadly indicates the success, 195 failure, or progress of the previous command. 197 1xx - Informative message 198 2xx - Command ok 199 3xx - Command ok so far, send the rest of it. 200 4xx - Command was correct, but couldn't be performed for some 201 reason. 202 5xx - Command unimplemented, or incorrect, or a serious 203 program error occurred. 205 The next digit in the code indicates the function response 206 category. 208 x0x - Connection, setup, and miscellaneous messages 209 Expires: October 30, 2001 Academ Consulting Services 210 March 2001 211 x1x - Newsgroup selection 212 x2x - Article selection 213 x3x - Distribution functions 214 x4x - Posting 215 x8x - Reserved for authentication and authorization extensions 216 x9x - Reserved for private use (non-standard extensions) 218 Certain responses contain parameters such as numbers and names 219 in addition to the status indicator. In those cases, the 220 number and type of such parameters is fixed for each response 221 code to simplify interpretation by the client (any extension 222 MUST follow this principle as well). In all other cases, the 223 client MUST only use the status indicator itself to determine 224 the nature of the response. The exact response codes that can 225 be returned in response to a given command are detailed in the 226 description of the keyword that is the first part of the 227 command. 229 Parameters MUST be separated from the numeric status indicator 230 and from each other by a single US-ASCII space. All numeric 231 parameters MUST be in base 10 (decimal) format, and MAY have 232 leading zeros. String parameters MUST contain at least one 233 character and MUST NOT contain US-ASCII spaces, CR, LF, or 234 tab). The server MAY add any text after the response code or 235 last parameter as appropriate, and the client MUST NOT make 236 decisions based on this text. Such text MUST be separated from 237 the numeric status indicator or the last parameter by at least 238 one US-ASCII space. 240 The server MUST respond to any command with the appropriate 241 generic response (given in section 4.1.1) if it represents the 242 situation. Otherwise, each recognized command MUST return one 243 of the response codes specifically listed in its description 244 or in an extension. A server MAY provide extensions to this 245 specification, including new commands, new features of 246 existing commands, and other ways of changing the internal 247 state of the server. However, the server MUST NOT produce any 248 other responses to a client that does not invoke any of the 249 additional features. (Therefore a client that restricts itself 250 to this specification will only receive the responses that are 251 listed). 253 Each recognized command MUST return 501 (as above) or one of 254 the response codes specifically listed in its description or 255 in an extension. A server MAY provide extensions to this 256 specification, including new commands, new features of 257 existing commands, and other ways of changing the internal 258 state of the server. However, the server MUST NOT produce any 259 other responses to a client that does not invoke any of the 260 Expires: October 30, 2001 Academ Consulting Services 261 March 2001 262 additional features. (Therefore a client that restricts itself 263 to this specification will only receive the responses that are 264 listed). 266 If a client receives an unexpected response, it SHOULD use the 267 first digit of the response to determine the result. For 268 example, an unexpected 2xx should be taken as success and an 269 unexpected 4xx or 5xx as failure. 271 Response codes not specified in this standard MAY be used for 272 any installation-specific additional commands also not 273 specified. These SHOULD be chosen to fit the pattern of x9x 274 specified above. 276 Neither this document nor any extension registered with IANA 277 (see section 12) will specify any response codes of the x9x 278 pattern. (Implementers of extensions are accordingly cautioned 279 not to use such responses for extensions that may subsequently 280 be submitted for registration.) 282 4.1.1 Generic Response Codes 284 The server MUST respond to any command with the appropriate 285 one of the following generic responses if it represents the 286 situation. 288 If the command is not recognized, or it is an optional command 289 or extension that is not implemented by the server, the 290 response code 500 MUST be returned. 292 If there is a syntax error in the arguments of a recognized 293 command, the response code 501 MUST be returned. Note that 294 where a command has variants depending on a keyword (e.g. LIST 295 ACTIVE and LIST NEWSGROUPS), then 501 MUST be used when the 296 requested variant is not implemented but the base command is. 298 If the client is not authorized to use the specified facility 299 when the server is in its current state, the response code 502 300 MUST be returned. A different command MIGHT change the server 301 state and permit the command if it is retried. 303 If the server does not provide an optional feature, then the 304 response code 403 MUST be returned if the omission is 305 temporary (e.g. because a necessary facility is unavailable) 306 and the code 503 if it is permanent (e.g. because the server 307 does not store the required information). 309 If the server has to terminate the connection for some reason, 310 it MUST give a 400 response code to the next command and then 311 immediately close the TCP connection. It MAY give a 401 312 response code to any command to indicate that termination is 313 Expires: October 30, 2001 Academ Consulting Services 314 March 2001 315 imminent (following a 401 response, it MUST NOT close the TCP 316 connection immediately). 318 5. The WILDMAT format 320 The WILDMAT format[5] described here is based on the version 321 first developed by Rich Salz which was derived from the format 322 used in the UNIX "find" command to articulate file names. It 323 was developed to provide a uniform mechanism for matching 324 patterns in the same manner that the UNIX shell matches 325 filenames. Patterns are implicitly anchored at the beginning 326 and end of each string when testing for a match. There are 327 five pattern-matching operations other than a strict one-to- 328 one match between the pattern and the source to be checked for 329 a match. The first is an asterisk (*) to match any sequence of 330 zero or more UTF-8 characters. The second is a question mark 331 (?) to match any single UTF-8 character. The third specifies a 332 specific set of characters. The set is specified as a list of 333 characters, or as a range of characters where the beginning 334 and end of the range are separated by a minus (or dash) 335 character, or as any combination of lists and ranges. The dash 336 can also be included in the set as a character it if is the 337 beginning or end of the set. This set is enclosed in square 338 brackets. The close square bracket (]) may be used in a set if 339 it is the first character in the set. The fourth operation is 340 the same as the logical not of the third operation and is 341 specified the same way as the third with the addition of a 342 caret character (^) at the beginning of the test string just 343 inside the open square bracket. The final operation uses the 344 backslash character to invalidate the special meaning of the 345 open square bracket ([), the asterisk, backslash, or the 346 question mark. Two backslashes in sequence will result in the 347 evaluation of the backslash as a character with no special 348 meaning. 350 Implementers must be careful to apply the pattern-matching 351 operators to whole characters encoded in UTF-8, and not to 352 individual octets. 354 5.1 Negating the wildmat pattern 356 The exclamation point can be used at the beginning of a 357 wildmat to negate it. That is, if the remainder of the pattern 358 would match the string then the negated pattern does not, and 359 vice versa. If it appears as any other character other than 360 the first one, it has no special meaning. 362 Expires: October 30, 2001 Academ Consulting Services 363 March 2001 364 5.2 Examples 366 a) [^]-] -- matches any single character other than a 367 close square bracket or a minus sign/dash. 368 b) *bdc -- matches any string that ends with the string 369 "bdc" including the string "bdc" (without quotes). 370 c) [0-9a-zA-Z] -- matches any single printable 371 alphanumeric ASCII character. 372 d) a??d -- matches any four character string which 373 begins with a and ends with d. 374 e)!bc*d -- matches any string that does not start with 375 "bc" and end with "d" (without quotes) 376 f)!\\x -- matches any string that does not start with 377 "\x" (without quotes) 379 6. Format for Keyword Descriptions 381 On the following pages are descriptions of each keyword 382 recognized by the NNTP server and the responses that will be 383 returned by those commands. These keywords are grouped by the 384 functional step in which they are used. 386 Each keyword is shown in upper case for clarity, although the 387 NNTP server ignores case in the interpretation of commands. 389 Parameters are shown as follows: 391 . UPPERCASE indicates literal text to be included in the 392 command; 393 . lowercase indicates a token described elsewhere; 394 . [brackets] indicate that the parameter is optional; 395 . ellipsis... indicates that the parameter may be repeated 396 any number of times (it must occur at least once); 397 . vertical|bar indicates a choice of two mutually exclusive 398 parameters (exactly one must be provided). 400 Parameters are case or language specific only when specified 401 (either in this document or in RFC 1036[6]). 403 The name "wildmat" for a parameter indicates that it is a 404 wildmat format pattern as defined in section 5. 406 7. The GREETING Step 408 7.1 Initial Connection 410 There is no keyword presented by the client upon initial 411 connection to the server. The server MUST present an 412 appropriate response code as a greeting to the client. This 413 Expires: October 30, 2001 Academ Consulting Services 414 March 2001 415 response informs the client about what steps the client should 416 take to reach the news exchange step. 418 If the server will accept further commands from the client 419 including POST, the server MUST present a 200 greeting code. 420 If the server will accept further commands from the client, 421 but it is not authorized to post articles using the POST 422 command, the server MUST present a 201 greeting code. 424 Otherwise the server MUST present a 400 or 502 greeting code 425 and then immediately close the connection. 502 MUST be used if 426 the client is not permitted under any circumstances to 427 interact with the server and 400 otherwise. 429 7.1.1 Initial Connection Example 431 Example of a normal connection from an authorized client 432 [Initial TCP connection setup completed.] 433 [C] Initial TCP connection completed 434 [S] 200 NNTP Service Ready, posting permitted 435 Client can send commands at this point. In this example, the 436 client jumps directly to the conclusion step (See section 10). 437 [C] QUIT 438 [S] 205 NNTP Service exits normally 439 [Server closes connection.] 441 Example of a normal connection from an unauthorized client 442 [C] Initial TCP connection completed 443 [S] 502 NNTP Service Unavailable 444 [Server closes connection.] 446 Example of a normal connection from an authorized client that 447 is not permitted to post 448 [Initial TCP connection setup completed.] 449 [S] 201 NNTP Service Ready, posting prohibited 450 Client can send commands at this point. In this example, the 451 client jumps directly to the conclusion step (See section 10). 452 [C] QUIT 453 [S] 205 NNTP Service exits normally 454 [Server closes connection.] 455 Expires: October 30, 2001 Academ Consulting Services 456 March 2001 457 Example of a connection from any client where the server is 458 unable to provide service 459 [Initial TCP connection setup completed.] 460 [S] 400 NNTP Service temporarily unavailable 461 [Server closes connection.] 463 7.2 MODE READER 465 MODE READER 467 MODE READER SHOULD be sent by any client that intends to use 468 any command other than IHAVE, HEAD, STAT, LIST, LIST 469 EXTENSIONS, or commands advertised by the server as available 470 via LIST EXTENSIONS. 472 Servers MAY require that this command be issued before any 473 other commands are sent and MAY reject any other commands 474 until after a MODE READER command has been sent. 476 The server MUST present a response using the same codes as the 477 initial greeting (as described in section 7.1) to indicate its 478 ability to provide reading service to the client. 480 Clients SHOULD wait for a response to MODE READER after 481 sending this command and SHOULD NOT send any additional 482 commands until that response has been received from the 483 server. 485 Once MODE READER is sent, IHAVE (and any extensions intended 486 for peer-to-peer article transfer) MAY no longer be permitted, 487 even if it were permitted before the MODE READER command. The 488 results of LIST EXTENSIONS MAY be different following a 489 MODE READER command than prior to the issuing of that command. 490 Servers are encouraged to not require this command even though 491 clients SHOULD send it when appropriate. It is present to 492 support some news architectures that switch between modes 493 based on whether a given connection is a peer-to-peer 494 connection with another server or a news reading client. 496 7.2.1 Responses 497 200 Posting Permitted 498 201 Posting Not Permitted 499 400 Service temporarily unavailable 500 502 Service unavailable 502 Following a 400 or 502 response the server MUST immediately 503 close the connection. 505 Expires: October 30, 2001 Academ Consulting Services 506 March 2001 507 Note that the response need not be the same as the one 508 presented during the initial greeting. 510 7.2.2 MODE READER Examples 512 Example of use of the MODE READER command by an authorized 513 client 514 [C] MODE READER 515 [S] 200 NNTP Service Ready, posting permitted 516 Client can send commands at this point. In this example, the 517 client jumps directly to the conclusion step (See section 10). 518 [C] QUIT 519 [S] 205 NNTP Service exits normally 520 [Server closes connection.] 522 Example of use of MODE READER by a client not authorized to 523 receive service from the server as a news reader 524 [C] MODE READER 525 [S] 502 Service Unavailable 526 [Server closes connection.] 528 Example of a normal connection from an authorized client that 529 is not permitted to post 530 [C] MODE READER 531 [S] 201 NNTP Service Ready, posting prohibited 533 Client can send commands at this point. In this example, the 534 client jumps directly to the conclusion step (See section 10). 535 [C] QUIT 536 [S] 205 NNTP Service exits normally 537 [Server closes connection.] 539 Example of a connection from any client where the server is 540 unable to provide news reader service 541 [C] MODE READER 542 [S] 400 NNTP Service temporarily unavailable 543 [Server closes connection.] 544 Expires: October 30, 2001 Academ Consulting Services 545 March 2001 546 8. The CAPABILITIES DISCOVERY Step 548 To discover what extensions are available, an NNTP client can 549 query the server with the LIST EXTENSIONS command. 550 If a particular extension is unavailable, the client can 551 attempt to work around it or it may wish to terminate the 552 session. 554 See section 12 for further discussion of extensions. 556 8.1 LIST EXTENSIONS 558 The LIST EXTENSIONS command allows a client to determine which 559 extensions are supported by the server. 561 To discover what extensions are available, an NNTP client 562 SHOULD query the server early in the session for extensions 563 information by issuing the LIST EXTENSIONS command. This 564 command MAY be issued at anytime during a session. It is not 565 required that the client issues this command before attempting 566 to make use of any extension. The response generated by this 567 command MAY change during a session because of other state 568 information. However, an NNTP client MUST NOT cache (for use 569 in another session) any information returned if the LIST 570 EXTENSIONS command succeeds. That is, an NNTP client is only 571 able to get the current and correct information concerning 572 available extensions during a session by issuing a LIST 573 EXTENSIONS command during that session and processing that 574 response. 576 A successful response starts with a 202 code and is followed 577 by a list of extensions, one per line. Each line MUST begin 578 with exactly one space followed by an extension-label and 579 optionally one or more parameters (separated by single 580 spaces). The extension-label and the meaning of the parameters 581 are specified as part of the definition of the extension. The 582 extension-label MUST be in uppercase. 584 The server MUST NOT list the same extension twice in the 585 response, and MUST list all supported extensions. The order in 586 which the extensions are listed is not significant. The server 587 need not even consistently return the same order. 589 If the server does not support any extensions, it SHOULD 590 return a 402 failure response but MAY return an empty list 591 instead. 593 Expires: October 30, 2001 Academ Consulting Services 594 March 2001 595 8.1.1 Responses 597 202 extension list follows (multiline) 598 400 service about to terminate 599 402 no extensions available 600 503 unable to list extensions 602 Following a 503 response an extension might still be 603 available, and the client MAY attempt to use it. 605 The LIST EXTENSIONS command is optional, and a server MAY 606 issue a 500 (unknown command) or 501 (syntax error) response 607 to it. 609 8.1.1.1 LIST EXTENSIONS Examples 611 Example of a successful response: 613 [C] LIST EXTENSIONS 614 [S] 202 Extensions supported: 615 [S] OVER 616 [S] PAT 617 [S] LISTGROUP 618 [S] . 620 The particular extensions shown here are simply examples of 621 what might be defined in other places, and no particular 622 meaning should be attributed to them. 624 Example where no extensions are available, using preferred 625 format: 626 [C] LIST EXTENSIONS 627 [S] 402 Server has no extensions 629 Example where no extensions are available, using an empty 630 list: 631 [C] LIST EXTENSIONS 632 [S] 202 Extensions supported: 633 [S] . 635 Expires: October 30, 2001 Academ Consulting Services 636 March 2001 637 9. The NEWS EXCHANGE Step 639 During this step, two basic types of transactions occur: 641 . article retrieval from the server 642 . article posting to the server 644 9.1 Article Retrieval 646 News reading clients have available a variety of mechanisms to 647 retrieve articles via NNTP. The news articles are stored and 648 indexed using three types of keys. One key is the message id 649 of an article. According to RFC 1036, this identifier should 650 be globally unique. Another key is composed of the newsgroup 651 name and the article number within that newsgroup. That key 652 MUST be unique to a particular server (there will be only one 653 article with that number within a particular newsgroup), but 654 is not required to be globally unique. Additionally, because 655 the same article can be cross-posted to multiple newsgroups, 656 there may be multiple keys that point to the same article on 657 the same server. The final key is the arrival timestamp, 658 giving the time that the article arrived at the server. 660 The server MUST ensure that article numbers are issued in 661 order of arrival timestamp; that is, articles arriving later 662 MUST have higher numbers than those that arrive earlier. The 663 server SHOULD allocate the next sequential unused number to 664 each new article. 666 Article numbers MUST lie between 1 and 4,294,967,295 667 inclusive. The client and server SHOULD NOT use leading zeroes 668 in specifying article numbers, and MUST NOT use more than 16 669 digits. In some situations, the value zero replaces an article 670 number to show some special situation. 672 9.1.1 Article Retrieval by Newsgroup Name and Article Number 674 The following commands are used to set the current newsgroup 675 name and the "current article pointer" which is used by other 676 commands for article retrieval. At the start of an NNTP 677 session, both of these values are undefined. 679 9.1.1.1 GROUP 681 GROUP ggg 683 The required parameter ggg is the name of the newsgroup to be 684 selected (e.g. "news.software.b"). A list of valid newsgroups 685 Expires: October 30, 2001 Academ Consulting Services 686 March 2001 687 may be obtained by using the LIST keyword. See section 9.4 688 for more information on the LIST keyword. 690 The successful selection response will return the article 691 numbers of the first and last articles in the group at the 692 moment of selection (these numbers are referred to as the 693 "reported low water mark" and the "reported high water mark"), 694 and an estimate of the number of articles on file in the 695 group. 697 If the group is not empty, the estimate MUST be at least the 698 actual number of articles available, and MUST be no greater 699 than one more than the difference between the reported low and 700 high water marks. (Some implementations will actually count 701 the number of articles on file. Others will just subtract the 702 low water mark from the high water mark and add one to get an 703 estimate.) 705 If the group is empty, one of the following three situations 706 will occur. Clients MUST accept all three cases; servers MUST 707 NOT represent an empty group in any other way. 709 . The high water mark will be one less than the low water 710 mark, and the estimated article count will be zero. 711 Servers SHOULD use this method to show an empty group. 712 This is the only time that the high water mark can be 713 less than the low water mark. 714 . All three numbers will be zero. 715 . The high water mark is greater than or equal to the low 716 water mark; the estimated article count might be zero or 717 non-zero; if non-zero, the same requirements apply as for 718 a non-empty group. 720 The set of articles in a group may change after the GROUP 721 command is carried out. That is: 723 . articles may be removed from the group 724 . articles may be reinstated in the group with the same 725 article number, but those articles MUST have numbers no 726 less than the reported low water mark (note that this is 727 a reinstatement of the previous article, not a new 728 article reusing the number) 729 . new articles may be added with article numbers greater 730 than the reported high water mark (if an article that was 731 the one with the highest number has been removed, the 732 next new article will not have the number one greater 733 than the reported high water mark) 734 Expires: October 30, 2001 Academ Consulting Services 735 March 2001 736 Except when the group is empty and all three numbers are zero, 737 whenever a subsequent GROUP command for the same newsgroup is 738 issued, either by the same client or a different client, the 739 reported low water mark in the response MUST be no less than 740 that in any previous response for that newsgroup sent to any 741 client. The client may make use of the low water mark to 742 remove all remembered information about articles with lower 743 numbers, as these will never recur. This includes the 744 situation when the high water mark is one less than the low 745 water mark. 747 No similar assumption can be made about the high water mark, 748 as this can decrease if an article is removed, and then 749 increase again if it is reinstated or if new articles arrive. 751 When a valid group is selected by means of this command, the 752 internally maintained "current article pointer" MUST be set to 753 the first article in the group and the name of the current 754 newsgroup MUST be set to the selected newsgroup name. If an 755 invalid group is specified, the previously selected group, if 756 any, and article MUST remain selected. If an empty newsgroup 757 is selected, the "current article pointer" is in an 758 indeterminate state and MUST NOT be used. 760 The GROUP keyword (or the LISTGROUP keyword, if implemented) 761 MUST be used by a client and a successful response received 762 before the any other command is used that depends on having 763 the "current article pointer" be valid. 765 9.1.1.1.1 Responses 767 211 n f l s group selected 768 (n = estimated number of articles in group, f = first 769 article number in the group, l = last article number 770 in the group, s = name of the group.) 771 411 no such newsgroup 773 9.1.1.1.2 GROUP Examples 775 Example for a group known to the server 776 [C] GROUP misc.test 777 [S] 211 1234 3000234 3002322 misc.test 779 Example for a group unknown to the server 780 [C] GROUP example.is.sob.bradner.or.barber 781 Expires: October 30, 2001 Academ Consulting Services 782 March 2001 783 [S] 411 example.is.sob.bradner.or.barber is unknown 785 9.1.1.2 LAST 787 LAST 789 If the current newsgroup is valid, the internally maintained 790 "current article pointer" MUST be set to the previous article 791 in the current newsgroup. If already positioned at the first 792 article of the newsgroup, an error message MUST be returned 793 and the current article MUST remain selected. 795 There MAY be no previous article in the group, although the 796 current article number is not the reported low water mark. 798 There MUST NOT be a previous article when the current article 799 number is the reported low water mark. 801 Because articles can be removed and added, the results of 802 multiple LAST and NEXT commands MAY not be consistent over the 803 life of a particular NNTP session. 805 If successful, a response indicating the current article 806 number and a message-id string MUST be returned. No article 807 text is sent in response to this command. 809 9.1.1.2.1 Responses 811 223 n a article retrieved - request text separately (n = 812 article number, a = unique article id) 813 412 no newsgroup selected 814 420 no current article has been selected 815 422 no previous article in this group 817 9.1.1.2.2 LAST Examples 819 Example of a successful article retrieval using LAST 820 [S] 200 NNTP Service Ready 821 [C] GROUP misc.test 822 [S] 211 1234 3000234 3002322 misc.test 823 [C] NEXT 824 [S] 223 3000237 <668929@domain.com> retrieved 825 [C] LAST 826 [S] 223 3000234 <45223423@to.to> retrieved 827 Expires: October 30, 2001 Academ Consulting Services 828 March 2001 829 Example of an attempt to retrieve an article without having 830 selected a group (via the GROUP command) first 831 [S] 200 NNTP Service ready 832 [C] LAST 833 [S] 412 no newsgroup selected 835 Example of an attempt to retrieve an article using the LAST 836 command when the current article pointer is pointing at the 837 first article in the group 838 [S] 200 NNTP Service Ready 839 [C] GROUP misc.test 840 [S] 211 1234 3000234 3002322 misc.test 841 [C] LAST 842 [S] 422 No previous article to retrieve 844 Example of an attempt to retrieve an article using the LAST 845 command when the current group selected is empty 846 [S] 200 NNTP Service Ready 847 [C] GROUP example.empty.newsgroup 848 [S] 211 0 0 0 example.empty.newsgroup 849 [C] LAST 850 [S] 420 No current article selected 852 9.1.1.3 NEXT 854 NEXT 856 If the current newsgroup is valid, the internally maintained 857 "current article pointer" MUST be advanced to the next article 858 in the current newsgroup. If no more articles remain in the 859 current group, an error message MUST be returned and the 860 current article MUST remain selected. 862 If successful, a response indicating the current article 863 number and the message-id string MUST be returned. No article 864 text is sent in response to this command. 866 9.1.1.3.1 Responses 867 Expires: October 30, 2001 Academ Consulting Services 868 March 2001 869 223 n a article retrieved - request text separately (n = 870 article number, a = unique article id) 871 412 no newsgroup selected 872 420 no current article has been selected 873 421 no next article in this group 875 9.1.1.3.2 NEXT Examples 877 Example of a successful article retrieval using NEXT 878 [S] 200 NNTP Service Ready 879 [C] GROUP misc.test 880 [S] 211 1234 3000234 3002322 misc.test 881 [C] NEXT 882 [S] 223 3000237 <668929@domain.com> retrieved 884 Example of an attempt to retrieve an article without having 885 selected a group (via the GROUP command) first 886 [S] 200 NNTP Service ready 887 [C] NEXT 888 [S] 412 no newsgroup selected 890 Example of an attempt to retrieve an article using the NEXT 891 command when the current article pointer is pointing at the 892 last article in the group 893 [S] 200 NNTP Service Ready 894 [C] GROUP misc.test 895 [S] 211 1234 3000234 3002322 misc.test 896 [C] ARTICLE 3002322 897 [S] 220 3002322 <411@whitehouse.gov> retrieved 898 [S] Path: pathost!demo!whitehouse!not-for-mail 899 [S] From: nobody@whitehouse.gov(Demo User) 900 [S] Newsgroups: misc.test 901 [S] Subject: I am just a test article 902 [S] Date: 6 Oct 1998 04:38:40 -0500 903 [S] Organization: The White House, Washington, DC 904 [S] Message-ID: <411@whitehouse.gov> 905 Expires: October 30, 2001 Academ Consulting Services 906 March 2001 907 [S] 908 [S] This is just a test article. 909 [S] . 910 [C] NEXT 911 [S] 422 No next article to retrieve 913 Example of an attempt to retrieve an article using the NEXT 914 command when the current group selected is empty 915 [S] 200 NNTP Service Ready 916 [C] GROUP example.empty.newsgroup 917 [S] 211 0 0 0 example.empty.newsgroup 918 [C] NEXT 919 [S] 420 No current article selected 921 9.2 Retrieval of Articles and Article Sections 923 The ARTICLE, BODY, HEAD, and STAT commands are very similar. 924 They differ only in the parts of the article that are 925 presented to the client and in the successful response code. 927 The ARTICLE command is described here in full, while the other 928 commands are described in terms of the differences. 930 An article, as defined by RFC 1036, consists of two parts: the 931 article headers and the article body. When responding to one 932 of these commands, the server presents the entire article or 933 appropriate part and does not attempt to alter or translate it 934 in any way. 936 9.2.1 ARTICLE 938 ARTICLE 940 ARTICLE [number] 942 The ARTICLE command selects an article based on the arguments 943 and presents the header, a blank line, and the body of that 944 article. The command has two forms. 946 In the first form, a message-id is specified (including the 947 angle brackets), and the server presents the article with that 948 message-id in its headers. In this case, the server MUST NOT 949 alter the "current article pointer". This is both to 950 Expires: October 30, 2001 Academ Consulting Services 951 March 2001 952 facilitate the presentation of articles that may be referenced 953 within another article being read, and because of the semantic 954 difficulties of determining the proper sequence and membership 955 of an article which may have been posted to more than one 956 newsgroup. 958 In the second form, an article number may be specified. If so, 959 and if there is an article with that number in the currently 960 selected group, the server MUST set the current article 961 pointer to that number. 963 Then, whether or not a number was specified, the article 964 indicated by the current article pointer is presented to the 965 client. 967 Note that a previously valid article number MAY become invalid 968 if the article has been removed. A previously invalid article 969 number MAY become valid if the article has been reinstated, 970 but such an article number MUST be no less than the reported 971 low water mark for that group. 973 The server MUST NOT change the currently selected group as a 974 result of this command. The server MUST NOT change the current 975 selected article except when an article number argument was 976 provided and the article exists; in particular, it MUST NOT 977 change it following an unsuccessful response. 979 9.2.1.1 Responses 981 First form (message-id specified): 983 220 0 a article retrieved and follows (multiline, a = 984 unique article id) 985 430 no such article 986 502 service unavailable 988 Second form (optional article number specified): 990 220 n a article retrieved and follows (multiline, n = 991 article number, a = unique article id) 992 412 no newsgroup selected 993 420 no current article selected 994 423 no such article number in this group 995 502 service unavailable 997 The 420 response only occurs if no article number has been 998 specified. 1000 In the 220 response, the first parameter is 0 for the first 1001 form and the article number (within the current group) for the 1002 Expires: October 30, 2001 Academ Consulting Services 1003 March 2001 1004 second form. The second parameter is the message-id of the 1005 article (within angle brackets). This is taken from the 1006 message-id header line of the article (required by RFC 1036). 1008 If there is no such line, the message-id "<0>" MUST be used 1009 instead (without the double quotes). 1011 Since the message-id field is unique for each article, it may 1012 be used by a client to skip duplicate displays of articles 1013 that have been posted more than once, or to more than one 1014 newsgroup. 1016 The article headers and body are returned as a multiline 1017 response following the initial response line. 1019 9.2.1.2 Examples 1021 Example of a successful retrieval of an article (using no 1022 article number) 1023 [S] 200 NNTP Service Ready 1024 [C] GROUP misc.test 1025 [S] 211 1234 3000234 3002322 misc.test 1026 [C] ARTICLE 1027 [S] 220 3000234 <45223423@to.to> 1028 [S] Path: pathost!demo!somewhere!not-for-mail 1029 [S] From: nobody@nowhere.to (Demo User) 1030 [S] Newsgroups: misc.test 1031 [S] Subject: I am just a test article 1032 [S] Date: 6 Oct 1998 04:38:40 -0500 1033 [S] Organization: Nowhere, To 1034 [S] Message-ID: <45223423@to.to> 1035 [S] 1036 [S] This is just a test article. 1037 [S] . 1039 Example of a successful retrieval of an article by message-id 1040 [S] 200 NNTP Service Ready 1041 [C] ARTICLE <45223423@to.to> 1042 [S] 220 0 <45223423@to.to> 1043 [S] Path: pathost!demo!somewhere!not-for-mail 1044 [S] From: nobody@nowhere.to (Demo User) 1045 Expires: October 30, 2001 Academ Consulting Services 1046 March 2001 1047 [S] Newsgroups: misc.test 1048 [S] Subject: I am just a test article 1049 [S] Date: 6 Oct 1998 04:38:40 -0500 1050 [S] Organization: Nowhere, To 1051 [S] Message-ID: <45223423@to.to> 1052 [S] 1053 [S] This is just a test article. 1054 [S] . 1056 Example of an unsuccessful retrieval of an article by message- 1057 id 1058 [S] 200 NNTP Service Ready 1059 [C] ARTICLE 1060 [S] 430 No Such Article Found 1062 Example of an unsuccessful retrieval of an article by number 1063 [S] 200 NNTP Service Ready 1064 [C] GROUP misc.test 1065 [S] 211 1234 3000234 3002322 news.groups 1066 [C] ARTICLE 300256 1067 [S] 423 No such article number in this group 1069 Example of an unsuccessful retrieval of an article by number 1070 because no newsgroup was selected first 1071 [S] 200 NNTP Service Ready 1072 [C] ARTICLE 300256 1073 [S] 412 No newsgroup selected 1075 Example of an attempt to retrieve an article when the current 1076 group selected is empty 1077 [S] 200 NNTP Service Ready 1078 [C] GROUP example.empty.newsgroup 1079 [S] 211 0 0 0 example.empty.newsgroup 1080 [C] ARTICLE 1081 [S] 420 No current article selected 1083 Example of a failure due to the service being unavailable 1084 [S] 200 NNTP Service Ready 1085 [C] ARTICLE 1086 Expires: October 30, 2001 Academ Consulting Services 1087 March 2001 1088 [S] 502 Service unavailable 1090 9.2.2 HEAD 1092 HEAD 1094 HEAD [number] 1096 The HEAD command behaves identically to the ARTICLE command 1097 except that, if the article exists, only the headers are 1098 presented (the blank line separating the headers and body MUST 1099 NOT be included). 1101 9.2.2.1 Responses 1103 First form (message-id specified): 1105 221 0 a article retrieved, headers follow (multiline) 1106 430 no such article 1107 502 service unavailable 1109 Second form (optional article number specified): 1111 221 n a article retrieved, headers follow (multiline) 1112 412 no newsgroup selected 1113 420 no current article selected 1114 423 no such article number in this group 1115 502 service unavailable 1117 Except that only the headers are included in the response, the 1118 221 response behaves identically to the 220 response of the 1119 ARTICLE command. 1121 9.2.2.2 Examples 1123 Example of a successful retrieval of the headers in an article 1124 (using no article number) 1125 [S] 200 NNTP Service Ready 1126 [C] GROUP misc.test 1127 [S] 211 1234 3000234 3002322 misc.test 1128 [C] HEAD 1129 [S] 220 3000234 <45223423@to.to> 1130 [S] Path: pathost!demo!somewhere!not-for-mail 1131 [S] From: nobody@nowhere.to (Demo User) 1132 Expires: October 30, 2001 Academ Consulting Services 1133 March 2001 1134 [S] Newsgroups: misc.test 1135 [S] Subject: I am just a test article 1136 [S] Date: 6 Oct 1998 04:38:40 -0500 1137 [S] Organization: Nowhere, To 1138 [S] Message-ID: <45223423@to.to> 1139 [S] . 1141 Example of a successful retrieval of the headers in an article 1142 by message-id 1143 [S] 200 NNTP Service Ready 1144 [C] HEAD <45223423@to.to> 1145 [S] 220 0 <45223423@to.to> 1146 [S] Path: pathost!demo!somewhere!not-for-mail 1147 [S] From: nobody@nowhere.to (Demo User) 1148 [S] Newsgroups: misc.test 1149 [S] Subject: I am just a test article 1150 [S] Date: 6 Oct 1998 04:38:40 -0500 1151 [S] Organization: Nowhere, To 1152 [S] Message-ID: <45223423@to.to> 1153 [S] . 1155 Example of an unsuccessful retrieval of the header of an 1156 article by message-id 1157 [S] 200 NNTP Service Ready 1158 [C] HEAD 1159 [S] 430 No Such Article Found 1161 Example of an unsuccessful retrieval of the header of an 1162 article by number 1163 [S] 200 NNTP Service Ready 1164 [C] GROUP misc.test 1165 [S] 211 1234 3000234 3002322 misc.test 1166 [C] HEAD 300256 1167 [S] 423 No such article number in this group 1169 Example of an unsuccessful retrieval the header of an article 1170 by number because no newsgroup was selected first 1171 [S] 200 NNTP Service Ready 1172 Expires: October 30, 2001 Academ Consulting Services 1173 March 2001 1174 [C] HEAD 300256 1175 [S] 412 No newsgroup selected 1177 Example of an attempt to retrieve the header of an article 1178 when the current group selected is empty 1179 [S] 200 NNTP Service Ready 1180 [C] GROUP example.empty.newsgroup 1181 [S] 211 0 0 0 example.empty.newsgroup 1182 [C] HEAD 1183 [S] 420 No current article selected 1185 Example of a failure due to the service being unavailable 1186 [S] 200 NNTP Service Ready 1187 [C] HEAD 1188 [S] 502 Service unavailable 1190 9.2.3 BODY 1192 BODY 1194 BODY [number] 1196 The BODY command behaves identically to the ARTICLE command 1197 except that, if the article exists, only the body is presented 1198 (the blank line separating the headers and body MUST NOT be 1199 included). 1201 9.2.3.1 Responses 1203 First form (message-id specified): 1205 222 0 a article retrieved, body follows (multiline) 1206 430 no such article 1207 502 service unavailable 1209 Second form (optional article number specified): 1211 222 n a article retrieved, body follows (multiline) 1212 412 no newsgroup selected 1213 420 no current article selected 1214 423 no such article number in this group 1215 502 service unavailable 1216 Expires: October 30, 2001 Academ Consulting Services 1217 March 2001 1218 Except that only the body is included in the response, the 222 1219 response behaves identically to the 220 response of the 1220 ARTICLE command. 1222 9.2.3.2 Examples 1224 Example of a successful retrieval of the body of an article 1225 (using no article number) 1226 [S] 200 NNTP Service Ready 1227 [C] GROUP misc.test 1228 [S] 211 1234 3000234 3002322 misc.test 1229 [C] BODY 1230 [S] 222 3000234 <45223423@to.to> 1231 [S] This is just a test article. 1232 [S] . 1234 Example of a successful retrieval of the body of an article by 1235 message-id 1236 [S] 200 NNTP Service Ready 1237 [C] BODY <45223423@to.to> 1238 [S] 222 0 <45223423@to.to> 1239 [S] This is just a test article. 1240 [S] . 1242 Example of an unsuccessful retrieval of the body of an article 1243 by message-id 1244 [S] 200 NNTP Service Ready 1245 [C] BODY 1246 [S] 430 No Such Article Found 1248 Example of an unsuccessful retrieval of the body of an article 1249 by number 1250 [S] 200 NNTP Service Ready 1251 [C] GROUP misc.test 1252 [S] 211 1234 3000234 3002322 misc.test 1253 [C] BODY 300256 1254 [S] 423 No such article number in this group 1256 Example of an unsuccessful retrieval of the body of an article 1257 by number because no newsgroup was selected first 1258 Expires: October 30, 2001 Academ Consulting Services 1259 March 2001 1260 [S] 200 NNTP Service Ready 1261 [C] BODY 300256 1262 [S] 412 No newsgroup selected 1264 Example of an attempt to retrieve the body of an article when 1265 the current group selected is empty 1266 [S] 200 NNTP Service Ready 1267 [C] GROUP example.empty.newsgroup 1268 [S] 211 0 0 0 example.empty.newsgroup 1269 [C] BODY 1270 [S] 420 No current article selected 1272 Example of a failure due to the service being unavailable 1273 [S] 200 NNTP Service Ready 1274 [C] BODY 1275 [S] 502 Service unavailable 1277 9.2.4 STAT 1279 STAT 1281 STAT [number] 1283 The STAT command behaves identically to the ARTICLE command 1284 except that, if the article exists, it is NOT presented to the 1285 client. 1286 This command allows the client to determine whether an article 1287 exists, and in the second form what its message-id is, without 1288 having to process an arbitrary amount of text. 1290 9.2.4.1 Responses 1292 First form (message-id specified): 1294 223 0 a article exists 1295 430 no such article 1296 502 service unavailable 1298 Second form (optional article number specified): 1300 223 n a article exists 1301 412 no newsgroup selected 1302 420 no current article selected 1303 423 no such article number in this group 1304 502 service unavailable 1305 Expires: October 30, 2001 Academ Consulting Services 1306 March 2001 1307 The parameters of the 223 response are identical to those that 1308 would have been given in a 220 response to the equivalent 1309 ARTICLE command. However, the response is NOT multiline. 1311 9.2.4.2 Examples 1313 Example of STAT on an existing article (using no article 1314 number) 1315 [S] 200 NNTP Service Ready 1316 [C] GROUP misc.test 1317 [S] 211 1234 3000234 3002322 misc.test 1318 [C] STAT 1319 [S] 223 3000234 <45223423@to.to> 1321 Example of a STAT of an existing article by message-id 1322 [S] 200 NNTP Service Ready 1323 [C] STAT <45223423@to.to> 1324 [S] 223 0 <45223423@to.to> 1326 Example of an STAT of an article not on the server by message- 1327 id 1328 [S] 200 NNTP Service Ready 1329 [C] STAT 1330 [S] 430 No Such Article Found 1332 Example of STAT of an article not in the server by number 1333 [S] 200 NNTP Service Ready 1334 [C] GROUP misc.test 1335 [S] 211 1234 3000234 3002322 misc.test 1336 [C] STAT 300256 1337 [S] 423 No such article number in this group 1339 Example of STAT of an article by number when no newsgroup was 1340 selected first 1341 [S] 200 NNTP Service Ready 1342 [C] STAT 300256 1343 [S] 412 No newsgroup selected 1344 Expires: October 30, 2001 Academ Consulting Services 1345 March 2001 1346 Example of STAT of an article when the current group selected 1347 is empty 1348 [S] 200 NNTP Service Ready 1349 [C] GROUP example.empty.newsgroup 1350 [S] 211 0 0 0 example.empty.newsgroup 1351 [C] STAT 1352 [S] 420 No current article selected 1354 Example of a failure due to the service being unavailable 1355 [S] 200 NNTP Service Ready 1356 [C] STAT 1357 [S] 502 Service unavailable 1359 9.3 Article Posting 1361 Article posting is done in one of two modes: individual 1362 article posting from news reading clients and article transfer 1363 from other news servers. 1365 9.3.1 POST 1367 POST 1369 If posting is allowed, response code 340 MUST be returned to 1370 indicate that the article to be posted should be sent. 1371 Response code 440 MUST be sent if that posting is prohibited 1372 for some installation-dependent reason. 1374 If posting is permitted, the article MUST be presented to the 1375 server by the client in the format specified by RFC 1036. The 1376 text forming the header and body of the message to be posted 1377 MUST be sent by the client using the conventions for text 1378 received from the news server: A single period (".") on a line 1379 indicates the end of the text, with lines starting with a 1380 period in the original text having that period doubled during 1381 transmission. 1383 Following the presentation of the termination sequence by the 1384 client, the server MUST return a response code indicating 1385 success or failure of the article transfer. Note that response 1386 codes 340 and 440 are used in direct response to the POST 1387 command. Others are returned following the sending of the 1388 article. 1390 Expires: October 30, 2001 Academ Consulting Services 1391 March 2001 1392 No attempt shall be made by the server to filter characters, 1393 fold or limit lines, or otherwise process incoming text. The 1394 intent is that the server just passes the incoming message to 1395 be posted to the server installation's news posting software, 1396 which is not part of this specification. 1398 9.3.1.1 Responses 1400 240 article received ok 1401 340 send article to be posted. End with . 1402 440 posting not allowed 1403 441 posting failed 1405 9.3.1.2 Examples 1407 Example of a successful posting 1408 [S] 200 NNTP Service Ready 1409 [C] POST 1410 [S] 340 Input article. End with . 1411 [C] From: demo@testdomain.com(Demo User) 1412 [C] Newsgroups: misc.test 1413 [C] Subject: I am just a test article 1414 [C] Organization: Testdomain, USA 1415 [C] 1416 [C] This is just a test article. 1417 [C] . 1418 [S] 240 Article received ok 1420 Example of an unsuccessful posting 1421 [S] 200 NNTP Service Ready 1422 [C] POST 1423 [S] 340 Input article. End with . 1424 [C] From: demo@testdomain.com(Demo User) 1425 [C] Newsgroups: misc.test 1426 [C] Subject: I am just a test article 1427 [C] Organization: Testdomain, USA 1428 [C] 1429 Expires: October 30, 2001 Academ Consulting Services 1430 March 2001 1431 [C] This is just a test article. 1432 [C] . 1433 [S] 441 Posting failed 1435 Example of an attempt to posting when posting is not allowed 1436 [S] 201 NNTP Service Ready, read-only 1437 [C] POST 1438 [S] 440 Posting not permitted 1440 9.3.2 IHAVE 1442 IHAVE 1444 The IHAVE command informs the server that the client has an 1445 article whose id is . If the server desires a copy 1446 of that article, it MUST return a response instructing the 1447 client to send the entire article. If the server does not want 1448 the article (if, for example, the server already has a copy of 1449 it), a response indicating that the article is not wanted MUST 1450 be returned. 1452 If transmission of the article is requested, the client MUST 1453 send the entire article, including header and body, in the 1454 manner specified for text transmission from the server. The 1455 server MUST return a response code indicating success or 1456 failure of the transferal of the article. 1458 This function differs from the POST command in that it is 1459 intended for use in transferring already-posted articles 1460 between hosts. It SHOULD NOT be used when the client is a 1461 personal news reading program. In particular, this function 1462 will invoke the server's news posting program with the 1463 appropriate settings (flags, options, etc.) to indicate that 1464 the forthcoming article is being forwarded from another host. 1465 However, the server MAY elect not to post or forward the 1466 article if after further examination of the article it deems 1467 it inappropriate to do so. Reasons for such subsequent 1468 rejection of an article may include such problems as 1469 inappropriate newsgroups or distributions, disk space 1470 limitations, article lengths, garbled headers, and the like. 1471 These are typically restrictions enforced by the server host's 1472 news software and not necessarily the NNTP server itself. 1474 9.3.2.1 Responses 1475 Expires: October 30, 2001 Academ Consulting Services 1476 March 2001 1477 235 article transferred ok 1478 335 send article to be transferred. End with . 1480 435 article not wanted - do not send it 1481 436 transfer failed - try again later 1482 437 article rejected - do not try again 1484 Because some host news posting software may not be able to 1485 immediately render status on the whether an article is 1486 inappropriate for posting or forwarding, an NNTP server MAY 1487 acknowledge the successful transfer of the article and later 1488 silently discard it. Thus, an NNTP server MAY return the 235 1489 acknowledgment code and later discard the received article. 1491 9.3.2.2 Examples 1493 Example of successfully sending an article to another site 1494 [S] 200 NNTP Service Ready 1495 [C] IHAVE 1496 [S] 335 Send it. End with . 1497 [C] Path: pathost!demo!somewhere!not-for-mail 1498 [C] From: nobody@nowhere.to (Demo User) 1499 [C] Newsgroups: misc.test 1500 [C] Subject: I am just a test article 1501 [C] Date: 6 Oct 1998 04:38:40 -0500 1502 [C] Organization: Nowhere, To 1503 [C] Message-ID: 1504 [C] 1505 [C] This is just a test article. 1506 [C] . 1507 [S] 235 Article transferred ok 1509 Example of sending an article to another site that rejects it 1510 [S] 200 NNTP Service Ready 1511 [C] IHAVE 1512 [S] 335 Send it. End with . 1513 [C] Path: pathost!demo!somewhere!not-for-mail 1514 Expires: October 30, 2001 Academ Consulting Services 1515 March 2001 1516 [C] From: nobody@nowhere.to (Demo User) 1517 [C] Newsgroups: misc.test 1518 [C] Subject: I am just a test article 1519 [C] Date: 6 Oct 1998 04:38:40 -0500 1520 [C] Organization: Nowhere, To 1521 [C] Message-ID: 1522 [C] 1523 [C] This is just a test article. 1524 [C] . 1525 [S] 437 Article rejected. Don't send again 1527 Example of sending an article to another site where the 1528 transfer fails 1529 [S] 200 NNTP Service Ready 1530 [C] IHAVE 1531 [S] 335 Send it. End with . 1532 [C] Path: pathost!demo!somewhere!not-for-mail 1533 [C] From: nobody@nowhere.to (Demo User) 1534 [C] Newsgroups: misc.test 1535 [C] Subject: I am just a test article 1536 [C] Date: 6 Oct 1998 04:38:40 -0500 1537 [C] Organization: Nowhere, To 1538 [C] Message-ID: 1539 [C] 1540 [C] This is just a test article. 1541 [C] . 1542 [S] 436 Transfer failed 1544 Example of sending an article to another site that rejects it 1545 [S] 200 NNTP Service Ready 1546 [C] IHAVE 1547 [S] 335 Send it. End with . 1548 [C] Path: pathost!demo!somewhere!not-for-mail 1549 Expires: October 30, 2001 Academ Consulting Services 1550 March 2001 1551 [C] From: nobody@nowhere.to (Demo User) 1552 [C] Newsgroups: misc.test 1553 [C] Subject: I am just a test article 1554 [C] Date: 6 Oct 1998 04:38:40 -0500 1555 [C] Organization: Nowhere, To 1556 [C] Message-ID: 1557 [C] 1558 [C] This is just a test article. 1559 [C] . 1560 [S] 435 Don't send it again 1562 9.4 The LIST Keyword 1564 9.4.1 LIST 1566 LIST [ACTIVE [wildmat]] 1568 The response to the LIST keyword with no parameters returns a 1569 list of valid newsgroups and associated information. Each 1570 newsgroup is sent as a line of text in the following format: 1571 group first last status 1572 where is the name of the newsgroup, is the 1573 number of the last known article currently in that newsgroup, 1574 is the number of the first article currently in the 1575 newsgroup, and indicates the current status of the 1576 group on this server. Typically, the will be consist 1577 of the US-ASCII character 'y' where posting is permitted, 'n' 1578 where posting is not permitted and 'm' where postings will be 1579 forwarded to the newsgroup moderator by the news server. Other 1580 status strings may exist. The definition of these other values 1581 and the circumstances under which they are returned is covered 1582 in other specifications. 1584 The and fields will always be numeric. They 1585 may have leading zeros. The field corresponds to the 1586 "reported low water mark" and the field corresponds to 1587 the "reported high water mark" described in the GROUP command 1588 (see Section 9.1.1.1). 1590 The status of a newsgroup only indicates how posts to that 1591 newsgroup are processed. It does not indicate if the current 1592 client is permitted to post. That is indicated by the status 1593 code returned as part of the greeting. 1595 Expires: October 30, 2001 Academ Consulting Services 1596 March 2001 1597 Please note that an empty list (i.e., the text body returned 1598 by this command consists only of the terminating period) is a 1599 possible valid response, and indicates that there are 1600 currently no valid newsgroups. 1602 If the optional wildmat parameter is specified, the list is 1603 limited to only the groups that match the pattern. 1605 Specifying a single group is usually very efficient for the 1606 server. Multiple groups may be specified by using wildmat 1607 patterns (described in section 5). 1609 9.4.1.1 Responses 1610 215 list of newsgroups follows 1612 9.4.1.2 Examples 1614 Example of LIST returning a list of newsgroups 1615 [S] 200 NNTP Service Ready 1616 [C] LIST 1617 [S] 215 list of newsgroups follows 1618 [S] misc.test 3000234 3002322 y 1619 [S] alt.fc-writers.recovery 1 4 y 1620 [S] tx.natives.recovery 56 89 y 1621 [S] . 1623 Example of LIST returning no newsgroups 1624 [S] 200 NNTP Service Ready 1625 [C] LIST 1626 [S] 215 list of newsgroups follows 1627 [S] . 1629 9.4.2 LIST ACTIVE.TIMES 1631 LIST ACTIVE.TIMES [wildmat] 1633 The active.times file is maintained by some news transport 1634 systems to contain information about who created a particular 1635 newsgroup and when. The format of this file includes three 1636 fields. The first field is the name of the newsgroup. The 1637 second is the time when this group was created on this news 1638 server measured in seconds since the start of January 1, 1970. 1639 The third is the email address of the entity that created the 1640 newsgroup. When executed, the information is displayed 1641 Expires: October 30, 2001 Academ Consulting Services 1642 March 2001 1643 following the 215 response. When display is completed, the 1644 server will send a period on a line by itself. If the 1645 information is not available, the server will return the 503 1646 error response. If the server does not recognize the command, 1647 it SHOULD return the 501 error response. 1649 If the optional wildmat parameter is specified, the list is 1650 limited to only the groups that match the pattern. 1652 Specifying a single group is usually very efficient for the 1653 server. Multiple groups may be specified by using wildmat 1654 patterns (described in section 5). 1656 9.4.2.1 Responses 1658 215 information follows 1659 501 Syntax error 1660 503 program error, function not performed 1662 9.4.2.2 Examples 1664 Example of LIST ACTIVE.TIMES returning a list of newsgroups 1665 [S] 200 NNTP Service Ready 1666 [C] LIST ACTIVE.TIMES 1667 [S] 215 information follows 1668 [S] misc.test 930445408 1669 [S] alt.rfc-writers.recovery 930562309 1670 [S] tx.natives.recovery 930678923 1671 [S] . 1673 Example of LIST ACTIVE.TIMES returning an error (The server 1674 software is not configured to maintain this information, but 1675 does recognize the command as valid.) 1676 [S] 200 NNTP Service Ready 1677 [C] LIST ACTIVE.TIMES 1678 [S] 503 program error, function not performed 1680 Example of LIST ACTIVE.TIMES sent to a server that does not 1681 recognize this argument (e.g. The software does not maintain 1682 this information.) 1683 [S] 200 NNTP Service Ready 1684 Expires: October 30, 2001 Academ Consulting Services 1685 March 2001 1686 [C] LIST ACTIVE.TIMES 1687 [S] 501 Syntax Error 1689 9.4.3 LIST DISTRIBUTIONS 1691 LIST DISTRIBUTIONS 1693 The distributions file is maintained by some news transport 1694 systems to contain information about valid values for the 1695 Distribution: line in a news article header and about what the 1696 values mean. Each line contains two fields, the value and a 1697 short explanation on the meaning of the value. When executed, 1698 the information is displayed following the 215 response. When 1699 display is completed, the server will send a period on a line 1700 by itself. If the information is not available, the server 1701 will return the 503 error response. If the server does not 1702 recognize this command, it SHOULD return the 501 error 1703 response. 1705 9.4.3.1 Responses 1707 215 information follows 1708 501 Syntax error 1709 503 program error, function not performed 1711 9.4.3.2 Examples 1713 Example of LIST DISTRIBUTIONS returning a list of newsgroups 1714 [S] 200 NNTP Service Ready 1715 [C] LIST DISTRIBUTIONS 1716 [S] 215 information follows 1717 [S] usa United States of America 1718 [S] na North America 1719 [S] world All over the World 1720 [S] . 1722 Example of LIST DISTRIBUTIONS returning an error (e.g. The 1723 server software is not configured to maintain this 1724 information, but does recognize the command as valid.) 1725 [S] 200 NNTP Service Ready 1726 [C] LIST DISTRIBUTIONS 1727 [S] 503 program error, function not performed 1728 Expires: October 30, 2001 Academ Consulting Services 1729 March 2001 1730 Example of LIST DISTRIBUTIONS sent to a server that does not 1731 recognize the command (e.g. The server does not maintain this 1732 information regardless of configuration.) 1733 [S] 200 NNTP Service Ready 1734 [C] LIST DISTRIBUTIONS 1735 [S] 501 Syntax Error 1737 9.4.4 LIST DISTRIB.PATS 1739 LIST DISTRIB.PATS 1741 The distrib.pats file is maintained by some news transport 1742 systems to allow clients to choose a value for the 1743 Distribution: line in the header of a news article being 1744 posted. The information returned consists of lines, in no 1745 particular order, each of which contains three fields 1746 separated by colons. These fields are a weight, a group name 1747 or wildmat pattern, and a Distribution: value, in that order. 1749 The client MAY use this information to select a Distribution: 1750 value based on the name of a newsgroup. To do so, it should 1751 determine the lines whose second field matches the newsgroup 1752 name, select that line with the highest weight (with 0 being 1753 the lowest), and use the Distribution: field from that line. 1755 When executed, the information is displayed following the 215 1756 response. When display is completed, the server will send a 1757 period on a line by itself. If the information is not 1758 available, the server will return the 503 error response. If 1759 this command is not recognized, the server SHOULD return the 1760 501 error response. 1762 9.4.4.1 Responses 1764 215 information follows 1765 501 Syntax error 1766 503 program error, function not performed 1768 9.4.4.2 Examples 1770 Example of LIST DISTRIB.PATS returning a list of newsgroups 1771 [S] 200 NNTP Service Ready 1772 [C] LIST DISTRIB.PATS 1773 [S] 215 information follows 1774 [S] 10:local.*:local 1775 Expires: October 30, 2001 Academ Consulting Services 1776 March 2001 1777 [S] . 1779 Example of LIST DISTRIB.PATS returning an error (e.g. The 1780 server software is not configured to maintain this 1781 information, but does recognize the command as valid.) 1782 [S] 200 NNTP Service Ready 1783 [C] LIST DISTRIB.PATS 1784 [S] 503 program error, function not performed 1786 Example of LIST DISTRIB.PATS sent to a server that does not 1787 recognize the command (e.g. The software does not maintain 1788 this information regardless of configuration.) 1789 [S] 200 NNTP Service Ready 1790 [C] LIST DISTRIB.PATS 1791 [S] 501 Syntax Error 1793 9.4.5 LIST NEWSGROUPS 1795 LIST NEWSGROUPS [wildmat] 1797 The newsgroups file is maintained by some news transport 1798 systems to contain the name of each newsgroup that is 1799 active on the server and a short description about the 1800 purpose of each newsgroup. Each line in the file contains 1801 two fields, the newsgroup name and a short explanation of 1802 the purpose of that newsgroup. When executed, the 1803 information is displayed following the 215 response. When 1804 display is completed, the server will send a period on a 1805 line by itself. If the information is not available, the 1806 server will return the 503 response. If the server does not 1807 recognize the command it should return a 501 response. If 1808 the optional matching parameter is specified, the list is 1809 limited to only the groups that match the pattern (no 1810 matching is done on the group descriptions). Specifying a 1811 single group is usually very efficient for the server, and 1812 multiple groups may be specified by using a wildmat(see 1813 section 5), not regular expressions. If nothing is matched 1814 an empty list is returned, not an error. 1816 9.4.5.1 Responses 1818 215 information follows 1819 501 Syntax error 1820 503 program error, function not performed 1821 Expires: October 30, 2001 Academ Consulting Services 1822 March 2001 1823 9.4.5.2 Examples 1825 Example of LIST NEWSGROUPS returning a list of newsgroups 1826 [S] 200 NNTP Service Ready 1827 [C] LIST NEWSGROUPS 1828 [S] 215 information follows 1829 [S] misc.test General Usenet testing 1830 [S] alt.rfc-writers.recovery RFC Writers Recovery 1831 [S] tx.natives.recovery Texas Natives Recovery 1832 [S] . 1834 Example of LIST NEWSGROUPS returning an error (e.g. The server 1835 software recognizes the command as valid, but the information 1836 is not available.) 1837 [S] 200 NNTP Service Ready 1838 [C] LIST NEWSGROUPS 1839 [S] 503 program error, function not performed 1841 9.5 Standard extensions 1843 Each of the following sections describes an extension that a 1844 server MAY provide. If the server provides the extension, it 1845 MUST include the appropriate extension label in the response 1846 to LIST EXTENSIONS. If it does not provide it, it MUST NOT 1847 include the appropriate extension label. The descriptions of 1848 facilities in each section are written as if the extension is 1849 provided. If it is not provided, the entire section should be 1850 ignored. 1852 9.5.1 LISTGROUP extension 1854 This extension provides one command and has the extension 1855 label LISTGROUP. 1857 9.5.1.1 The LISTGROUP Command 1859 LISTGROUP [ggg] 1861 The LISTGROUP command is used to get a listing of all the 1862 article numbers in a particular newsgroup. 1864 Expires: October 30, 2001 Academ Consulting Services 1865 March 2001 1866 The optional parameter ggg is the name of the newsgroup to 1867 be selected (e.g. "news.software.b"). A list of valid 1868 newsgroups may be obtained from the LIST command. If no 1869 group is specified, the current group is used as the 1870 default argument. 1872 The successful selection response will be a list of the 1873 article numbers in the group followed by a period on a line 1874 by itself. The list starts on the next line following the 1875 211 response code. 1877 When a valid group is selected by means of this command, 1878 the internally maintained "current article pointer" MUST be 1879 set to the first article in the group and the name of the 1880 current newsgroup MUST be set to the selected newsgroup 1881 name. If an invalid group is specified, the previously 1882 selected group and article remain selected. If an empty 1883 newsgroup is selected, the "current article pointer" may be 1884 in an indeterminate state and should not be used. 1886 The LISTGROUP keyword MAY be used by a client as a 1887 replacement for the GROUP command in establishing a valid 1888 "current article pointer." After a successful response is 1889 received, any other command may be used that depends on 1890 having the "current article pointer" be valid. 1892 The group name MUST match a newsgroup obtained from the 1893 LIST command or an error will result, else the server will 1894 respond with the 411 error code. 1896 A server that does not implement this command SHOULD return 1897 a 500 error response. 1899 9.5.1.1.1 Responses 1901 211 list of article numbers follow 1902 411 No such group 1903 412 Not currently in newsgroup 1904 500 Command not recognized 1906 9.5.1.1.2 Examples 1908 Example of a successful execution with a group that exists on 1909 the server 1910 [S] 200 NNTP Service Ready 1911 [C] LISTGROUP misc.test 1912 [S] 211 list of article numbers follow 1913 Expires: October 30, 2001 Academ Consulting Services 1914 March 2001 1915 [S] 3000234 1916 [S] 3000237 1917 [S] 3000238 1918 [S] 3000239 1919 [S] 3002322 1920 [S] . 1922 Example of an unsuccessful execution with a group that does 1923 not exist on the server 1924 [S] 200 NNTP Service Ready 1925 [C] LISTGROUP this.group.is.not.here 1926 [S] 411 no such group 1928 Example of an attempt to retrieve an article when the current 1929 group selected is empty 1930 [S] 200 NNTP Service Ready 1931 [C] LISTGROUP example.empty.newsgroup 1932 [S] 412 No current article selected 1934 9.5.2 The OVER Extension 1936 This extension provides two commands, OVER and LIST 1937 OVERVIEW.FMT. The label for this extension is OVER. 1939 9.5.2.1 LIST OVERVIEW.FMT 1941 LIST OVERVIEW.FMT 1943 The overview.fmt file is maintained by some news transport 1944 systems to contain the order in which header information is 1945 stored in the overview databases for each newsgroup. When 1946 executed, news article header fields are displayed one line at 1947 a time in the order in which they are stored in the overview 1948 database[6] following the 215 response. When display is 1949 completed, the server will send a period on a line by itself. 1951 If the information is not available, the server will return 1952 the 503 response. 1953 If the header has the word "full" (without quotes) after the 1954 colon, the header's name is prepended to its field in the 1955 output returned by the server. 1957 This is command is part of the optional OVER extension which 1958 includes the OVER command defined in section . If the OVER 1959 Expires: October 30, 2001 Academ Consulting Services 1960 March 2001 1961 extension is not implemented, then this command MUST NOT be 1962 implemented. If that case, the server MUST return a 501 error 1963 response when this command is presented by the client. 1965 9.5.2.1.1 Responses 1967 215 information follows 1968 501 Syntax Error 1969 503 program error, function not performed 1971 9.5.2.1.2 Examples 1973 Example of LIST OVERVIEW.FMT returning a list of newsgroups 1974 [S] 200 NNTP Service Ready 1975 [C] LIST OVERVIEW.FMT 1976 [S] 215 Order of fields in overview database. 1977 [S] Subject: 1978 [S] From: 1979 [S] Date: 1980 [S] Message-ID: 1981 [S] . 1983 Example of LIST OVERVIEW.FMT returning an error 1984 [S] 200 NNTP Service Ready 1985 [C] LIST OVERVIEW.FMT 1986 [S] 503 program error, function not performed 1988 9.5.2.2 OVER 1990 OVER [range] 1992 The OVER command returns specific header information for the 1993 article(s) specified from the current selected group. The 1994 information returned in the response to this command can be 1995 used by clients to follow discussion threads. 1996 The optional range argument may be any of the following: 1998 . an article number 1999 . an article number followed by a dash to indicate all 2000 following 2001 Expires: October 30, 2001 Academ Consulting Services 2002 March 2001 2003 . an article number followed by a dash followed by another 2004 article number 2006 If no argument is specified, then information from the current 2007 article is displayed. Successful responses start with a 224 2008 response followed by the overview information for all matched 2009 messages. Once the output is complete, a period is sent on a 2010 line by itself. If no argument is specified, the information 2011 for the current article is returned. A newsgroup must have 2012 been selected earlier, else a 412 error response is returned. 2013 If no articles are in the range specified, the server returns 2014 a 420 error response. A 502 response will be returned if the 2015 client only has permission to transfer articles. A 500 2016 response SHOULD be returned by servers do not implement this 2017 command. 2019 The output consists of one line per article, sorted in 2020 numerical order of article number. Each line consists of a 2021 number of fields separated by an US-ASCII TAB character. The 2022 first 8 fields MUST be the following, in order: 2023 article number, subject, author, date, message-ID, references, 2024 byte count, line count 2026 The content of any subsequent field is given by the response 2027 to the LIST OVERVIEW.FMT command. A field may be empty (in 2028 which case there will be two adjacent US-ASCII tabs, and a 2029 sequence of trailing US-ASCII tabs may be omitted). Any 2030 sequence of US-ASCII space or non-printing characters in a 2031 field MUST be replaced by a single US-ASCII space. 2033 The server SHOULD not produce output for articles that no 2034 longer exist. 2036 9.5.2.2.1 Responses 2038 224 Overview information follows 2039 412 No newsgroup current selected 2040 420 No article(s) selected 2041 500 Command not recognized 2042 502 Service Unavailable 2044 9.5.2.2.2 Examples 2046 Example of a successful retrieval of overview information for 2047 an article (using no article number) 2048 [S] 200 NNTP Service Ready 2049 Expires: October 30, 2001 Academ Consulting Services 2050 March 2001 2051 [C] GROUP misc.test 2052 [S] 211 1234 3000234 3002322 misc.test 2053 [C] OVER 2054 [S] 224 Overview information follows 2055 300234|I am just a test article|nobody@nowhere.to 2056 (Demo User)|6 Oct 1998 04:38:40 -0500| 2057 <45223423@to.to> 2058 [S] . 2059 [Please note that the line that begins with 300234 is all one 2060 line that has been wrapped for readability. A vertical bar has 2061 been inserted to show where the US-ASCII TAB should actually 2062 be.] 2064 Example of an unsuccessful retrieval of overview information 2065 on an article by number 2066 [S] 200 NNTP Service Ready 2067 [C] GROUP misc.test 2068 [S] 211 1234 3000234 3002322 misc.test 2069 [C] OVER 300256 2070 [S] 420 No such article in this group 2072 Example of an unsuccessful retrieval of overview information 2073 by number because no newsgroup was selected first 2074 [S] 200 NNTP Service Ready 2075 [C] OVER 2076 [S] 412 No newsgroup selected 2078 Example of an attempt to retrieve an article when the current 2079 group selected is empty 2080 [S] 200 NNTP Service Ready 2081 [C] GROUP example.empty.newsgroup 2082 [S] 211 0 0 0 example.empty.newsgroup 2083 [C] OVER 2084 [S] 420 No current article selected 2086 9.5.3 The HDR Extension 2087 This extension provides one new command, HDR. The label for 2088 this extension is PAT. 2090 Expires: October 30, 2001 Academ Consulting Services 2091 March 2001 2092 9.5.3.1 HDR 2094 HDR range| 2096 The HDR command is used to retrieve specific headers from 2097 specific articles in the currently selected group. 2099 The required header parameter is the name of a header line 2100 (e.g. "subject") in a newsgroup article. See RFC-1036 for a 2101 list of valid header lines. The required range argument may be 2102 any of the following: 2104 . an article number 2105 . an article number followed by a dash to indicate all 2106 following 2107 . an article number followed by a dash followed by another 2108 article number. 2110 The required message-id argument indicates a specific article. 2111 The range and message-id arguments are mutually exclusive. 2113 A successful response consists of a 221 code followed by the 2114 output from the command. The output consists of one line for 2115 each article where the relevant header line exists. The line 2116 consists of the article number, a US-ASCII space, and then the 2117 contents of the header (without the header name). A valid 2118 response includes an empty list (indicating that there were no 2119 matches). Once the output is complete, a period is sent on a 2120 line by itself. If the optional argument is a message-id and 2121 no such article exists, a 430 error response shall be 2122 returned. A 502 response shall be returned if the client only 2123 has permission to transfer articles. A 500 response SHOULD be 2124 issued by all servers that do not recognize this command. 2126 9.5.3.1.1 Responses 2128 221 Header follows 2129 412 no newsgroup selected 2130 430 no such article 2131 500 Command not recognized 2132 502 Service Unavailable 2134 9.5.3.1.2 Examples 2136 Example of a successful retrieval of subject lines from a 2137 range of articles 2138 Expires: October 30, 2001 Academ Consulting Services 2139 March 2001 2140 [S] 200 NNTP Service Ready 2141 [C] GROUP misc.test 2142 [S] 211 1234 3000234 3002322 misc.test 2143 [C] HDR Subject 3000234-300238 2144 [S] 221 Header Follows 2145 [S] 3000234 I am just a test article 2146 [S] 3000237 Re: I am just a test article 2147 [S] 3000238 Ditto 2148 [S] . 2150 Example of a successful retrieval of header from an article by 2151 message-id 2152 [S] 200 NNTP Service Ready 2153 [C] GROUP misc.test 2154 [S] 211 1234 3000234 3002322 misc.test 2155 [C] HDR subject 2156 [S] 221 Header information follows 2157 [S] 3000345 I am just a test article 2158 [S] . 2160 Example of an unsuccessful retrieval of a header from an 2161 article by message-id 2162 [S] 200 NNTP Service Ready 2163 [C] HDR subject 2164 [S] 430 No Such Article Found 2166 Example of an unsuccessful retrieval of headers from articles 2167 by number because no newsgroup was selected first 2168 [S] 200 NNTP Service Ready 2169 [C] HDR subject 300256- 2170 [S] 412 No newsgroup selected 2172 Example of an unsuccessful retrieval of headers from articles 2173 by message-id because no newsgroup was selected first 2174 [S] 200 NNTP Service Ready 2175 [C] HDR subject 2176 [S] 412 No newsgroup selected 2177 Expires: October 30, 2001 Academ Consulting Services 2178 March 2001 2179 Example of retrieving header information when the current 2180 group selected is empty 2181 [S] 200 NNTP Service Ready 2182 [C] GROUP example.empty.newsgroup 2183 [S] 211 0 0 0 example.empty.newsgroup 2184 [C] HDR subject 0- 2185 [S] 221 Headers follow 2186 . 2188 Example of a failure due to restrictions configured into the 2189 server 2190 [S] 200 NNTP Service Ready 2191 [C] GROUP news.group 2192 [S] 211 1234 3000234 3002322 misc.test 2193 [C] HDR Subject 3000234-300238 2194 [S] 502 Service Unavailable 2196 10. The CONCLUSION Step 2198 10.1 QUIT 2200 QUIT 2202 The server process MUST acknowledge the QUIT command and then 2203 close the connection to the client. This is the preferred 2204 method for a client to indicate that it has finished all its 2205 transactions with the NNTP server. 2207 If a client simply disconnects (or the connection times out or 2208 some other fault occurs), the server MUST gracefully cease its 2209 attempts to service the client, disconnecting from its end if 2210 necessary. 2212 10.1.1 Responses 2214 205 closing connection - goodbye! 2216 10.1.2 Example 2217 [S] 200 NNTP Service Ready 2218 [C] QUIT 2219 [S] 205 closing connection 2220 Expires: October 30, 2001 Academ Consulting Services 2221 March 2001 2222 [Server closes connection.] 2224 11. Other Keywords 2226 There are other keywords that may be used at any time between 2227 the beginning of a session and its termination. Using these 2228 keywords does not alter any state information, but the 2229 response generated from the use of these keywords may provide 2230 useful information to clients that use them. 2232 11.1 DATE 2234 DATE 2236 This command exists to help clients find out the current 2237 Coordinated Universal Time[7] from the server's perspective. 2238 This command SHOULD NOT be used as a substitute for NTP[8], 2239 but to provide information that might be useful when using the 2240 NEWNEWS command (see section 11.4). A system providing NNTP 2241 service SHOULD implement NTP for the purposes of keeping the 2242 system clock as accurate as possible. 2243 This command returns a one-line response code of 111 followed 2244 by the date and time on the server in the form YYYYMMDDhhmmss. 2246 11.1.1 Responses 2248 111 YYYYMMDDhhmmss 2250 11.1.2 Example 2251 [S] 200 NNTP Service Ready 2252 [C] DATE 2253 [S] 111 19990623135624 2255 11.2 The HELP Command 2257 HELP 2259 This command provides a short summary of commands that are 2260 understood by this implementation of the server. The help text 2261 will be presented as a textual response terminated by a single 2262 period on a line by itself. 2264 This text is not guaranteed to be in any particular format and 2265 SHALL NOT be used by clients as a replacement for the LIST 2266 EXTENSIONS command described in section 8.1. 2268 Expires: October 30, 2001 Academ Consulting Services 2269 March 2001 2271 11.2.1 Responses 2273 100 help text follows 2275 11.2.2 Example 2276 [S] 200 NNTP Service Ready 2277 [C] HELP 2278 [S] 100 Help text follows 2279 [S] This is some help text. There is no specific 2280 [S] formatting requirement for this test, though 2281 [S] it is customary for it to list the valid commands 2282 [S] and give a brief definition of what they do 2283 [S] . 2285 11.3 NEWGROUPS 2287 NEWGROUPS date time [GMT] 2289 A list of newsgroups created since MUST be 2290 listed in the same format as the LIST command. 2292 The date is sent as 6 or 8 digits in the format [XX]YYMMDD, 2293 where XX is the first two digits of the year, YY is the last 2294 two digits of the year, MM is the two digits of the month 2295 (with leading zero, if appropriate), and DD is the day of the 2296 month (with leading zero, if appropriate). If the first two 2297 digits of the year are not specified, the year is to be taken 2298 from the current century if YY is smaller than or equal to the 2299 current year, otherwise the year is from the previous century. 2301 Time must also be specified. It must be as 6 digits HHMMSS 2302 with HH being hours in the 24-hour clock 00-23, MM minutes 00- 2303 59, and SS seconds 00-60, which allows for leap seconds. The 2304 token "GMT" specifies that the date and time are given in 2305 Coordinated Universal Time. If the token "GMT" is omitted then 2306 the date and time are specified in the server's local 2307 timezone. Note that there is no way within this specification 2308 of NNTP to establish the server's local timezone. 2310 Note that an empty list (i.e., the text body returned by this 2311 command consists only of the terminating period) is a possible 2312 valid response, and indicates that there are currently no new 2313 newsgroups. 2315 Expires: October 30, 2001 Academ Consulting Services 2316 March 2001 2317 Clients SHOULD make all queries using Coordinated Universal 2318 Time when possible. 2320 11.3.1 Responses 2322 231 list of new newsgroups follows 2324 11.3.2 Examples 2326 Example where there are new groups 2327 [S] 200 NNTP Service Ready 2328 [C] NEWGROUPS 19990624 000000 GMT 2329 [S] 230 list of new newsgroups follows 2330 [S] alt.rfc-writers.recovery 2331 [S] tx.natives.recovery 2332 [S] . 2334 Example where there are no new groups 2335 [S] 200 NNTP Service Ready 2336 [C] NEWGROUPS 19990624 000000 GMT 2337 [S] 230 list of new newsgroups follows 2338 [S] . 2340 11.4 NEWNEWS 2342 NEWNEWS newsgroups date time [GMT] 2344 A list of message-ids of articles posted or received to the 2345 specified newsgroup or groups since "date" will be listed. The 2346 format of the listing will be one message-id per line, as 2347 though text were being sent. Each message-id SHALL appear only 2348 once in a response. The order of the response has no specific 2349 significance and may vary from response to response in the 2350 same session. A single line consisting solely of one period 2351 followed by CR-LF will terminate the list. 2353 Date and time are in the same format as the NEWGROUPS command. 2354 The newsgroups parameter MUST be in wildmat format and MAY 2355 consist of multiple wildmat constructs separated by an US- 2356 ASCII comma character. 2358 Note that an empty list (i.e., the text body returned by this 2359 command consists only of the terminating period) is a possible 2360 valid response, and indicates that there is currently no new 2361 news. 2363 Expires: October 30, 2001 Academ Consulting Services 2364 March 2001 2365 Clients SHOULD make all queries in Coordinated Universal Time 2366 when possible. 2368 11.4.1 Responses 2370 230 list of new articles by message-id follows 2372 11.4.2 Examples 2374 Example where there are new articles 2375 [S] 200 NNTP Service Ready 2376 [C] NEWNEWS news.*,sci.* 19990624 000000 2377 [S] 230 list of new articles by message-id follows 2378 [S] 2379 [S] 2381 Example where there are no new articles 2382 [S] 200 NNTP Service Ready 2383 [C] NEWNEWS alt.* 19990624 000000 2384 [S] 230 list of new articles by message-id follows 2385 [S] . 2387 12. Framework for NNTP Extensions 2389 Although NNTP is widely and robustly deployed, some parts of 2390 the Internet community might wish to extend the NNTP service. 2391 This memo defines a means whereby an extended NNTP client may 2392 query the server to determine the service extensions that it 2393 supports. 2395 It must be emphasized that any extension to the NNTP service 2396 should not be considered lightly. NNTP's strength comes 2397 primarily from its simplicity. Experience with many protocols 2398 has shown that: 2400 Protocols with few options tend towards ubiquity, whilst 2401 protocols with many options tend towards obscurity. 2403 This means that each and every extension, regardless of its 2404 benefits, must be carefully scrutinized with respect to its 2405 implementation, deployment, and interoperability costs. In 2406 many cases, the cost of extending the NNTP service will likely 2407 outweigh the benefit. 2409 Expires: October 30, 2001 Academ Consulting Services 2410 March 2001 2411 Given this environment, the framework for the extensions 2412 described in this memo consists of: 2413 a)a mechanism for clients to determine a server's available 2414 extensions 2415 b)a registry of NNTP service extensions 2417 The LIST EXTENSIONS command is described in section 8.1 of 2418 this memo and is the mechanism for clients to use to determine 2419 what extensions are available for client use. 2421 The IANA shall maintain a registry of NNTP service extensions. 2422 An extension is identified by a unique extension-label, which 2423 is a string of 1 to 12 uppercase letters. The extension-label 2424 will often be the name of a new command that the extension 2425 adds. However this is not a requirement: an extension might 2426 not add any new commands or keywords. 2428 An extension is either a private extension or else it is 2429 included in the IANA registry and is defined in an RFC. Such 2430 RFCs either must be on the standards-track or must define an 2431 IESG-approved experimental protocol. 2433 The definition of an extension must include: 2435 . a descriptive name for the extension 2436 . the extension-label (which is returned by LIST EXTENSIONS 2437 to indicate to the client that the server supports this 2438 particular extension) 2439 . the syntax, values, and meanings of any parameters 2440 following the extension-label in the output of LIST 2441 EXTENSIONS 2442 . any new NNTP keywords associated with the extension 2443 . the syntax and possible values of parameters associated 2444 with the new NNTP keywords 2445 . any new parameters the extension associates with any 2446 other pre-existing NNTP keywords 2447 . how support for the extension affects the behavior of a 2448 server and NNTP client 2449 . any increase in the maximum length of commands over the 2450 value specified in this memo 2452 The extension-label of private extensions MUST begin with "X". 2453 The extension-label of registered extensions MUST NOT begin 2454 with "X". 2456 Any keyword values presented in the NNTP response that do not 2457 begin with "X" MUST correspond to a standard, standards-track, 2458 Expires: October 30, 2001 Academ Consulting Services 2459 March 2001 2460 or IESG-approved experimental NNTP service extension 2461 registered with IANA. A conforming server MUST NOT offer non 2462 "X" prefixed keyword values that are not described in a 2463 registered extension. 2465 Except where stated otherwise, the commands in this document 2466 are understood (even if not supported) by all servers and are 2467 not described in the list of features returned by the LIST 2468 EXTENSIONS command. 2470 A server MAY provide additional keywords - either new commands 2471 or new parameters to existing commands - as part of a private 2472 extension. These new keywords MUST begin with "X". 2474 A server MUST NOT send different response codes to basic NNTP 2475 commands documented here or commands documented in registered 2476 extensions in response to the availability or use of a private 2477 extension. 2479 12.1 Initial IANA Registry 2481 The IANA's initial registry of NNTP service extensions 2482 consists of these entries: 2484 Service Extension NNTP Extension Label Added Behavior 2486 Overview Support OVER Defined in this 2487 document 2488 Specific Article LISTGROUP Defined in this 2489 Numbers document 2490 Header Pattern HDR Defined in this 2491 Matching document 2493 13. Augmented BNF[9] Syntax for NNTP Commands 2495 This syntax defines the non-terminal "command". The non-terminal 2496 "parameter" is used for command parameters whose syntax is 2497 specified elsewhere. The syntax is in alphabetical order. Note 2498 that ABNF strings are case insensitive. 2500 article-command = "ARTICLE" [1*WSP (msg-id / article-number)] 2501 *WSP CRLF 2502 article-number = 1*16DIGIT 2503 argument = parameter ; excluding sequence ".." 2504 body-command = "BODY" [1*WSP (msg-id / article-number)] *WSP 2505 CRLF 2506 command = article-command / 2507 body-command / 2508 Expires: October 30, 2001 Academ Consulting Services 2509 March 2001 2510 date-command / 2511 group-command / 2512 head-command / 2513 help-command / 2514 ihave-command / 2515 last-command / 2516 list-active-times-command / 2517 list-distrib-pats-command / 2518 list-distributions-command / 2519 list-extensions-command / 2520 list-newsgroups-command / 2521 list-overview-fmt-command / 2522 list-command / 2523 listgroup-command / 2524 mode-reader-command / 2525 newgroups-command / 2526 newnews-command / 2527 next-command / 2528 over-command / 2529 hdr-command / 2530 post-command / 2531 quit-command / 2532 stat-command 2533 CR = %x0D 2534 CRLF = CR LF 2535 date-command = "DATE" *WSP CRLF 2536 date = 6*8DIGIT 2537 DIGIT = %x30-39 2538 group-command = "GROUP" 1*WSP newsgroup *WSP CRLF 2539 hdr-command = "PAT" 1*WSP header 1*WSP (range / msg-id) *WSP 2540 CRLF 2541 head-command = "HEAD" [1*WSP (msg-id / article-number)] *WSP 2542 CRLF 2543 header = parameter 2544 help-command = "HELP" *WSP CRLF 2545 HT = %x09 2546 ihave-command = "IHAVE" 1*WSP msg-id *WSP CRLF 2547 last-command = "LAST" *WSP CRLF 2548 LF = %x0A 2549 list-active-times-command = "LIST" 1*WSP "ACTIVE.TIMES" 2550 [1*WSP wildmat] *WSP CRLF 2551 list-command = "LIST" [1*WSP "ACTIVE" [1*WSP wildmat]] *WSP 2552 CRLF 2553 list-distrib-pats-command = "LIST" 1*WSP "DISTRIB.PATS" *WSP 2554 CRLF 2555 list-distributions-command = "LIST" 1*WSP "DISTRIBUTIONS" *WSP 2556 CRLF 2557 Expires: October 30, 2001 Academ Consulting Services 2558 March 2001 2559 list-extensions-command = "LIST" 1*WSP "EXTENSIONS" *WSP CRLF 2560 list-newsgroups-command = "LIST" 1*WSP "NEWSGROUPS" [1*WSP 2561 wildmat] 2562 *WSP CRLF 2563 list-overview-fmt-command = "LIST" 1*WSP "OVERVIEW.FMT" *WSP 2564 CRLF 2565 listgroup-command = "LISTGROUP" [1*WSP newsgroup] *WSP CRLF 2566 mode-reader-command = "MODE" 1*WSP "READER" *WSP CRLF 2567 msg-id = 2568 newgroups-command = "NEWGROUPS" 1*WSP date 1*WSP time [1*WSP 2569 "GMT"] *WSP CRLF 2570 newnews-command = "NEWNEWS" 1*WSP newsgroup *("," newsgroup) 2571 1*WSP date 1*WSP time [1*WSP "GMT"] 2572 *WSP CRLF 2573 newsgroup = parameter 2574 next-command = "NEXT" *WSP CRLF 2575 over-command = "OVER" [1*WSP range] *WSP CRLF 2576 parameter = 1*(%x21-FF) ; generic command parameter 2577 post-command = "POST" *WSP CRLF 2578 quit-command = "QUIT" *WSP CRLF 2579 range = article-number ["-" [article-number]] 2580 SP = %x20 2581 stat-command = "STAT" [1*WSP (msg-id / article-number)] *WSP 2582 CRLF 2583 time = 6DIGIT 2584 UTF-8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4 / UTF8-5 / UTF8-6 2585 UTF8-1 = %x80-BF 2586 UTF8-2 = %xC0-DF UTF8-1 2587 UTF8-3 = %xE0-EF 2UTF8-1 2588 UTF8-4 = %xF0-F7 3UTF8-1 2589 UTF8-5 = %xF8-FB 4UTF8-1 2590 UTF8-6 = %xFC-FD 5UTF8-1 2591 wildmat = ["!"]1*("*" / "?" / wildmat-exact / wildmat-set / 2592 "\" (%x22-7F / UTF-8-non-ascii)) 2593 wildmat-exact = %x22-29 / %x2B-3E / %x40-5A / %x5D-7F / UTF-8- 2594 non-ascii ; exclude space ! * ? [ \ 2595 wildmat-non-hyphen = %x21-2C / %x2E-7F / UTF-8-non-ascii ; 2596 exclude space - 2597 wildmat-set = "[" ["^"] ["]" / "-"] *(wildmat-non-hyphen"["-" 2598 wildmat-non-hyphen]) ["-"] 2599 WSP = SP / HT 2601 14. Security Considerations 2603 This section is meant to inform application developers, 2604 information providers, and users of the security limitations 2605 in NNTP as described by this document. The discussion does not 2606 Expires: October 30, 2001 Academ Consulting Services 2607 March 2001 2608 include definitive solutions to the problems revealed, though 2609 it does make some suggestions for reducing security risks. 2611 14.1 Personal and Proprietary Information 2613 NNTP, because it was created to distribute network news 2614 articles, will forward whatever information is stored in those 2615 articles. Specification of that information is outside this 2616 scope of this document, but it is likely that some personal 2617 and/or proprietary information is available in some of those 2618 articles. It is very important that designers and implementers 2619 provide informative warnings to users so personal and/or 2620 proprietary information is not disclosed inadvertently. 2622 Additionally, effective and easily understood mechanisms to 2623 manage the distribution of news articles must be provided to 2624 NNTP Server administrators, so that they are able to report 2625 with confidence what information is and is not being forwarded 2626 in news articles passing though their servers. 2628 14.2 Abuse of Server Log Information 2630 A server is in the position to save session data about a 2631 user's requests that might identify their reading patterns or 2632 subjects of interest. This information is clearly confidential 2633 in nature and its handling can be constrained by law in 2634 certain countries. People using the NNTP protocol to provide 2635 data are responsible for ensuring that such material is not 2636 distributed without the permission of any individuals that are 2637 identifiable by the published results. 2639 14.3 DNS Spoofing 2641 Clients and Servers using NNTP rely heavily on the Domain Name 2642 Service, and are thus generally prone to security attacks 2643 based on the deliberate misassociation of IP addresses and DNS 2644 names. Clients and Servers need to be cautious in assuming the 2645 continuing validity of an IP number/DNS name association. 2647 In particular, NNTP clients and servers SHOULD rely on their 2648 name resolver for confirmation of an IP number/DNS name 2649 association, rather than caching the result of previous host 2650 name lookups. Many platforms already can cache host name 2651 lookups locally when appropriate, and they SHOULD be 2652 configured to do so. It is proper for these lookups to be 2653 cached, however, only when the TTL (Time To Live) information 2654 reported by the name server makes it likely that the cached 2655 information will remain useful. 2657 Expires: October 30, 2001 Academ Consulting Services 2658 March 2001 2659 If NNTP clients or servers cache the results of host name 2660 lookups in order to achieve a performance improvement, they 2661 MUST observe the TTL information reported by DNS. 2663 If NNTP clients or servers do not observe this rule, they 2664 could be spoofed when a previously accessed server's IP 2665 address changes. As network renumbering is expected to become 2666 increasingly common, the possibility of this form of attack 2667 will grow. Observing this requirement thus reduces this 2668 potential security vulnerability. 2670 This requirement also improves the load-balancing behavior of 2671 clients for replicated servers using the same DNS name and 2672 reduces the likelihood of a user's experiencing failure in 2673 accessing sites that use that strategy. 2675 14.4 Weak Authentication and Access Control 2677 There is no user-based or token-based authentication in the 2678 basic NNTP specification. Access is normally controlled by 2679 server configuration files. Those files specify access by 2680 using domain names or IP addresses. However, this 2681 specification does permit the creation of extensions to the 2682 NNTP protocol itself for such purposes. While including such 2683 mechanisms is optional, doing so is strongly encouraged. 2684 Other mechanisms are also available. For example, a proxy 2685 server could be put in place that requires authentication 2686 before connecting via the proxy to the NNTP server. 2688 15. References 2690 [1] Kantor, B and P. Lapsley, "Network News Transfer Protocol", 2691 RFC-977, U.C. San Diego and U.C. Berkeley. 2692 [2] Yergeau, F., "UTF-8, a transformation format of ISO 10646", 2693 RFC 2279, Alis Technologies. 2694 [3] Coded Character Set-7-bit American Standard Code for 2695 Information Interchange, ANSI x3.4-1986. 2696 [4]Bradner, Scott, "Keywords for use in RFCs to Indicate 2697 Requirement Levels", RFC-2119, Harvard University. 2698 [5] Salz, Rich, Manual Page for wildmat(3) from the INN 1.4 2699 distribution, UUNET Technologies, Revision 1.10, April, 1992. 2700 [6] Robertson, Rob, "FAQ: Overview database / NOV General 2701 Information", ftp://ftp.uu.net/networking/news/nntp/inn/faq- 2702 nov.Z, January, 1995. 2703 [7] International Telecommunications Union-Radio, "Glossary", 2704 ITU-R Recommendation TF.686-1, October, 1997. 2705 [8] Mills, David L., "Network Time Protocol (Version 3), 2706 Specification, Implementation and Analysis", RFC-1305, 2707 University of Delaware, March 1992. 2709 Expires: October 30, 2001 Academ Consulting Services 2710 March 2001 2711 [9] Crocker, D. and Overell, P., "Augmented BNF for Syntax 2712 Specifications: ABNF", RFC-2234, Internet Mail Consortium and 2713 Demon Internet, Ltd. 2715 16. Notes 2717 UNIX is a registered trademark of the X/Open Consortium. 2719 17. Acknowledgments 2721 The author acknowledges the original authors of NNTP as 2722 documented in RFC 977: Brian Kantor and Phil Lapsey. 2724 The author gratefully acknowledges the work of the NNTP 2725 committee chaired by Eliot Lear. The organization of this 2726 document was influenced by the last available draft from this 2727 working group. A special thanks to Eliot for generously 2728 providing the original machine-readable sources for that 2729 document. 2731 The author gratefully acknowledges the work of the Marshall 2732 Rose & John G. Meyers in RFC 1939 and the work of the DRUMS 2733 working group, specifically RFC 1869, which is the basis of 2734 the NNTP extensions mechanism detailed in this document. 2735 The author gratefully acknowledges the authors of RFC 2616 for 2736 providing specific and relevant examples of security issues 2737 that should be considered for HTTP. Since many of the same 2738 considerations exist for NNTP, those examples that are 2739 relevant have been included here with some minor rewrites. 2741 The author gratefully acknowledges the comments and additional 2742 information provided by the following individuals in preparing 2743 one of the progenitors of this document: 2745 . Russ Allbery 2746 . Wayne Davison 2747 . Clive D.W. Feather 2748 . Chris Lewis 2749 . Tom Limoncelli 2750 . Eric Schnoebelen 2751 . Rich Salz 2752 Expires: October 30, 2001 Academ Consulting Services 2753 March 2001 2754 This work was motivated by the work of various news reader 2755 authors and news server authors, which includes those listed 2756 below: 2758 . Rick Adams-Original author of the NNTP extensions to the 2759 RN news reader and last maintainer of Bnews 2760 . Stan Barber-Original author of the NNTP extensions to the 2761 news readers that are part of Bnews. 2762 . Geoff Collyer-Original author of the OVERVIEW database 2763 proposal and one of the original authors of CNEWS 2764 . Dan Curry-Original author of the xvnews news reader 2765 . Wayne Davison-Author of the first threading extensions to 2766 the RN news reader (commonly called TRN). 2767 . Geoff Huston-Original author of ANU NEWS 2768 . Phil Lapsey-Original author of the UNIX reference 2769 implementation for NNTP 2770 . Iain Lea-Original maintainer of the TIN news reader 2771 . Chris Lewis-First known implementer of the AUTHINFO 2772 GENERIC extension 2773 . Rich Salz-Original author of INN 2774 . Henry Spencer-One of the original authors of CNEWS 2775 . Kim Storm-Original author of the NN news reader 2777 18. Author's Address 2779 Stan Barber 2780 P.O. Box 300481 2781 Houston, Texas 77230 2782 Email: sob@academ.com 2784 This document expires October 30, 2001.