home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_j_p / draft-ietf-nntpext-base-02.txt < prev    next >
Text File  |  1997-09-10  |  85KB  |  2,028 lines

  1.  
  2.  
  3.  
  4.           INTERNET DRAFT                                          S. Barber
  5.           Expires: February 5, 1998              Academ Consulting Services
  6.                                                              September 1997
  7.  
  8.                            Network News Transport Protocol
  9.  
  10.                            draft-ietf-nntpext-base-02.txt
  11.  
  12.           1.   Status of this Document
  13.  
  14.             This document is an Internet-Draft. Internet-Drafts are
  15.             working documents of the Internet Engineering Task Force
  16.             (IETF), its areas, and its working groups.  Note that other
  17.             groups may also distribute working documents as Internet-
  18.             Drafts.
  19.  
  20.             Internet-Drafts are draft documents valid for a maximum of six
  21.             months and may be updated, replaced, or made obsolete by other
  22.             documents at any time.  It is inappropriate to use Internet-
  23.             Drafts as reference material or to cite them other than as
  24.             "work in progress."
  25.  
  26.  
  27.             To learn the current status of any Internet-Draft, please
  28.             check the "1id-abstracts.txt" listing contained in the
  29.             Internet-Drafts Shadow Directories on ftp.is.co.za (Africa),
  30.             nic.nordu.net (Europe), munnari.oz.au (Pacific Rim),
  31.             ds.internic.net (US East Coast), or ftp.isi.edu (US West
  32.             Coast).
  33.  
  34.             This document is a product of the NNTP Working Group, chaired
  35.             by Ned Freed and Stan Barber.
  36.  
  37.  
  38.  
  39.           2.    Abstract
  40.             The Network News Transport Protocol has been in use in the
  41.             Internet for a decade and remains one of the most popular
  42.             protocols (by volume) in use today. This document is a
  43.             replacement for RFC 977 and officially updates the protocol
  44.             specification. It clarifies some vagueness in RFC 977,
  45.             includes some new base functionality and provides a specific
  46.             mechanism to add standardized extensions to NNTP.
  47.  
  48.  
  49.  
  50.           3.   Introduction
  51.             This document specifies the Network News Transport Protocol
  52.             (NNTP), which is used for the distribution, inquiry,
  53.             retrieval, and posting of Usenet articles using a reliable
  54.             stream-based mechanism. For news reading clients, NNTP enables
  55.             retrieval of news articles that are stored in a central
  56.             database, giving subscribers the ability to select only those
  57.             articles they wish to read.
  58.  
  59.             The netnews model provides for indexing, cross-referencing,
  60.             and expiration of aged messages. For server-to-server
  61.  
  62.  
  63.           Barber                                              [Page 1]
  64.  
  65.  
  66.           INTERNET DRAFT                                September 1997
  67.  
  68.  
  69.             interaction, NNTP is designed for efficient transmission of
  70.             Usenet articles over a reliable full duplex communication
  71.             method.
  72.  
  73.             Every attempt is made to insure that the protocol
  74.             specification in this document is compatible with the version
  75.             specified in RFC 977[1].
  76.  
  77.             Generally, new functionality is available using new keywords.
  78.             Part of that new functionality involves a mechanism to
  79.             discover what new functionality is available to clients from a
  80.             server.
  81.  
  82.             This mechanism can also be used to add more functionality as
  83.             needs merit such additions.
  84.  
  85.             In this document, the words that are used to define the
  86.             significance of each particular requirement are capitalized.
  87.  
  88.             These words are:
  89.  
  90.             . "MUST"
  91.  
  92.             This word or the adjective "REQUIRED" means that the item is
  93.             an absolute requirement of the specification.
  94.  
  95.             . "SHOULD"
  96.  
  97.             This word or the adjective "RECOMMENDED" means that there may
  98.             exist valid reasons in particular circumstances to ignore this
  99.             item, but the full implications should be understood and the
  100.             case carefully weighed before choosing a different course.
  101.  
  102.             . "MAY"
  103.  
  104.             This word or the adjective "OPTIONAL" means that this item is
  105.             truly optional.  One vendor may choose to include the item
  106.             because a particular marketplace requires it or because it
  107.             enhances the product, for example; another vendor may omit the
  108.             same item.
  109.  
  110.             An implementation is not compliant if it fails to satisfy one
  111.             or more of the MUST requirements for this protocol.  An
  112.             implementation that satisfies all the MUST and all the SHOULD
  113.             requirements for its protocols is said to be "unconditionally
  114.             compliant"; one that satisfies all the MUST requirements but
  115.             not all the SHOULD requirements for NNTP is said to be
  116.             "conditionally compliant".
  117.  
  118.             For the remainder of this memo, the term "client host" refers
  119.             to a host making use of the NNTP service, while the term
  120.             "server host" refers to a host that offers the NNTP service.
  121.  
  122.  
  123.  
  124.  
  125.           Barber                                              [Page 2]
  126.  
  127.  
  128.           INTERNET DRAFT                                September 1997
  129.  
  130.  
  131.           4.   Basic Operation.
  132.  
  133.  
  134.             Every NNTP session MUST involve the following in this order:
  135.  
  136.             CONNECTION
  137.             GREETING
  138.             DISCONNECTION
  139.  
  140.             Other steps may occur between the GREETING and DISCONNECTION
  141.             step. They are:
  142.  
  143.             CAPABILITIES DISCOVERY
  144.             AUTHENTICATION
  145.             NEWS TRANSFER
  146.             CONCLUSION
  147.  
  148.             NNTP operates over any reliable data stream 8-bit-wide
  149.             channel. When running over TCP/IP, the official port for the
  150.             NNTP service is 119. Initially, the server host starts the
  151.             NNTP service by listening on a TCP port.  When a client host
  152.             wishes to make use of the service, it MUST establish a TCP
  153.             connection with the server host by connecting to that host on
  154.             the same port on which the server is listening. This is the
  155.             CONNECTION step.  When the connection is established, the NNTP
  156.             server host MUST send a greeting. This is the GREETING step.
  157.             The client host and server host then SHOULD then exchange
  158.             commands and responses (respectively) until the connection is
  159.             closed or aborted. This final step is called the DISCONNECTION
  160.             step.
  161.  
  162.             If there is a CONCLUSION step, it MUST immediately precede the
  163.             DISCONNECTION step. There MUST be only one CONNECTION,
  164.             CONCLUSION and DISCONNECTION step for each NNTP session. All
  165.             other steps MAY be repeated as needed.
  166.  
  167.             The default character set for all NNTP commands is US-
  168.             ASCII[2]. Commands in the NNTP MUST consist of a case-
  169.             insensitive keyword, which MAY be followed by one or more
  170.             arguments.  All commands MUST be terminated by a CRLF pair.
  171.             Multiple commands MUST not be permitted on the same line.
  172.             Keywords MUST consist of printable US-ASCII characters.
  173.             Unless otherwise noted elsewhere in this document, Arguments
  174.             SHOULD consist of printable US-ASCII characters. Keywords and
  175.             arguments MUST be each separated by one or more SPACE or TAB
  176.             characters. Keywords MUST be at least three characters and
  177.             MUST NOT exceed 12 characters.  Command lines MUST not exceed
  178.             512 characters, which includes the terminating CRLF pair.
  179.  
  180.             Each response MUST start with a three-digit status indicator
  181.             that is sufficient to distinguish all responses. Responses to
  182.             certain commands MAY be multi-line. In these cases, which are
  183.             clearly indicated below, after sending the first line of the
  184.             response and a CRLF, any additional lines are sent, each
  185.  
  186.  
  187.           Barber                                              [Page 3]
  188.  
  189.  
  190.           INTERNET DRAFT                                September 1997
  191.  
  192.  
  193.             terminated by a CRLF pair. When all lines of the response have
  194.             been sent, a final line MUST be sent, consisting of a
  195.             termination octet (ASCII decimal code 046, ".") and a CRLF
  196.             pair.  If any line of the multi-line response begins with the
  197.             termination octet, the line MUST be "byte-stuffed" by pre-
  198.             pending the termination octet to that line of the response.
  199.             Hence, a multi-line response is terminated with the five
  200.             octets "CRLF.CRLF".  When examining a multi-line response, the
  201.             client MUST check to see if the line begins with the
  202.             termination octet. If so and if octets other than CRLF follow,
  203.             the first octet of the line (the termination octet) MUST be
  204.             stripped away.  If so and if CRLF immediately follows the
  205.             termination character, then the response from the NNTP server
  206.             is ended and the line containing ".CRLF" MUST not considered
  207.             part of the multi-line response.
  208.  
  209.             A NNTP server MAY have an inactivity autologout timer. Such a
  210.             timer MUST be of at least 10 minutes duration.  The receipt of
  211.             any command from the client during that interval should
  212.             suffice to reset the autologout timer.  When the timer
  213.             expires, the server should close the TCP connection without
  214.             sending any response to the client.
  215.  
  216.  
  217.  
  218.           4.1       Responses Codes
  219.  
  220.             Each response MUST begin with a three-digit response code.
  221.             These are status reports from the server and indicate the
  222.             response to the last command received from the client.
  223.  
  224.             The first digit of the response broadly indicates the success,
  225.             failure, or progress of the previous command.
  226.  
  227.             1xx - Informative message
  228.             2xx - Command ok
  229.             3xx - Command ok so far, send the rest of it.
  230.             4xx - Command was correct, but couldn't be performed for some
  231.                reason.
  232.             5xx - Command unimplemented, or incorrect, or a serious
  233.                program error occurred.
  234.             The next digit in the code indicates the function response
  235.             category.
  236.  
  237.             x0x - Connection, setup, and miscellaneous messages
  238.             x1x - Newsgroup selection
  239.             x2x - Article selection
  240.             x3x - Distribution functions
  241.             x4x - Posting
  242.             x5x - Authentication and Authorization
  243.             x8x - Nonstandard (private implementation) extensions
  244.             x9x - Debugging output
  245.  
  246.  
  247.  
  248.  
  249.           Barber                                              [Page 4]
  250.  
  251.  
  252.           INTERNET DRAFT                                September 1997
  253.  
  254.  
  255.             The exact response codes that MUST be expected from each
  256.             command are detailed in the description of the keyword that is
  257.             the first part of the command. In addition, below is listed a
  258.             general set of response codes that MAY be received at any
  259.             time.
  260.  
  261.             Certain status responses contain parameters such as numbers
  262.             and names. The number and type of such parameters SHOULD be
  263.             fixed for each response code to simplify interpretation of the
  264.             response.
  265.  
  266.             Parameters MUST be separated from the numeric response code
  267.             and from each other by a single space. All numeric parameters
  268.             MUST be in base 10 (decimal) format, and may have leading
  269.             zeros. All string parameters MUST begin after the separating
  270.             space, and MUST end before the following separating space or
  271.             the CR-LF pair at the end of the line. (Therefore, string
  272.             parameters MUST not contain spaces.) All text, if any, in the
  273.             response which is not a parameter of the response must follow
  274.             and be separated from the last parameter by a space.  Also,
  275.             note that the text following a response number may vary in
  276.             different implementations of the server. The 3-digit numeric
  277.             code should be used to determine what response was sent.
  278.  
  279.             Response codes not specified in this standard MAY be used for
  280.             any installation-specific additional commands also not
  281.             specified. These SHOULD be chosen to fit the pattern of x8x
  282.             specified above. (Note that debugging is provided for
  283.             explicitly in the x9x response codes.)
  284.  
  285.             The use of unspecified response codes for a standard command
  286.             is prohibited.
  287.  
  288.             The response pattern x9x is provided for debugging.  Since
  289.             much debugging output may be classed as "informative
  290.             messages", it MUST be the case that responses 190 through 199
  291.             WILL be used for various debugging outputs.  There is no
  292.             requirement in this specification for debugging output.
  293.             However, if such is provided over the connected stream, it
  294.             MUST use these response codes.  If appropriate to a specific
  295.             implementation, other x9x codes MAY be used for debugging.
  296.             (For example, response code 290 could be used to acknowledge a
  297.             remote debugging request.)
  298.  
  299.             A server MUST respond to an unrecognized, unimplemented, or
  300.             syntactically invalid command with a negative status indicator
  301.             (response codes of the form 5XX).  A server MUST respond to a
  302.             command issued when the session is in an incorrect state by
  303.             responding with a negative status indicator. This may be from
  304.             either the 4XX or 5XX group as appropriate.
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.           Barber                                              [Page 5]
  312.  
  313.  
  314.           INTERNET DRAFT                                September 1997
  315.  
  316.  
  317.           5.   The WILDMAT format
  318.  
  319.             The WILDMAT format[3] was first developed by Rich Salz based
  320.             on the format used in the UNIX "find" command to articulate
  321.             file names. It was developed to provide a uniform mechanism
  322.             for matching patterns in the same manner that the UNIX shell
  323.             matches filenames. Patterns are implicitly anchored at the
  324.             beginning and end of each string when testing for a match.
  325.             There are five pattern-matching operations other than a strict
  326.             one-to-one match between the pattern and the source to be
  327.             checked for a match. The first is an asterisk (*) to match any
  328.             sequence of zero or more characters. The second is a question
  329.             mark (?) to match any single character. The third specifies a
  330.             specific set of characters. The set is specified as a list of
  331.             characters, or as a range of characters where the beginning
  332.             and end of the range are separated by a minus (or dash)
  333.             character, or as any combination of lists and ranges. The dash
  334.             can also be included in the set as a character if it is the
  335.             beginning or end of the set. This set is enclosed in square
  336.             brackets. The close square bracket (]) may be used in a set if
  337.             it is the first character in the set. The fourth operation is
  338.             the same as the logical not of the third operation and is
  339.             specified the same way as the third with the addition of a
  340.             caret character (^) at the beginning of the test string just
  341.             inside the open square bracket. The final operation uses the
  342.             backslash character to invalidate the special meaning of the
  343.             open square bracket ([), the asterisk, backslash or the
  344.             question mark. Two backslashes in sequence will result in the
  345.             evaluation of the backslash as a character with no special
  346.             meaning.
  347.  
  348.  
  349.  
  350.           5.1       Examples
  351.  
  352.                  a) [^]-] -- matches any single character other than a
  353.                     close square bracket or a minus sign/dash.
  354.                  b) *bdc  -- matches any string that ends with the string
  355.                     "bdc" including the string "bdc" (without quotes).
  356.                  c) [0-9a-zA-Z] -- matches any single printable alphanumeric
  357.                     ASCII character.
  358.                  d) a??d  --  matches any four character string which
  359.                     begins with a and ends with d.
  360.  
  361.           6.   Format for Keyword Descriptions
  362.  
  363.             On the following pages are descriptions of each keyword
  364.             recognized by the NNTP server and the responses that will be
  365.             returned by those commands. These keywords are grouped by the
  366.             functional step in which they are used.
  367.  
  368.             Each keyword is shown in upper case for clarity, although case
  369.             is ignored in the interpretation of commands by the NNTP
  370.             server. Any parameters are shown in lower case.  A parameter
  371.  
  372.  
  373.           Barber                                              [Page 6]
  374.  
  375.  
  376.           INTERNET DRAFT                                September 1997
  377.  
  378.  
  379.             shown in [square brackets] is optional. For example, [GMT]
  380.             indicates that the triglyph GMT may present or omitted. A
  381.             parameter that may be repeated is followed by an ellipsis.
  382.             Mutually exclusive parameters are separated by a vertical bar
  383.             (|) character. For example, ggg|<message-id> indicates that a
  384.             group name or a <message-id> may be specified, but not both.
  385.             Some parameters may be case or language specific. See RFC
  386.             1036[4] for these details.
  387.  
  388.             In addition, certain commands make use of a pattern for
  389.             selection of multiple news groups. The pattern in all cases is
  390.             based on the WILDMAT format introduced by Rich Salz in 1986.
  391.             Arguments expected to be in wildmat format will be represented
  392.             by the string wildmat. This format is discussed in detail in
  393.             section 5 of this memo.
  394.  
  395.  
  396.  
  397.           7.   The GREETING Step
  398.  
  399.  
  400.  
  401.           7.1       Initial Connection
  402.  
  403.             There is no keyword presented by the client upon initial
  404.             connection to the server. The server MUST present an
  405.             appropriate response code as a greeting to the client.  This
  406.             response informs the client about what steps the client should
  407.             take to reach the news exchange step.
  408.  
  409.             The server must present a 200 greeting code if the client is
  410.             authorized to post articles through the use of the POST keyword
  411.             on this server.
  412.  
  413.             The server must present a 201 greeting code if the client is
  414.             not authorized to post articles using the POST keyword, but no
  415.             other authentication is required.
  416.  
  417.             The server must present a 205 greeting code if the client is
  418.             required to present authentication before it is permitted to
  419.             use any keywords available in the news exchange step.
  420.  
  421.             The server must present a 502 greeting code if the client is
  422.             not permitted under any circumstances from interacting with
  423.             the server. The server should immediately close the connection
  424.             with the client after presenting this code.
  425.  
  426.             In all other cases, the server must present a 400 greeting
  427.             code.
  428.  
  429.  
  430.  
  431.           7.1.1     MODE READER
  432.  
  433.  
  434.  
  435.           Barber                                              [Page 7]
  436.  
  437.  
  438.           INTERNET DRAFT                                September 1997
  439.  
  440.  
  441.             MODE READER
  442.  
  443.             MODE READER MAY be used by the client to indicate to the
  444.             server that it is a news reading client. This command may be
  445.             entered at any time. The server must present a greeting code
  446.             (as described in section 7.1) appropriate to the server's
  447.             ability to provide service to this client in this mode.
  448.  
  449.  
  450.  
  451.           7.1.1.1   Responses
  452.  
  453.                  200 Hello, you can post
  454.                  201 Hello, you can't post
  455.                  205 Authentication required
  456.                  400 Service temporarily unavailable
  457.                  502 Service unavailable
  458.  
  459.  
  460.  
  461.           8.   The CAPABILITIES DISCOVERY Step
  462.  
  463.  
  464.             A client NNTP supporting NNTP service extensions should query
  465.             a server early in the session for extensions session by
  466.             issuing the LIST EXTENSIONS command. If the NNTP server
  467.             supports the NNTP service extensions it MUST give a successful
  468.             response (see section 8.1.1), a failure response (see section 
  469.             8.1.2), or an error response (see section 8.1.3). If the NNTP 
  470.             server does not support any NNTP service extensions, it MUST
  471.             generate an error response (see section 8.1.4).
  472.  
  473.  
  474.  
  475.           8.1  LIST EXTENSIONS
  476.  
  477.             If successful, the server NNTP MUST respond with code 202. On
  478.             failure, the server NNTP MUST respond with code 503. On error,
  479.             the server NNTP MUST respond with one of codes 400, 402, 500
  480.             and 501.
  481.  
  482.             This command MAY be issued at anytime during a session.  It is
  483.             not required that the client issues this command before
  484.             attempting to make use of any extension. The response
  485.             generated by this command MAY change during a session because
  486.             of other state information (e.g. authentication or server
  487.             administration). However, a client NNTP MUST not cache (for
  488.             use in another session) any information returned if the LIST
  489.             EXTENSIONS command succeeds. That is, a client NNTP MUST issue
  490.             the LIST EXTENSIONS command at least once during each session
  491.             to get the current and correct information concerning
  492.             available extensions during that session.
  493.  
  494.  
  495.  
  496.  
  497.           Barber                                              [Page 8]
  498.  
  499.  
  500.           INTERNET DRAFT                                September 1997
  501.  
  502.  
  503.           8.1.1     Successful response
  504.  
  505.             If the server NNTP implements and is able to perform the LIST
  506.             EXTENSIONS command, it MUST return code 202.
  507.  
  508.             This response MUST be a multi-line reply. Each line of the
  509.             response MUST contain a supported keyword and, optionally, one
  510.             or more parameters. The list MUST end with a period on a line
  511.             by itself.
  512.  
  513.             Although LIST EXTENSIONS keywords may be specified in upper,
  514.             lower, or mixed case, they must always be recognized and
  515.             processed in a case-insensitive manner.
  516.  
  517.  
  518.  
  519.           8.1.2     Failure response
  520.  
  521.             If for some reason the server NNTP is unable to list the
  522.             service extensions it supports, it MUST return code 503.
  523.  
  524.             In the case of a failure response, the client NNTP may try the
  525.             extensions either as the need arises or configure itself for
  526.             the basic NNTP functionality defined in this document.
  527.  
  528.  
  529.  
  530.           8.1.3     Error responses from extended servers
  531.  
  532.             If the server NNTP recognizes the LIST EXTENSIONS command, but
  533.             due to various conditions cannot make any extensions available
  534.             to the client at the time the client issued the LIST
  535.             EXTENSIONS command, it MUST return code 402. No list (even an
  536.             empty one) will be returned.
  537.  
  538.             The client NNTP should configure itself for the basic NNTP
  539.             functionality defined in this document, or issue commands that
  540.             might change the state of the server (authentication, for
  541.             example), or issue the QUIT command (see section 11.1) if a
  542.             particular extension is required for the client to properly
  543.             operate.
  544.  
  545.             If the server NNTP determines that the NNTP service is no
  546.             longer available (e.g., due to imminent system shutdown), it
  547.             must return code 400.
  548.  
  549.             In the case of an error response, the client NNTP should issue
  550.             the QUIT command (see section 11.1).
  551.  
  552.  
  553.  
  554.           8.1.4     Responses from servers without extensions
  555.  
  556.  
  557.  
  558.  
  559.           Barber                                              [Page 9]
  560.  
  561.  
  562.           INTERNET DRAFT                                September 1997
  563.  
  564.  
  565.             A server NNTP that conforms to this memo but does not support
  566.             the extensions specified here will not recognize the LIST
  567.             EXTENSIONS command and MUST consequently return code 500 or
  568.             code 501. The server NNTP SHALL stay in the same state after
  569.             returning this code. The client NNTP may try the extensions
  570.             either as the need arises or configure itself for the basic
  571.             NNTP functionality defined in this document.
  572.  
  573.  
  574.  
  575.           8.1.5     Responses from improperly implemented servers
  576.  
  577.             A server NNTP that improperly implements the LIST EXTENSIONS
  578.             command may return an empty list. Clients SHALL accommodate
  579.             this protocol violation and interpret it as a response code
  580.             402.
  581.  
  582.  
  583.           9.   The AUTHENTICATION Step
  584.  
  585.           9.1  AUTHINFO
  586.  
  587.             AUTHINFO is used to inform a server about the identity of a
  588.             user of the server. In all cases, clients MUST provide this
  589.             information when requested by the server. Servers are not
  590.             required to accept authentication information that is
  591.             volunteered by the client. Clients MUST accommodate servers
  592.             that reject any authentication information volunteered by the
  593.             client.
  594.  
  595.  
  596.  
  597.           9.1.1     AUTHINFO
  598.  
  599.             AUTHINFO USER username
  600.  
  601.             AUTHINFO PASS password
  602.  
  603.             When authorization is required, the server MUST send a 450
  604.             response requesting authorization from the client.  The client
  605.             MUST enter AUTHINFO USER username in order to make use of the
  606.             AUTHINFO authentication step. If the server will accept this
  607.             form of authentication and a password is required to complete
  608.             the authentication step, the server MUST respond with a 350
  609.             response. The client MUST then send AUTHINFO PASS followed by
  610.             one or more space characters followed by the password. If the
  611.             username/password combination is valid or no password is
  612.             required, the server MUST return a 250 response and the client
  613.             should then retry the original command to which the server
  614.             responded with the 450 response. The command SHALL then be
  615.             processed by the server normally. If the combination is not
  616.             valid, the server MUST return a 452 response.
  617.  
  618.  
  619.  
  620.  
  621.           Barber                                             [Page 10]
  622.  
  623.  
  624.           INTERNET DRAFT                                September 1997
  625.  
  626.  
  627.             If the server returns 501, this means that the authenticator
  628.             invocation was syntactically incorrect, or that this form of
  629.             AUTHINFO is not supported.
  630.  
  631.             If the requested authenticator capability is not found or
  632.             there is some other unspecified server program error, the
  633.             server MUST return the 503 response code.
  634.  
  635.  
  636.           9.1.1.1   Responses
  637.  
  638.                  250 Authorization accepted
  639.                  350 Continue with authorization sequence
  640.                  450 Authorization required for this command
  641.                  452 Authorization rejected
  642.                  501 Command not supported or Command Syntax Error
  643.                  502 Program error, function not performed
  644.  
  645.           9.1.2     AUTHINFO GENERIC
  646.  
  647.  
  648.             AUTHINFO GENERIC authenticator arguments...
  649.  
  650.             AUTHINFO GENERIC is used to identify a specific entity to the
  651.             server using arbitrary authentication or identification
  652.             protocols. The desired protocol is indicated by the
  653.             authenticator parameter, and any number of parameters can be
  654.             passed to the authenticator.
  655.  
  656.             When authorization is required, the server will send a 350
  657.             response requesting authorization from the client.
  658.  
  659.             The client should enter AUTHINFO GENERIC followed by the
  660.             authenticator name and the arguments if any.  The
  661.             authenticator and arguments must not contain the sequence
  662.             "..".
  663.  
  664.             The server will attempt to engage the server end
  665.             authenticator; similarly, the client should engage the client
  666.             end authenticator.  The server end authenticator will then
  667.             initiate authentication using the NNTP sockets (if appropriate
  668.             for that authentication protocol), using the protocol
  669.             specified by the authenticator name.  These authentication
  670.             protocols are not included in this document, but are similar
  671.             in structure to those referenced in RFC 1731[5] for the IMAP-4
  672.             protocol.
  673.  
  674.             If the server returns 501, this means that the authenticator
  675.             invocation was syntactically incorrect, or that AUTHINFO
  676.             GENERIC is not supported.  The client should retry using the
  677.             regular AUTHINFO command.
  678.  
  679.  
  680.  
  681.  
  682.  
  683.           Barber                                             [Page 11]
  684.  
  685.  
  686.           INTERNET DRAFT                                September 1997
  687.  
  688.  
  689.             If the requested authenticator capability is not found or
  690.             there is some other unspecified server program error, the
  691.             server returns the 503 response code.
  692.  
  693.             The authenticators converse using their protocol until
  694.             complete.  If the authentication succeeds, the server
  695.             authenticator will terminate with a 250, and the client can
  696.             continue by reissuing the command that prompted the 350. If
  697.             the authentication fails, the server will respond with a 452.
  698.  
  699.             The client must provide authentication when requested by the
  700.             server. The server may request authentication at any time.
  701.             Servers may request authentication more than once during a
  702.             single session.
  703.  
  704.             When the server authenticator completes, it provides to the
  705.             server (by a mechanism herein undefined) the email address of
  706.             the user, and potentially what the user is allowed to access.
  707.             Once authenticated, the server shall generate a Sender: line
  708.             using the email address provided by the authenticator if it
  709.             does not match the user-supplied From: line. Additionally, the
  710.             server should log the event, including the user's
  711.             authenticated email address (if available). This will provide
  712.             a means by which subsequent statistics generation can
  713.             associate news group references with unique entities - not
  714.             necessarily by name.
  715.  
  716.  
  717.  
  718.           9.1.2.1   Responses
  719.                  250 Authorization accepted
  720.                  350 Continue with authorization sequence
  721.                  450 Authorization required for this command
  722.                  452 Authorization rejected
  723.                  501 Command not supported or Command Syntax Error
  724.                  502 Program error, function not performed
  725.                  nnn authenticator-specific protocol.
  726.  
  727.           9.1.3     Transition Issues
  728.             The implementations of AUTHINFO commonly in use prior to the
  729.             release of this memo have a difference response code set. The
  730.             code 281 was used in place of 250, 381 was used in place of
  731.             350, 480 was used in place of 450 and 482 was used in place of
  732.             452. Client coded to be compliant with this spec may also want
  733.             to be able to accommodate the older codes to lessen the impact
  734.             of the transition to this specification.
  735.  
  736.  
  737.  
  738.  
  739.           10.  The NEWS EXCHANGE Step
  740.  
  741.             During this step, two basic types of transactions occur:
  742.  
  743.  
  744.  
  745.           Barber                                             [Page 12]
  746.  
  747.  
  748.           INTERNET DRAFT                                September 1997
  749.  
  750.  
  751.             article retrieval from the server and article posting to the
  752.             server.
  753.  
  754.  
  755.  
  756.           10.1 Article Retrieval
  757.  
  758.             News reading clients have available a variety of mechanisms to
  759.             retrieve articles via NNTP. The news articles are stored and
  760.             indexed using three types of keys. One key is the message id
  761.             of an article. According to RFC 1036, this identifier should
  762.             be globally unique. Another key is composed of the news group
  763.             name and the article number within that news group. That key
  764.             MUST be unique to a particular server (there will be only one
  765.             article with that number within a particular news group), but
  766.             is not required to be globally unique.  Additionally, because
  767.             the same article can be cross-posted to multiple news groups,
  768.             there may be multiple keys that point to the same article on
  769.             the same server. The final key is the arrival timestamp,
  770.             giving the time that the article arrived at the server.
  771.  
  772.             The server MUST ensure that article numbers are issued in
  773.             order of arrival timestamp; that is, articles arriving later
  774.             MUST have higher numbers than those that arrive earlier. The
  775.             server SHOULD allocate the first unused number to each new
  776.             article.
  777.  
  778.  
  779.             Article numbers MUST lie between 1 and 4,294,967,295
  780.             inclusive. The client and server SHOULD NOT use leading zeroes
  781.             in specifying article numbers, and MUST NOT use more than 16
  782.             digits. In some situations, the value zero replaces an article
  783.             number to show some special situation
  784.  
  785.  
  786.           10.1.1    Article Retrieval by News Group Name and Article Number
  787.  
  788.             The following commands are used to set the current news group
  789.             name and the "current article pointer" which is used by other
  790.             commands for article retrieval.
  791.  
  792.  
  793.  
  794.           10.1.1.1  GROUP
  795.  
  796.             GROUP ggg
  797.  
  798.             The required parameter ggg is the name of the news group to be
  799.             selected (e.g. "news.software.b"). A list of valid news groups
  800.             may be obtained by using the LIST keyword.  See section 10.4 for
  801.             more information on the LIST keyword.
  802.  
  803.             The successful selection response will return the article
  804.             numbers of the first and last articles in the group at the
  805.  
  806.  
  807.           Barber                                             [Page 13]
  808.  
  809.  
  810.           INTERNET DRAFT                                September 1997
  811.  
  812.  
  813.             moment of selection (these numbers are referred to as the
  814.             "reported low water mark" and the "reported high water mark"),
  815.             and an estimate of the number of articles on file in the
  816.             group.
  817.  
  818.             If the group is not empty, the estimate MUST be at least the
  819.             actual number of articles available, and MUST be no greater
  820.             than one more than the difference between the reported low and
  821.             high water marks. (Some implementations will actually count
  822.             the number of articles on file. Others will just subtract the
  823.             low water mark from the high water mark and add one to get an
  824.             estimate.)
  825.  
  826.  
  827.  
  828.             If the group is empty, one of the following three situations
  829.             will occur. Clients MUST accept all three cases; servers MUST
  830.             NOT represent an empty group in any other way.
  831.  
  832.           . The high water mark will be one less than the low water mark,
  833.             and the estimated article count will be zero. Servers SHOULD
  834.             use this method to show an empty group. This is the only time
  835.             that the high water mark can be less than the low water mark.
  836.           . All three numbers will be zero.
  837.           . The high water mark is greater than or equal to the low water
  838.             mark; the estimated article count might be zero or non-zero;
  839.             if non- zero, the same requirements apply as for a non-empty
  840.             group.
  841.  
  842.             The set of articles in a group may change after the GROUP        
  843.             command is carried out. That is:
  844.  
  845.           . articles may be removed from the group;
  846.           . articles may be reinstated in the group with the same article
  847.             number, but those articles MUST have numbers no less than the
  848.             reported low water mark (note that this is a reinstatement of
  849.             the previous article, not a new article reusing the number);
  850.           . new articles may be added with article numbers greater than
  851.             the reported high water mark (if an article that was the one
  852.             with the highest number has been removed, the next new article
  853.             will not have the number one greater than the reported high
  854.             water mark).
  855.             Except when the group is empty and all three numbers are zero,
  856.             whenever a subsequent GROUP command for the same news group is
  857.             issued, either by the same client or a different client, the
  858.             reported low water mark in the response MUST be no less than
  859.             that in any previous response for that news group sent to any
  860.             client. The client may make use of the low water mark to
  861.             remove all remembered information about articles with lower
  862.             numbers, as these will never recur. This includes the
  863.             situation when the high water mark is one less than the low
  864.             water mark.
  865.  
  866.  
  867.  
  868.           Barber                                             [Page 14]
  869.  
  870.  
  871.           INTERNET DRAFT                                September 1997
  872.  
  873.  
  874.             No similar assumption can be made about the high water mark,
  875.             as this can decrease if an article is removed, and then
  876.             increase again if it is reinstated or if new articles arrive.
  877.  
  878.             When a valid group is selected by means of this command, the
  879.             internally maintained "current article pointer" MUST be set to
  880.             the first article in the group and the name of the current
  881.             news group MUST be set to the selected news group name.  If an
  882.             invalid group is specified, the previously selected group and
  883.             article MUST remain selected.  If an empty news group is
  884.             selected, the "current article pointer" is in an indeterminate
  885.             state and MUST not be used.
  886.  
  887.             The GROUP keyword MUST be used by a client and a successful
  888.             response received before the any other command is used that
  889.             depends on having the "current article pointer" be valid.
  890.  
  891.  
  892.  
  893.           10.1.1.1.1     Responses
  894.  
  895.                  211 n f l s group selected
  896.                  (n = estimated number of articles in group, f = first
  897.                     article number in the group, l = last article number in
  898.                     the group, s = name of the group.)
  899.                  411 no such news group
  900.  
  901.           10.1.1.2       LAST
  902.  
  903.             LAST
  904.  
  905.             The internally maintained "current article pointer" MUST be
  906.             set to the previous article in the current news group.  If
  907.             already positioned at the first article of the news group, an
  908.             error message MUST be returned and the current article MUST
  909.             remain selected.
  910.  
  911.             There MAY be no previous article in the group, although the
  912.             current article number is not the reported low water mark.
  913.             There MUST NOT be a previous article when the current article
  914.             number is the reported low water mark.
  915.  
  916.             Because articles can be removed and added, the results of
  917.             multiple LAST and NEXT commands MAY not be consistent over the
  918.             life of a particular NNTP session.
  919.  
  920.             The internally-maintained "current article pointer" MUST be
  921.             set by this command.
  922.  
  923.             A response indicating the current article number and a
  924.             message-id string MUST be returned. No text is sent in
  925.             response to this command.
  926.  
  927.  
  928.  
  929.  
  930.           Barber                                             [Page 15]
  931.  
  932.  
  933.           INTERNET DRAFT                                September 1997
  934.  
  935.  
  936.           10.1.1.2.1     Responses
  937.  
  938.                  223 n a article retrieved - request text separately (n =
  939.                     article number, a = unique article id)
  940.                  412 no news group selected
  941.                  420 no current article has been selected
  942.                  422 no previous article in this group
  943.  
  944.  
  945.           10.1.1.3  NEXT
  946.  
  947.             NEXT
  948.  
  949.             The internally maintained "current article pointer" MUST be
  950.             advanced to the next article in the current news group.  If no
  951.             more articles remain in the current group, an error message
  952.             MUST be returned and the current article MUST remain selected.
  953.  
  954.             The internally-maintained "current article pointer" MUST be
  955.             set by this command.
  956.  
  957.             A response indicating the current article number and the
  958.             message-id string MUST be returned.  No text is sent in
  959.             response to this command.
  960.  
  961.  
  962.  
  963.           10.1.1.3.1     Responses
  964.  
  965.                  223 n a article retrieved - request text separately (n =
  966.                     article number, a = unique article id)
  967.                  412 no news group selected
  968.                  420 no current article has been selected
  969.                  421 no next article in this group
  970.  
  971.  
  972.           10.2 Retrieval of Articles and Article Sections
  973.  
  974.             There are two forms to the ARTICLE command (and the related
  975.             BODY, HEAD, and STAT commands), each using a different method
  976.             of specifying which article is to be retrieved. When the
  977.             ARTICLE keyword is followed by a message-id in angle brackets
  978.             ("<" and ">"), the first form of the command MUST be used;
  979.             when a numeric parameter or no parameter is supplied, the
  980.             second form MUST be invoked.
  981.  
  982.             An article, as defined by RFC 1036, consists of two parts: the
  983.             article headers and the article body. When responding to an
  984.             article command, the server returns the entire article
  985.             contents and does not attempt to alter or translate them in
  986.             any way.
  987.  
  988.  
  989.  
  990.  
  991.  
  992.           Barber                                             [Page 16]
  993.  
  994.  
  995.           INTERNET DRAFT                                September 1997
  996.  
  997.  
  998.             The HEAD and BODY commands are identical to the ARTICLE
  999.             command except that they respectively return only the article
  1000.             headers or the article body of the article.
  1001.  
  1002.             The STAT command is similar to the ARTICLE command except that
  1003.             no text is returned.  When selecting by message number within
  1004.             a group, the STAT command MUST set the current article pointer
  1005.             without sending text. The returned acknowledgment response
  1006.             MUST contain the message-id, which may be of some value.
  1007.             Using the STAT command to select by message-id is valid but of
  1008.             questionable value, since a selection by message-id MUST NOT
  1009.             alter the "current article pointer".
  1010.  
  1011.  
  1012.  
  1013.           10.2.1    ARTICLE
  1014.  
  1015.             ARTICLE [<message-id>|nnn]
  1016.  
  1017.             This response displays the header, a blank line, then the body
  1018.             (text) of the specified article. The optional parameter nnn is
  1019.             the numeric id of an article in the current news group and
  1020.             MUST be chosen from the range of articles provided when the
  1021.             news group was selected.  If it is omitted, the current
  1022.             article is assumed. Message-id is the message id of an article
  1023.             as shown in that article's header.
  1024.  
  1025.             Please note that the internally-maintained "current article
  1026.             pointer" MUST NOT be altered when the message-id argument is
  1027.             used. This is both to facilitate the presentation of articles
  1028.             that may be referenced within an article being read, and
  1029.             because of the semantic difficulties of determining the proper
  1030.             sequence and membership of an article which may have been
  1031.             posted to more than one news group.
  1032.  
  1033.             The internally-maintained "current article pointer" MUST be
  1034.             set when a valid article number is specified as the argument.
  1035.             This includes the case when an article number is implied by
  1036.             the use of no argument.
  1037.  
  1038.             A previously valid article number MAY not remain valid if the
  1039.             article has been removed. A previously invalid article number
  1040.             MAY become valid if the article has been reinstated, but such
  1041.             an article number MUST be no less than the reported low water
  1042.             mark for that group.
  1043.  
  1044.             A response indicating the current article number, a message-id
  1045.             string, and that text is to follow MUST be returned.
  1046.  
  1047.             The message-id string returned is an identification string
  1048.             contained within angle brackets ("<" and ">"), which is
  1049.             derived from the header of the article itself.  The Message-ID
  1050.             header line (required by RFC 1036) from the article must be
  1051.             used to supply this information. If the message-id header line
  1052.  
  1053.  
  1054.           Barber                                             [Page 17]
  1055.  
  1056.  
  1057.           INTERNET DRAFT                                September 1997
  1058.  
  1059.  
  1060.             is missing from the article, a single digit "0" (zero) should
  1061.             be supplied within the angle brackets.
  1062.  
  1063.             Since the message-id field is unique for each article, it may
  1064.             be used by a news reading program to skip duplicate displays
  1065.             of articles that have been posted more than once, or to more
  1066.             than one news group.
  1067.  
  1068.  
  1069.  
  1070.           10.2.1.1  Responses
  1071.  
  1072.                  220 n <a> article retrieved - head and body follow (n =
  1073.                     article number, <a> = message-id)
  1074.                  221 n <a> article retrieved - head follows
  1075.                  222 n <a> article retrieved - body follows
  1076.                  223 n <a> article retrieved - request text separately
  1077.                  412 no news group has been selected
  1078.                  420 no current article has been selected
  1079.                  423 no such article number in this group
  1080.                  430 no such article found
  1081.  
  1082.  
  1083.           10.3 Article Posting
  1084.  
  1085.             Article posting is done in one of two modes: individual
  1086.             article posting from news reading clients and article transfer
  1087.             from other news servers.
  1088.  
  1089.  
  1090.  
  1091.           10.3.1    POST
  1092.  
  1093.             POST
  1094.  
  1095.             If posting is allowed, response code 340 MUST be returned to
  1096.             indicate that the article to be posted should be sent.
  1097.             Response code 440 MUST be sent if that posting is prohibited
  1098.             for some installation-dependent reason.
  1099.  
  1100.             If posting is permitted, the article MUST be presented in the
  1101.             format specified by RFC 1036, and MUST include all required
  1102.             header lines. After the article's header and body have been
  1103.             completely sent by the client to the server, a further
  1104.             response code MUST be returned to indicate success or failure
  1105.             of the posting attempt.
  1106.  
  1107.             The text forming the header and body of the message to be
  1108.             posted MUST be sent by the client using the conventions for
  1109.             text received from the news server: A single period (".") on a
  1110.             line indicates the end of the text, with lines starting with a
  1111.             period in the original text having that period doubled during
  1112.             transmission.
  1113.  
  1114.  
  1115.  
  1116.           Barber                                             [Page 18]
  1117.  
  1118.  
  1119.           INTERNET DRAFT                                September 1997
  1120.  
  1121.  
  1122.             No attempt shall be made by the server to filter characters,
  1123.             fold or limit lines, or otherwise process incoming text. The
  1124.             intent is that the server just passes the incoming message to
  1125.             be posted to the server installation's news posting software,
  1126.             which is not part of this specification.
  1127.  
  1128.  
  1129.  
  1130.           10.3.1.1  Responses
  1131.  
  1132.                  240 article posted ok
  1133.                  340 send article to be posted. End with <CR-LF>.<CR-LF>
  1134.                  440 posting not allowed
  1135.                  441 posting failed
  1136.  
  1137.  
  1138.  
  1139.           10.3.2    IHAVE
  1140.  
  1141.             IHAVE <message-id>
  1142.  
  1143.             The IHAVE command informs the server that the client has an
  1144.             article whose id is <message-id>. If the server desires a copy
  1145.             of that article, it MUST return a response instructing the
  1146.             client to send the entire article. If the server does not want
  1147.             the article (if, for example, the server already has a copy of
  1148.             it), a response indicating that the article is not wanted MUST
  1149.             be returned.
  1150.  
  1151.             If transmission of the article is requested, the client MUST
  1152.             send the entire article, including header and body, in the
  1153.             manner specified for text transmission from the server. A
  1154.             response code indicating success or failure of the transferal
  1155.             of the article MUST be returned by the server.
  1156.  
  1157.             This function differs from the POST command in that it is
  1158.             intended for use in transferring already-posted articles
  1159.             between hosts. Normally it will not be used when the client is
  1160.             a personal news reading program. In particular, this function
  1161.             will invoke the server's news posting program with the
  1162.             appropriate settings (flags, options, etc.) to indicate that
  1163.             the forthcoming article is being forwarded from another host.
  1164.  
  1165.             However, the server may elect not to post or forward the
  1166.             article if after further examination of the article it deems
  1167.             it inappropriate to do so. The 436 or 437 error codes MUST be
  1168.             returned as appropriate to the situation.
  1169.  
  1170.             Reasons for such subsequent rejection of an article may
  1171.             include such problems as inappropriate news groups or
  1172.             distributions, disk space limitations, article lengths,
  1173.             garbled headers, and the like. These are typically
  1174.             restrictions enforced by the server host's news software and
  1175.             not necessarily the NNTP server itself.
  1176.  
  1177.  
  1178.           Barber                                             [Page 19]
  1179.  
  1180.  
  1181.           INTERNET DRAFT                                September 1997
  1182.  
  1183.  
  1184.  
  1185.  
  1186.           10.3.2.1  Responses
  1187.  
  1188.                  235 article transferred ok
  1189.                  335 send article to be transferred.  End with <CR-
  1190.                  LF>.<CR-LF>
  1191.                  435 article not wanted - do not send it
  1192.                  436 transfer failed - try again later
  1193.                  437 article rejected - do not try again
  1194.  
  1195.             Because some host news posting software may not be able to
  1196.             immediately render status on the whether an article is
  1197.             inappropriate for posting or forwarding, an NNTP server MAY
  1198.             acknowledge the successful transfer of the article and later
  1199.             silently discard it. Thus an NNTP server may return the 235
  1200.             acknowledgment code and later discard the received article.
  1201.  
  1202.  
  1203.  
  1204.           10.4 The LIST Keyword
  1205.  
  1206.  
  1207.           10.4.1    LIST
  1208.  
  1209.             LIST [ACTIVE [wildmat]]
  1210.  
  1211.             The response to the LIST keyword with no parameters returns a
  1212.             list of valid news groups and associated information.  Each
  1213.             news group is sent as a line of text in the following format:
  1214.  
  1215.                group last first status
  1216.  
  1217.             where <group> is the name of the news group, <last> is the
  1218.             number of the last known article currently in that news group,
  1219.             <first> is the number of the first article currently in the
  1220.             news group, and <status> indicates the current status of the
  1221.             group on this server. Typically, the <status> will be consist
  1222.             of the ASCII character `y' where posting is permitted, `n'
  1223.             where posting is not permitted and `m' where postings will be
  1224.             forwarded to the news group moderator by the news server.
  1225.             Other status strings exist and their definition is outside the
  1226.             scope of this specification.
  1227.  
  1228.             The <first> and <last> fields will always be numeric.  They
  1229.             may have leading zeros.  If the <last> field evaluates to less
  1230.             than the <first> field, there are no articles currently on
  1231.             file in the news group.
  1232.  
  1233.             Note that posting may still be prohibited to a client although
  1234.             the LIST command indicates that posting is permitted to a
  1235.             particular news group. See the POST command for an explanation
  1236.             of client prohibitions. The posting flag exists for each news
  1237.             group because some news groups are moderated or are digests,
  1238.  
  1239.  
  1240.           Barber                                             [Page 20]
  1241.  
  1242.  
  1243.           INTERNET DRAFT                                September 1997
  1244.  
  1245.  
  1246.             and therefore cannot be posted to; that is, articles posted to
  1247.             them must be mailed to a moderator who will post them for the
  1248.             original poster.  This is independent of the posting
  1249.             permission granted to a client by the NNTP server.
  1250.  
  1251.             Please note that an empty list (i.e., the text body returned
  1252.             by this command consists only of the terminating period) is a
  1253.             possible valid response, and indicates that there are
  1254.             currently no valid news groups.
  1255.  
  1256.             If the optional matching parameter is specified, the list is
  1257.             limited to only the groups that match the pattern.
  1258.  
  1259.             Specifying a single group is usually very efficient for the
  1260.             server, and multiple groups may be specified by using wildmat
  1261.             patterns (described in section 5), not regular expressions.
  1262.  
  1263.  
  1264.  
  1265.           10.4.1.1  Responses
  1266.                  215 list of news groups follows
  1267.  
  1268.           10.4.2    LIST ACTIVE.TIMES
  1269.  
  1270.             LIST ACTIVE.TIMES [wildmat]
  1271.  
  1272.             The active.times file is maintained by some news transports
  1273.             systems to contain information about the when and who created
  1274.             a particular news group. The format of this file generally
  1275.             includes three fields. The first field is the name of the news
  1276.             group. The second is the time when this group was created on
  1277.             this news server measured in seconds since January 1, 1970.
  1278.             The third is the email address of the entity that created the
  1279.             news group. When executed, the information is displayed
  1280.             following the 215 response. When display is completed, the
  1281.             server will send a period on a line by itself. If the
  1282.             information is not available, the server will return the 503
  1283.             error response.
  1284.  
  1285.             If the optional matching parameter is specified, the list is
  1286.             limited to only the groups that match the pattern.
  1287.  
  1288.             Specifying a single group is usually very efficient for the
  1289.             server, and multiple groups may be specified by using wildmat
  1290.             patterns (described in section 5), not regular expression
  1291.  
  1292.  
  1293.           10.4.2.1  Responses
  1294.  
  1295.                  215 information follows
  1296.                  503 program error, function not performed
  1297.  
  1298.           10.4.3    LIST DISTRIBUTIONS
  1299.  
  1300.  
  1301.  
  1302.           Barber                                             [Page 21]
  1303.  
  1304.  
  1305.           INTERNET DRAFT                                September 1997
  1306.  
  1307.  
  1308.             LIST DISTRIBUTIONS
  1309.  
  1310.             The distributions file is maintained by some news transport
  1311.             systems to contain information about valid values for the
  1312.             Distribution: line in a news article header and about what the
  1313.             values mean. Each line contains two fields, the value and a
  1314.             short explanation on the meaning of the value. When executed,
  1315.             the information is displayed following the 215 response. When
  1316.             display is completed, the server will send a period on a line
  1317.             by itself. If the information is not available, the server
  1318.             will return the 503 error response.
  1319.  
  1320.  
  1321.  
  1322.           10.4.3.1  Responses
  1323.  
  1324.                  215 information follows
  1325.                  503 program error, function not performed
  1326.  
  1327.           10.4.4    LIST DISTRIB.PATS
  1328.  
  1329.             LIST DISTRIB.PATS
  1330.  
  1331.             The distrib.pats file is maintained by some news transport
  1332.             systems to contain default values for the Distribution: line
  1333.             in a news article header when posting to particular news
  1334.             groups. This information could be used to provide a default
  1335.             value for the Distribution: line in the header when posting an
  1336.             article. The information returned contains three fields
  1337.             separated by colons. The first column is a weight.  The second
  1338.             is a group name or a wildmat pattern that can be used to match
  1339.             a group name.  The third is the value of the Distribution:
  1340.             line that should be used when the group name matches and the
  1341.             weight value is the highest. All this processing is done by
  1342.             the news posting client and not by the server itself. The
  1343.             server provides this information to the client for it to use
  1344.             or ignore as it chooses. When executed, the information is
  1345.             displayed following the 215 response.  When display is
  1346.             completed, the server will send a period on a line by itself.
  1347.             If the information is not available, the server will return
  1348.             the 503 error response.
  1349.  
  1350.  
  1351.  
  1352.           10.4.4.1  Responses
  1353.  
  1354.                  215 information follows
  1355.                  503 program error, function not performed
  1356.  
  1357.           10.4.5    LIST NEWSGROUPS
  1358.  
  1359.                LIST NEWSGROUPS [wildmat]
  1360.  
  1361.  
  1362.  
  1363.  
  1364.           Barber                                             [Page 22]
  1365.  
  1366.  
  1367.           INTERNET DRAFT                                September 1997
  1368.  
  1369.  
  1370.             The newsgroups file is maintained by some news transport
  1371.             systems to contain the name of each news group that is
  1372.             active on the server and a short description about the
  1373.             purpose of each news group. Each line in the file contains
  1374.             two fields, the news group name and a short explanation of
  1375.             the purpose of that news group. When executed, the
  1376.             information is displayed following the 215 response. When
  1377.             display is completed, the server will send a period on a
  1378.             line by itself. If the information is not available, the
  1379.             server will return the 503 response.  If the optional
  1380.             matching parameter is specified, the list is limited to only
  1381.             the groups that match the pattern (no matching is done on
  1382.             the group descriptions).  Specifying a single group is
  1383.             usually very efficient for the server, and multiple groups
  1384.             may be specified by using wildmat patterns (see section 5),
  1385.             not regular expressions. If nothing is matched an empty list
  1386.             is returned, not an error.
  1387.  
  1388.           10.4.5.1  Responses
  1389.  
  1390.                  215 information follows
  1391.                  503 program error, function not performed
  1392.  
  1393.           10.4.6    LIST OVERVIEW.FMT
  1394.  
  1395.             LIST OVERVIEW.FMT
  1396.  
  1397.             The overview.fmt file is maintained by some news transport
  1398.             systems to contain the order in which header information is
  1399.             stored in the overview databases for each news group.  When
  1400.             executed, news article header fields are displayed one line at
  1401.             a time in the order in which they are stored in the overview
  1402.             database[6] following the 215 response.  When display is
  1403.             completed, the server will send a period on a line by itself.
  1404.             If the information is not available, the server will return
  1405.             the 503 response.
  1406.  
  1407.             Please note that if the header has the word "full" (without
  1408.             quotes) after the colon, the header's name is prepended to its
  1409.             field in the output returned by the server.
  1410.  
  1411.  
  1412.  
  1413.           10.4.6.1  Responses
  1414.  
  1415.                  215 information follows
  1416.                  503 program error, function not performed
  1417.  
  1418.           10.4.7    LIST SUBSCRIPTIONS
  1419.  
  1420.             LIST SUBSCRIPTIONS
  1421.  
  1422.  
  1423.  
  1424.           Barber                                             [Page 23]
  1425.  
  1426.  
  1427.           INTERNET DRAFT                                September 1997
  1428.  
  1429.  
  1430.             This command is used to get a default subscription list for
  1431.             new users of this server. The order of groups is significant.
  1432.  
  1433.             When this list is available, it is preceded by the 215
  1434.             response and followed by a period on a line by itself.  When
  1435.             this list is not available, the server returns a 503 response
  1436.             code.
  1437.  
  1438.  
  1439.  
  1440.           10.4.7.1  Responses
  1441.  
  1442.                  215 information follows
  1443.                  503 program error, function not performed
  1444.  
  1445.           10.4.8    LISTGROUP
  1446.  
  1447.                LISTGROUP [ggg]
  1448.  
  1449.                The LISTGROUP command is used to get a listing of all the
  1450.                article numbers in a particular news group.
  1451.  
  1452.                The optional parameter ggg is the name of the news group to
  1453.                be selected (e.g. "news.software.b").  A list of valid news
  1454.                groups may be obtained from the LIST command. If no group is
  1455.                specified, the current group is used as the default
  1456.                argument.
  1457.  
  1458.                The successful selection response will be a list of the
  1459.                article numbers in the group followed by a period on a line
  1460.                by itself.
  1461.  
  1462.                When a valid group is selected by means of this command, the
  1463.                internally maintained "current article pointer" MUST be set
  1464.                to the first article in the group.  If an invalid group is
  1465.                specified, the previously selected group and article remain
  1466.                selected.  If an empty news group is selected, the "current
  1467.                article pointer" may be in an indeterminate state and should
  1468.                not be used.
  1469.  
  1470.                Note that the name of the news group is not case-dependent.
  1471.                It must otherwise match a news group obtained from the LIST
  1472.                command or an error will result.
  1473.  
  1474.  
  1475.  
  1476.           10.4.8.1  Responses
  1477.  
  1478.                  211 list of article numbers follow
  1479.                  412 Not currently in news group
  1480.  
  1481.           10.4.9    OVER
  1482.  
  1483.             OVER [range]
  1484.  
  1485.  
  1486.           Barber                                             [Page 24]
  1487.  
  1488.  
  1489.           INTERNET DRAFT                                September 1997
  1490.  
  1491.  
  1492.             The OVER command returns information from the overview
  1493.             database for the article(s) specified. The information
  1494.             returned in the response to this command can be used by
  1495.             clients to follow discussion threads.
  1496.  
  1497.             The optional range argument may be any of the following:
  1498.  
  1499.           . an article number
  1500.           . an article number followed by a dash to indicate all following
  1501.           . an article number followed by a dash followed by another
  1502.             article number
  1503.             If no argument is specified, then information from the current
  1504.             article is displayed. Successful responses start with a 224
  1505.             response followed by the overview information for all matched
  1506.             messages. Once the output is complete, a period is sent on a
  1507.             line by itself. If no argument is specified, the information
  1508.             for the current article is returned.  A news group must have
  1509.             been selected earlier, else a 412 error response is returned.
  1510.             If no articles are in the range specified, a 420 error
  1511.             response is returned by the server. A 502 response will be
  1512.             returned if the client only has permission to transfer
  1513.             articles.
  1514.  
  1515.             Each line of output MUST be formatted with the article number,
  1516.             followed by each of the headers in the overview database or
  1517.             the article itself (when the data is not available in the
  1518.             overview database) for that article separated by a tab
  1519.             character.  The sequence of fields must be in this order:
  1520.             subject, author, date, message-id, references, byte count, and
  1521.             line count. Other optional fields may follow line count. Where
  1522.             no data exists, a null field must be provided (i.e. the output
  1523.             will have two tab characters adjacent to each other). Servers
  1524.             should not output fields for articles that have been removed
  1525.             since the overview database was created.
  1526.  
  1527.  
  1528.  
  1529.           10.4.9.1  Responses
  1530.  
  1531.                  224 Overview information follows
  1532.                  412 No news group current selected
  1533.                  420 No article(s) selected
  1534.                  502 no permission
  1535.  
  1536.  
  1537.           10.4.10   PAT
  1538.  
  1539.             PAT header range|<message-id> [pat [pat...]]
  1540.  
  1541.             The PAT command is used to retrieve specific headers from
  1542.             specific articles, based on pattern matching on the contents
  1543.             of the header.
  1544.  
  1545.  
  1546.  
  1547.  
  1548.           Barber                                             [Page 25]
  1549.  
  1550.  
  1551.           INTERNET DRAFT                                September 1997
  1552.  
  1553.  
  1554.             The required header parameter is the name of a header line
  1555.             (e.g.  "subject") in a news group article. See RFC-1036 for a
  1556.             list of valid header lines. The required range argument may be
  1557.             any of the following:
  1558.  
  1559.           . an article number
  1560.           . an article number followed by a dash to indicate all following
  1561.           . an article number followed by a dash followed by another
  1562.             article number.
  1563.             The required message-id argument indicates a specific article.
  1564.             The range and message-id arguments are mutually exclusive. If
  1565.             there are additional arguments, they are joined together
  1566.             separated by a single space to form one complete pattern. If
  1567.             there are no additional arguments, a wildmat "*" is the
  1568.             default. Successful responses start with a 221 response
  1569.             followed by the headers from all messages in which the pattern
  1570.             matched the contents of the specified header line. This
  1571.             includes an empty list. Once the output is complete, a period
  1572.             is sent on a line by itself. If the optional argument is a
  1573.             message-id and no such article exists, the 430 error response
  1574.             shall be returned. A 502 response shall be returned if the
  1575.             client only has permission to transfer articles.
  1576.  
  1577.           10.4.10.1 Responses
  1578.  
  1579.                  221 Header follows
  1580.                  430 no such article
  1581.                  502 no permission
  1582.  
  1583.  
  1584.           11.  The CONCLUSION Step
  1585.  
  1586.           11.1 QUIT
  1587.  
  1588.             QUIT
  1589.  
  1590.             The server process MUST acknowledge the QUIT command and then
  1591.             closes the connection to the client.  This is the preferred
  1592.             method for a client to indicate that it has finished all its
  1593.             transactions with the NNTP server.
  1594.  
  1595.             If a client simply disconnects (or the connection times out or
  1596.             some other fault occurs), the server SHALL gracefully cease
  1597.             its attempts to service the client.
  1598.  
  1599.  
  1600.           11.1.1    Responses
  1601.  
  1602.                  205 closing connection - goodbye!
  1603.  
  1604.           12.  Other Keywords
  1605.  
  1606.  
  1607.  
  1608.           Barber                                             [Page 26]
  1609.  
  1610.  
  1611.           INTERNET DRAFT                                September 1997
  1612.  
  1613.  
  1614.             There are other Keywords that may be used at any time between
  1615.             the beginning of a session and its termination.  Using these
  1616.             keywords do not alter any state information, but the response
  1617.             generated from the use of these keywords may provide useful
  1618.             information to clients that use them.
  1619.  
  1620.  
  1621.           12.1 CHARSET
  1622.  
  1623.             CHARSET [charset]
  1624.  
  1625.             The CHARSET command is used to change the default character
  1626.             set for certain types of arguments: group names and the
  1627.             contents of article headers. The argument must be the name of
  1628.             a character set registered with the IANA. The server MUST
  1629.             return 204 if the specified character set is supported.
  1630.             Otherwise, the server MUST return 404.
  1631.  
  1632.             When used as arguments to commands, group names and the
  1633.             contents of article headers MUST be decoded before comparing
  1634.             text in a character set other than US-ASCII. US-ASCII must be
  1635.             supported; other character sets may be supported.
  1636.  
  1637.             The use of CHARSET with no argument will reset the default
  1638.             character set to US-ASCII.
  1639.  
  1640.             Note that only argument processing is affected by the
  1641.             character set. The server MUST not translate any part of any
  1642.             multi-line response returned to the client based on the
  1643.             current character set.
  1644.  
  1645.           12.1.1    Responses
  1646.                  204     Character set is now charset
  1647.                  404     Character set charset is not supported by this
  1648.                          server
  1649.                  500     Command not supported
  1650.  
  1651.           12.2 DATE
  1652.  
  1653.             DATE
  1654.  
  1655.             This command exists to help clients find out the current time
  1656.             from the server's perspective.  This command should not be
  1657.             used as a substitute for NTP[7], but to provide information
  1658.  
  1659.  
  1660.           Barber                                             [Page 27]
  1661.  
  1662.  
  1663.           INTERNET DRAFT                                September 1997
  1664.  
  1665.  
  1666.             that might be useful when using the NEWNEWS command (see
  1667.             section 12.5).
  1668.  
  1669.             This command returns a one-line response code of 111 followed
  1670.             by the GMT date and time on the server in the form
  1671.             YYYYMMDDhhmmss.
  1672.  
  1673.  
  1674.           12.2.1    Responses
  1675.  
  1676.                  111 YYYYMMDDhhmmss
  1677.  
  1678.           12.3 The HELP Command
  1679.  
  1680.             HELP
  1681.  
  1682.             This command provides a short summary of commands that are
  1683.             understood by this implementation of the server. The help text
  1684.             will be presented as a textual response terminated by a single
  1685.             period on a line by itself.
  1686.  
  1687.             This text is not guaranteed to be in any particular format and
  1688.             shall not be used by clients as a replacement for the LIST
  1689.             EXTENSIONS command described in section 8.
  1690.  
  1691.  
  1692.  
  1693.           12.3.1    Responses
  1694.  
  1695.                  100 help text follows
  1696.  
  1697.  
  1698.           12.4 NEWGROUPS
  1699.  
  1700.             NEWGROUPS date time [GMT] [<wildmat>]
  1701.  
  1702.             A list of newsgroups created since <date and time> MUST be
  1703.             listed in the same format as the LIST command.
  1704.  
  1705.             The date is sent as 6 or 8  digits in the format [XX]YYMMDD, 
  1706.             where XX is the first two digits of the year, YY is the last two
  1707.             digits of the year, MM is the two digits of the month (with
  1708.             leading zero, if appropriate), and DD is the day of the month
  1709.             (with leading zero, if appropriate). If the first two digits
  1710.             of the year are not specified, the closest century is assumed
  1711.             as part of the year (i.e., 86 specifies 1986, 30 specifies
  1712.             2030, 99 is 1999, 00 is 2000).
  1713.  
  1714.             Time must also be specified.  It must be as 6 digits HHMMSS
  1715.             with HH being hours on the 24-hour clock, MM minutes 00-59,
  1716.             and SS seconds 00-59.  The time is assumed to be in the
  1717.             server's timezone unless the token "GMT" appears in which case
  1718.             both time and date are evaluated at the 0 meridian.
  1719.  
  1720.  
  1721.  
  1722.           Barber                                             [Page 28]
  1723.  
  1724.  
  1725.           INTERNET DRAFT                                September 1997
  1726.  
  1727.  
  1728.             An optional parameter may be specified at the end of the
  1729.             command line consisting of a wildmat pattern against which new
  1730.             newsgroup names can be matched enclosed in angle brackets.
  1731.             Only those news groups that have names that match the pattern
  1732.             (and any other criteria specified in the command) will be
  1733.             returned.
  1734.  
  1735.             Please note that an empty list (i.e., the text body returned
  1736.             by this command consists only of the terminating period) is a
  1737.             possible valid response, and indicates that there are
  1738.             currently no new newsgroups.
  1739.  
  1740.  
  1741.           12.4.1    Responses
  1742.  
  1743.                  231 list of new newsgroups follows
  1744.  
  1745.           12.5 NEWNEWS
  1746.  
  1747.             NEWNEWS newsgroups date time [GMT] [<distributions>]
  1748.  
  1749.             A list of message-ids of articles posted or received to the
  1750.             specified news group since "date" will be listed. The format
  1751.             of the listing will be one message-id per line, as though text
  1752.             were being sent.  A single line consisting solely of one
  1753.             period followed by CR-LF will terminate the list.
  1754.  
  1755.             Date and time are in the same format as the NEWGROUPS command.
  1756.             The newsgroups parameter must be in wildmat format.
  1757.  
  1758.             The optional parameter "distributions" is a list of
  1759.             distribution groups, enclosed in angle brackets.  If
  1760.             specified, the distribution portion of an article's header
  1761.             will be examined for a match with the distribution categories
  1762.             listed, and only those articles which have a distribution in
  1763.             the list will be listed.  If more than one distribution is to
  1764.             be supplied, they must be separated by commas within the angle
  1765.             brackets.
  1766.  
  1767.             The use of the IHAVE, NEWNEWS, and NEWGROUPS commands to
  1768.             distribute news is discussed in an earlier part of this
  1769.             document.
  1770.  
  1771.             Please note that an empty list (i.e., the text body returned
  1772.             by this command consists only of the terminating period) is a
  1773.             possible valid response, and indicates that there is currently
  1774.             no new news.
  1775.  
  1776.  
  1777.           12.5.1    Responses
  1778.  
  1779.                230 list of new articles by message-id follows
  1780.  
  1781.  
  1782.  
  1783.  
  1784.           Barber                                             [Page 29]
  1785.  
  1786.  
  1787.           INTERNET DRAFT                                September 1997
  1788.  
  1789.  
  1790.           13. Framework for NNTP Extensions
  1791.  
  1792.             Although NNTP is widely and robustly deployed, some parts of
  1793.             the Internet community might wish to extend the NNTP service.
  1794.             This memo defines a means whereby an extended NNTP client may
  1795.             query the server to determine the service extensions that it
  1796.             supports.
  1797.  
  1798.             It must be emphasized that any extension to the NNTP service
  1799.             should not be considered lightly. NNTP's strength comes
  1800.             primarily from its simplicity.  Experience with many protocols
  1801.             has shown that:
  1802.  
  1803.             Protocols with few options tend towards ubiquity, whilst
  1804.             protocols with many options tend towards obscurity.
  1805.  
  1806.             This means that each and every extension, regardless of its
  1807.             benefits, must be carefully scrutinized with respect to its
  1808.             implementation, deployment, and interoperability costs. In
  1809.             many cases, the cost of extending the NNTP service will likely
  1810.             outweigh the benefit.
  1811.  
  1812.             Given this environment, the framework for the extensions
  1813.             described in this memo consists of:
  1814.  
  1815.             a)   a mechanism for clients to determine a server's available
  1816.                extensions
  1817.             b)   a registry of NNTP service extensions
  1818.  
  1819.             The LIST EXTENSIONS command is described in section 8 of this
  1820.             memo and is the mechanism for clients to use to determine what
  1821.             extensions are available for client use.
  1822.  
  1823.             The IANA shall maintain a registry of NNTP service extensions.
  1824.  
  1825.             Associated with each such extension is a corresponding NNTP
  1826.             keyword value. Each service extension registered with the IANA
  1827.             MUST be defined in an RFC. Such RFCs either must be on the
  1828.             standards-track or must define an IESG-approved experimental
  1829.             protocol.  The definition must include:
  1830.  
  1831.           . the textual name of the NNTP service extension;
  1832.           . the NNTP keyword value associated with the extension;
  1833.           . the syntax and possible values of parameters associated with
  1834.             the NNTP keyword value;
  1835.           . any additional NNTP verbs associated with the extension
  1836.           . (additional verbs will usually be, but are not required to be,
  1837.             the same as the NNTP keyword value);
  1838.           . any new parameters the extension associated with any other
  1839.             NNTP verbs;
  1840.           . how support for the extension affects the behavior of a server
  1841.             and client NNTP; and,
  1842.  
  1843.  
  1844.  
  1845.  
  1846.           Barber                                             [Page 30]
  1847.  
  1848.  
  1849.           INTERNET DRAFT                                September 1997
  1850.  
  1851.  
  1852.           . the increment by which the extension is increasing the maximum
  1853.             length of the any commands over that specified in this
  1854.             document.
  1855.             In addition, any NNTP keyword value that starts with an upper
  1856.             or lower case "X" refers to a local NNTP service extension,
  1857.             which is used through bilateral, rather than standardized,
  1858.             agreement. Keywords beginning with "X" may not be used in a
  1859.             registered service extension.
  1860.  
  1861.             Any keyword values presented in the NNTP response that do not
  1862.             begin with "X" must correspond to a standard, standards-track,
  1863.             or IESG-approved experimental NNTP service extension
  1864.             registered with IANA.  A conforming server must not offer non
  1865.             "X" prefixed keyword values that are not described in a
  1866.             registered extension.
  1867.  
  1868.             Additional verbs are bound by the same rules as NNTP keywords;
  1869.             specifically, verbs beginning with "X" are local extensions
  1870.             that may not be registered or standardized and verbs not
  1871.             beginning with "X" must always be registered.
  1872.  
  1873.  
  1874.  
  1875.           13.1 Initial IANA Registry
  1876.  
  1877.             The IANA's initial registry of NNTP service extensions
  1878.             consists of these entries:
  1879.  
  1880.  
  1881.           Service Extension     NNTP Keyword(s)       Added Behavior
  1882.  
  1883.           Overview Support      OVER                  Defined in this
  1884.                                 LIST OVERVIEW.FMT     document
  1885.  
  1886.           Specific Article      LISTGROUP             Defined in this
  1887.           Numbers                                     document
  1888.  
  1889.           Identification and    AUTHINFO              Defined in this
  1890.           Authentication        AUTHINFO GENERIC      document
  1891.  
  1892.           Character Set         CHARSET               Defined in this
  1893.           Selection                                   document
  1894.  
  1895.           Header Pattern        PAT                   Defined in this
  1896.           Matching                                    document
  1897.  
  1898.  
  1899.  
  1900.  
  1901.           14.  Security Considerations
  1902.  
  1903.             The use of the AUTHINFO is optional. This command as
  1904.             documented has a number of security implications. In the
  1905.             original and simple forms, all passwords are passed in plain
  1906.  
  1907.  
  1908.           Barber                                             [Page 31]
  1909.  
  1910.  
  1911.           INTERNET DRAFT                                September 1997
  1912.  
  1913.  
  1914.             text and could be discovered by various forms of network or
  1915.             system surveillance.  The AUTHINFO GENERIC command has the
  1916.             potential for the same problems if a mechanism is used that
  1917.             also passes clear text passwords.  RFC 1731 discusses these
  1918.             issues in greater detail.
  1919.  
  1920.  
  1921.  
  1922.           15.  References
  1923.  
  1924.             [1] Kantor, B and P. Lapsley, "Network News Transfer
  1925.             Protocol", RFC-977, U.C. San Diego and U.C. Berkeley.
  1926.  
  1927.             [2] Coded Character Set"7-bit American Standard Code for
  1928.             Information Interchange, ANSI x3.4-1986.
  1929.  
  1930.             [3] Salz, Rich, Manual Page for wildmat(3) from the INN 1.4
  1931.             distribution, UUNET Technologies, Revision 1.10, April, 1992.
  1932.  
  1933.             [4] Horton, M.R. and R. Adams, "Standard for interchange of
  1934.             USENET messages",  RFC-1036, AT&T Bell Laboratories and Center
  1935.             for Seismic Studies, December, 1987.
  1936.  
  1937.             [5] Meyers, J, "IMAP4 Authentication Mechanisms", RFC-1731,
  1938.             Carnegie Mellon, December, 1994.
  1939.  
  1940.             [6] Robertson, Rob, "FAQ: Overview database / NOV General
  1941.             Information", ftp://ftp.uu.net/networking/news/nntp/inn/faq-
  1942.             nov.Z, January, 1995.
  1943.  
  1944.             [7] Mills, David L., "Network Time Protocol (Version 3),
  1945.             Specification,Implementation and Analysis", RFC-1305,
  1946.             University of Delaware, March 1992.
  1947.  
  1948.           15.1 Notes
  1949.  
  1950.  
  1951.             DEC is a registered trademark of Digital Equipment
  1952.             Corporation.
  1953.  
  1954.             UNIX is a registered trademark of the Open Group.
  1955.  
  1956.             VMS is a registered trademark of Digital Equipment
  1957.             Corporation.
  1958.  
  1959.           15.2 Acknowledgments
  1960.  
  1961.             The author acknowledges the original authors of NNTP as
  1962.             documented in RFC 977: Brian Kantor and Phil Lapsey.
  1963.  
  1964.  
  1965.  
  1966.           Barber                                             [Page 32]
  1967.  
  1968.  
  1969.           INTERNET DRAFT                                September 1997
  1970.  
  1971.  
  1972.             The author gratefully acknowledges the work of the NNTP
  1973.             committee chaired by Eliot Lear. The organization of this
  1974.             document was influenced by the last available draft from this
  1975.             working group. A special thanks to Eliot for generously
  1976.             providing the original machine readable sources for that
  1977.             document.
  1978.  
  1979.             The author gratefully acknowledges the work of the Marshall
  1980.             Rose & John G. Meyers in RFC 1939 and the work of the DRUMS
  1981.             working group, specifically RFC 1869, which is the basis of
  1982.             the NNTP extensions mechanism detailed in this document.
  1983.  
  1984.             The author gratefully acknowledges the comments and additional
  1985.             information provided by the following individuals in preparing
  1986.             one of the progenitors of this document:
  1987.  
  1988.           . Wayne Davison <davison@armory.com>
  1989.           . Clive D.W. Feather <clive@demon.net>
  1990.           . Chris Lewis <clewis@bnr.ca>
  1991.           . Tom Limoncelli <tal@mars.superlink.net>
  1992.           . Eric Schnoebelen <eric@egsner.cirr.com>
  1993.           . Rich Salz <rsalz@osf.org>
  1994.  
  1995.             This work was precipitated by the work of various newsreader
  1996.             authors and newsserver authors, which includes those listed
  1997.             below:
  1998.  
  1999.           . Rick Adams -- Original author of the NNTP extensions to the RN
  2000.             newsreader and last maintainer of Bnews
  2001.           . Stan Barber -- Original author of the NNTP extensions to the
  2002.             newsreaders that are part of Bnews.
  2003.           . Geoff Collyer -- Original author of the OVERVIEW database
  2004.             proposal and one of the original authors of CNEWS
  2005.           . Dan Curry -- Original author of the xvnews newsreader
  2006.           . Wayne Davision -- Author of the first threading extensions to the
  2007.             RN newsreader (commonly called TRN).
  2008.           . Geoff Huston -- Original author of ANU NEWS
  2009.           . Phil Lapsey -- Original author of the UNIX reference
  2010.             implementation
  2011.           . Ian Lea -- Maintainer of the TIN newsreader
  2012.           . Chris Lewis -- First known implementor of the AUTHINFO GENERIC
  2013.             extension
  2014.           . Rich Salz -- Original author of INN
  2015.           . Henry Spencer -- One of the original authors of CNEWS
  2016.           . Kim Storm -- Original author of the NN newsreader
  2017.  
  2018.           15.3 Author's Address
  2019.  
  2020.             Stan Barber
  2021.             P.O. Box 300481
  2022.             Houston, Texas, 77230
  2023.             Email: <sob@academ.com>
  2024.  
  2025.             This document expires February 5, 1998.
  2026.  
  2027.           Barber                                             [Page 33]
  2028.