tech-invite   World Map     

3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search

RFC 3977

 
 
 

Network News Transfer Protocol (NNTP)

Part 2 of 4, p. 25 to 61
Prev RFC Part       Next RFC Part

 


prevText      Top      Up      ToC       Page 25 
4.  The WILDMAT Format

   The WILDMAT format described here is based on the version first
   developed by Rich Salz [SALZ1992], which was in turn derived from the
   format used in the UNIX "find" command to articulate file names.  It
   was developed to provide a uniform mechanism for matching patterns in
   the same manner that the UNIX shell matches filenames.

Top      Up      ToC       Page 26 
4.1.  Wildmat Syntax

   A wildmat is described by the following ABNF [RFC4234] syntax, which
   is an extract of that in Section 9.8.

     wildmat = wildmat-pattern *("," ["!"] wildmat-pattern)
     wildmat-pattern = 1*wildmat-item
     wildmat-item = wildmat-exact / wildmat-wild
     wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E /
          UTF8-non-ascii ; exclude ! * , ? [ \ ]
     wildmat-wild = "*" / "?"

   Note: the characters ",", "\", "[", and "]" are not allowed in
   wildmats, while * and ? are always wildcards.  This should not be a
   problem, since these characters cannot occur in newsgroup names,
   which is the only current use of wildmats.  Backslash is commonly
   used to suppress the special meaning of characters, whereas brackets
   are used to introduce sets.  However, these usages are not universal,
   and interpretation of these characters in the context of UTF-8
   strings is potentially complex and differs from existing practice, so
   they were omitted from this specification.  A future extension to
   this specification may provide semantics for these characters.

4.2.  Wildmat Semantics

   A wildmat is tested against a string and either matches or does not
   match.  To do this, each constituent <wildmat-pattern> is matched
   against the string, and the rightmost pattern that matches is
   identified.  If that <wildmat-pattern> is not preceded with "!", the
   whole wildmat matches.  If it is preceded by "!", or if no <wildmat-
   pattern> matches, the whole wildmat does not match.

   For example, consider the wildmat "a*,!*b,*c*":

   o  The string "aaa" matches because the rightmost match is with "a*".

   o  The string "abb" does not match because the rightmost match is
      with "*b".

   o  The string "ccb" matches because the rightmost match is with
      "*c*".

   o  The string "xxx" does not match because no <wildmat-pattern>
      matches.

   A <wildmat-pattern> matches a string if the string can be broken into
   components, each of which matches the corresponding <wildmat-item> in
   the pattern.  The matches must be in the same order, and the whole

Top      Up      ToC       Page 27 
   string must be used in the match.  The pattern is "anchored"; that
   is, the first and last characters in the string must match the first
   and last item, respectively (unless that item is an asterisk matching
   zero characters).

   A <wildmat-exact> matches the same character (which may be more than
   one octet in UTF-8).

   "?" matches exactly one character (which may be more than one octet).

   "*" matches zero or more characters.  It can match an empty string,
   but it cannot match a subsequence of a UTF-8 sequence that is not
   aligned to the character boundaries.

4.3.  Extensions

   An NNTP server or extension MAY extend the syntax or semantics of
   wildmats provided that all wildmats that meet the requirements of
   Section 4.1 have the meaning ascribed to them by Section 4.2.  Future
   editions of this document may also extend wildmats.

4.4.  Examples

   In these examples, $ and @ are used to represent the two octets %xC2
   and %xA3, respectively; $@ is thus the UTF-8 encoding for the pound
   sterling symbol, shown as # in the descriptions.

     Wildmat    Description of strings that match
       abc      The one string "abc"
       abc,def  The two strings "abc" and "def"
       $@       The one character string "#"
       a*       Any string that begins with "a"
       a*b      Any string that begins with "a" and ends with "b"
       a*,*b    Any string that begins with "a" or ends with "b"
       a*,!*b   Any string that begins with "a" and does not end with
                "b"
     a*,!*b,c*  Any string that begins with "a" and does not end with
                "b", and any string that begins with "c" no matter
                what it ends with
     a*,c*,!*b  Any string that begins with "a" or "c" and does not
                end with "b"
       ?a*      Any string with "a" as its second character
       ??a*     Any string with "a" as its third character
       *a?      Any string with "a" as its penultimate character
       *a??     Any string with "a" as its antepenultimate character

Top      Up      ToC       Page 28 
5.  Session Administration Commands

5.1.  Initial Connection

5.1.1.  Usage

   This command MUST NOT be pipelined.

   Responses [1]
     200    Service available, posting allowed
     201    Service available, posting prohibited
     400    Service temporarily unavailable [2]
     502    Service permanently unavailable [2]

   [1] These are the only valid response codes for the initial greeting;
       the server MUST not return any other generic response code.

   [2] Following a 400 or 502 response, the server MUST immediately
       close the connection.

5.1.2.  Description

   There is no command presented by the client upon initial connection
   to the server.  The server MUST present an appropriate response code
   as a greeting to the client.  This response informs the client
   whether service is available and whether the client is permitted to
   post.

   If the server will accept further commands from the client including
   POST, the server MUST present a 200 greeting code.  If the server
   will accept further commands from the client, but the client is not
   authorized to post articles using the POST command, the server MUST
   present a 201 greeting code.

   Otherwise, the server MUST present a 400 or 502 greeting code and
   then immediately close the connection. 400 SHOULD be used if the
   issue is only temporary (for example, because of load) and the client
   can expect to be able to connect successfully at some point in the
   future without making any changes. 502 MUST be used if the client is
   not permitted under any circumstances to interact with the server,
   and MAY be used if the server has insufficient information to
   determine whether the issue is temporary or permanent.

   Note: the distinction between the 200 and 201 response codes has
   turned out in practice to be insufficient; for example, some servers
   do not allow posting until the client has authenticated, while other
   clients assume that a 201 response means that posting will never be
   possible even after authentication.  Therefore, clients SHOULD use

Top      Up      ToC       Page 29 
   the CAPABILITIES command (Section 5.2) rather than rely on this
   response.

5.1.3.  Examples

   Example of a normal connection from an authorized client that then
   terminates the session (see Section 5.4):

      [Initial connection set-up completed.]
      [S] 200 NNTP Service Ready, posting permitted
      [C] QUIT
      [S] 205 NNTP Service exits normally
      [Server closes connection.]

   Example of a normal connection from an authorized client that is not
   permitted to post, which also immediately terminates the session:

      [Initial connection set-up completed.]
      [S] 201 NNTP Service Ready, posting prohibited
      [C] QUIT
      [S] 205 NNTP Service exits normally
      [Server closes connection.]

   Example of a normal connection from an unauthorized client:

      [Initial connection set-up completed.]
      [S] 502 NNTP Service permanently unavailable
      [Server closes connection.]

   Example of a connection from a client if the server is unable to
   provide service:

      [Initial connection set-up completed.]
      [S] 400 NNTP Service temporarily unavailable
      [Server closes connection.]

5.2.  CAPABILITIES

5.2.1.  Usage

   This command is mandatory.

   Syntax
     CAPABILITIES [keyword]

   Responses
     101    Capability list follows (multi-line)

Top      Up      ToC       Page 30 
   Parameters
     keyword    additional feature, see description

5.2.2.  Description

   The CAPABILITIES command allows a client to determine the
   capabilities of the server at any given time.

   This command MAY be issued at any time; the server MUST NOT require
   it to be issued in order to make use of any capability.  The response
   generated by this command MAY change during a session because of
   other state information (which, in turn, may be changed by the
   effects of other commands or by external events).  An NNTP client is
   only able to get the current and correct information concerning
   available capabilities at any point during a session by issuing a
   CAPABILITIES command at that point of that session and processing the
   response.

   The capability list is returned as a multi-line data block following
   the 101 response code.  Each capability is described by a separate
   capability line.  The server MUST NOT list the same capability twice
   in the response, even with different arguments.  Except that the
   VERSION capability MUST be the first line, the order in which the
   capability lines appears is not significant; the server need not even
   consistently return the same order.

   While some capabilities are likely to be always available or never
   available, others (notably extensions) will appear and disappear
   depending on server state changes within the session or on external
   events between sessions.  An NNTP client MAY cache the results of
   this command, but MUST NOT rely on the correctness of any cached
   results, whether from earlier in this session or from a previous
   session, MUST cope gracefully with the cached status being out of
   date, and SHOULD (if caching results) provide a way to force the
   cached information to be refreshed.  Furthermore, a client MUST NOT
   use cached results in relation to security, privacy, and
   authentication extensions.  See Section 12.6 for further discussion
   of this topic.

   The keyword argument is not used by this specification.  It is
   provided so that extensions or revisions to this specification can
   include extra features for this command without requiring the
   CAPABILITIES command to be used twice (once to determine if the extra
   features are available, and a second time to make use of them).  If
   the server does not recognise the argument (and it is a keyword), it
   MUST respond with the 101 response code as if the argument had been
   omitted.  If an argument is provided that the server does recognise,
   it MAY use the 101 response code or MAY use some other response code

Top      Up      ToC       Page 31 
   (which will be defined in the specification of that feature).  If the
   argument is not a keyword, the 501 generic response code MUST be
   returned.  The server MUST NOT generate any other response code to
   the CAPABILITIES command.

5.2.3.  Examples

   Example of a minimal response (a read-only server):

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] READER
      [S] LIST ACTIVE NEWSGROUPS
      [S] .

   Example of a response from a server that has a range of facilities
   and that also describes itself:

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] READER
      [S] IHAVE
      [S] POST
      [S] NEWNEWS
      [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES OVERVIEW.FMT
      [S] IMPLEMENTATION INN 4.2 2004-12-25
      [S] OVER MSGID
      [S] STREAMING
      [S] XSECRET
      [S] .

   Example of a server that supports more than one version of NNTP:

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2 3
      [S] READER
      [S] LIST ACTIVE NEWSGROUPS
      [S] .

Top      Up      ToC       Page 32 
   Example of a client attempting to use a feature of the CAPABILITIES
   command that the server does not support:

      [C] CAPABILITIES AUTOUPDATE
      [S] 101 Capability list:
      [S] VERSION 2
      [S] READER
      [S] IHAVE
      [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT HEADERS
      [S] OVER MSGID
      [S] HDR
      [S] NEWNEWS
      [S] .

5.3.  MODE READER

5.3.1.  Usage

   Indicating capability: MODE-READER

   This command MUST NOT be pipelined.

   Syntax
     MODE READER

   Responses
     200    Posting allowed
     201    Posting prohibited
     502    Reading service permanently unavailable [1]

   [1] Following a 502 response the server MUST immediately close the
       connection.

5.3.2.  Description

   The MODE READER command instructs a mode-switching server to switch
   modes, as described in Section 3.4.2.

   If the server is mode-switching, it switches from its transit mode to
   its reader mode, indicating this by changing the capability list
   accordingly.  It MUST then return a 200 or 201 response with the same
   meaning as for the initial greeting (as described in Section 5.1.1).
   Note that the response need not be the same as that presented during
   the initial greeting.  The client MUST NOT issue MODE READER more
   than once in a session or after any security or privacy commands are
   issued.  When the MODE READER command is issued, the server MAY reset
   its state to that immediately after the initial connection before
   switching mode.

Top      Up      ToC       Page 33 
   If the server is not mode-switching, then the following apply:

   o  If it advertises the READER capability, it MUST return a 200 or
      201 response with the same meaning as for the initial greeting; in
      this case, the command MUST NOT affect the server state in any
      way.

   o  If it does not advertise the READER capability, it MUST return a
      502 response and then immediately close the connection.

5.3.3.  Examples

   Example of use of the MODE READER command on a transit-only server
   (which therefore does not providing reading facilities):

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] IHAVE
      [S] .
      [C] MODE READER
      [S] 502 Transit service only
      [Server closes connection.]

   Example of use of the MODE READER command on a server that provides
   reading facilities:

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] READER
      [S] LIST ACTIVE NEWSGROUPS
      [S] .
      [C] MODE READER
      [S] 200 Reader mode, posting permitted
      [C] IHAVE <i.am.an.article.you.have@example.com>
      [S] 500 Permission denied
      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test

   Note that in both of these situations, the client SHOULD NOT use MODE
   READER.

Top      Up      ToC       Page 34 
   Example of use of the MODE READER command on a mode-switching server:

      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] IHAVE
      [S] MODE-READER
      [S] .
      [C] MODE READER
      [S] 200 Reader mode, posting permitted
      [C] CAPABILITIES
      [S] 101 Capability list:
      [S] VERSION 2
      [S] READER
      [S] NEWNEWS
      [S] LIST ACTIVE NEWSGROUPS
      [S] STARTTLS
      [S] .

   In this case, the server offers (but does not require) TLS privacy in
   its reading mode but not in its transit mode.

   Example of use of the MODE READER command where the client is not
   permitted to post:

      [C] MODE READER
      [S] 201 NNTP Service Ready, posting prohibited

5.4.  QUIT

5.4.1.  Usage

   This command is mandatory.

   Syntax
     QUIT

   Responses
     205    Connection closing

5.4.2.  Description

   The client uses the QUIT command to terminate the session.  The
   server MUST acknowledge the QUIT command and then close the
   connection to the client.  This is the preferred method for a client
   to indicate that it has finished all of its transactions with the
   NNTP server.

Top      Up      ToC       Page 35 
   If a client simply disconnects (or if the connection times out or
   some other fault occurs), the server MUST gracefully cease its
   attempts to service the client, disconnecting from its end if
   necessary.

   The server MUST NOT generate any response code to the QUIT command
   other than 205 or, if any arguments are provided, 501.

5.4.3.  Examples

      [C] QUIT
      [S] 205 closing connection
      [Server closes connection.]

6.  Article Posting and Retrieval

   News-reading clients have available a variety of mechanisms to
   retrieve articles via NNTP.  The news articles are stored and indexed
   using three types of keys.  The first type of key is the message-id
   of an article and is globally unique.  The second type of key is
   composed of a newsgroup name and an article number within that
   newsgroup.  On a particular server, there MUST only be one article
   with a given number within any newsgroup, and an article MUST NOT
   have two different numbers in the same newsgroup.  An article can be
   cross-posted to multiple newsgroups, so there may be multiple keys
   that point to the same article on the same server; these MAY have
   different numbers in each newsgroup.  However, this type of key is
   not required to be globally unique, so the same key MAY refer to
   different articles on different servers.  (Note that the terms
   "group" and "newsgroup" are equivalent.)

   The final type of key is the arrival timestamp, giving the time that
   the article arrived at the server.  The server MUST ensure that
   article numbers are issued in order of arrival timestamp; that is,
   articles arriving later MUST have higher numbers than those that
   arrive earlier.  The server SHOULD allocate the next sequential
   unused number to each new article.

   Article numbers MUST lie between 1 and 2,147,483,647, inclusive.  The
   client and server MAY use leading zeroes in specifying article
   numbers but MUST NOT use more than 16 digits.  In some situations,
   the value zero replaces an article number to show some special
   situation.

   Note that it is likely that the article number limit of 2,147,483,647
   will be increased by a future revision or extension to this
   specification.  While servers MUST NOT send article numbers greater
   than this current limit, client and server developers are advised to

Top      Up      ToC       Page 36 
   use internal structures and datatypes capable of handling larger
   values in anticipation of such a change.

6.1.  Group and Article Selection

   The following commands are used to set the "currently selected
   newsgroup" and the "current article number", which are used by
   various commands.  At the start of an NNTP session, both of these
   values are set to the special value "invalid".

6.1.1.  GROUP

6.1.1.1.  Usage

   Indicating capability: READER

   Syntax
     GROUP group

   Responses
     211 number low high group     Group successfully selected
     411                           No such newsgroup

   Parameters
     group     Name of newsgroup
     number    Estimated number of articles in the group
     low       Reported low water mark
     high      Reported high water mark

6.1.1.2.  Description

   The GROUP command selects a newsgroup as the currently selected
   newsgroup and returns summary information about it.

   The required argument is the name of the newsgroup to be selected
   (e.g., "news.software.nntp").  A list of valid newsgroups may be
   obtained by using the LIST ACTIVE command (see Section 7.6.3).

   The successful selection response will return the article numbers of
   the first and last articles in the group at the moment of selection
   (these numbers are referred to as the "reported low water mark" and
   the "reported high water mark") and an estimate of the number of
   articles in the group currently available.

   If the group is not empty, the estimate MUST be at least the actual
   number of articles available and MUST be no greater than one more
   than the difference between the reported low and high water marks.
   (Some implementations will actually count the number of articles

Top      Up      ToC       Page 37 
   currently stored.  Others will just subtract the low water mark from
   the high water mark and add one to get an estimate.)

   If the group is empty, one of the following three situations will
   occur.  Clients MUST accept all three cases; servers MUST NOT
   represent an empty group in any other way.

   o  The high water mark will be one less than the low water mark, and
      the estimated article count will be zero.  Servers SHOULD use this
      method to show an empty group.  This is the only time that the
      high water mark can be less than the low water mark.

   o  All three numbers will be zero.

   o  The high water mark is greater than or equal to the low water
      mark.  The estimated article count might be zero or non-zero; if
      it is non-zero, the same requirements apply as for a non-empty
      group.

   The set of articles in a group may change after the GROUP command is
   carried out:

   o  Articles may be removed from the group.

   o  Articles may be reinstated in the group with the same article
      number, but those articles MUST have numbers no less than the
      reported low water mark (note that this is a reinstatement of the
      previous article, not a new article reusing the number).

   o  New articles may be added with article numbers greater than the
      reported high water mark.  (If an article that was the one with
      the highest number has been removed and the high water mark has
      been adjusted accordingly, the next new article will not have the
      number one greater than the reported high water mark.)

   Except when the group is empty and all three numbers are zero,
   whenever a subsequent GROUP command for the same newsgroup is issued,
   either by the same client or a different client, the reported low
   water mark in the response MUST be no less than that in any previous
   response for that newsgroup in this session, and it SHOULD be no less
   than that in any previous response for that newsgroup ever sent to
   any client.  Any failure to meet the latter condition SHOULD be
   transient only.  The client may make use of the low water mark to
   remove all remembered information about articles with lower numbers,
   as these will never recur.  This includes the situation when the high
   water mark is one less than the low water mark.  No similar
   assumption can be made about the high water mark, as this can

Top      Up      ToC       Page 38 
   decrease if an article is removed and then increase again if it is
   reinstated or if new articles arrive.

   When a valid group is selected by means of this command, the
   currently selected newsgroup MUST be set to that group, and the
   current article number MUST be set to the first article in the group
   (this applies even if the group is already the currently selected
   newsgroup).  If an empty newsgroup is selected, the current article
   number is made invalid.  If an invalid group is specified, the
   currently selected newsgroup and current article number MUST NOT be
   changed.

   The GROUP or LISTGROUP command (see Section 6.1.2) MUST be used by a
   client, and a successful response received, before any other command
   is used that depends on the value of the currently selected newsgroup
   or current article number.

   If the group specified is not available on the server, a 411 response
   MUST be returned.

6.1.1.3.  Examples

   Example for a group known to the server:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test

   Example for a group unknown to the server:

      [C] GROUP example.is.sob.bradner.or.barber
      [S] 411 example.is.sob.bradner.or.barber is unknown

   Example of an empty group using the preferred response:

      [C] GROUP example.currently.empty.newsgroup
      [S] 211 0 4000 3999 example.currently.empty.newsgroup

   Example of an empty group using an alternative response:

      [C] GROUP example.currently.empty.newsgroup
      [S] 211 0 0 0 example.currently.empty.newsgroup

   Example of an empty group using a different alternative response:

      [C] GROUP example.currently.empty.newsgroup
      [S] 211 0 4000 4321 example.currently.empty.newsgroup

Top      Up      ToC       Page 39 
   Example reselecting the currently selected newsgroup:

      [C] GROUP misc.test
      [S] 211 1234 234 567 misc.test
      [C] STAT 444
      [S] 223 444 <123456@example.net> retrieved
      [C] GROUP misc.test
      [S] 211 1234 234 567 misc.test
      [C] STAT
      [S] 223 234 <different@example.net> retrieved

6.1.2.  LISTGROUP

6.1.2.1.  Usage

   Indicating capability: READER

   Syntax
     LISTGROUP [group [range]]

   Responses
     211 number low high group     Article numbers follow (multi-line)
     411                           No such newsgroup
     412                           No newsgroup selected [1]

   Parameters
     group     Name of newsgroup
     range     Range of articles to report
     number    Estimated number of articles in the group
     low       Reported low water mark
     high      Reported high water mark

   [1] The 412 response can only occur if no group has been specified.

6.1.2.2.  Description

   The LISTGROUP command selects a newsgroup in the same manner as the
   GROUP command (see Section 6.1.1) but also provides a list of article
   numbers in the newsgroup.  If no group is specified, the currently
   selected newsgroup is used.

   On success, a list of article numbers is returned as a multi-line
   data block following the 211 response code (the arguments on the
   initial response line are the same as for the GROUP command).  The
   list contains one number per line and is in numerical order.  It
   lists precisely those articles that exist in the group at the moment
   of selection (therefore, an empty group produces an empty list).  If
   the optional range argument is specified, only articles within the

Top      Up      ToC       Page 40 
   range are included in the list (therefore, the list MAY be empty even
   if the group is not).

   The range argument may be any of the following:

   o  An article number.

   o  An article number followed by a dash to indicate all following.

   o  An article number followed by a dash followed by another article
      number.

   In the last case, if the second number is less than the first number,
   then the range contains no articles.  Omitting the range is
   equivalent to the range 1- being specified.

   If the group specified is not available on the server, a 411 response
   MUST be returned.  If no group is specified and the currently
   selected newsgroup is invalid, a 412 response MUST be returned.

   Except that the group argument is optional, that a range argument can
   be specified, and that a multi-line data block follows the 211
   response code, the LISTGROUP command is identical to the GROUP
   command.  In particular, when successful, the command sets the
   current article number to the first article in the group, if any,
   even if this is not within the range specified by the second
   argument.

   Note that the range argument is a new feature in this specification
   and servers that do not support CAPABILITIES (and therefore do not
   conform to this specification) are unlikely to support it.

6.1.2.3.  Examples

   Example of LISTGROUP being used to select a group:

      [C] LISTGROUP misc.test
      [S] 211 2000 3000234 3002322 misc.test list follows
      [S] 3000234
      [S] 3000237
      [S] 3000238
      [S] 3000239
      [S] 3002322
      [S] .

Top      Up      ToC       Page 41 
   Example of LISTGROUP on an empty group:

      [C] LISTGROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup list follows
      [S] .

   Example of LISTGROUP on a valid, currently selected newsgroup:

      [C] GROUP misc.test
      [S] 211 2000 3000234 3002322 misc.test
      [C] LISTGROUP
      [S] 211 2000 3000234 3002322 misc.test list follows
      [S] 3000234
      [S] 3000237
      [S] 3000238
      [S] 3000239
      [S] 3002322
      [S] .

   Example of LISTGROUP with a range:

      [C] LISTGROUP misc.test 3000238-3000248
      [S] 211 2000 3000234 3002322 misc.test list follows
      [S] 3000238
      [S] 3000239
      [S] .

   Example of LISTGROUP with an empty range:

      [C] LISTGROUP misc.test 12345678-
      [S] 211 2000 3000234 3002322 misc.test list follows
      [S] .

   Example of LISTGROUP with an invalid range:

      [C] LISTGROUP misc.test 9999-111
      [S] 211 2000 3000234 3002322 misc.test list follows
      [S] .

Top      Up      ToC       Page 42 
6.1.3.  LAST

6.1.3.1.  Usage

   Indicating capability: READER

   Syntax
     LAST

   Responses
     223 n message-id    Article found
     412                 No newsgroup selected
     420                 Current article number is invalid
     422                 No previous article in this group

   Parameters
     n             Article number
     message-id    Article message-id

6.1.3.2.  Description

   If the currently selected newsgroup is valid, the current article
   number MUST be set to the previous article in that newsgroup (that
   is, the highest existing article number less than the current article
   number).  If successful, a response indicating the new current
   article number and the message-id of that article MUST be returned.
   No article text is sent in response to this command.

   There MAY be no previous article in the group, although the current
   article number is not the reported low water mark.  There MUST NOT be
   a previous article when the current article number is the reported
   low water mark.

   Because articles can be removed and added, the results of multiple
   LAST and NEXT commands MAY not be consistent over the life of a
   particular NNTP session.

   If the current article number is already the first article of the
   newsgroup, a 422 response MUST be returned.  If the current article
   number is invalid, a 420 response MUST be returned.  If the currently
   selected newsgroup is invalid, a 412 response MUST be returned.  In
   all three cases, the currently selected newsgroup and current article
   number MUST NOT be altered.

Top      Up      ToC       Page 43 
6.1.3.3.  Examples

   Example of a successful article retrieval using LAST:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] NEXT
      [S] 223 3000237 <668929@example.org> retrieved
      [C] LAST
      [S] 223 3000234 <45223423@example.com> retrieved

   Example of an attempt to retrieve an article without having selected
   a group (via the GROUP command) first:

      [Assumes currently selected newsgroup is invalid.]
      [C] LAST
      [S] 412 no newsgroup selected

   Example of an attempt to retrieve an article using the LAST command
   when the current article number is that of the first article in the
   group:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] LAST
      [S] 422 No previous article to retrieve

   Example of an attempt to retrieve an article using the LAST command
   when the currently selected newsgroup is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] LAST
      [S] 420 No current article selected

Top      Up      ToC       Page 44 
6.1.4.  NEXT

6.1.4.1.  Usage

   Indicating capability: READER

   Syntax
     NEXT

   Responses
     223 n message-id    Article found
     412                 No newsgroup selected
     420                 Current article number is invalid
     421                 No next article in this group

   Parameters
     n             Article number
     message-id    Article message-id

6.1.4.2.  Description

   If the currently selected newsgroup is valid, the current article
   number MUST be set to the next article in that newsgroup (that is,
   the lowest existing article number greater than the current article
   number).  If successful, a response indicating the new current
   article number and the message-id of that article MUST be returned.
   No article text is sent in response to this command.

   If the current article number is already the last article of the
   newsgroup, a 421 response MUST be returned.  In all other aspects
   (apart, of course, from the lack of 422 response), this command is
   identical to the LAST command (Section 6.1.3).

6.1.4.3.  Examples

   Example of a successful article retrieval using NEXT:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] NEXT
      [S] 223 3000237 <668929@example.org> retrieved

Top      Up      ToC       Page 45 
   Example of an attempt to retrieve an article without having selected
   a group (via the GROUP command) first:

      [Assumes currently selected newsgroup is invalid.]
      [C] NEXT
      [S] 412 no newsgroup selected

   Example of an attempt to retrieve an article using the NEXT command
   when the current article number is that of the last article in the
   group:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] STAT 3002322
      [S] 223 3002322 <411@example.net> retrieved
      [C] NEXT
      [S] 421 No next article to retrieve

   Example of an attempt to retrieve an article using the NEXT command
   when the currently selected newsgroup is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] NEXT
      [S] 420 No current article selected

6.2.  Retrieval of Articles and Article Sections

   The ARTICLE, BODY, HEAD, and STAT commands are very similar.  They
   differ only in the parts of the article that are presented to the
   client and in the successful response code.  The ARTICLE command is
   described here in full, while the other three commands are described
   in terms of the differences.  As specified in Section 3.6, an article
   consists of two parts: the article headers and the article body.

   When responding to one of these commands, the server MUST present the
   entire article or appropriate part and MUST NOT attempt to alter or
   translate it in any way.

Top      Up      ToC       Page 46 
6.2.1.  ARTICLE

6.2.1.1.  Usage

   Indicating capability: READER

   Syntax
     ARTICLE message-id
     ARTICLE number
     ARTICLE

   Responses

   First form (message-id specified)
     220 0|n message-id    Article follows (multi-line)
     430                   No article with that message-id

   Second form (article number specified)
     220 n message-id      Article follows (multi-line)
     412                   No newsgroup selected
     423                   No article with that number

   Third form (current article number used)
     220 n message-id      Article follows (multi-line)
     412                   No newsgroup selected
     420                   Current article number is invalid

   Parameters
     number        Requested article number
     n             Returned article number
     message-id    Article message-id

6.2.1.2.  Description

   The ARTICLE command selects an article according to the arguments and
   presents the entire article (that is, the headers, an empty line, and
   the body, in that order) to the client.  The command has three forms.

   In the first form, a message-id is specified, and the server presents
   the article with that message-id.  In this case, the server MUST NOT
   alter the currently selected newsgroup or current article number.
   This is both to facilitate the presentation of articles that may be
   referenced within another article being read, and because of the
   semantic difficulties of determining the proper sequence and
   membership of an article that may have been cross-posted to more than
   one newsgroup.

Top      Up      ToC       Page 47 
   In the response, the article number MUST be replaced with zero,
   unless there is a currently selected newsgroup and the article is
   present in that group, in which case the server MAY use the article's
   number in that group.  (The server is not required to determine
   whether the article is in the currently selected newsgroup or, if so,
   what article number it has; the client MUST always be prepared for
   zero to be specified.)  The server MUST NOT provide an article number
   unless use of that number in a second ARTICLE command immediately
   following this one would return the same article.  Even if the server
   chooses to return article numbers in these circumstances, it need not
   do so consistently; it MAY return zero to any such command (also see
   the STAT examples, Section 6.2.4.3).

   In the second form, an article number is specified.  If there is an
   article with that number in the currently selected newsgroup, the
   server MUST set the current article number to that number.

   In the third form, the article indicated by the current article
   number in the currently selected newsgroup is used.

   Note that a previously valid article number MAY become invalid if the
   article has been removed.  A previously invalid article number MAY
   become valid if the article has been reinstated, but this article
   number MUST be no less than the reported low water mark for that
   group.

   The server MUST NOT change the currently selected newsgroup as a
   result of this command.  The server MUST NOT change the current
   article number except when an article number argument was provided
   and the article exists; in particular, it MUST NOT change it
   following an unsuccessful response.

   Since the message-id is unique for each article, it may be used by a
   client to skip duplicate displays of articles that have been posted
   more than once, or to more than one newsgroup.

   The article is returned as a multi-line data block following the 220
   response code.

   If the argument is a message-id and no such article exists, a 430
   response MUST be returned.  If the argument is a number or is omitted
   and the currently selected newsgroup is invalid, a 412 response MUST
   be returned.  If the argument is a number and that article does not
   exist in the currently selected newsgroup, a 423 response MUST be
   returned.  If the argument is omitted and the current article number
   is invalid, a 420 response MUST be returned.

Top      Up      ToC       Page 48 
6.2.1.3.  Examples

   Example of a successful retrieval of an article (explicitly not using
   an article number):

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] ARTICLE
      [S] 220 3000234 <45223423@example.com>
      [S] Path: pathost!demo!whitehouse!not-for-mail
      [S] From: "Demo User" <nobody@example.net>
      [S] Newsgroups: misc.test
      [S] Subject: I am just a test article
      [S] Date: 6 Oct 1998 04:38:40 -0500
      [S] Organization: An Example Net, Uncertain, Texas
      [S] Message-ID: <45223423@example.com>
      [S]
      [S] This is just a test article.
      [S] .

   Example of a successful retrieval of an article by message-id:

      [C] ARTICLE <45223423@example.com>
      [S] 220 0 <45223423@example.com>
      [S] Path: pathost!demo!whitehouse!not-for-mail
      [S] From: "Demo User" <nobody@example.net>
      [S] Newsgroups: misc.test
      [S] Subject: I am just a test article
      [S] Date: 6 Oct 1998 04:38:40 -0500
      [S] Organization: An Example Net, Uncertain, Texas
      [S] Message-ID: <45223423@example.com>
      [S]
      [S] This is just a test article.
      [S] .

   Example of an unsuccessful retrieval of an article by message-id:

      [C] ARTICLE <i.am.not.there@example.com>
      [S] 430 No Such Article Found

   Example of an unsuccessful retrieval of an article by number:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 news.groups
      [C] ARTICLE 300256
      [S] 423 No article with that number

Top      Up      ToC       Page 49 
   Example of an unsuccessful retrieval of an article by number because
   no newsgroup was selected first:

      [Assumes currently selected newsgroup is invalid.]
      [C] ARTICLE 300256
      [S] 412 No newsgroup selected

   Example of an attempt to retrieve an article when the currently
   selected newsgroup is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] ARTICLE
      [S] 420 No current article selected

6.2.2.  HEAD

6.2.2.1.  Usage

   This command is mandatory.

   Syntax
     HEAD message-id
     HEAD number
     HEAD

   Responses

   First form (message-id specified)
     221 0|n message-id    Headers follow (multi-line)
     430                   No article with that message-id

   Second form (article number specified)
     221 n message-id      Headers follow (multi-line)
     412                   No newsgroup selected
     423                   No article with that number

   Third form (current article number used)
     221 n message-id      Headers follow (multi-line)
     412                   No newsgroup selected
     420                   Current article number is invalid

   Parameters
     number        Requested article number
     n             Returned article number
     message-id    Article message-id

Top      Up      ToC       Page 50 
6.2.2.2.  Description

   The HEAD command behaves identically to the ARTICLE command except
   that, if the article exists, the response code is 221 instead of 220
   and only the headers are presented (the empty line separating the
   headers and body MUST NOT be included).

6.2.2.3.  Examples

   Example of a successful retrieval of the headers of an article
   (explicitly not using an article number):

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] HEAD
      [S] 221 3000234 <45223423@example.com>
      [S] Path: pathost!demo!whitehouse!not-for-mail
      [S] From: "Demo User" <nobody@example.net>
      [S] Newsgroups: misc.test
      [S] Subject: I am just a test article
      [S] Date: 6 Oct 1998 04:38:40 -0500
      [S] Organization: An Example Net, Uncertain, Texas
      [S] Message-ID: <45223423@example.com>
      [S] .

   Example of a successful retrieval of the headers of an article by
   message-id:

      [C] HEAD <45223423@example.com>
      [S] 221 0 <45223423@example.com>
      [S] Path: pathost!demo!whitehouse!not-for-mail
      [S] From: "Demo User" <nobody@example.net>
      [S] Newsgroups: misc.test
      [S] Subject: I am just a test article
      [S] Date: 6 Oct 1998 04:38:40 -0500
      [S] Organization: An Example Net, Uncertain, Texas
      [S] Message-ID: <45223423@example.com>
      [S] .

   Example of an unsuccessful retrieval of the headers of an article by
   message-id:

      [C] HEAD <i.am.not.there@example.com>
      [S] 430 No Such Article Found

Top      Up      ToC       Page 51 
   Example of an unsuccessful retrieval of the headers of an article by
   number:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] HEAD 300256
      [S] 423 No article with that number

   Example of an unsuccessful retrieval of the headers of an article by
   number because no newsgroup was selected first:

      [Assumes currently selected newsgroup is invalid.]
      [C] HEAD 300256
      [S] 412 No newsgroup selected

   Example of an attempt to retrieve the headers of an article when the
   currently selected newsgroup is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] HEAD
      [S] 420 No current article selected

6.2.3.  BODY

6.2.3.1.  Usage

   Indicating capability: READER

   Syntax
     BODY message-id
     BODY number
     BODY

   Responses

   First form (message-id specified)
     222 0|n message-id    Body follows (multi-line)
     430                   No article with that message-id

   Second form (article number specified)
     222 n message-id      Body follows (multi-line)
     412                   No newsgroup selected
     423                   No article with that number

Top      Up      ToC       Page 52 
   Third form (current article number used)
     222 n message-id      Body follows (multi-line)
     412                   No newsgroup selected
     420                   Current article number is invalid

   Parameters
     number        Requested article number
     n             Returned article number
     message-id    Article message-id

6.2.3.2.  Description

   The BODY command behaves identically to the ARTICLE command except
   that, if the article exists, the response code is 222 instead of 220
   and only the body is presented (the empty line separating the headers
   and body MUST NOT be included).

6.2.3.3.  Examples

   Example of a successful retrieval of the body of an article
   (explicitly not using an article number):

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] BODY
      [S] 222 3000234 <45223423@example.com>
      [S] This is just a test article.
      [S] .

   Example of a successful retrieval of the body of an article by
   message-id:

      [C] BODY <45223423@example.com>
      [S] 222 0 <45223423@example.com>
      [S] This is just a test article.
      [S] .

   Example of an unsuccessful retrieval of the body of an article by
   message-id:

      [C] BODY <i.am.not.there@example.com>
      [S] 430 No Such Article Found

Top      Up      ToC       Page 53 
   Example of an unsuccessful retrieval of the body of an article by
   number:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] BODY 300256
      [S] 423 No article with that number

   Example of an unsuccessful retrieval of the body of an article by
   number because no newsgroup was selected first:

      [Assumes currently selected newsgroup is invalid.]
      [C] BODY 300256
      [S] 412 No newsgroup selected

   Example of an attempt to retrieve the body of an article when the
   currently selected newsgroup is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] BODY
      [S] 420 No current article selected

6.2.4.  STAT

6.2.4.1.  Usage

   This command is mandatory.

   Syntax
     STAT message-id
     STAT number
     STAT

   Responses

   First form (message-id specified)
     223 0|n message-id    Article exists
     430                   No article with that message-id

   Second form (article number specified)
     223 n message-id      Article exists
     412                   No newsgroup selected
     423                   No article with that number

Top      Up      ToC       Page 54 
   Third form (current article number used)
     223 n message-id      Article exists
     412                   No newsgroup selected
     420                   Current article number is invalid

   Parameters
     number        Requested article number
     n             Returned article number
     message-id    Article message-id

6.2.4.2.  Description

   The STAT command behaves identically to the ARTICLE command except
   that, if the article exists, it is NOT presented to the client and
   the response code is 223 instead of 220.  Note that the response is
   NOT multi-line.

   This command allows the client to determine whether an article exists
   and, in the second and third forms, what its message-id is, without
   having to process an arbitrary amount of text.

6.2.4.3.  Examples

   Example of STAT on an existing article (explicitly not using an
   article number):

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] STAT
      [S] 223 3000234 <45223423@example.com>

   Example of STAT on an existing article by message-id:

      [C] STAT <45223423@example.com>
      [S] 223 0 <45223423@example.com>

   Example of STAT on an article not on the server by message-id:

      [C] STAT <i.am.not.there@example.com>
      [S] 430 No Such Article Found

   Example of STAT on an article not in the server by number:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] STAT 300256
      [S] 423 No article with that number

Top      Up      ToC       Page 55 
   Example of STAT on an article by number when no newsgroup was
   selected first:

      [Assumes currently selected newsgroup is invalid.]
      [C] STAT 300256
      [S] 412 No newsgroup selected

   Example of STAT on an article when the currently selected newsgroup
   is empty:

      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] STAT
      [S] 420 No current article selected

   Example of STAT by message-id on a server that sometimes reports the
   actual article number:

      [C] GROUP misc.test
      [S] 211 1234 3000234 3002322 misc.test
      [C] STAT
      [S] 223 3000234 <45223423@example.com>
      [C] STAT <45223423@example.com>
      [S] 223 0 <45223423@example.com>
      [C] STAT <45223423@example.com>
      [S] 223 3000234 <45223423@example.com>
      [C] GROUP example.empty.newsgroup
      [S] 211 0 0 0 example.empty.newsgroup
      [C] STAT <45223423@example.com>
      [S] 223 0 <45223423@example.com>
      [C] GROUP alt.crossposts
      [S] 211 9999 111111 222222 alt.crossposts
      [C] STAT <45223423@example.com>
      [S] 223 123456 <45223423@example.com>
      [C] STAT
      [S] 223 111111 <23894720@example.com>

   The first STAT command establishes the identity of an article in the
   group.  The second and third show that the server may, but need not,
   give the article number when the message-id is specified.  The fourth
   STAT command shows that zero must be specified if the article isn't
   in the currently selected newsgroup.  The fifth shows that the
   number, if provided, must be that relating to the currently selected
   newsgroup.  The last one shows that the current article number is
   still not changed by the use of STAT with a message-id even if it
   returns an article number.

Top      Up      ToC       Page 56 
6.3.  Article Posting

   Article posting is done in one of two ways: individual article
   posting from news-reading clients using POST, and article transfer
   from other news servers using IHAVE.

6.3.1.  POST

6.3.1.1.  Usage

   Indicating capability: POST

   This command MUST NOT be pipelined.

   Syntax
     POST

   Responses

   Initial responses
     340    Send article to be posted
     440    Posting not permitted

   Subsequent responses
     240    Article received OK
     441    Posting failed

6.3.1.2.  Description

   If posting is allowed, a 340 response MUST be returned to indicate
   that the article to be posted should be sent.  If posting is
   prohibited for some installation-dependent reason, a 440 response
   MUST be returned.

   If posting is permitted, the article MUST be in the format specified
   in Section 3.6 and MUST be sent by the client to the server as a
   multi-line data block (see Section 3.1.1).  Thus a single dot (".")
   on a line indicates the end of the text, and lines starting with a
   dot in the original text have that dot doubled during transmission.

   Following the presentation of the termination sequence by the client,
   the server MUST return a response indicating success or failure of
   the article transfer.  Note that response codes 340 and 440 are used
   in direct response to the POST command while 240 and 441 are returned
   after the article is sent.

Top      Up      ToC       Page 57 
   A response of 240 SHOULD indicate that, barring unforeseen server
   errors, the posted article will be made available on the server
   and/or transferred to other servers, as appropriate, possibly
   following further processing.  In other words, articles not wanted by
   the server SHOULD be rejected with a 441 response, rather than being
   accepted and then discarded silently.  However, the client SHOULD NOT
   assume that the article has been successfully transferred unless it
   receives an affirmative response from the server and SHOULD NOT
   assume that it is being made available to other clients without
   explicitly checking (for example, using the STAT command).

   If the session is interrupted before the response is received, it is
   possible that an affirmative response was sent but has been lost.
   Therefore, in any subsequent session, the client SHOULD either check
   whether the article was successfully posted before resending or
   ensure that the server will allocate the same message-id to the new
   attempt (see Appendix A.2).  The latter approach is preferred since
   the article might not have been made available for reading yet (for
   example, it may have to go through a moderation process).

6.3.1.3.  Examples

   Example of a successful posting:

      [C] POST
      [S] 340 Input article; end with <CR-LF>.<CR-LF>
      [C] From: "Demo User" <nobody@example.net>
      [C] Newsgroups: misc.test
      [C] Subject: I am just a test article
      [C] Organization: An Example Net
      [C]
      [C] This is just a test article.
      [C] .
      [S] 240 Article received OK

   Example of an unsuccessful posting:

      [C] POST
      [S] 340 Input article; end with <CR-LF>.<CR-LF>
      [C] From: "Demo User" <nobody@example.net>
      [C] Newsgroups: misc.test
      [C] Subject: I am just a test article
      [C] Organization: An Example Net
      [C]
      [C] This is just a test article.
      [C] .
      [S] 441 Posting failed

Top      Up      ToC       Page 58 
   Example of an attempt to post when posting is not allowed:

      [Initial connection set-up completed.]
      [S] 201 NNTP Service Ready, posting prohibited
      [C] POST
      [S] 440 Posting not permitted

6.3.2.  IHAVE

6.3.2.1.  Usage

   Indicating capability: IHAVE

   This command MUST NOT be pipelined.

   Syntax
     IHAVE message-id

   Responses

   Initial responses
     335    Send article to be transferred
     435    Article not wanted
     436    Transfer not possible; try again later

   Subsequent responses
     235    Article transferred OK
     436    Transfer failed; try again later
     437    Transfer rejected; do not retry

   Parameters
     message-id    Article message-id

6.3.2.2.  Description

   The IHAVE command informs the server that the client has an article
   with the specified message-id.  If the server desires a copy of that
   article, a 335 response MUST be returned, instructing the client to
   send the entire article.  If the server does not want the article
   (if, for example, the server already has a copy of it), a 435
   response MUST be returned, indicating that the article is not wanted.
   Finally, if the article isn't wanted immediately but the client
   should retry later if possible (if, for example, another client is in
   the process of sending the same article to the server), a 436
   response MUST be returned.

Top      Up      ToC       Page 59 
   If transmission of the article is requested, the client MUST send the
   entire article, including headers and body, to the server as a
   multi-line data block (see Section 3.1.1).  Thus, a single dot (".")
   on a line indicates the end of the text, and lines starting with a
   dot in the original text have that dot doubled during transmission.
   The server MUST return a 235 response, indicating that the article
   was successfully transferred; a 436 response, indicating that the
   transfer failed but should be tried again later; or a 437 response,
   indicating that the article was rejected.

   This function differs from the POST command in that it is intended
   for use in transferring already-posted articles between hosts.  It
   SHOULD NOT be used when the client is a personal news-reading
   program, since use of this command indicates that the article has
   already been posted at another site and is simply being forwarded
   from another host.  However, despite this, the server MAY elect not
   to post or forward the article if, after further examination of the
   article, it deems it inappropriate to do so.  Reasons for such
   subsequent rejection of an article may include problems such as
   inappropriate newsgroups or distributions, disc space limitations,
   article lengths, garbled headers, and the like.  These are typically
   restrictions enforced by the server host's news software and not
   necessarily by the NNTP server itself.

   The client SHOULD NOT assume that the article has been successfully
   transferred unless it receives an affirmative response from the
   server.  A lack of response (such as a dropped network connection or
   a network timeout) SHOULD be treated the same as a 436 response.

   Because some news server software may not immediately be able to
   determine whether an article is suitable for posting or forwarding,
   an NNTP server MAY acknowledge the successful transfer of the article
   (with a 235 response) but later silently discard it.

Top      Up      ToC       Page 60 
6.3.2.3.  Examples

   Example of successfully sending an article to another site:

      [C] IHAVE <i.am.an.article.you.will.want@example.com>
      [S] 335 Send it; end with <CR-LF>.<CR-LF>
      [C] Path: pathost!demo!somewhere!not-for-mail
      [C] From: "Demo User" <nobody@example.com>
      [C] Newsgroups: misc.test
      [C] Subject: I am just a test article
      [C] Date: 6 Oct 1998 04:38:40 -0500
      [C] Organization: An Example Com, San Jose, CA
      [C] Message-ID: <i.am.an.article.you.will.want@example.com>
      [C]
      [C] This is just a test article.
      [C] .
      [S] 235 Article transferred OK

   Example of sending an article to another site that rejects it.  Note
   that the message-id in the IHAVE command is not the same as the one
   in the article headers; while this is bad practice and SHOULD NOT be
   done, it is not forbidden.

      [C] IHAVE <i.am.an.article.you.will.want@example.com>
      [S] 335 Send it; end with <CR-LF>.<CR-LF>
      [C] Path: pathost!demo!somewhere!not-for-mail
      [C] From: "Demo User" <nobody@example.com>
      [C] Newsgroups: misc.test
      [C] Subject: I am just a test article
      [C] Date: 6 Oct 1998 04:38:40 -0500
      [C] Organization: An Example Com, San Jose, CA
      [C] Message-ID: <i.am.an.article.you.have@example.com>
      [C]
      [C] This is just a test article.
      [C] .
      [S] 437 Article rejected; don't send again

Top      Up      ToC       Page 61 
   Example of sending an article to another site where the transfer
   fails:

      [C] IHAVE <i.am.an.article.you.will.want@example.com>
      [S] 335 Send it; end with <CR-LF>.<CR-LF>
      [C] Path: pathost!demo!somewhere!not-for-mail
      [C] From: "Demo User" <nobody@example.com>
      [C] Newsgroups: misc.test
      [C] Subject: I am just a test article
      [C] Date: 6 Oct 1998 04:38:40 -0500
      [C] Organization: An Example Com, San Jose, CA
      [C] Message-ID: <i.am.an.article.you.will.want@example.com>
      [C]
      [C] This is just a test article.
      [C] .
      [S] 436 Transfer failed

   Example of sending an article to a site that already has it:

      [C] IHAVE <i.am.an.article.you.have@example.com>
      [S] 435 Duplicate

   Example of sending an article to a site that requests that the
   article be tried again later:

      [C] IHAVE <i.am.an.article.you.defer@example.com>
      [S] 436 Retry later



(page 61 continued on part 3)

Next RFC Part