idnits 2.17.1 draft-ietf-nntpext-base-11.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-26) 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 1 longer page, the longest (page 60) being 59 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 472 instances of too long lines in the document, the longest one being 3 characters in excess of 72. ** The abstract seems to contain references ([2], [3], [4], [0-9a-zA-Z], [5], [6], [C], [7], [8], [GMT], [S], [XX], [1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 6 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 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 358 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 (October 2000) is 8594 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 2784 looks like a reference -- Missing reference section? '2' on line 2786 looks like a reference -- Missing reference section? '3' on line 2788 looks like a reference -- Missing reference section? '4' on line 2790 looks like a reference -- Missing reference section? '5' on line 2792 looks like a reference -- Missing reference section? '0-9a-zA-Z' on line 336 looks like a reference -- Missing reference section? '6' on line 2794 looks like a reference -- Missing reference section? 'C' on line 2473 looks like a reference -- Missing reference section? 'S' on line 2475 looks like a reference -- Missing reference section? '7' on line 2797 looks like a reference -- Missing reference section? 'GMT' on line 2431 looks like a reference -- Missing reference section? '8' on line 2800 looks like a reference Summary: 14 errors (**), 0 flaws (~~), 6 warnings (==), 14 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET DRAFT S. Barber 3 Expires: May 30, 2001 Academ Consulting Services 4 October 2000 6 Network News Transport Protocol 7 draft-ietf-nntpext-base-11.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. 25 The list of Internet-Draft shadow directories can be accessed 26 at http://www.ietf.org/shadow.html. 28 This section will be updated with the appropriate verbiage 29 from RFC 2223 should this document has been found ready for 30 publication as an RFC. 32 This document is a product of the NNTP Working Group, chaired 33 by Ned Freed and Stan Barber. 35 2. Abstract 37 The Network News Transport Protocol has been in use in the 38 Internet for a decade and remains one of the most popular 39 protocols (by volume) in use today. This document is a 40 replacement for RFC 977 and officially updates the protocol 41 specification. It clarifies some vagueness in RFC 977, 42 includes some new base functionality and provides a specific 43 mechanism to add standardized extensions to NNTP. 45 3. Introduction 47 This document specifies the Network News Transport Protocol 48 (NNTP), which is used for the distribution, inquiry, 49 retrieval, and posting of net news articles using a reliable 50 stream-based mechanism. For news reading clients, NNTP enables 51 retrieval of news articles that are stored in a central 52 Expires: May 30, 2001 Academ Consulting Services 53 October 2000 55 database, giving subscribers the ability to select only those 56 articles they wish to read. 58 The netnews model provides for indexing, cross-referencing, 59 and expiration of aged messages. For server-to-server 60 interaction, NNTP is designed for efficient transmission of 61 net news articles over a reliable full duplex communication 62 method. 64 Every attempt is made to insure that the protocol 65 specification in this document is compatible with the version 66 specified in RFC 977[1]. However, this version does not 67 support the ill-defined SLAVE command and permits four digit 68 years to be specified in the NEWNEWS and NEWGROUPS commands. 69 It changes the default character set to UTF-8[2] instead of 70 US-ASCII[3]. It also extends the newsgroup name matching 71 capabilities already documented in RFC 977. 73 Generally, new functionality is available using new keywords. 74 Part of that new functionality involves a mechanism to 75 discover what new functionality is available to clients from a 76 server. 78 This mechanism can also be used to add more functionality as 79 needs merit such additions. 81 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 82 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 83 "OPTIONAL" in this document are to be interpreted as described 84 in RFC 2119[4]. 86 An implementation is not compliant if it fails to satisfy one 87 or more of the MUST requirements for this protocol. An 88 implementation that satisfies all the MUST and all the SHOULD 89 requirements for its protocols is said to be "unconditionally 90 compliant"; one that satisfies all the MUST requirements but 91 not all the SHOULD requirements for NNTP is said to be 92 "conditionally compliant". 94 For the remainder of this memo, the term "client host" refers 95 to a host making use of the NNTP service, while the term 96 "server host" refers to a host that offers the NNTP service. 97 In addition, where examples of interactions between a client 98 host and a server host are provided a "[C]" will be used to 99 represent the client host and a "[S]" will be used to 100 represent the server host. 102 4. Basic Operation 104 Every NNTP session MUST involve the following in this order: 106 Expires: May 30, 2001 Academ Consulting Services 107 October 2000 109 CONNECTION 110 GREETING 111 DISCONNECTION 113 Other steps may occur between the GREETING and DISCONNECTION 114 step. They are: 116 CAPABILITIES DISCOVERY 117 NEWS EXCHANGE 118 CONCLUSION 120 NNTP operates over any reliable data stream 8-bit-wide 121 channel. When running over TCP/IP, the official port for the 122 NNTP service is 119. Initially, the server host starts the 123 NNTP service by listening on a TCP port. When a client host 124 wishes to make use of the service, it MUST establish a TCP 125 connection with the server host by connecting to that host on 126 the same port on which the server is listening. This is the 127 CONNECTION step. When the connection is established, the NNTP 128 server host MUST send a greeting. This is the GREETING step. 129 The client host and server host SHOULD then exchange commands 130 and responses (respectively) until the connection is closed or 131 aborted. This final step is called the DISCONNECTION step. 133 If there is a CONCLUSION step, it MUST immediately precede the 134 DISCONNECTION step. There MUST be only one CONNECTION, 135 CONCLUSION and DISCONNECTION step for each NNTP session. All 136 other steps MAY be repeated as needed. For example, the 137 GREETING step may be repeated if the client makes use of the 138 MODE READER command (See Section 7.1.2 for more on the MODE 139 READER command). 141 The character set for all NNTP commands is UTF-8. Commands in 142 the NNTP MUST consist of an US-ASCII case-insensitive keyword, 143 which MAY be followed by one or more arguments. An US-ASCII 144 CRLF pair MUST terminate all commands. Multiple commands MUST 145 NOT be on the same line. Keywords MUST consist of printable 146 US-ASCII characters. Unless otherwise noted elsewhere in this 147 document, arguments SHOULD consist of printable US-ASCII 148 characters. Keywords and arguments MUST be each separated by 149 one or more US-ASCII SPACE or US-ASCII TAB characters. 151 Keywords MUST be at least three US-ASCII characters and MUST 152 NOT exceed 12 US-ASCII characters. Command lines MUST NOT 153 exceed 512 octets, which includes the terminating US-ASCII 154 CRLF pair. Arguments MUST NOT exceed 497 octets. 156 Each response MUST start with a three-digit response code that 157 is sufficient to distinguish all responses. Certain valid 158 responses are defined to be multi-line; for all others, the 159 response is contained in a single line. All multi-line 160 Expires: May 30, 2001 Academ Consulting Services 161 October 2000 163 responses MUST adhere to the following format: After sending 164 the first line of the response and an US-ASCII CRLF, any 165 additional lines are sent, each terminated by an US-ASCII CRLF 166 pair. When all lines of the response have been sent, a final 167 line MUST be sent, consisting of a termination octet (US-ASCII 168 decimal code 046, ".") and an US-ASCII CRLF pair. If any line 169 of the multi-line response begins with the termination octet, 170 the line MUST be "byte-stuffed" by pre-pending the termination 171 octet to that line of the response. Hence, a multi-line 172 response is terminated with the five octets "CRLF.CRLF" (in 173 US-ASCII). When examining a multi-line response, the client 174 MUST check to see if the line begins with the termination 175 octet. If so and if octets other than US-ASCII CRLF follow, 176 the first octet of the line (the termination octet) MUST be 177 stripped away. If so and if US-ASCII CRLF immediately follows 178 the termination character, then the response from the NNTP 179 server is ended and the line containing ".CRLF" (in US-ASCII) 180 MUST NOT considered part of the multi-line response. Where a 181 response is multi-line, the description of the command will 182 define the format of the response before "byte-stuffing" takes 183 place. 185 A NNTP server MAY have an inactivity autologout timer. Such a 186 timer MUST be of at least three minutes duration. The receipt 187 of any command from the client during that interval SHOULD 188 suffice to reset the autologout timer. When the timer 189 expires, the server should close the TCP connection without 190 sending any response to the client. 192 4.1 Response Codes 194 Each response MUST begin with a three-digit status indicator. 195 These are status reports from the server and indicate the 196 response to the last command received from the client. 198 The first digit of the response broadly indicates the success, 199 failure, or progress of the previous command. 201 1xx - Informative message 202 2xx - Command ok 203 3xx - Command ok so far, send the rest of it. 204 4xx - Command was correct, but couldn't be performed for some 205 reason. 206 5xx - Command unimplemented, or incorrect, or a serious 207 program error occurred. 209 The next digit in the code indicates the function response 210 category. 212 x0x - Connection, setup, and miscellaneous messages 213 Expires: May 30, 2001 Academ Consulting Services 214 October 2000 216 x1x - Newsgroup selection 217 x2x - Article selection 218 x3x - Distribution functions 219 x4x - Posting 220 x8x - Reserved for authentication and authorization extensions 221 x9x - Reserved for private use (non-standard extensions) 223 Certain responses contain parameters such as numbers and names 224 in addition to the status indicator. In those cases, the 225 number and type of such parameters is fixed for each response 226 code to simplify interpretation by the client (any extension 227 MUST follow this principle as well). In all other cases, the 228 client MUST only use the status indicator itself to determine 229 the nature of the response. The exact response codes that can 230 be returned in response to a given command are detailed in the 231 description of the keyword that is the first part of the 232 command. 234 Parameters MUST be separated from the numeric status indicator 235 and from each other by a single US-ASCII space. All numeric 236 parameters MUST be in base 10 (decimal) format, and MAY have 237 leading zeros. String parameters MUST contain at least one 238 character and MUST NOT contain US-ASCII spaces, CR, LF, or 239 tab). The server MAY add any text after the response code or 240 last parameter as appropriate, and the client MUST NOT make 241 decisions based on this text. Such text MUST be separated from 242 the numeric status indicator or the last parameter by at least 243 one US-ASCII space. 245 A server MUST respond to an unrecognized, unimplemented, or 246 invalid command with a negative response code as follows. An 247 unrecognized command, or an optional command or extension that 248 is not implemented by the server, MUST be given a 500 249 response. A syntax error in a recognized command MUST be given 250 a 501 response. A command that is valid but not permitted 251 because of the current internal state of the server MUST be 252 given a 4XX or 5XX response. 254 Each recognized command MUST return 501 (as above) or one of 255 the response codes specifically listed in its description or 256 in an extension. A server MAY provide extensions to this 257 specification, including new commands, new features of 258 existing commands, and other ways of changing the internal 259 state of the server. However, the server MUST NOT produce any 260 other responses to a client that does not invoke any of the 261 additional features. (Therefore a client that restricts itself 262 to this specification will only receive the responses that are 263 listed). 265 Expires: May 30, 2001 Academ Consulting Services 266 October 2000 268 If a client receives an unexpected response, it SHOULD use the 269 first digit of the response to determine the result. For 270 example, an unexpected 2xx should be taken as success and an 271 unexpected 4xx or 5xx as failure. 273 Response codes not specified in this standard MAY be used for 274 any installation-specific additional commands also not 275 specified. These SHOULD be chosen to fit the pattern of x9x 276 specified above. 278 Neither this document nor any extension registered with IANA 279 (see section 12) will specify any response codes of the x9x 280 pattern. (Implementers of extensions are accordingly cautioned 281 not to use such responses for extensions that may subsequently 282 be submitted for registration.) 284 5. The WILDMAT format 286 The WILDMAT format[5] described here is based on the version 287 first developed by Rich Salz which was derived from the format 288 used in the UNIX "find" command to articulate file names. It 289 was developed to provide a uniform mechanism for matching 290 patterns in the same manner that the UNIX shell matches 291 filenames. Patterns are implicitly anchored at the beginning 292 and end of each string when testing for a match. There are 293 five pattern-matching operations other than a strict one-to- 294 one match between the pattern and the source to be checked for 295 a match. The first is an asterisk (*) to match any sequence of 296 zero or more UTF-8 characters. The second is a question mark 297 (?) to match any single UTF-8 character. The third specifies a 298 specific set of characters. The set is specified as a list of 299 characters, or as a range of characters where the beginning 300 and end of the range are separated by a minus (or dash) 301 character, or as any combination of lists and ranges. The dash 302 can also be included in the set as a character it if is the 303 beginning or end of the set. This set is enclosed in square 304 brackets. The close square bracket (]) may be used in a set if 305 it is the first character in the set. The fourth operation is 306 the same as the logical not of the third operation and is 307 specified the same way as the third with the addition of a 308 caret character (^) at the beginning of the test string just 309 inside the open square bracket. The final operation uses the 310 backslash character to invalidate the special meaning of the 311 open square bracket ([), the asterisk, backslash, or the 312 question mark. Two backslashes in sequence will result in the 313 evaluation of the backslash as a character with no special 314 meaning. 316 Expires: May 30, 2001 Academ Consulting Services 317 October 2000 319 Implementers must be careful to apply the pattern-matching 320 operators to whole characters encoded in UTF-8, and not two 321 individual octets. 323 5.1 Negating the wildmat pattern 325 The exclamation point can be used at the beginning of a wildmat 326 to negate it. That is, if the remainder of the pattern would 327 match the string then the negated pattern does not, and vice 328 versa. If it appears as any other character other than the first 329 one, it has no special meaning. 330 5.2 Examples 332 a) [^]-] -- matches any single character other than a 333 close square bracket or a minus sign/dash. 334 b) *bdc -- matches any string that ends with the string 335 "bdc" including the string "bdc" (without quotes). 336 c) [0-9a-zA-Z] -- matches any single printable 337 alphanumeric ASCII character. 338 d) a??d -- matches any four character string which 339 begins with a and ends with d. 340 e) !bc*d -- matches any string that does not start with 341 "bc" and end with "d" (without quotes) 342 f) !\\x -- matches any string that does not start with 343 "\x" (without quotes) 345 6. Format for Keyword Descriptions 347 On the following pages are descriptions of each keyword 348 recognized by the NNTP server and the responses that will be 349 returned by those commands. These keywords are grouped by the 350 functional step in which they are used. 352 Each keyword is shown in upper case for clarity, although the 353 NNTP server ignores case in the interpretation of commands. 355 Parameters are shown as follows: 356 o UPPERCASE indicates literal text to be included in the 357 command; 358 o lowercase indicates a token described elsewhere; 359 o [brackets] indicate that the parameter is optional; 360 o ellipsis... indicates that the parameter may be repeated 361 any number of times (it must occur at least once); 362 o vertical|bar indicates a choice of two mutually exclusive 363 parameters (exactly one must be provided). 365 Expires: May 30, 2001 Academ Consulting Services 366 October 2000 368 Parameters are case or language specific only when specified 369 (either in this document or in RFC 1036[6]). 371 The name "wildmat" for a parameter indicates that it is a 372 wildmat format pattern as defined in section 5. 374 7. The GREETING Step 376 7.1 Initial Connection 378 There is no keyword presented by the client upon initial 379 connection to the server. The server MUST present an 380 appropriate response code as a greeting to the client. This 381 response informs the client about what steps the client should 382 take to reach the news exchange step. 384 If the server will accept further commands from the client 385 including POST, the server MUST present a 200 greeting code. 387 If the server will accept further commands from the client, 388 but it is not authorized to post articles using the POST 389 command, the server MUST present a 201 greeting code. 391 Otherwise the server MUST present a 400 or 502 greeting code 392 and then immediately close the connection. 502 MUST be used if 393 the client is not permitted under any circumstances to 394 interact with the server and 400 otherwise. 396 7.1.1 Initial Connection Example 398 Example of a normal connection from an authorized client 400 [C] Initial TCP connection completed 401 [S] 200 NNTP Service Ready, posting permitted 403 Client can send commands at this point. In this example, the 404 client jumps directly to the conclusion step (See section 10). 406 [C] QUIT 407 [S] 205 NNTP Service exits normally 409 Example of a normal connection from an unauthorized client 411 [C] Initial TCP connection completed 412 [S] 502 NNTP Service Unavailable 414 At this point, the server closes the TCP connection. 416 Expires: May 30, 2001 Academ Consulting Services 417 October 2000 419 Example of a normal connection from an authorized client that 420 is not permitted to post 422 [C] Initial TCP connection completed 423 [S] 201 NNTP Service Ready, posting prohibited 425 Client can send commands at this point. In this example, the 426 client jumps directly to the conclusion step (See section 10). 428 [C] QUIT 429 [S] 205 NNTP Service exits normally 431 Example of a connection from any client where the server is 432 unable to provide service 434 [C] Initial TCP connection completed 435 [S] 400 NNTP Service temporarily unavailable 437 At this point, the server closes the TCP connection. 439 7.1.2 MODE READER 441 MODE READER 442 MODE READER SHOULD be used by the client to indicate to the 443 server that it is a newsreading client. This command may be 444 entered at any time. The server MUST present a response (as 445 described in section 7.1) appropriate to the server's ability 446 to provide service to this client in this mode. 448 7.1.2.1 Responses 450 200 Posting Permitted 451 201 Posting Not Permitted 452 400 Service temporarily unavailable 453 502 Service unavailable 455 Following a 400 or 502 response the server MUST immediately 456 close the connection. 458 Note that the response need not be the same as the one 459 presented during the initial greeting. 461 7.1.2.2 MODE READER Examples 463 Example of use of the MODE READER command by an authorized 464 client 465 Expires: May 30, 2001 Academ Consulting Services 466 October 2000 468 [C] MODE READER 469 [S] 200 NNTP Service Ready, posting permitted 471 Client can send commands at this point. In this example, the 472 client jumps directly to the conclusion step (See section 10). 474 [C] QUIT 475 [S] 205 NNTP Service exits normally 477 Example of use of MODE READER by a client not authorized to 478 receive service from the server as a news reader 480 [C] MODE READER 481 [S] 502 Service Unavailable 483 At this point, the server closes the TCP connection. 485 Example of a normal connection from an authorized client that 486 is not permitted to post 488 [C] MODE READER 489 [S] 201 NNTP Service Ready, posting prohibited 491 Client can send commands at this point. In this example, the 492 client jumps directly to the conclusion step (See section 10). 494 [C] QUIT 495 [S] 205 NNTP Service exits normally 497 Example of a connection from any client where the server is 498 unable to provide news reader service 500 [C] MODE READER 501 [S] 400 NNTP Service temporarily unavailable 503 At this point, the server closes the TCP connection. 505 8. The CAPABILITIES DISCOVERY Step 507 An NNTP client that wishes to use extensions to NNTP can query 508 the server to determine which extensions are available. This 509 is done with the LIST EXTENSIONS command. 511 If a particular extension is unavailable, the client can 512 attempt to work around it or it may wish to terminate the 513 session. 515 Expires: May 30, 2001 Academ Consulting Services 516 October 2000 518 See section 12 for further discussion of extensions. 520 8.1 LIST EXTENSIONS 522 The LIST EXTENSIONS command allows a client to determine which 523 extensions are supported by the server. 525 A client NNTP supporting NNTP service extensions SHOULD query 526 a server early in the session for extensions session by 527 issuing the LIST EXTENSIONS command. An NNTP Server that 528 conforms to the specification in this document MUST give a 529 successful response (see section 8.1.1), a failure response 530 (see section 8.1.2), or an error response (see section 8.1.3). 532 This command MAY be issued at anytime during a session. It is 533 not required that the client issues this command before 534 attempting to make use of any extension. The response 535 generated by this command MAY change during a session because 536 of other state information. However, a client NNTP MUST NOT 537 cache (for use in another session) any information returned if 538 the LIST EXTENSIONS command succeeds. That is, a client NNTP 539 is only able to get the current and correct information 540 concerning available extensions during a session by issuing a 541 LIST EXTENSIONS command during that session and processing 542 that response. 544 8.1.1 Successful response 546 A successful response starts with a 202 code and is followed 547 by a list of extension-labels, one per line. Each line MUST 548 begin with exactly one space followed by an extension-label 549 and optionally one or more parameters (separated by single 550 spaces). The extension-label and the meaning of the parameters 551 are specified as part of the definition of the extension. The 552 extension-label MUST be in uppercase. 554 The server MUST NOT list the same extension twice in the 555 response, and MUST list all supported extensions. The order in 556 which the extensions are listed is not significant. The server 557 need not even consistently return the same order. 558 The end of the list is defined by the usual period on a line 559 by itself. 561 A typical example reply to the LIST EXTENSIONS command might 562 be a multiline reply of the form: 564 [C] LIST EXTENSIONS 565 Expires: May 30, 2001 Academ Consulting Services 566 October 2000 568 [S] 202 Extensions supported: 569 [S] OVER 570 [S] PAT 571 [S] LISTGROUP 572 [S] . 574 8.1.2 Failure response 576 If for some reason the server NNTP is unable to list the 577 service extensions it supports, it MUST return code 503. No 578 list (not even an empty one) will be returned. 580 In the case of a failure response, the client NNTP may try the 581 extensions either as the need arises or configure itself for 582 the basic NNTP functionality defined in this document. 584 8.1.3 Error responses from extended servers 586 If the server NNTP recognizes the LIST EXTENSIONS command, but 587 due to various conditions cannot make any extensions available 588 to the client at the time the client issued the LIST 589 EXTENSIONS command, it MUST return code 402. No list (not even 590 an empty one) will be returned. 592 The client NNTP should configure itself for the basic NNTP 593 functionality defined in this document, or issue commands that 594 might change the state of the server, or issue the QUIT 595 command (see section 10.1) if a particular extension is 596 required for the client to properly operate. 598 If the server NNTP determines that the NNTP service is no 599 longer available (e.g., due to imminent system shutdown), it 600 must return code 400. Note that this response code should not 601 be generated due to an inactivity timeout as described in 602 section 4. 604 In the case of any error response outlined in this section, 605 the client NNTP should issue the QUIT command (see section 606 10.1). This will facilitate an orderly shutdown of the 607 session. 609 8.1.4 Responses from improperly implemented servers 610 Expires: May 30, 2001 Academ Consulting Services 611 October 2000 613 A server NNTP that improperly implements the LIST EXTENSIONS 614 command may return an empty list. Clients SHOULD accommodate 615 this protocol violation and interpret it as a response code 616 402. 618 The client NNTP should configure itself for the basic NNTP 619 functionality defined in this document, or issue commands that 620 might change the state of the server, or issue the QUIT 621 command (see section 10.1) if a particular extension is 622 required for the client to properly operate. 624 9. The NEWS EXCHANGE Step 626 During this step, two basic types of transactions occur: 627 o article retrieval from the server 628 o article posting to the server 630 9.1 Article Retrieval 632 News reading clients have available a variety of mechanisms to 633 retrieve articles via NNTP. The news articles are stored and 634 indexed using three types of keys. One key is the message id 635 of an article. According to RFC 1036, this identifier should 636 be globally unique. Another key is composed of the news group 637 name and the article number within that news group. That key 638 MUST be unique to a particular server (there will be only one 639 article with that number within a particular news group), but 640 is not required to be globally unique. Additionally, because 641 the same article can be cross-posted to multiple news groups, 642 there may be multiple keys that point to the same article on 643 the same server. The final key is the arrival timestamp, 644 giving the time that the article arrived at the server. 646 The server MUST ensure that article numbers are issued in 647 order of arrival timestamp; that is, articles arriving later 648 MUST have higher numbers than those that arrive earlier. The 649 server SHOULD allocate the next sequential unused number to 650 each new article. 652 Article numbers MUST lie between 1 and 4,294,967,295 653 inclusive. The client and server SHOULD NOT use leading zeroes 654 in specifying article numbers, and MUST NOT use more than 16 655 digits. In some situations, the value zero replaces an article 656 number to show some special situation. 658 9.1.1 Article Retrieval by News Group Name and Article Number 659 Expires: May 30, 2001 Academ Consulting Services 660 October 2000 662 The following commands are used to set the current news group 663 name and the "current article pointer" which is used by other 664 commands for article retrieval. At the start of a NNTP 665 session, both of these values are undefined. 667 9.1.1.1 GROUP 669 GROUP ggg 670 The required parameter ggg is the name of the news group to be 671 selected (e.g. "news.software.b"). A list of valid news groups 672 may be obtained by using the LIST keyword. See section 9.4 673 for more information on the LIST keyword. 675 The successful selection response will return the article 676 numbers of the first and last articles in the group at the 677 moment of selection (these numbers are referred to as the 678 "reported low water mark" and the "reported high water mark"), 679 and an estimate of the number of articles on file in the 680 group. 682 If the group is not empty, the estimate MUST be at least the 683 actual number of articles available, and MUST be no greater 684 than one more than the difference between the reported low and 685 high water marks. (Some implementations will actually count 686 the number of articles on file. Others will just subtract the 687 low water mark from the high water mark and add one to get an 688 estimate.) 690 If the group is empty, one of the following three situations 691 will occur. Clients MUST accept all three cases; servers MUST 692 NOT represent an empty group in any other way. 694 o The high water mark will be one less than the low water 695 mark, and the estimated article count will be zero. 696 Servers SHOULD use this method to show an empty group. 697 This is the only time that the high water mark can be 698 less than the low water mark. 699 o All three numbers will be zero. 700 o The high water mark is greater than or equal to the low 701 water mark; the estimated article count might be zero or 702 non-zero; if non-zero, the same requirements apply as for 703 a non-empty group. 705 The set of articles in a group may change after the GROUP 706 command is carried out. That is: 708 o articles may be removed from the group 709 Expires: May 30, 2001 Academ Consulting Services 710 October 2000 712 o articles may be reinstated in the group with the same 713 article number, but those articles MUST have numbers no 714 less than the reported low water mark (note that this is 715 a reinstatement of the previous article, not a new 716 article reusing the number) 717 o new articles may be added with article numbers greater 718 than the reported high water mark (if an article that was 719 the one with the highest number has been removed, the 720 next new article will not have the number one greater 721 than the reported high water mark) 723 Except when the group is empty and all three numbers are zero, 724 whenever a subsequent GROUP command for the same news group is 725 issued, either by the same client or a different client, the 726 reported low water mark in the response MUST be no less than 727 that in any previous response for that news group sent to any 728 client. The client may make use of the low water mark to 729 remove all remembered information about articles with lower 730 numbers, as these will never recur. This includes the 731 situation when the high water mark is one less than the low 732 water mark. 734 No similar assumption can be made about the high water mark, 735 as this can decrease if an article is removed, and then 736 increase again if it is reinstated or if new articles arrive. 737 When a valid group is selected by means of this command, the 738 internally maintained "current article pointer" MUST be set to 739 the first article in the group and the name of the current 740 news group MUST be set to the selected news group name. If an 741 invalid group is specified, the previously selected group, if 742 any, and article MUST remain selected. If an empty news group 743 is selected, the "current article pointer" is in an 744 indeterminate state and MUST NOT be used. 746 The GROUP keyword (or the LISTGROUP keyword, if implemented) 747 MUST be used by a client and a successful response received 748 before the any other command is used that depends on having 749 the "current article pointer" be valid. 751 9.1.1.1.1 Responses 753 211 n f l s group selected 754 (n = estimated number of articles in group, f = first 755 article number in the group, l = last article number 756 in the group, s = name of the group.) 757 Expires: May 30, 2001 Academ Consulting Services 758 October 2000 760 411 no such news group 762 9.1.1.1.2 GROUP Examples 764 Example for a group known to the server 766 [C] GROUP misc.test 767 [S] 211 1234 3000234 3002322 misc.test 769 Example for a group unknown to the server 771 [C] GROUP example.is.sob.bradner.or.barber 772 [S] 411 example.is.sob.bradner.or.barber is unknown 774 9.1.1.2 LAST 776 LAST 777 If the current news group is valid, the internally maintained 778 "current article pointer" MUST be set to the previous article 779 in the current news group. If already positioned at the first 780 article of the news group, an error message MUST be returned 781 and the current article MUST remain selected. 783 There MAY be no previous article in the group, although the 784 current article number is not the reported low water mark. 785 There MUST NOT be a previous article when the current article 786 number is the reported low water mark. 788 Because articles can be removed and added, the results of 789 multiple LAST and NEXT commands MAY not be consistent over the 790 life of a particular NNTP session. 792 If successful, a response indicating the current article 793 number and a message-id string MUST be returned. No article 794 text is sent in response to this command. 796 9.1.1.2.1 Responses 798 223 n a article retrieved - request text separately (n = 799 article number, a = unique article id) 800 412 no news group selected 801 420 no current article has been selected 802 422 no previous article in this group 804 9.1.1.2.2 LAST Examples 805 Expires: May 30, 2001 Academ Consulting Services 806 October 2000 808 Example of a successful article retrieval using LAST 810 [S] 200 NNTP Service Ready 811 [C] GROUP misc.test 812 [S] 211 1234 3000234 3002322 misc.test 813 [C] NEXT 814 [S] 223 3000237 <668929@domain.com> retrieved 815 [C] LAST 816 [S] 223 3000234 <45223423@to.to> retrieved 818 Example of an attempt to retrieve an article without having 819 selected a group (via the GROUP command) first 821 [S] 200 NNTP Service ready 822 [C] LAST 823 [S] 412 no newsgroup selected 825 Example of an attempt to retrieve an article using the LAST 826 command when the current article pointer is pointing at the 827 first article in the group 829 [S] 200 NNTP Service Ready 830 [C] GROUP misc.test 831 [S] 211 1234 3000234 3002322 misc.test 832 [C] LAST 833 [S] 422 No previous article to retrieve 835 Example of an attempt to retrieve an article using the LAST 836 command when the current group selected is empty 838 [S] 200 NNTP Service Ready 839 [C] GROUP example.empty.newsgroup 840 [S] 211 0 0 0 example.empty.newsgroup 841 [C] LAST 842 [S] 420 No current article selected 844 9.1.1.3 NEXT 846 NEXT 847 Expires: May 30, 2001 Academ Consulting Services 848 October 2000 849 If the current news group is valid, the internally maintained 850 "current article pointer" MUST be advanced to the next article 851 in the current news group. If no more articles remain in the 852 current group, an error message MUST be returned and the 853 current article MUST remain selected. 855 If successful, a response indicating the current article 856 number and the message-id string MUST be returned. No article 857 text is sent in response to this command. 859 9.1.1.3.1 Responses 861 223 n a article retrieved - request text separately (n = 862 article number, a = unique article id) 863 412 no news group selected 864 420 no current article has been selected 865 421 no next article in this group 867 9.1.1.3.2 NEXT Examples 869 Example of a successful article retrieval using NEXT 871 [S] 200 NNTP Service Ready 872 [C] GROUP misc.test 873 [S] 211 1234 3000234 3002322 misc.test 874 [C] NEXT 875 [S] 223 3000237 <668929@domain.com> retrieved 877 Example of an attempt to retrieve an article without having 878 selected a group (via the GROUP command) first 880 [S] 200 NNTP Service ready 881 [C] NEXT 882 [S] 412 no newsgroup selected 884 Example of an attempt to retrieve an article using the NEXT 885 command when the current article pointer is pointing at the 886 last article in the group 888 [S] 200 NNTP Service Ready 889 [C] GROUP misc.test 890 [S] 211 1234 3000234 3002322 misc.test 891 Expires: May 30, 2001 Academ Consulting Services 892 October 2000 894 [C] ARTICLE 3002322 895 [S] 220 3002322 <411@whitehouse.gov> retrieved 896 [S] Path: pathost!demo!whitehouse!not-for-mail 897 [S] From: nobody@whitehouse.gov(Demo User) 898 [S] Newsgroups: misc.test 899 [S] Subject: I am just a test article 900 [S] Date: 6 Oct 1998 04:38:40 -0500 901 [S] Organization: The White House, Washington, DC 902 [S] Message-ID: <411@whitehouse.gov> 903 [S] 904 [S] This is just a test article. 905 [S] . 906 [C] NEXT 907 [S] 422 No next article to retrieve 909 Example of an attempt to retrieve an article using the NEXT 910 command when the current group selected is empty 912 [S] 200 NNTP Service Ready 913 [C] GROUP example.empty.newsgroup 914 [S] 211 0 0 0 example.empty.newsgroup 915 [C] NEXT 916 [S] 420 No current article selected 918 9.2 Retrieval of Articles and Article Sections 920 The ARTICLE, BODY, HEAD, and STAT commands are very similar. 921 They differ only in the parts of the article that are 922 presented to the client and in the successful response code. 924 The ARTICLE command is described here in full, while the other 925 commands are described in terms of the differences. 927 An article, as defined by RFC 1036, consists of two parts: the 928 article headers and the article body. When responding to one 929 of these commands, the server presents the entire article or 930 appropriate part and does not attempt to alter or translate it 931 in any way. 933 Expires: May 30, 2001 Academ Consulting Services 934 October 2000 936 9.2.1 ARTICLE 938 ARTICLE 939 ARTICLE [number] 941 The ARTICLE command selects an article based on the arguments 942 and presents the header, a blank line, and the body of that 943 article. The command has two forms. 945 In the first form, a message-id is specified (including the 946 angle brackets), and the server presents the article with that 947 message-id in its headers. In this case, the server MUST NOT 948 alter the "current article pointer". This is both to 949 facilitate the presentation of articles that may be referenced 950 within another article being read, and because of the semantic 951 difficulties of determining the proper sequence and membership 952 of an article which may have been posted to more than one news 953 group. 955 In the second form, an article number may be specified. If so, 956 and if there is an article with that number in the currently 957 selected group, the server MUST set the current article 958 pointer to that number. 960 Then, whether or not a number was specified, the article 961 indicated by the current article pointer is presented to the 962 client. 964 Note that a previously valid article number MAY become invalid 965 if the article has been removed. A previously invalid article 966 number MAY become valid if the article has been reinstated, 967 but such an article number MUST be no less than the reported 968 low water mark for that group. 970 The server MUST NOT change the currently selected group as a 971 result of this command. The server MUST NOT change the current 972 selected article except when an article number argument was 973 provided and the article exists; in particular, it MUST NOT 974 change it following an unsuccessful response. 976 9.2.1.1 Responses 978 First form (message-id specified): 980 220 0 a article retrieved and follows (multiline, a = 981 unique article id) 982 430 no such article 983 502 service unavailable 985 Second form (optional article number specified): 987 Expires: May 30, 2001 Academ Consulting Services 988 October 2000 990 220 n a article retrieved and follows (multiline, n = 991 article number, a = unique article id) 992 412 no news group 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 an 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 second form. The second parameter is the message-id of the 1003 article (within angle brackets). This is taken from the 1004 message-id header line of the article (required by RFC 1036). 1006 If there is no such line, the message-id "<0>" MUST be used 1007 instead (without the double quotes). 1009 Since the message-id field is unique for each article, it may 1010 be used by a client to skip duplicate displays of articles 1011 that have been posted more than once, or to more than one news 1012 group. 1014 The article headers and body are returned as a multiline 1015 response following the initial response line. 1017 9.2.1.2 Examples 1019 Example of a successful retrieval of an article (using no 1020 article number) 1022 [S] 200 NNTP Service Ready 1023 [C] GROUP misc.test 1024 [S] 211 1234 3000234 3002322 misc.test 1025 [C] ARTICLE 1026 [S] 220 3000234 <45223423@to.to> 1027 [S] Path: pathost!demo!somewhere!not-for-mail 1028 [S] From: nobody@nowhere.to (Demo User) 1029 [S] Newsgroups: misc.test 1030 [S] Subject: I am just a test article 1031 [S] Date: 6 Oct 1998 04:38:40 -0500 1032 [S] Organization: Nowhere, To 1033 [S] Message-ID: <45223423@to.to> 1034 Expires: May 30, 2001 Academ Consulting Services 1035 October 2000 1036 [S] 1037 [S] This is just a test article. 1038 [S] . 1040 Example of a successful retrieval of an article by message-id 1042 [S] 200 NNTP Service Ready 1043 [C] ARTICLE <45223423@to.to> 1044 [S] 220 0 <45223423@to.to> 1045 [S] Path: pathost!demo!somewhere!not-for-mail 1046 [S] From: nobody@nowhere.to (Demo User) 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 1059 [S] 200 NNTP Service Ready 1060 [C] ARTICLE 1061 [S] 430 No Such Article Found 1063 Example of an unsuccessful retrieval of an article by number 1065 [S] 200 NNTP Service Ready 1066 [C] GROUP misc.test 1067 [S] 211 1234 3000234 3002322 news.groups 1068 [C] ARTICLE 300256 1069 [S] 423 No such article number in this group 1071 Example of an unsuccessful retrieval of an article by number 1072 because no news group was selected first 1074 [S] 200 NNTP Service Ready 1075 [C] ARTICLE 300256 1076 [S] 412 No news group selected 1077 Expires: May 30, 2001 Academ Consulting Services 1078 October 2000 1080 Example of an attempt to retrieve an article when the current 1081 group selected is empty 1083 [S] 200 NNTP Service Ready 1084 [C] GROUP example.empty.newsgroup 1085 [S] 211 0 0 0 example.empty.newsgroup 1086 [C] ARTICLE 1087 [S] 420 No current article selected 1089 Example of a failure due to the service being unavailable 1091 [S] 200 NNTP Service Ready 1092 [C] ARTICLE 1093 [S] 502 Service unavailable 1095 9.2.2 HEAD 1097 HEAD 1098 HEAD [number] 1100 The HEAD command behaves identically to the ARTICLE command 1101 except that, if the article exists, only the headers are 1102 presented (the blank line separating the headers and body MUST 1103 NOT be included). 1105 9.2.2.1 Responses 1107 First form (message-id specified): 1109 221 0 a article retrieved, headers follow (multiline) 1110 430 no such article 1111 502 service unavailable 1113 Second form (optional article number specified): 1115 221 n a article retrieved, headers follow (multiline) 1116 412 no news group selected 1117 420 no current article selected 1118 423 no such article number in this group 1119 502 service unavailable 1121 Except that only the headers are included in the response, the 1122 221 response behaves identically to the 220 response of the 1123 ARTICLE command. 1125 Expires: May 30, 2001 Academ Consulting Services 1126 October 2000 1128 9.2.2.2 Examples 1130 Example of a successful retrieval of the headers in an article 1131 (using no article number) 1133 [S] 200 NNTP Service Ready 1134 [C] GROUP misc.test 1135 [S] 211 1234 3000234 3002322 misc.test 1136 [C] HEAD 1137 [S] 220 3000234 <45223423@to.to> 1138 [S] Path: pathost!demo!somewhere!not-for-mail 1139 [S] From: nobody@nowhere.to (Demo User) 1140 [S] Newsgroups: misc.test 1141 [S] Subject: I am just a test article 1142 [S] Date: 6 Oct 1998 04:38:40 -0500 1143 [S] Organization: Nowhere, To 1144 [S] Message-ID: <45223423@to.to> 1145 [S] . 1147 Example of a successful retrieval of the headers in an article 1148 by message-id 1150 [S] 200 NNTP Service Ready 1151 [C] HEAD <45223423@to.to> 1152 [S] 220 0 <45223423@to.to> 1153 [S] Path: pathost!demo!somewhere!not-for-mail 1154 [S] From: nobody@nowhere.to (Demo User) 1155 [S] Newsgroups: misc.test 1156 [S] Subject: I am just a test article 1157 [S] Date: 6 Oct 1998 04:38:40 -0500 1158 [S] Organization: Nowhere, To 1159 [S] Message-ID: <45223423@to.to> 1160 [S] . 1162 Example of an unsuccessful retrieval of the header of an 1163 article by message-id 1165 [S] 200 NNTP Service Ready 1166 [C] HEAD 1167 [S] 430 No Such Article Found 1168 Expires: May 30, 2001 Academ Consulting Services 1169 October 2000 1171 Example of an unsuccessful retrieval of the header of an 1172 article by number 1174 [S] 200 NNTP Service Ready 1175 [C] GROUP misc.test 1176 [S] 211 1234 3000234 3002322 misc.test 1177 [C] HEAD 300256 1178 [S] 423 No such article number in this group 1180 Example of an unsuccessful retrieval the header of an article 1181 by number because no news group was selected first 1183 [S] 200 NNTP Service Ready 1184 [C] HEAD 300256 1185 [S] 412 No news group selected 1187 Example of an attempt to retrieve the header of an article 1188 when the current group selected is empty 1190 [S] 200 NNTP Service Ready 1191 [C] GROUP example.empty.newsgroup 1192 [S] 211 0 0 0 example.empty.newsgroup 1193 [C] HEAD 1194 [S] 420 No current article selected 1196 Example of a failure due to the service being unavailable 1198 [S] 200 NNTP Service Ready 1199 [C] HEAD 1200 [S] 502 Service unavailable 1202 9.2.3 BODY 1204 BODY 1205 BODY [number] 1207 The BODY command behaves identically to the ARTICLE command 1208 except that, if the article exists, only the body is presented 1209 (the blank line separating the headers and body MUST NOT be 1210 included). 1212 9.2.3.1 Responses 1214 First form (message-id specified): 1216 222 0 a article retrieved, body follows (multiline) 1217 Expires: May 30, 2001 Academ Consulting Services 1218 October 2000 1220 430 no such article 1221 502 service unavailable 1223 Second form (optional article number specified): 1225 222 n a article retrieved, body follows (multiline) 1226 412 no news group selected 1227 420 no current article selected 1228 423 no such article number in this group 1229 502 service unavailable 1231 Except that only the body is included in the response, the 222 1232 response behaves identically to the 220 response of the 1233 ARTICLE command. 1235 9.2.3.2 Examples 1237 Example of a successful retrieval of the body of an article 1238 (using no article number) 1240 [S] 200 NNTP Service Ready 1241 [C] GROUP misc.test 1242 [S] 211 1234 3000234 3002322 misc.test 1243 [C] BODY 1244 [S] 222 3000234 <45223423@to.to> 1245 [S] This is just a test article. 1246 [S] . 1248 Example of a successful retrieval of the body of an article by 1249 message-id 1251 [S] 200 NNTP Service Ready 1252 [C] BODY <45223423@to.to> 1253 [S] 222 0 <45223423@to.to> 1254 [S] This is just a test article. 1255 [S] . 1257 Example of an unsuccessful retrieval of the body of an article 1258 by message-id 1260 [S] 200 NNTP Service Ready 1261 [C] BODY 1262 [S] 430 No Such Article Found 1264 Example of an unsuccessful retrieval of the body of an article 1265 by number 1266 Expires: May 30, 2001 Academ Consulting Services 1267 October 2000 1269 [S] 200 NNTP Service Ready 1270 [C] GROUP misc.test 1271 [S] 211 1234 3000234 3002322 misc.test 1272 [C] BODY 300256 1273 [S] 423 No such article number in this group 1275 Example of an unsuccessful retrieval of the body of an article 1276 by number because no news group was selected first 1278 [S] 200 NNTP Service Ready 1279 [C] BODY 300256 1280 [S] 412 No news group selected 1282 Example of an attempt to retrieve the body of an article when 1283 the current group selected is empty 1285 [S] 200 NNTP Service Ready 1286 [C] GROUP example.empty.newsgroup 1287 [S] 211 0 0 0 example.empty.newsgroup 1288 [C] BODY 1289 [S] 420 No current article selected 1291 Example of a failure due to the service being unavailable 1293 [S] 200 NNTP Service Ready 1294 [C] BODY 1295 [S] 502 Service unavailable 1297 9.2.4 STAT 1299 STAT 1300 STAT [number] 1302 The STAT command behaves identically to the ARTICLE command 1303 except that, if the article exists, it is NOT presented to the 1304 client. 1306 This command allows the client to determine whether an article 1307 exists, and in the second form what its message-id is, without 1308 having to process an arbitrary amount of text. 1310 9.2.4.1 Responses 1312 First form (message-id specified): 1314 223 0 a article exists 1315 430 no such article 1316 Expires: May 30, 2001 Academ Consulting Services 1317 October 2000 1319 502 service unavailable 1321 Second form (optional article number specified): 1323 223 n a article exists 1324 412 no news group selected 1325 420 no current article selected 1326 423 no such article number in this group 1327 502 service unavailable 1329 The parameters of the 223 response are identical to those that 1330 would have been given in a 220 response to the equivalent 1331 ARTICLE command. However, the response is NOT multiline. 1333 9.2.4.2 Examples 1335 Example of STAT on an existing article (using no article 1336 number) 1338 [S] 200 NNTP Service Ready 1339 [C] GROUP misc.test 1340 [S] 211 1234 3000234 3002322 misc.test 1341 [C] STAT 1342 [S] 223 3000234 <45223423@to.to> 1344 Example of a STAT of an existing article by message-id 1346 [S] 200 NNTP Service Ready 1347 [C] STAT <45223423@to.to> 1348 [S] 223 0 <45223423@to.to> 1350 Example of an STAT of an article not on the server by message- 1351 id 1353 [S] 200 NNTP Service Ready 1354 [C] STAT 1355 [S] 430 No Such Article Found 1357 Example of STAT of an article not in the server by number 1359 [S] 200 NNTP Service Ready 1360 [C] GROUP misc.test 1361 [S] 211 1234 3000234 3002322 misc.test 1362 Expires: May 30, 2001 Academ Consulting Services 1363 October 2000 1365 [C] STAT 300256 1366 [S] 423 No such article number in this group 1368 Example of STAT of an article by number when no news group was 1369 selected first 1371 [S] 200 NNTP Service Ready 1372 [C] STAT 300256 1373 [S] 412 No news group selected 1375 Example of STAT of an article when the current group selected 1376 is empty 1378 [S] 200 NNTP Service Ready 1379 [C] GROUP example.empty.newsgroup 1380 [S] 211 0 0 0 example.empty.newsgroup 1381 [C] STAT 1382 [S] 420 No current article selected 1384 Example of a failure due to the service being unavailable 1386 [S] 200 NNTP Service Ready 1387 [C] STAT 1388 [S] 502 Service unavailable 1390 9.3 Article Posting 1392 Article posting is done in one of two modes: individual 1393 article posting from news reading clients and article transfer 1394 from other news servers. 1396 9.3.1 POST 1398 POST 1400 If posting is allowed, response code 340 MUST be returned to 1401 indicate that the article to be posted should be sent. 1403 Response code 440 MUST be sent if that posting is prohibited 1404 for some installation-dependent reason. 1406 If posting is permitted, the article MUST be presented to the 1407 server by the client in the format specified by RFC 1036. The 1408 text forming the header and body of the message to be posted 1409 MUST be sent by the client using the conventions for text 1410 received from the news server: A single period (".") on a line 1411 indicates the end of the text, with lines starting with a 1412 Expires: May 30, 2001 Academ Consulting Services 1413 October 2000 1415 period in the original text having that period doubled during 1416 transmission. 1418 Following the presentation of the termination sequence by the 1419 client, the server MUST return a response code indicating 1420 success or failure of the article transfer. Note that response 1421 codes 340 and 440 are used in direct response to the POST 1422 command. Others are returned following the sending of the 1423 article. 1425 No attempt shall be made by the server to filter characters, 1426 fold or limit lines, or otherwise process incoming text. The 1427 intent is that the server just passes the incoming message to 1428 be posted to the server installation's news posting software, 1429 which is not part of this specification. 1431 9.3.1.1 Responses 1433 240 article received ok 1434 340 send article to be posted. End with . 1435 440 posting not allowed 1436 441 posting failed 1438 9.3.1.2 Examples 1440 Example of a successful posting 1442 [S] 200 NNTP Service Ready 1443 [C] POST 1444 [S] 340 Input article. End with . 1445 [C] From: demo@testdomain.com(Demo User) 1446 [C] Newsgroups: misc.test 1447 [C] Subject: I am just a test article 1448 [C] Organization: Testdomain, USA 1449 [C] 1450 [C] This is just a test article. 1451 [C] . 1452 [S] 240 Article received ok 1454 Example of an unsuccessful posting 1456 [S] 200 NNTP Service Ready 1457 [C] POST 1458 Expires: May 30, 2001 Academ Consulting Services 1459 October 2000 1460 [S] 340 Input article. End with . 1461 [C] From: demo@testdomain.com(Demo User) 1462 [C] Newsgroups: misc.test 1463 [C] Subject: I am just a test article 1464 [C] Organization: Testdomain, USA 1465 [C] 1466 [C] This is just a test article. 1467 [C] . 1468 [S] 441 Posting failed 1470 Example of an attempt to posting when posting is not allowed 1472 [S] 201 NNTP Service Ready, read-only 1473 [C] POST 1474 [S] 440 Posting not permitted 1476 9.3.2 IHAVE 1478 IHAVE 1480 The IHAVE command informs the server that the client has an 1481 article whose id is . If the server desires a copy 1482 of that article, it MUST return a response instructing the 1483 client to send the entire article. If the server does not want 1484 the article (if, for example, the server already has a copy of 1485 it), a response indicating that the article is not wanted MUST 1486 be returned. 1488 If transmission of the article is requested, the client MUST 1489 send the entire article, including header and body, in the 1490 manner specified for text transmission from the server. The 1491 server MUST return a response code indicating success or 1492 failure of the transferal of the article. 1494 This function differs from the POST command in that it is 1495 intended for use in transferring already-posted articles 1496 between hosts. It SHOULD NOT be used when the client is a 1497 personal news reading program. In particular, this function 1498 will invoke the server's news posting program with the 1499 appropriate settings (flags, options, etc.) to indicate that 1500 the forthcoming article is being forwarded from another host. 1502 However, the server MAY elect not to post or forward the 1503 article if after further examination of the article it deems 1504 Expires: May 30, 2001 Academ Consulting Services 1505 October 2000 1507 it inappropriate to do so. Reasons for such subsequent 1508 rejection of an article may include such problems as 1509 inappropriate news groups or distributions, disk space 1510 limitations, article lengths, garbled headers, and the like. 1511 These are typically restrictions enforced by the server host's 1512 news software and not necessarily the NNTP server itself. 1514 9.3.2.1 Responses 1516 235 article transferred ok 1517 335 send article to be transferred. End with . 1519 435 article not wanted - do not send it 1520 436 transfer failed - try again later 1521 437 article rejected - do not try again 1523 Because some host news posting software may not be able to 1524 immediately render status on the whether an article is 1525 inappropriate for posting or forwarding, an NNTP server MAY 1526 acknowledge the successful transfer of the article and later 1527 silently discard it. Thus, an NNTP server MAY return the 235 1528 acknowledgment code and later discard the received article. 1530 9.3.2.2 Examples 1532 Example of successfully sending an article to another site 1534 [S] 200 NNTP Service Ready 1535 [C] IHAVE 1536 [S] 335 Send it. End with . 1537 [C] Path: pathost!demo!somewhere!not-for-mail 1538 [C] From: nobody@nowhere.to (Demo User) 1539 [C] Newsgroups: misc.test 1540 [C] Subject: I am just a test article 1541 [C] Date: 6 Oct 1998 04:38:40 -0500 1542 [C] Organization: Nowhere, To 1543 [C] Message-ID: 1544 [C] 1545 [C] This is just a test article. 1546 [C] . 1547 [S] 235 Article transferred ok 1548 Expires: May 30, 2001 Academ Consulting Services 1549 October 2000 1551 Example of sending an article to another site that rejects it 1553 [S] 200 NNTP Service Ready 1554 [C] IHAVE 1555 [S] 335 Send it. End with . 1556 [C] Path: pathost!demo!somewhere!not-for-mail 1557 [C] From: nobody@nowhere.to (Demo User) 1558 [C] Newsgroups: misc.test 1559 [C] Subject: I am just a test article 1560 [C] Date: 6 Oct 1998 04:38:40 -0500 1561 [C] Organization: Nowhere, To 1562 [C] Message-ID: 1563 [C] 1564 [C] This is just a test article. 1565 [C] . 1566 [S] 437 Article rejected. Don't send again 1568 Example of sending an article to another site where the 1569 transfer fails 1571 [S] 200 NNTP Service Ready 1572 [C] IHAVE 1573 [S] 335 Send it. End with . 1574 [C] Path: pathost!demo!somewhere!not-for-mail 1575 [C] From: nobody@nowhere.to (Demo User) 1576 [C] Newsgroups: misc.test 1577 [C] Subject: I am just a test article 1578 [C] Date: 6 Oct 1998 04:38:40 -0500 1579 [C] Organization: Nowhere, To 1580 [C] Message-ID: 1581 [C] 1582 [C] This is just a test article. 1583 [C] . 1584 [S] 436 Transfer failed 1585 Expires: May 30, 2001 Academ Consulting Services 1586 October 2000 1588 Example of sending an article to another site that rejects it 1590 [S] 200 NNTP Service Ready 1591 [C] IHAVE 1592 [S] 335 Send it. End with . 1593 [C] Path: pathost!demo!somewhere!not-for-mail 1594 [C] From: nobody@nowhere.to (Demo User) 1595 [C] Newsgroups: misc.test 1596 [C] Subject: I am just a test article 1597 [C] Date: 6 Oct 1998 04:38:40 -0500 1598 [C] Organization: Nowhere, To 1599 [C] Message-ID: 1600 [C] 1601 [C] This is just a test article. 1602 [C] . 1603 [S] 435 Don't send it again 1605 9.4 The LIST Keyword 1607 9.4.1 LIST 1609 LIST [ACTIVE [wildmat]] 1610 The response to the LIST keyword with no parameters returns a 1611 list of valid news groups and associated information. Each 1612 news group is sent as a line of text in the following format: 1613 group first last status 1614 where is the name of the news group, is the 1615 number of the last known article currently in that news group, 1616 is the number of the first article currently in the 1617 news group, and indicates the current status of the 1618 group on this server. Typically, the will be consist 1619 of the US-ASCII character 'y' where posting is permitted, 'n' 1620 where posting is not permitted and 'm' where postings will be 1621 forwarded to the news group moderator by the news server. 1622 Other status strings may exist. The definition of these other 1623 values and the circumstances under which they are returned is 1624 covered in other specifications. 1626 Expires: May 30, 2001 Academ Consulting Services 1627 October 2000 1628 The and fields will always be numeric. They 1629 may have leading zeros. The field corresponds to the 1630 "reported low water mark" and the field corresponds to 1631 the "reported high water mark" described in the GROUP command 1632 (see Section 9.1.1.1). 1634 The status of a news group only indicates how posts to that 1635 news group are processed. It does not if the current client is 1636 permitted to post. That is indicated by the status code 1637 returned as part of the greeting. 1639 Please note that an empty list (i.e., the text body returned 1640 by this command consists only of the terminating period) is a 1641 possible valid response, and indicates that there are 1642 currently no valid news groups. 1644 If the optional wildmat parameter is specified, the list is 1645 limited to only the groups that match the pattern. 1647 Specifying a single group is usually very efficient for the 1648 server. Multiple groups may be specified by using wildmat 1649 patterns (described in section 5). 1651 9.4.1.1 Responses 1653 215 list of news groups follows 1655 9.4.1.2 Examples 1657 Example of LIST returning a list of news groups 1658 [S] 200 NNTP Service Ready 1659 [C] LIST 1660 [S] 215 list of news groups follows 1661 [S] misc.test 3000234 3002322 y 1662 [S] alt.fc-writers.recovery 1 4 y 1663 [S] tx.natives.recovery 56 89 y 1664 [S] . 1666 Example of LIST returning no news groups 1668 [S] 200 NNTP Service Ready 1669 [C] LIST 1670 [S] 215 list of news groups follows 1671 [S] . 1673 Expires: May 30, 2001 Academ Consulting Services 1674 October 2000 1675 9.4.2 LIST ACTIVE.TIMES 1677 LIST ACTIVE.TIMES [wildmat] 1679 The active.times file is maintained by some news transport 1680 systems to contain information about who created a particular 1681 news group and when. The format of this file includes three 1682 fields. The first field is the name of the news group. The 1683 second is the time when this group was created on this news 1684 server measured in seconds since the start of January 1, 1970. 1685 The third is the email address of the entity that created the 1686 news group. When executed, the information is displayed 1687 following the 215 response. When display is completed, the 1688 server will send a period on a line by itself. If the 1689 information is not available, the server will return the 503 1690 error response. If the server does not recognize the command, 1691 it SHOULD return the 501 error response. 1693 If the optional wildmat parameter is specified, the list is 1694 limited to only the groups that match the pattern. 1696 Specifying a single group is usually very efficient for the 1697 server. Multiple groups may be specified by using wildmat 1698 patterns (described in section 5). 1700 9.4.2.1 Responses 1702 215 information follows 1703 501 Syntax error 1704 503 program error, function not performed 1706 9.4.2.2 Examples 1708 Example of LIST ACTIVE.TIMES returning a list of news groups 1710 [S] 200 NNTP Service Ready 1711 [C] LIST ACTIVE.TIMES 1712 [S] 215 information follows 1713 [S] misc.test 930445408 1714 [S] alt.rfc-writers.recovery 930562309 1715 [S] tx.natives.recovery 930678923 1716 [S] . 1718 Expires: May 30, 2001 Academ Consulting Services 1719 October 2000 1720 Example of LIST ACTIVE.TIMES returning an error (The server 1721 software is not configured to maintain this information, but 1722 does recognize the command as valid.) 1724 [S] 200 NNTP Service Ready 1725 [C] LIST ACTIVE.TIMES 1726 [S] 503 program error, function not performed 1728 Example of LIST ACTIVE.TIMES sent to a server that does not 1729 recognize this argument (e.g. The software does not maintain 1730 this information.) 1732 [S] 200 NNTP Service Ready 1733 [C] LIST ACTIVE.TIMES 1734 [S] 501 Syntax Error 1736 9.4.3 LIST DISTRIBUTIONS 1738 LIST DISTRIBUTIONS 1740 The distributions file is maintained by some news transport 1741 systems to contain information about valid values for the 1742 Distribution: line in a news article header and about what the 1743 values mean. Each line contains two fields, the value and a 1744 short explanation on the meaning of the value. When executed, 1745 the information is displayed following the 215 response. When 1746 display is completed, the server will send a period on a line 1747 by itself. If the information is not available, the server 1748 will return the 503 error response. If the server does not 1749 recognize this command, it SHOULD return the 501 error 1750 response. 1752 9.4.3.1 Responses 1754 215 information follows 1755 501 Syntax error 1756 503 program error, function not performed 1758 9.4.3.2 Examples 1760 Example of LIST DISTRIBUTIONS returning a list of news groups 1762 [S] 200 NNTP Service Ready 1763 [C] LIST DISTRIBUTIONS 1764 [S] 215 information follows 1765 [S] usa United States of America 1766 Expires: May 30, 2001 Academ Consulting Services 1767 October 2000 1768 [S] na North America 1769 [S] world All over the World 1770 [S] . 1772 Example of LIST DISTRIBUTIONS returning an error (e.g. The 1773 server software is not configured to maintain this 1774 information, but does recognize the command as valid.) 1776 [S] 200 NNTP Service Ready 1777 [C] LIST DISTRIBUTIONS 1778 [S] 503 program error, function not performed 1780 Example of LIST DISTRIBUTIONS sent to a server that does not 1781 recognize the command (e.g. The server does not maintain this 1782 information regardless of configuration.) 1784 [S] 200 NNTP Service Ready 1785 [C] LIST DISTRIBUTIONS 1786 [S] 501 Syntax Error 1788 9.4.4 LIST DISTRIB.PATS 1790 LIST DISTRIB.PATS 1792 The distrib.pats file is maintained by some news transport 1793 systems to allow clients to choose a value for the 1794 Distribution: line in the header of a news article being 1795 posted. The information returned consists of lines, in no 1796 particular order, each of which contains three fields 1797 separated by colons. These fields are a weight, a group name 1798 or wildmat pattern, and a Distribution: value, in that order. 1799 The client MAY use this information to select a Distribution: 1800 value based on the name of a newsgroup. To do so, it should 1801 determine the lines whose second field matches the newsgroup 1802 name, select that line with the highest weight (with 0 being 1803 the lowest), and use the Distribution: field from that line. 1804 When executed, the information is displayed following the 215 1805 response. When display is completed, the server will send a 1806 period on a line by itself. If the information is not 1807 available, the server will return the 503 error response. If 1808 this command is not recognized, the server SHOULD return the 1809 501 error response. 1811 Expires: May 30, 2001 Academ Consulting Services 1812 October 2000 1813 9.4.4.1 Responses 1815 215 information follows 1816 501 Syntax error 1817 503 program error, function not performed 1819 9.4.4.2 Examples 1821 Example of LIST DISTRIB.PATS returning a list of news groups 1823 [S] 200 NNTP Service Ready 1824 [C] LIST DISTRIB.PATS 1825 [S] 215 information follows 1826 [S] 10:local.*:local 1827 [S] . 1829 Example of LIST DISTRIB.PATS returning an error (e.g. The 1830 server software is not configured to maintain this 1831 information, but does recognize the command as valid.) 1833 [S] 200 NNTP Service Ready 1834 [C] LIST DISTRIB.PATS 1835 [S] 503 program error, function not performed 1837 Example of LIST DISTRIB.PATS sent to a server that does not 1838 recognize the command (e.g. The software does not maintain 1839 this information regardless of configuration.) 1841 [S] 200 NNTP Service Ready 1842 [C] LIST DISTRIB.PATS 1843 [S] 501 Syntax Error 1845 9.4.5 LIST NEWSGROUPS 1847 LIST NEWSGROUPS [wildmat] 1849 The newsgroups file is maintained by some news transport 1850 systems to contain the name of each news group that is 1851 active on the server and a short description about the 1852 purpose of each news group. Each line in the file contains 1853 two fields, the news group name and a short explanation of 1854 the purpose of that news group. When executed, the 1855 information is displayed following the 215 response. When 1856 display is completed, the server will send a period on a 1857 line by itself. If the information is not available, the 1858 server will return the 503 response. If the server does not 1859 Expires: May 30, 2001 Academ Consulting Services 1860 October 2000 1861 recognize the command it should return a 501 response. If 1862 the optional matching parameter is specified, the list is 1863 limited to only the groups that match the pattern (no 1864 matching is done on the group descriptions). Specifying a 1865 single group is usually very efficient for the server, and 1866 multiple groups may be specified by using a wildmat(see 1867 section 5), not regular expressions. If nothing is matched 1868 an empty list is returned, not an error. 1870 9.4.5.1 Responses 1872 215 information follows 1873 501 Syntax error 1874 503 program error, function not performed 1876 9.4.5.2 Examples 1878 Example of LIST NEWSGROUPS returning a list of news groups 1880 [S] 200 NNTP Service Ready 1881 [C] LIST NEWSGROUPS 1882 [S] 215 information follows 1883 [S] misc.test General Usenet testing 1884 [S] alt.rfc-writers.recovery RFC Writers Recovery 1885 [S] tx.natives.recovery Texas Natives Recovery 1886 [S] . 1888 Example of LIST NEWSGROUPS returning an error (e.g. The server 1889 software recognizes the command as valid, but the information 1890 is not available.) 1892 [S] 200 NNTP Service Ready 1893 [C] LIST NEWSGROUPS 1894 [S] 503 program error, function not performed 1896 9.5 Standard extensions 1898 Each of the following sections describes an extension that a 1899 server MAY provide. If the server provides the extension, it 1900 MUST include the appropriate extension label in the response 1901 to LIST EXTENSIONS. If it does not provide it, it MUST NOT 1902 include the appropriate extension label. The descriptions of 1903 facilities in each section are written as if the extension is 1904 Expires: May 30, 2001 Academ Consulting Services 1905 October 2000 1906 provided. If it is not provided, the entire section should be 1907 ignored. 1909 9.5.1 LISTGROUP extension 1911 This extension provides one command and has the extension 1912 label LISTGROUP. 1914 9.5.1.1 The LISTGROUP Command 1916 LISTGROUP [ggg] 1918 The LISTGROUP command is used to get a listing of all the 1919 article numbers in a particular news group. 1921 The optional parameter ggg is the name of the news group to 1922 be selected (e.g. "news.software.b"). A list of valid news 1923 groups may be obtained from the LIST command. If no group 1924 is specified, the current group is used as the default 1925 argument. 1927 The successful selection response will be a list of the 1928 article numbers in the group followed by a period on a line 1929 by itself. The list starts on the next line following the 1930 211 response code. 1932 When a valid group is selected by means of this command, 1933 the internally maintained "current article pointer" MUST be 1934 set to the first article in the group and the name of the 1935 current news group MUST be set to the selected news group 1936 name. If an invalid group is specified, the previously 1937 selected group and article remain selected. If an empty 1938 news group is selected, the "current article pointer" may 1939 be in an indeterminate state and should not be used. 1940 The LISTGROUP keyword MAY be used by a client as a 1941 replacement for the GROUP command in establishing a valid 1942 "current article pointer." After a successful response is 1943 received, any other command may be used that depends on 1944 having the "current article pointer" be valid. 1945 The group name MUST match a news group obtained from the 1946 LIST command or an error will result, else the server will 1947 respond with the 411 error code. 1949 A server that does not implement this command SHOULD return 1950 a 500 error response. 1952 9.5.1.1.1 Responses 1953 Expires: May 30, 2001 Academ Consulting Services 1954 October 2000 1956 211 list of article numbers follow 1957 411 No such group 1958 412 Not currently in news group 1959 500 Command not recognized 1961 9.5.1.1.2 Examples 1963 Example of a successful execution with a group that exists on 1964 the server 1966 [S] 200 NNTP Service Ready 1967 [C] LISTGROUP misc.test 1968 [S] 211 list of article numbers follow 1969 [S] 3000234 1970 [S] 3000237 1971 [S] 3000238 1972 [S] 3000239 1973 [S] 3002322 1974 [S] . 1976 Example of an unsuccessful execution with a group that does 1977 not exist on the server 1979 [S] 200 NNTP Service Ready 1980 [C] LISTGROUP this.group.is.not.here 1981 [S] 411 no such group 1983 Example of an attempt to retrieve an article when the current 1984 group selected is empty 1986 [S] 200 NNTP Service Ready 1987 [C] LISTGROUP example.empty.newsgroup 1988 [S] 412 No current article selected 1990 9.5.2 The OVER Extension 1992 This extension provides two commands, OVER and LIST 1993 OVERVIEW.FMT. The label for this extension is OVER. 1995 9.5.2.1 LIST OVERVIEW.FMT 1997 LIST OVERVIEW.FMT 1998 Expires: May 30, 2001 Academ Consulting Services 1999 October 2000 2000 The overview.fmt file is maintained by some news transport 2001 systems to contain the order in which header information is 2002 stored in the overview databases for each news group. When 2003 executed, news article header fields are displayed one line at 2004 a time in the order in which they are stored in the overview 2005 database[6] following the 215 response. When display is 2006 completed, the server will send a period on a line by itself. 2007 If the information is not available, the server will return 2008 the 503 response. 2010 If the header has the word "full" (without quotes) after the 2011 colon, the header's name is prepended to its field in the 2012 output returned by the server. 2014 This is command is part of the optional OVER extension which 2015 includes the OVER command defined in section . If the OVER 2016 extension is not implemented, then this command MUST NOT be 2017 implemented. If that case, the server MUST return a 501 error 2018 response when this command is presented by the client. 2020 9.5.2.1.1 Responses 2022 215 information follows 2023 501 Syntax Error 2024 503 program error, function not performed 2026 9.5.2.1.2 Examples 2028 Example of LIST OVERVIEW.FMT returning a list of news groups 2030 [S] 200 NNTP Service Ready 2031 [C] LIST OVERVIEW.FMT 2032 [S] 215 Order of fields in overview database. 2033 [S] Subject: 2034 [S] From: 2035 [S] Date: 2036 [S] Message-ID: 2037 [S] . 2039 Example of LIST OVERVIEW.FMT returning an error 2041 [S] 200 NNTP Service Ready 2042 [C] LIST OVERVIEW.FMT 2043 [S] 503 program error, function not performed 2044 Expires: May 30, 2001 Academ Consulting Services 2045 October 2000 2046 9.5.2.2 OVER 2048 OVER [range] 2050 The OVER command returns specific header information for the 2051 article(s) specified from the current selected group. The 2052 information returned in the response to this command can be 2053 used by clients to follow discussion threads. 2054 The optional range argument may be any of the following: 2055 o an article number 2056 o an article number followed by a dash to indicate all 2057 following 2058 o an article number followed by a dash followed by another 2059 article number 2061 If no argument is specified, then information from the current 2062 article is displayed. Successful responses start with a 224 2063 response followed by the overview information for all matched 2064 messages. Once the output is complete, a period is sent on a 2065 line by itself. If no argument is specified, the information 2066 for the current article is returned. A news group must have 2067 been selected earlier, else a 412 error response is returned. 2068 If no articles are in the range specified, the server returns 2069 a 420 error response. A 502 response will be returned if the 2070 client only has permission to transfer articles. A 500 2071 response SHOULD be returned by servers do not implement this 2072 command. 2074 The output consists of one line per article, sorted in 2075 numerical order of article number. Each line consists of a 2076 number of fields separated by an US-ASCII TAB character. The 2077 first 8 fields MUST be the following, in order: 2078 article number, subject, author, date, message-ID, references, 2079 byte count, line count 2081 The content of any subsequent field is given by the response 2082 to the LIST OVERVIEW.FMT command. A field may be empty (in 2083 which case there will be two adjacent US-ASCII tabs, and a 2084 sequence of trailing US-ASCII tabs may be omitted). Any 2085 sequence of US-ASCII space or non-printing characters in a 2086 field MUST be replaced by a single US-ASCII space. 2088 The server SHOULD not produce output for articles that no 2089 longer exist. 2091 Expires: May 30, 2001 Academ Consulting Services 2092 October 2000 2094 9.5.2.2.1 Responses 2096 224 Overview information follows 2097 412 No news group current selected 2098 420 No article(s) selected 2099 500 Command not recognized 2100 502 Service Unavailable 2102 9.5.2.2.2 Examples 2104 Example of a successful retrieval of overview information for 2105 an article (using no article number) 2107 [S] 200 NNTP Service Ready 2108 [C] GROUP misc.test 2109 [S] 211 1234 3000234 3002322 misc.test 2110 [C] OVER 2111 [S] 224 Overview information follows 2112 300234|I am just a test article|nobody@nowhere.to 2113 (Demo User)|6 Oct 1998 04:38:40 -0500| 2114 <45223423@to.to> 2115 [S] . 2116 [Please note that the line that begins with 300234 is all one 2117 line that has been wrapped for readability. A vertical bar has 2118 been inserted to show where the US-ASCII TAB should actually 2119 be.] 2121 Example of an unsuccessful retrieval of overview information 2122 on an article by number 2124 [S] 200 NNTP Service Ready 2125 [C] GROUP misc.test 2126 [S] 211 1234 3000234 3002322 misc.test 2127 [C] OVER 300256 2128 [S] 420 No such article in this group 2130 Example of an unsuccessful retrieval of overview information 2131 by number because no news group was selected first 2133 [S] 200 NNTP Service Ready 2134 [C] OVER 2135 [S] 412 No news group selected 2136 Expires: May 30, 2001 Academ Consulting Services 2137 October 2000 2138 Example of an attempt to retrieve an article when the current 2139 group selected is empty 2141 [S] 200 NNTP Service Ready 2142 [C] GROUP example.empty.newsgroup 2143 [S] 211 0 0 0 example.empty.newsgroup 2144 [C] OVER 2145 [S] 420 No current article selected 2147 9.5.3 The PAT Extension 2149 This extension provides one new command, PAT. The label for 2150 this extension is PAT. 2152 9.5.3.1 PAT 2154 PAT header range| [wildmat] 2156 The PAT command is used to retrieve specific headers from 2157 specific articles in the currently selected group, based on 2158 pattern matching on the contents of the header. 2159 The required header parameter is the name of a header line 2160 (e.g. "subject") in a news group article. See RFC-1036 for a 2161 list of valid header lines. The required range argument may be 2162 any of the following: 2164 o an article number 2165 o an article number followed by a dash to indicate all 2166 following 2167 o an article number followed by a dash followed by another 2168 article number. 2170 The required message-id argument indicates a specific article. 2171 The range and message-id arguments are mutually exclusive. 2172 Additional arguments consisting of one or more wildmats, 2173 separated by an US-ASCII space, may be specified. The default 2174 is the single wildmat "*". 2176 A successful response consists of a 221 code followed by the 2177 output from the command. The output consists of one line for 2178 each article where the relevant header line matches one or 2179 more of the wildmats. The line consists of the article number, 2180 a US-ASCII space, and then the contents of the header (without 2181 the header name). A valid response includes an empty list 2182 (indicating that there were no matches). Once the output is 2183 complete, a period is sent on a line by itself. If the 2184 Expires: May 30, 2001 Academ Consulting Services 2185 October 2000 2187 optional argument is a message-id and no such article exists, 2188 a 430 error response shall be returned. A 502 response shall 2189 be returned if the client only has permission to transfer 2190 articles. A 500 response SHOULD be issued by all servers that 2191 do not recognize this command. 2193 9.5.3.1.1 Responses 2195 221 Header follows 2196 412 no newsgroup selected 2197 430 no such article 2198 500 Command not recognized 2199 502 Service Unavailable 2201 9.5.3.1.2 Examples 2203 Example of a successful retrieval of subject lines from a 2204 range of articles 2206 [S] 200 NNTP Service Ready 2207 [C] GROUP misc.test 2208 [S] 211 1234 3000234 3002322 misc.test 2209 [C] PAT Subject 3000234-300238 2210 [S] 221 Header Follows 2211 [S] 3000234 I am just a test article 2212 [S] 3000237 Re: I am just a test article 2213 [S] 3000238 Ditto 2214 [S] . 2216 Example of a successful retrieval of subject lines from a 2217 range of articles with header pattern matching 2219 [S] 200 NNTP Service Ready 2220 [C] GROUP misc.test 2221 [S] 211 1234 3000234 3002322 misc.test 2222 [C] PAT Subject 3000234-300238 *j* 2223 [S] 221 Header Follows 2224 [S] 3000234 I am just a test article 2225 [S] 3000237 Re: I am just a test article 2226 [S] . 2228 Expires: May 30, 2001 Academ Consulting Services 2229 October 2000 2230 Example of a successful retrieval of header from an article by 2231 message-id 2233 [S] 200 NNTP Service Ready 2234 [C] GROUP misc.test 2235 [S] 211 1234 3000234 3002322 misc.test 2236 [C] PAT subject 2237 [S] 221 Header information follows 2238 [S] 3000345 I am just a test article 2239 [S] . 2241 Example of an unsuccessful retrieval of a header from an 2242 article by message-id 2244 [S] 200 NNTP Service Ready 2245 [C] PAT subject 2246 [S] 430 No Such Article Found 2248 Example of an unsuccessful retrieval of headers from articles 2249 by number because no news group was selected first 2251 [S] 200 NNTP Service Ready 2252 [C] PAT subject 300256- 2253 [S] 412 No news group selected 2255 Example of an unsuccessful retrieval of headers from articles 2256 by message-id because no news group was selected first 2258 [S] 200 NNTP Service Ready 2259 [C] PAT subject 2260 [S] 412 No news group selected 2262 Example of retrieving header information when the current 2263 group selected is empty 2265 [S] 200 NNTP Service Ready 2266 [C] GROUP example.empty.newsgroup 2267 [S] 211 0 0 0 example.empty.newsgroup 2268 [C] PAT subject 0- 2269 [S] 221 Headers follow 2270 . 2272 Example of a failure due to restrictions configured into the 2273 server 2275 [S] 200 NNTP Service Ready 2276 Expires: May 30, 2001 Academ Consulting Services 2277 October 2000 2278 [C] GROUP news.group 2279 [S] 211 1234 3000234 3002322 misc.test 2280 [C] PAT Subject 3000234-300238 2281 [S] 502 Service Unavailable 2283 10. The CONCLUSION Step 2285 10.1 QUIT 2287 QUIT 2289 The server process MUST acknowledge the QUIT command and then 2290 close the connection to the client. This is the preferred 2291 method for a client to indicate that it has finished all its 2292 transactions with the NNTP server. 2294 If a client simply disconnects (or the connection times out or 2295 some other fault occurs), the server MUST gracefully cease its 2296 attempts to service the client, disconnecting from its end if 2297 necessary. 2299 10.1.1 Responses 2301 205 closing connection - goodbye! 2303 10.1.2 Example 2305 [S] 200 NNTP Service Ready 2306 [C] QUIT 2307 [S] 205 closing connection 2309 11. Other Keywords 2311 There are other keywords that may be used at any time between 2312 the beginning of a session and its termination. Using these 2313 keywords does not alter any state information, but the 2314 response generated from the use of these keywords may provide 2315 useful information to clients that use them. 2317 11.1 DATE 2319 DATE 2320 This command exists to help clients find out the current time 2321 from the server's perspective. This command SHOULD NOT be 2322 Expires: May 30, 2001 Academ Consulting Services 2323 October 2000 2324 used as a substitute for NTP[7], but to provide information 2325 that might be useful when using the NEWNEWS command (see 2326 section 11.4). 2328 This command returns a one-line response code of 111 followed 2329 by the UTC (or GMT) date and time on the server in the form 2330 YYYYMMDDhhmmss. 2332 11.1.1 Responses 2334 111 YYYYMMDDhhmmss 2336 11.1.2 Example 2338 [S] 200 NNTP Service Ready 2339 [C] DATE 2340 [S] 111 19990623135624 2342 11.2 The HELP Command 2344 HELP 2346 This command provides a short summary of commands that are 2347 understood by this implementation of the server. The help text 2348 will be presented as a textual response terminated by a single 2349 period on a line by itself. 2351 This text is not guaranteed to be in any particular format and 2352 SHALL NOT be used by clients as a replacement for the LIST 2353 EXTENSIONS command described in section 8.1. 2355 11.2.1 Responses 2357 100 help text follows 2359 11.2.2 Example 2361 [S] 200 NNTP Service Ready 2362 [C] HELP 2363 [S] 100 Help text follows 2364 [S] This is some help text. There is no specific 2365 [S] formatting requirement for this test, though 2366 [S] it is customary for it to list the valid commands 2367 [S] and give a brief definition of what they do 2368 Expires: May 30, 2001 Academ Consulting Services 2369 October 2000 2370 [S] . 2372 11.3 NEWGROUPS 2374 NEWGROUPS date time [GMT|UTC] 2376 A list of newsgroups created since MUST be 2377 listed in the same format as the LIST command. 2379 The date is sent as 6 or 8 digits in the format [XX]YYMMDD, 2380 where XX is the first two digits of the year, YY is the last 2381 two digits of the year, MM is the two digits of the month 2382 (with leading zero, if appropriate), and DD is the day of the 2383 month (with leading zero, if appropriate). If the first two 2384 digits of the year are not specified, the year is to be taken 2385 from the current century if YY is smaller than or equal to the 2386 current year, otherwise the year is from the previous century. 2388 Time must also be specified. It must be as 6 digits HHMMSS 2389 with HH being hours in the 24-hour clock 00-23, MM minutes 00- 2390 59, and SS seconds 00-60, which allows for leap seconds. The 2391 tokens "GMT" and "UTC" specifies that the date and time are 2392 given in UTC. If the tokens "GMT" and "UTC" are omitted then 2393 the date and time are specified in the server's local 2394 timezone. Note that there is no way within this specification 2395 of NNTP to establish the server's local timezone. 2397 Note that an empty list (i.e., the text body returned by this 2398 command consists only of the terminating period) is a possible 2399 valid response, and indicates that there are currently no new 2400 newsgroups. 2402 Clients SHOULD make all queries using GMT/UTC time when 2403 possible. 2405 11.3.1 Responses 2407 231 list of new newsgroups follows 2409 11.3.2 Examples 2411 Example where there are new groups 2413 [S] 200 NNTP Service Ready 2414 [C] NEWGROUPS 19990624 000000 UTC 2415 [S] 230 list of new newsgroups follows 2416 [S] alt.rfc-writers.recovery 2417 [S] tx.natives.recovery 2418 Expires: May 30, 2001 Academ Consulting Services 2419 October 2000 2420 [S] . 2422 Example where there are no new groups 2424 [S] 200 NNTP Service Ready 2425 [C] NEWGROUPS 19990624 000000 UTC 2426 [S] 230 list of new newsgroups follows 2427 [S] . 2429 11.4 NEWNEWS 2431 NEWNEWS newsgroups date time [GMT] 2433 A list of message-ids of articles posted or received to the 2434 specified news group or groups since "date" will be listed. 2435 The format of the listing will be one message-id per line, as 2436 though text were being sent. Each message-id SHALL appear only 2437 once in a response. The order of the response has no specific 2438 significance and may vary from response to response in the 2439 same session. A single line consisting solely of one period 2440 followed by CR-LF will terminate the list. 2442 Date and time are in the same format as the NEWGROUPS command. 2443 The newsgroups parameter MUST be in wildmat format and MAY 2444 consist of multiple wildmat constructs separated by an US- 2445 ASCII comma character. 2447 Note that an empty list (i.e., the text body returned by this 2448 command consists only of the terminating period) is a possible 2449 valid response, and indicates that there is currently no new 2450 news. 2452 Clients SHOULD make all queries in GMT/UTC time when possible. 2454 11.4.1 Responses 2456 230 list of new articles by message-id follows 2458 11.4.2 Examples 2460 Example where there are new articles 2462 [S] 200 NNTP Service Ready 2463 [C] NEWNEWS news.*,sci.* 19990624 000000 2464 [S] 230 list of new articles by message-id follows 2465 [S] 2466 [S] 2467 Expires: May 30, 2001 Academ Consulting Services 2468 October 2000 2470 Example where there are no new articles 2472 [S] 200 NNTP Service Ready 2473 [C] NEWNEWS alt.* 19990624 000000 2474 [S] 230 list of new articles by message-id follows 2475 [S] . 2477 12. Framework for NNTP Extensions 2479 Although NNTP is widely and robustly deployed, some parts of 2480 the Internet community might wish to extend the NNTP service. 2481 This memo defines a means whereby an extended NNTP client may 2482 query the server to determine the service extensions that it 2483 supports. 2485 It must be emphasized that any extension to the NNTP service 2486 should not be considered lightly. NNTP's strength comes 2487 primarily from its simplicity. Experience with many protocols 2488 has shown that: 2490 Protocols with few options tend towards ubiquity, whilst 2491 protocols with many options tend towards obscurity. 2493 This means that each and every extension, regardless of its 2494 benefits, must be carefully scrutinized with respect to its 2495 implementation, deployment, and interoperability costs. In 2496 many cases, the cost of extending the NNTP service will likely 2497 outweigh the benefit. 2499 Given this environment, the framework for the extensions 2500 described in this memo consists of: 2502 a)a mechanism for clients to determine a server's available 2503 extensions 2504 b)a registry of NNTP service extensions 2506 The LIST EXTENSIONS command is described in section 8.1 of 2507 this memo and is the mechanism for clients to use to determine 2508 what extensions are available for client use. 2510 The IANA shall maintain a registry of NNTP service extensions. 2512 An extension is identified by an unique extension-label, which 2513 is an string of 1 to 12 uppercase letters. The extension-label 2514 will often be the name of a new command that the extension 2515 adds. However this is not a requirement: an extension might 2516 not add any new commands or keywords. 2518 Expires: May 30, 2001 Academ Consulting Services 2519 October 2000 2520 An extension is either a private extension or else it is 2521 included in the IANA registry and is defined in an RFC. Such 2522 RFCs either must be on the standards-track or must define an 2523 IESG-approved experimental protocol. 2525 The definition of an extension must include: 2526 o a descriptive name for the extension 2527 o the extension-label (which is returned by LIST EXTENSIONS 2528 to 2529 o indicate to the client that the server supports this 2530 particular extension) 2531 o the syntax, values, and meanings of any parameters 2532 following the extension-label in the output of LIST 2533 EXTENSIONS 2534 o any new NNTP keywords associated with the extension 2535 o the syntax and possible values of parameters associated 2536 with the new NNTP keywords 2537 o any new parameters the extension associates with any 2538 other pre-existing NNTP keywords 2539 o how support for the extension affects the behavior of a 2540 server and client NNTP 2541 o any increase in the maximum length of commands over the 2542 value specified in this memo 2544 The extension-label of private extensions MUST begin with "X". 2545 The extension-label of registered extensions MUST NOT begin 2546 with "X". 2548 Any keyword values presented in the NNTP response that do not 2549 begin with "X" MUST correspond to a standard, standards-track, 2550 or IESG-approved experimental NNTP service extension 2551 registered with IANA. A conforming server MUST NOT offer non 2552 "X" prefixed keyword values that are not described in a 2553 registered extension. 2555 Except where stated otherwise, the commands in this document 2556 are understood (even if not supported) by all servers and are 2557 not described in the list of features returned by the LIST 2558 EXTENSIONS command. 2560 A server MAY provide additional keywords - either new commands 2561 or new parameters to existing commands - as part of a private 2562 extension. These new keywords MUST begin with "X". 2564 A server MUST NOT send different response codes to basic NNTP 2565 commands documented here or commands documented in registered 2566 extensions in response to the availability or use of a private 2567 extension. 2569 Expires: May 30, 2001 Academ Consulting Services 2570 October 2000 2572 12.1 Initial IANA Registry 2574 The IANA's initial registry of NNTP service extensions 2575 consists of these entries: 2577 Service Extension NNTP Extension Label Added Behavior 2578 ----------------- -------------------- --------------- 2579 Overview Support OVER Defined in this 2580 document 2582 Specific Article LISTGROUP Defined in this 2583 Numbers document 2585 Header Pattern PAT Defined in this 2586 Matching document 2588 13. Augmented BNF[8] Syntax for NNTP Commands 2590 This syntax defines the non-terminal "command". The non-terminal 2591 "parameter" is used for command parameters whose syntax is 2592 specified elsewhere. The syntax is in alphabetical order. Note 2593 that ABNF strings are case insensitive. 2595 article-command = "ARTICLE" [1*WSP (msg-id / article-number)] 2596 *WSP CRLF 2597 article-number = 1*16DIGIT 2598 argument = parameter ; excluding sequence ".." 2599 body-command = "BODY" [1*WSP (msg-id / article-number)] *WSP 2600 CRLF 2601 command = article-command / 2602 body-command / 2603 date-command / 2604 group-command / 2605 head-command / 2606 help-command / 2607 ihave-command / 2608 last-command / 2609 list-active-times-command / 2610 list-distrib-pats-command / 2611 list-distributions-command / 2612 list-extensions-command / 2613 list-newsgroups-command / 2614 list-overview-fmt-command / 2615 list-command / 2616 listgroup-command / 2617 mode-reader-command / 2618 newgroups-command / 2619 newnews-command / 2620 next-command / 2621 Expires: May 30, 2001 Academ Consulting Services 2622 October 2000 2623 over-command / 2624 pat-command / 2625 post-command / 2626 quit-command / 2627 stat-command 2628 CR = %x0D 2629 CRLF = CR LF 2630 date-command = "DATE" *WSP CRLF 2631 date = 6*8DIGIT 2632 DIGIT = %x30-39 2633 group-command = "GROUP" 1*WSP newsgroup *WSP CRLF 2634 head-command = "HEAD" [1*WSP (msg-id / article-number)] *WSP 2635 CRLF 2636 header = parameter 2637 help-command = "HELP" *WSP CRLF 2638 HT = %x09 2639 ihave-command = "IHAVE" 1*WSP msg-id *WSP CRLF 2640 last-command = "LAST" *WSP CRLF 2641 LF = %x0A 2642 list-active-times-command = "LIST" 1*WSP "ACTIVE.TIMES" 2643 [1*WSP wildmat] *WSP CRLF 2644 list-command = "LIST" [1*WSP "ACTIVE" [1*WSP wildmat]] *WSP 2645 CRLF 2646 list-distrib-pats-command = "LIST" 1*WSP "DISTRIB.PATS" *WSP 2647 CRLF 2648 list-distributions-command = "LIST" 1*WSP "DISTRIBUTIONS" *WSP 2649 CRLF 2650 list-extensions-command = "LIST" 1*WSP "EXTENSIONS" *WSP CRLF 2651 list-newsgroups-command = "LIST" 1*WSP "NEWSGROUPS" [1*WSP 2652 wildmat] 2653 *WSP CRLF 2654 list-overview-fmt-command = "LIST" 1*WSP "OVERVIEW.FMT" *WSP 2655 CRLF 2656 listgroup-command = "LISTGROUP" [1*WSP newsgroup] *WSP CRLF 2657 mode-reader-command = "MODE" 1*WSP "READER" *WSP CRLF 2658 msg-id = 2659 newgroups-command = "NEWGROUPS" 1*WSP date 1*WSP time [1*WSP 2660 "GMT"/"UTC"] *WSP CRLF 2661 newnews-command = "NEWNEWS" 1*WSP newsgroup *("," newsgroup) 2662 1*WSP date 1*WSP time [1*WSP "GMT"/"UTC"] 2663 *WSP CRLF 2664 newsgroup = parameter 2665 next-command = "NEXT" *WSP CRLF 2666 over-command = "OVER" [1*WSP range] *WSP CRLF 2667 parameter = 1*(%x21-FF) ; generic command parameter 2668 pat-command = "PAT" 1*WSP header 1*WSP (range / msg-id) 2669 *(1*WSP wildmat) *WSP CRLF 2670 Expires: May 30, 2001 Academ Consulting Services 2671 October 2000 2672 post-command = "POST" *WSP CRLF 2673 quit-command = "QUIT" *WSP CRLF 2674 range = article-number ["-" [article-number]] 2675 SP = %x20 2676 stat-command = "STAT" [1*WSP (msg-id / article-number)] *WSP 2677 CRLF 2678 time = 6DIGIT 2679 UTF-8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4 / UTF8-5 / UTF8-6 2680 UTF8-1 = %x80-BF 2681 UTF8-2 = %xC0-DF UTF8-1 2682 UTF8-3 = %xE0-EF 2UTF8-1 2683 UTF8-4 = %xF0-F7 3UTF8-1 2684 UTF8-5 = %xF8-FB 4UTF8-1 2685 UTF8-6 = %xFC-FD 5UTF8-1 2686 wildmat = ["!"]1*("*" / "?" / wildmat-exact / wildmat-set / 2687 "\" (%x22-7F / UTF-8-non-ascii)) 2688 wildmat-exact = %x22-29 / %x2B-3E / %x40-5A / %x5D-7F / UTF-8- 2689 non-ascii ; exclude space ! * ? [ \ 2690 wildmat-non-hyphen = %x21-2C / %x2E-7F / UTF-8-non-ascii ; 2691 exclude space - 2692 wildmat-set = "[" ["^"] ["]" / "-"] *(wildmat-non-hyphen"["-" 2693 wildmat-non-hyphen]) ["-"] 2694 WSP = SP / HT 2696 14. Security Considerations 2698 This section is meant to inform application developers, 2699 information providers, and users of the security limitations 2700 in NNTP as described by this document. The discussion does not 2701 include definitive solutions to the problems revealed, though 2702 it does make some suggestions for reducing security risks. 2704 14.1 Personal and Proprietary Information 2706 NNTP, because it was created to distribute network news 2707 articles, will forward whatever information is stored in those 2708 articles. Specification of that information is outside this 2709 scope of this document, but it is likely that some personal 2710 and/or proprietary information is available in some of those 2711 articles. It is very important that designers and implementers 2712 provide informative warnings to users so personal and/or 2713 proprietary information is not disclosed inadvertently. 2714 Additionally, effective and easily understood mechanisms to 2715 manage the distribution of news articles must be provided to 2716 NNTP Server administrators, so that they are able to report 2717 with confidence what information is and is not being forwarded 2718 in news articles passing though their servers. 2720 Expires: May 30, 2001 Academ Consulting Services 2721 October 2000 2722 14.2 Abuse of Server Log Information 2724 A server is in the position to save session data about a 2725 user's requests that might identify their reading patterns or 2726 subjects of interest. This information is clearly confidential 2727 in nature and its handling can be constrained by law in 2728 certain countries. People using the NNTP protocol to provide 2729 data are responsible for ensuring that such material is not 2730 distributed without the permission of any individuals that are 2731 identifiable by the published results. 2733 14.3 DNS Spoofing 2735 Clients and Servers using NNTP rely heavily on the Domain Name 2736 Service, and are thus generally prone to security attacks 2737 based on the deliberate misassociation of IP addresses and DNS 2738 names. Clients and Servers need to be cautious in assuming the 2739 continuing validity of an IP number/DNS name association. 2741 In particular, NNTP clients and servers SHOULD rely on their 2742 name resolver for confirmation of an IP number/DNS name 2743 association, rather than caching the result of previous host 2744 name lookups. Many platforms already can cache host name 2745 lookups locally when appropriate, and they SHOULD be 2746 configured to do so. It is proper for these lookups to be 2747 cached, however, only when the TTL (Time To Live) information 2748 reported by the name server makes it likely that the cached 2749 information will remain useful. 2751 If NNTP clients or servers cache the results of host name 2752 lookups in order to achieve a performance improvement, they 2753 MUST observe the TTL information reported by DNS. 2755 If NNTP clients or servers do not observe this rule, they 2756 could be spoofed when a previously-accessed server's IP 2757 address changes. As network renumbering is expected to become 2758 increasingly common, the possibility of this form of attack 2759 will grow. Observing this requirement thus reduces this 2760 potential security vulnerability. 2762 This requirement also improves the load-balancing behavior of 2763 clients for replicated servers using the same DNS name and 2764 reduces the likelihood of a user's experiencing failure in 2765 accessing sites which use that strategy. 2767 14.4 Weak Authentication and Access Control 2768 Expires: May 30, 2001 Academ Consulting Services 2769 October 2000 2770 There is no user-based or token-based authentication in the 2771 basic NNTP specification. Access is normally controlled by 2772 server configuration files. Those files specify access by 2773 using domain names or IP addresses. However, this 2774 specification does permit the creation of extensions to the 2775 NNTP protocol itself for such purposes. While including such 2776 mechanisms is optional, doing so is strongly encouraged. 2778 Other mechanisms are also available. For example, a proxy 2779 server could be put in place that requires authentication 2780 before connecting via the proxy to the NNTP server. 2782 15. References 2784 [1] Kantor, B and P. Lapsley, "Network News Transfer Protocol", 2785 RFC-977, U.C. San Diego and U.C. Berkeley. 2786 [2] Yergeau, F., "UTF-8, a transformation format of ISO 10646", 2787 RFC 2279, Alis Technologies. 2788 [3] Coded Character Set-7-bit American Standard Code for 2789 Information Interchange, ANSI x3.4-1986. 2790 [4] Bradner, Scott, "Key words for use in RFCs to Indicate 2791 Requirement Levels", RFC-2119, Harvard University. 2792 [5] Salz, Rich, Manual Page for wildmat(3) from the INN 1.4 2793 distribution, UUNET Technologies, Revision 1.10, April, 1992. 2794 [6] Robertson, Rob, "FAQ: Overview database / NOV General 2795 Information", ftp://ftp.uu.net/networking/news/nntp/inn/faq- 2796 nov.Z, January, 1995. 2797 [7] Mills, David L., "Network Time Protocol (Version 3), 2798 Specification, Implementation and Analysis", RFC-1305, 2799 University of Delaware, March 1992. 2800 [8] Crocker, D. and Overell, P., "Augmented BNF for Syntax 2801 Specifications: ABNF", RFC-2234, Internet Mail Consortium and 2802 Demon Internet, Ltd. 2804 16. Notes 2806 UNIX is a registered trademark of the X/Open Consortium. 2808 17. Acknowledgments 2810 The author acknowledges the original authors of NNTP as 2811 documented in RFC 977: Brian Kantor and Phil Lapsey. 2812 The author gratefully acknowledges the work of the NNTP 2813 committee chaired by Eliot Lear. The organization of this 2814 document was influenced by the last available draft from this 2815 working group. A special thanks to Eliot for generously 2816 providing the original machine readable sources for that 2817 document. 2819 Expires: May 30, 2001 Academ Consulting Services 2820 October 2000 2822 The author gratefully acknowledges the work of the Marshall 2823 Rose & John G. Meyers in RFC 1939 and the work of the DRUMS 2824 working group, specifically RFC 1869, which is the basis of 2825 the NNTP extensions mechanism detailed in this document. 2826 The author gratefully acknowledges the authors of RFC 2616 for 2827 providing specific and relevant examples of security issues 2828 that should be considered for HTTP. Since many of the same 2829 considerations exist for NNTP, those examples that are 2830 relevant have been included here with some minor rewrites. 2832 The author gratefully acknowledges the comments and additional 2833 information provided by the following individuals in preparing 2834 one of the progenitors of this document: 2836 o Wayne Davison 2837 o Clive D.W. Feather 2838 o Chris Lewis 2839 o Tom Limoncelli 2840 o Eric Schnoebelen 2841 o Rich Salz 2843 This work was motivated by the work of various newsreader 2844 authors and newsserver authors, which includes those listed 2845 below: 2847 o Rick Adams-Original author of the NNTP extensions to the 2848 RN newsreader and last maintainer of Bnews 2849 o Stan Barber-Original author of the NNTP extensions to the 2850 newsreaders that are part of Bnews. 2851 o Geoff Collyer-Original author of the OVERVIEW database 2852 proposal and one of the original authors of CNEWS 2853 o Dan Curry-Original author of the xvnews newsreader 2854 o Wayne Davison-Author of the first threading extensions to 2855 the RN newsreader (commonly called TRN). 2856 o Geoff Huston-Original author of ANU NEWS 2857 o Phil Lapsey-Original author of the UNIX reference 2858 implementation for NNTP 2859 o Iain Lea-Original maintainer of the TIN newsreader 2860 o Chris Lewis-First known implementor of the AUTHINFO 2861 GENERIC extension 2862 o Rich Salz-Original author of INN 2863 o Henry Spencer-One of the original authors of CNEWS 2864 o Kim Storm-Original author of the NN newsreader 2866 18.Author's Address 2868 Stan Barber 2869 P.O. Box 300481 2870 Houston, Texas 77230 2871 Email: 2873 This document expires May 30, 2001.