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-01.txt < prev    next >
Text File  |  1997-09-04  |  85KB  |  2,027 lines

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