123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518 |
- cat rfc2980.txt
- Network Working Group S. Barber
- Request for Comments: 2980 Academ Consulting Services
- Category: Informational October 2000
- Common NNTP Extensions
- Status of this Memo
- This memo provides information for the Internet community. It does
- not specify an Internet standard of any kind. Distribution of this
- memo is unlimited.
- Copyright Notice
- Copyright (C) The Internet Society (2000). All Rights Reserved.
- Abstract
- In this document, a number of popular extensions to the Network News
- Transfer Protocol (NNTP) protocol defined in RFC 977 are documented
- and discussed. While this document is not intended to serve as a
- standard of any kind, it will hopefully serve as a reference document
- for future implementers of the NNTP protocol. In the role, this
- document would hopefully create the possibility for some level of
- interoperability among implementations that make use of extensions.
- Introduction
- RFC 977 [1] defines the NNTP protocol and was released over a decade
- ago. Since then, NNTP has become one of the most popular protocols
- in use on the Internet. Many implementations of the protocol have
- been created on many different platforms and operating systems. With
- the growth in use of the protocol, work began on a revision to NNTP
- in 1991, but that work did not result in a new standard protocol
- specification. However, many ideas from that working group did find
- their way into many implementations of NNTP. Additionally, many
- other extensions, often created by newsreader authors, are also in
- use. This document will capture and define all known extensions to
- NNTP available in official NNTP server releases of some type as of
- this writing. Where possible, the server software first implementing
- a particular extension will be noted. It is the hope of the author
- that using this document in tandem with RFC 977 will limit the
- addition of new extensions that essentially do the same thing.
- Software developers may wish to use this document and others [2] as a
- resource for the development of new software.
- Barber Informational [Page 1]
- RFC 2980 Common NNTP Extensions October 2000
- This document does not specify an Internet Standard of any kind. It
- only attempts to document current practices. While this document may
- clarify some ambiguity in RFC 977, RFC 977 should be regarded as
- authoritative in all cases. There are some implementations that are
- not strictly RFC 977 compliant and where necessary, these deviations
- from the standard will be noted. This document does reflect the work
- of the IETF NNTP-EXT working group chaired by Ned Freed and Stan
- Barber.
- This document is provided to help implementers have a uniform source
- of information about extensions, however, it is important for any
- prospective implementer to understand that the extensions listed here
- are NOT part of any current standard for NNTP. In fact, some of the
- ones listed in this document should not be included in new NNTP
- implementations as they should no longer be used modern NNTP
- environments. Such commands should be considered historic and are
- documented as such in this document.
- Extensions fall into three categories: transport, newsreader and
- other. Transport extensions are additions to the NNTP specification
- that were made specifically to move news articles from one server to
- another server. Newsreader extensions are additions to the NNTP
- specification that were made to assist NNTP clients in selecting and
- retrieving news articles from servers. Other extensions to the NNTP
- specification are those which did not specifically fall into either
- of the other two categories. Examples of other extensions include
- authentication and time-of-day extensions. For each command, the
- format of section 3 of RFC 977 will be used.
- 1. Transport Extensions
- A transport extension is one which is primarily used in inter-server
- communications. Following are the descriptions of each transport
- extension commands and the responses which will be returned by those
- commands.
- Each command is shown in upper case for clarity, although case is
- ignored in the interpretation of commands by the NNTP server. Any
- parameters are shown in lower case. A parameter shown in [square
- brackets] is optional. For example, [GMT] indicates that the
- triglyph GMT may present or omitted. A parameter that may be
- repeated is followed by an ellipsis.
- Barber Informational [Page 2]
- RFC 2980 Common NNTP Extensions October 2000
- 1.1.1 The CHECK command
- CHECK <message-id>
- CHECK is used by a peer to discover if the article with the specified
- message-id should be sent to the server using the TAKETHIS command.
- The peer does not have to wait for a response from the server before
- sending the next command.
- From using the responses to the sequence of CHECK commands, a list of
- articles to be sent can be constructed for subsequent use by the
- TAKETHIS command.
- The use of the CHECK command for streaming is optional. Some
- implementations will directly use the TAKETHIS command and send all
- articles in the send queue on that peer for the server.
- On some implementations, the use of the CHECK command is not
- permitted when the server is in slave mode (via the SLAVE command).
- Responses that are of the form X3X must specify the message-id in the
- response.
- 1.1.2. Responses
- 238 no such article found, please send it to me
- 400 not accepting articles
- 431 try sending it again later
- 438 already have it, please don't send it to me
- 480 Transfer permission denied
- 500 Command not understood
- 1.2.1 The MODE STREAM command
- MODE STREAM
- MODE STREAM is used by a peer to indicate to the server that it would
- like to suspend the lock step conversational nature of NNTP and send
- commands in streams. This command should be used before TAKETHIS and
- CHECK. See the section on the commands TAKETHIS and CHECK for more
- details.
- 1.2.2. Responses
- 203 Streaming is OK
- 500 Command not understood
- Barber Informational [Page 3]
- RFC 2980 Common NNTP Extensions October 2000
- 1.3.1 The TAKETHIS command
- TAKETHIS <message-id>
- TAKETHIS is used to send articles to a server when in streaming mode.
- The entire article (header and body, in that sequence) is sent
- immediately after the peer sends the TAKETHIS command. The peer does
- not have to wait for a response from the server before sending the
- next command and the associated article.
- During transmission of the article, the peer should send the entire
- article, including header and body, in the manner specified for text
- transmission from the server. See RFC 977, Section 2.4.1 for
- details.
- Responses that are of the form X3X must specify the message-id in the
- response.
- 1.3.2. Responses
- 239 article transferred ok
- 400 not accepting articles
- 439 article transfer failed
- 480 Transfer permission denied
- 500 Command not understood
- 1.4.1 The XREPLIC command
- XREPLIC ggg:nnn[,ggg:nnn...]
- The XREPLIC command makes is possible to exactly duplicate the news
- spool structure of one server in another server. It first appeared
- in INN.
- This command works similarly to the IHAVE command as specified in RFC
- 977. The same response codes are used. The command line arguments
- consist of entries separated by a single comma. Each entry consists
- of a news group name, a colon, and an article number. If the server
- responds with a 335 response, the article should be filed in the news
- group(s) and article number(s) specified in the XREPLIC command line.
- If the server cannot do successfully install the article once it has
- accepted it, a 436 or 437 response code can be used to indicate the
- failure.
- This command should only be used when the receiving server is being
- fed by only one other server. It is likely that when used with
- servers that have multiple feeds that this command will frequently
- fail.
- Barber Informational [Page 4]
- RFC 2980 Common NNTP Extensions October 2000
- XREPLIC slaving has been deprecated in INN version 1.7.2 and later.
- INN now has the ability to slave servers via transparent means,
- simply by having the article's Xref header transferred. (In previous
- versions, this header was generated locally and stripped off on
- outgoing feeds.)
- It is likely that future versions of INN will no longer support
- XREPLIC.
- 1.4.2. Responses
- 235 article transferred ok
- 335 send article to be transferred. End with <CR-LF>.<CR-LF>
- 435 article not wanted - do not send it
- 436 transfer failed - try again later
- 437 article rejected - do not try again
- 2. Newsreader Extensions
- Newsreader extensions are those which are primarily used by
- newsreading clients. Following are the descriptions of each
- newsreader extension commands and the responses which will be
- returned by those commands.
- Each command is shown in upper case for clarity, although case is
- ignored in the interpretation of commands by the NNTP server. Any
- parameters are shown in lower case. A parameter shown in [square
- brackets] is optional. For example, [GMT] indicates that the
- triglyph GMT may present or omitted. A parameter that may be
- repeated is followed by an ellipsis. Mutually exclusive parameters
- are separated by a vertical bar (|) character. For example,
- ggg|<message-id> indicates that a group name or a <message-id> may
- be specified, but not both. Some parameters, notably <message-id>,
- is case specific. See RFC 1036 for these details.
- Also, certain commands make use of a pattern for selection of
- multiple news groups. The pattern in all cases is based on the
- wildmat [4] format introduced by Rich Salz in 1986. Arguments
- expected to be in wildmat format will be represented by the string
- wildmat. This format is discussed in detail in section 3.3 of this
- document.
- 2.1.1 Extensions to the LIST command
- The original LIST command took no arguments in RFC 977 and returned
- the contents of the active file in a specific format. Since the
- original newsreaders made use of other information available in the
- news transport software in addition to the active file, extensions to
- Barber Informational [Page 5]
- RFC 2980 Common NNTP Extensions October 2000
- the LIST command were created to make that information available to
- NNTP newsreaders. There may be other extensions to the LIST command
- that simply return the contents of a file. This approach is
- suggested over the addition of over verbs. For example, LIST MOTD
- could be used instead of adding XMOTD.
- 2.1.2 LIST ACTIVE
- LIST ACTIVE [wildmat]
- LIST ACTIVE is exactly the same as the LIST command specified in RFC
- 977. The responses and the format should exactly match the LIST
- command without arguments. If the optional matching parameter is
- specified, the list is limited to only the groups that match the
- pattern. Specifying a single group is usually very efficient for the
- server, and multiple groups may be specified by using wildmat
- patterns (described later in this document), not regular expressions.
- If nothing is matched an empty list is returned, not an error. This
- command first appeared in the UNIX reference version.
- 2.1.3 LIST ACTIVE.TIMES
- LIST ACTIVE.TIMES
- The active.times file is maintained by some news transports systems
- to contain information about the when and who created a particular
- news group. The format of this file generally include three fields.
- The first field is the name of the news group. The second is the
- time when this group was created on this news server measured in
- seconds since January 1, 1970. The third is the email address of the
- entity that created the news group. When executed, the information
- is displayed following the 215 response. When display is completed,
- the server will send a period on a line by itself. If the
- information is not available, the server will return the 503 error
- response. This command first appeared in the UNIX reference version.
- 2.1.3.1 Responses
- 215 information follows
- 503 program error, function not performed
- 2.1.4 LIST DISTRIBUTIONS
- LIST DISTRIBUTIONS
- The distributions file is maintained by some news transport systems
- to contain information about valid values for the Distribution: line
- in a news article header and about what the values mean. Each line
- Barber Informational [Page 6]
- RFC 2980 Common NNTP Extensions October 2000
- contains two fields, the value and a short explanation on the meaning
- of the value. When executed, the information is displayed following
- the 215 response. When display is completed, the server will send a
- period on a line by itself. If the information is not available, the
- server will return the 503 error response. This command first
- appeared in the UNIX reference version.
- 2.1.4.1 Responses
- 215 information follows
- 503 program error, function not performed
- 2.1.5 LIST DISTRIB.PATS
- LIST DISTRIB.PATS
- The distrib.pats file is maintained by some news transport systems to
- contain default values for the Distribution: line in a news article
- header when posting to particular news groups. This information
- could be used to provide a default value for the Distribution: line
- in the header when posting an article. The information returned
- involves three fields separated by colons. The first column is a
- weight. The second is a group name or a pattern that can be used to
- match a group name in the wildmat format. The third is the value of
- the Distribution: line that should be used when the group name
- matches and the weight value is the highest. All this processing is
- done by the news posting client and not by the server itself. The
- server just provides this information to the client for it to use or
- ignore as it chooses. When executed, the information is displayed
- following the 215 response. When display is completed, the server
- will send a period on a line by itself. If the information is not
- available, the server will return the 503 error response. This
- command first appeared in INN.
- 2.1.5.1 Responses
- 215 information follows
- 503 program error, function not performed
- 2.1.6 LIST NEWSGROUPS
- LIST NEWSGROUPS [wildmat]
- The newsgroups file is maintained by some news transport systems to
- contain the name of each news group which is active on the server and
- a short description about the purpose of each news group. Each line
- in the file contains two fields, the news group name and a short
- explanation of the purpose of that news group. When executed, the
- Barber Informational [Page 7]
- RFC 2980 Common NNTP Extensions October 2000
- information is displayed following the 215 response. When display is
- completed, the server will send a period on a line by itself. If the
- information is not available, the server will return the 503
- response. If the optional matching parameter is specified, the list
- is limited to only the groups that match the pattern (no matching is
- done on the group descriptions). Specifying a single group is
- usually very efficient for the server, and multiple groups may be
- specified by using wildmat patterns (similar to file globbing), not
- regular expressions. If nothing is matched an empty list is
- returned, not an error.
- When the optional parameter is specified, this command is equivalent
- to the XGTITLE command, though the response code are different.
- 215 information follows
- 503 program error, function not performed
- 2.1.7 LIST OVERVIEW.FMT
- LIST OVERVIEW.FMT
- The overview.fmt file is maintained by some news transport systems to
- contain the order in which header information is stored in the
- overview databases for each news group. When executed, news article
- header fields are displayed one line at a time in the order in which
- they are stored in the overview database [5] following the 215
- response. When display is completed, the server will send a period
- on a line by itself. If the information is not available, the server
- will return the 503 response.
- Please note that if the header has the word "full" (without quotes)
- after the colon, the header's name is prepended to its field in the
- output returned by the server.
- Many newsreaders work better if Xref: is one of the optional fields.
- It is STRONGLY recommended that this command be implemented in any
- server that implements the XOVER command. See section 2.8 for more
- details about the XOVER command.
- 2.1.7.1 Responses
- 215 information follows
- 503 program error, function not performed
- Barber Informational [Page 8]
- RFC 2980 Common NNTP Extensions October 2000
- 2.1.8 LIST SUBSCRIPTIONS
- LIST SUBSCRIPTIONS
- This command is used to get a default subscription list for new users
- of this server. The order of groups is significant.
- When this list is available, it is preceded by the 215 response and
- followed by a period on a line by itself. When this list is not
- available, the server returns a 503 response code.
- 2.1.8.1 Responses
- 215 information follows
- 503 program error, function not performed
- 2.2 LISTGROUP
- LISTGROUP [ggg]
- The LISTGROUP command is used to get a listing of all the article
- numbers in a particular news group.
- The optional parameter ggg is the name of the news group to be
- selected (e.g. "news.software.b"). A list of valid news groups may
- be obtained from the LIST command. If no group is specified, the
- current group is used as the default argument.
- The successful selection response will be a list of the article
- numbers in the group followed by a period on a line by itself.
- When a valid group is selected by means of this command, the
- internally maintained "current article pointer" is set to the first
- article in the group. If an invalid group is specified, the
- previously selected group and article remain selected. If an empty
- news group is selected, the "current article pointer" is in an
- indeterminate state and should not be used.
- Note that the name of the news group is not case-dependent. It must
- otherwise match a news group obtained from the LIST command or an
- error will result.
- 2.2.1 Responses
- 211 list of article numbers follow
- 412 Not currently in newsgroup
- 502 no permission
- Barber Informational [Page 9]
- RFC 2980 Common NNTP Extensions October 2000
- 2.3 MODE READER
- MODE READER is used by the client to indicate to the server that it
- is a news reading client. Some implementations make use of this
- information to reconfigure themselves for better performance in
- responding to news reader commands. This command can be contrasted
- with the SLAVE command in RFC 977, which was not widely implemented.
- MODE READER was first available in INN.
- 2.3.1 Responses
- 200 Hello, you can post
- 201 Hello, you can't post
- 2.4 XGTITLE
- XGTITLE [wildmat]
- The XGTITLE command is used to retrieve news group descriptions for
- specific news groups.
- This extension first appeared in ANU-NEWS, an NNTP implementation for
- DEC's VMS. The optional parameter is a pattern in wildmat format.
- When executed, a 282 response is given followed by lines that have
- two fields, the news group name (which matches the pattern in the
- argument) and a short explanation of the purpose of the news group.
- When no argument is specified, the default argument is the current
- group name. When display is completed, the server sends a period on
- a line by itself.
- Please note that this command and the LIST NEWSGROUP command provide
- the same functionality with different response codes.
- Since this command provides the same functionality as LIST NEWSGROUP
- it is suggested that this extension be deprecated and no longer be
- used in newsreading clients.
- Note that there is a conflict in one of the response codes from
- XGTITLE and some of the authentication extensions.
- 2.5.1 Responses
- 481 Groups and descriptions unavailable
- 282 list of groups and descriptions follows
- Barber Informational [Page 10]
- RFC 2980 Common NNTP Extensions October 2000
- 2.6 XHDR
- XHDR header [range|<message-id>]
- The XHDR command is used to retrieve specific headers from specific
- articles.
- The required parameter is the name of a header line (e.g. "subject")
- in a news group article. See RFC 1036 for a list of valid header
- lines. The optional range argument may be any of the following:
- an article number
- an article number followed by a dash to indicate
- all following
- an article number followed by a dash followed by
- another article number
- The optional message-id argument indicates a specific article. The
- range and message-id arguments are mutually exclusive. If no
- argument is specified, then information from the current article is
- displayed. Successful responses start with a 221 response followed
- by a the matched headers from all matched messages. Each line
- containing matched headers returned by the server has an article
- number (or message ID, if a message ID was specified in the command),
- then one or more spaces, then the value of the requested header in
- that article. Once the output is complete, a period is sent on a
- line by itself. If the optional argument is a message-id and no such
- article exists, the 430 error response is returned. If a range is
- specified, a news group must have been selected earlier, else a 412
- error response is returned. If no articles are in the range
- specified, a 420 error response is returned by the server. A 502
- response will be returned if the client only has permission to
- transfer articles.
- Some implementations will return "(none)" followed by a period on a
- line by itself if no headers match in any of the articles searched.
- Others return the 221 response code followed by a period on a line by
- itself.
- The XHDR command has been available in the UNIX reference
- implementation from its first release. However, until now, it has
- been documented only in the source for the server.
- Barber Informational [Page 11]
- RFC 2980 Common NNTP Extensions October 2000
- 2.6.1 Responses
- 221 Header follows
- 412 No news group current selected
- 420 No current article selected
- 430 no such article
- 502 no permission
- 2.7 XINDEX
- XINDEX ggg
- The XINDEX command is used to retrieve an index file in the format of
- originally created for use by the TIN [6] news reader.
- The required parameter ggg is the name of the news group to be
- selected (e.g. "news.software.b"). A list of valid news groups may
- be obtained from the LIST command.
- The successful selection response will return index file in the
- format used by the TIN news reader followed by a period on a line by
- itself.
- When a valid group is selected by means of this command, the
- internally maintained "current article pointer" is set to the first
- article in the group. If an invalid group is specified, the
- previously selected group and article remain selected. If an empty
- news group is selected, the "current article pointer" is in an
- indeterminate state and should not be used.
- Note that the name of the news group is not case-dependent. It must
- otherwise match a news group obtained from the LIST command or an
- error will result.
- The format of the tin-style index file is discussed in the
- documentation for the TIN newsreader. Since more recent versions of
- TIN support the news overview (NOV) format, it is recommended that
- this extension become historic and no longer be used in current
- servers or future implementations.
- 2.7.1 Responses
- 218 tin-style index follows
- 418 no tin-style index is available for this news group
- Barber Informational [Page 12]
- RFC 2980 Common NNTP Extensions October 2000
- 2.8 XOVER
- XOVER [range]
- The XOVER command returns information from the overview database for
- the article(s) specified. This command was originally suggested as
- part of the OVERVIEW work described in "The Design of a Common
- Newsgroup Overview Database for Newsreaders" by Geoff Collyer. This
- document is distributed in the Cnews distribution. The optional
- range argument may be any of the following:
- an article number
- an article number followed by a dash to indicate all following
- an article number followed by a dash followed by another article number
- If no argument is specified, then information from the current
- article is displayed. Successful responses start with a 224 response
- followed by the overview information for all matched messages. Once
- the output is complete, a period is sent on a line by itself. If no
- argument is specified, the information for the current article is
- returned. A news group must have been selected earlier, else a 412
- error response is returned. If no articles are in the range
- specified, a 420 error response is returned by the server. A 502
- response will be returned if the client only has permission to
- transfer articles.
- Each line of output will be formatted with the article number,
- followed by each of the headers in the overview database or the
- article itself (when the data is not available in the overview
- database) for that article separated by a tab character. The
- sequence of fields must be in this order: subject, author, date,
- message-id, references, byte count, and line count. Other optional
- fields may follow line count. Other optional fields may follow line
- count. These fields are specified by examining the response to the
- LIST OVERVIEW.FMT command. Where no data exists, a null field must
- be provided (i.e. the output will have two tab characters adjacent to
- each other). Servers should not output fields for articles that have
- been removed since the XOVER database was created.
- The LIST OVERVIEW.FMT command should be implemented if XOVER is
- implemented. A client can use LIST OVERVIEW.FMT to determine what
- optional fields and in which order all fields will be supplied by
- the XOVER command. See Section 2.1.7 for more details about the LIST
- OVERVIEW.FMT command.
- Barber Informational [Page 13]
- RFC 2980 Common NNTP Extensions October 2000
- Note that any tab and end-of-line characters in any header data that
- is returned will be converted to a space character.
- 2.8.1 Responses
- 224 Overview information follows
- 412 No news group current selected
- 420 No article(s) selected
- 502 no permission
- 2.9 XPAT
- XPAT header range|<message-id> pat [pat...]
- The XPAT command is used to retrieve specific headers from specific
- articles, based on pattern matching on the contents of the header.
- This command was first available in INN.
- The required header parameter is the name of a header line (e.g.
- "subject") in a news group article. See RFC 1036 for a list of valid
- header lines. The required range argument may be any of the
- following:
- an article number
- an article number followed by a dash to indicate
- all following
- an article number followed by a dash followed by
- another article number
- The required message-id argument indicates a specific article. The
- range and message-id arguments are mutually exclusive. At least one
- pattern in wildmat must be specified as well. If there are
- additional arguments the are joined together separated by a single
- space to form one complete pattern. Successful responses start with
- a 221 response followed by a the headers from all messages in which
- the pattern matched the contents of the specified header line. This
- includes an empty list. Once the output is complete, a period is
- sent on a line by itself. If the optional argument is a message-id
- and no such article exists, the 430 error response is returned. A
- 502 response will be returned if the client only has permission to
- transfer articles.
- 2.9.1 Responses
- 221 Header follows
- 430 no such article
- 502 no permission
- Barber Informational [Page 14]
- RFC 2980 Common NNTP Extensions October 2000
- 2.10 The XPATH command
- XPATH <message-id>
- The XPATH command is used to determine the filenames in which an
- article is filed. It first appeared in INN.
- The required parameter message-id is the message id of an article as
- shown in that article's message-id header. According to RFC 1036
- [3], all message ids for all articles within the netnews environment
- are unique, but articles may be crossposted to multiple groups. The
- response to an XPATH command will include a listing of all filenames
- in which an article is stored separated by spaces or a response
- indicating that no article with the specified message-id exists. The
- returned data is only useful if the news client knows the
- implementation details of the server. Because of this, it is
- recommended that client avoid using this command.
- 2.10.1 Responses
- 223 path1[ path2 ...]
- 430 no such article on server
- 2.11 The XROVER command
- XROVER [range]
- The XROVER command returns reference information from the overview
- database for the article(s) specified. This command first appeared
- in the Unix reference implementation. The optional range argument
- may be any of the following:
- an article number
- an article number followed by a dash to indicate
- all following
- an article number followed by a dash followed by
- another article number
- Successful responses start with a 224 response followed by the
- contents of reference information for all matched messages. Once the
- output is complete, a period is sent on a line by itself. If no
- argument is specified, the information for the current article is
- returned. A news group must have been selected earlier, else a 412
- error response is returned. If no articles are in the range
- specified, a 420 error response is returned by the server. A 502
- response will be returned if the client only has permission to
- transfer articles.
- Barber Informational [Page 15]
- RFC 2980 Common NNTP Extensions October 2000
- The output will be formatted with the article number, followed by the
- contents of the References: line for that article, but does not
- contain the field name itself.
- This command provides the same basic functionality as using the XHDR
- command and "references" as the header argument.
- 2.11.1 Responses
- 224 Overview information follows
- 412 No news group current selected
- 420 No article(s) selected
- 502 no permission
- 2.12 XTHREAD
- XTHREAD [DBINIT|THREAD]
- The XTHREAD command is used to retrieve threading information
- in format of originally created for use by the TRN [6] news
- reader.
- The command XTHREAD DBINIT may be issued prior to entering
- any groups to see if a thread database exists. If it does,
- the database's byte order and version number are returned
- as binary data.
- If no parameter is given, XTHREAD THREAD is assumed.
- To use XTHREAD THREAD, a news group must have been selected
- earlier, else a 412 error response is returned.
- A 502 response will be returned if the client only has
- permission to transfer articles. A 503 response is returned
- if the threading files are not available.
- The format of the trn-style thread format is discussed in
- the documentation for the TRN newsreader. Since more recent
- versions of TRN support the news overview (NOV) format, it
- is recommended that this extension become historic and no
- longer be used in current servers or future implementations.
- 2.12.1 Responses
- 288 Binary data to follow
- 412 No newsgroup current selected
- 502 No permission
- 503 program error, function not performed
- Barber Informational [Page 16]
- RFC 2980 Common NNTP Extensions October 2000
- 3. Other Extensions
- 3.1 AUTHINFO
- AUTHINFO is used to inform a server about the identity of a user of
- the server. In all cases, clients must provide this information when
- requested by the server. Servers are not required to accept
- authentication information that is volunteered by the client.
- Clients must accommodate servers that reject any authentication
- information volunteered by the client.
- There are three forms of AUTHINFO in use. The original version, an
- NNTP v2 revision called AUTHINFO SIMPLE and a more recent version
- which is called AUTHINFO GENERIC.
- 3.1.1 Original AUTHINFO
- AUTHINFO USER username
- AUTHINFO PASS password
- The original AUTHINFO is used to identify a specific entity to the
- server using a simple username/password combination. It first
- appeared in the UNIX reference implementation.
- When authorization is required, the server will send a 480 response
- requesting authorization from the client. The client must enter
- AUTHINFO USER followed by the username. Once sent, the server will
- cache the username and may send a 381 response requesting the
- password associated with that username. Should the server request a
- password using the 381 response, the client must enter AUTHINFO PASS
- followed by a password and the server will then check the
- authentication database to see if the username/password combination
- is valid. If the combination is valid or if no password is required,
- the server will return a 281 response. The client should then retry
- the original command to which the server responded with the 480
- response. The command should then be processed by the server
- normally. If the combination is not valid, the server will return a
- 502 response.
- Clients must provide authentication when requested by the server. It
- is possible that some implementations will accept authentication
- information at the beginning of a session, but this was not the
- original intent of the specification. If a client attempts to
- reauthenticate, the server may return 482 response indicating that
- the new authentication data is rejected by the server. The 482 code
- will also be returned when the AUTHINFO commands are not entered in
- the correct sequence (like two AUTHINFO USERs in a row, or AUTHINFO
- PASS preceding AUTHINFO USER).
- Barber Informational [Page 17]
- RFC 2980 Common NNTP Extensions October 2000
- All information is passed in cleartext.
- When authentication succeeds, the server will create an email address
- for the client from the user name supplied in the AUTHINFO USER
- command and the hostname generated by a reverse lookup on the IP
- address of the client. If the reverse lookup fails, the IP address,
- represented in dotted-quad format, will be used. Once authenticated,
- the server shall generate a Sender: line using the email address
- provided by authentication if it does not match the client-supplied
- From: line. Additionally, the server should log the event, including
- the email address. This will provide a means by which subsequent
- statistics generation can associate newsgroup references with unique
- entities - not necessarily by name.
- 3.1.1.1 Responses
- 281 Authentication accepted
- 381 More authentication information required
- 480 Authentication required
- 482 Authentication rejected
- 502 No permission
- 3.1.2 AUTHINFO SIMPLE
- AUTHINFO SIMPLE
- user password
- This version of AUTHINFO was part of a proposed NNTP V2
- specification, which was started in 1991 but never completed, and is
- implemented in some servers and clients. It is a refinement of the
- original AUTHINFO and provides the same basic functionality, but the
- sequence of commands is much simpler.
- When authorization is required, the server sends a 450 response
- requesting authorization from the client. The client must enter
- AUTHINFO SIMPLE. If the server will accept this form of
- authentication, the server responds with a 350 response. The client
- must then send the username followed by one or more space characters
- followed by the password. If accepted, the server returns a 250
- response and the client should then retry the original command to
- which the server responded with the 450 response. The command should
- then be processed by the server normally. If the combination is not
- valid, the server will return a 452 response.
- Note that the response codes used here were part of the proposed NNTP
- V2 specification and are violations of RFC 977. It is recommended
- that this command not be implemented, but use either or both of the
- other forms of AUTHINFO if such functionality if required.
- Barber Informational [Page 18]
- RFC 2980 Common NNTP Extensions October 2000
- 3.1.2.1 Responses
- 250 Authorization accepted
- 350 Continue with authorization sequence
- 450 Authorization required for this command
- 452 Authorization rejected
- 3.1.3 AUTHINFO GENERIC
- AUTHINFO GENERIC authenticator arguments...
- AUTHINFO GENERIC is used to identify a specific entity to the server
- using arbitrary authentication or identification protocols. The
- desired protocol is indicated by the authenticator parameter, and any
- number of parameters can be passed to the authenticator.
- When authorization is required, the server will send a 480 response
- requesting authorization from the client. The client should enter
- AUTHINFO GENERIC followed by the authenticator name, and the
- arguments if any. The authenticator and arguments must not contain
- the sequence "..".
- The server will attempt to engage the server end authenticator,
- similarly, the client should engage the client end authenticator.
- The server end authenticator will then initiate authentication using
- the NNTP sockets (if appropriate for that authentication protocol),
- using the protocol specified by the authenticator name. These
- authentication protocols are not included in this document, but are
- similar in structure to those referenced in RFC 1731 [8] for the
- IMAP-4 protocol.
- If the server returns 501, this means that the authenticator
- invocation was syntactically incorrect, or that AUTHINFO GENERIC is
- not supported. The client should retry using the AUTHINFO USER
- command.
- If the requested authenticator capability is not found, the server
- returns the 503 response code.
- If there is some other unspecified server program error, the server
- returns the 500 response code.
- The authenticators converse using their protocol until complete. If
- the authentication succeeds, the server authenticator will terminate
- with a 281, and the client can continue by reissuing the command that
- prompted the 380. If the authentication fails, the server will
- respond with a 502.
- Barber Informational [Page 19]
- RFC 2980 Common NNTP Extensions October 2000
- The client must provide authentication when requested by the server.
- The server may request authentication at any time. Servers may
- request authentication more than once during a single session.
- When the server authenticator completes, it provides to the server
- (by a mechanism herein undefined) the email address of the user, and
- potentially what the user is allowed to access. Once authenticated,
- the server shall generate a Sender: line using the email address
- provided by the authenticator if it does not match the user-supplied
- From: line. Additionally, the server should log the event, including
- the user's authenticated email address (if available). This will
- provide a means by which subsequent statistics generation can
- associate newsgroup references with unique entities - not necessarily
- by name.
- Some implementations make it possible to obtain a list of
- authentication procedures available by sending the server AUTHINFO
- GENERIC with no arguments. The server then returns a list of
- supported mechanisms followed by a period on a line by itself.
- 3.1.3.1 Responses
- 281 Authentication succeeded
- 480 Authentication required
- 500 Command not understood
- 501 Command not supported
- 502 No permission
- 503 Program error, function not performed
- nnn authenticator-specific protocol.
- 3.2 DATE
- DATE
- The first NNTP working group discussed and proposed a syntax for this
- command to help clients find out the current time from the server's
- perspective. At the time this command was discussed (1991-1992), the
- Network Time Protocol [9] (NTP) was not yet in wide use and there was
- also some concern that small systems may not be able to make
- effective use of NTP.
- This command returns a one-line response code of 111 followed by the
- GMT date and time on the server in the form YYYYMMDDhhmmss.
- 3.2.1 Responses
- 111 YYYYMMDDhhmmss
- Barber Informational [Page 20]
- RFC 2980 Common NNTP Extensions October 2000
- 3.3 The WILDMAT format
- The WILDMAT format was first developed by Rich Salz based on 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. Patterns are
- implicitly anchored at the beginning and end of each string when
- testing for a match. There are five pattern matching operations
- other than a strict one-to-one match between the pattern and the
- source to be checked for a match. The first is an asterisk (*) to
- match any sequence of zero or more characters. The second is a
- question mark (?) to match any single character. The third specifies
- a specific set of characters. The set is specified as a list of
- characters, or as a range of characters where the beginning and end
- of the range are separated by a minus (or dash) character, or as any
- combination of lists and ranges. The dash can also be included in
- the set as a character it if is the beginning or end of the set.
- This set is enclosed in square brackets. The close square bracket
- (]) may be used in a set if it is the first character in the set.
- The fourth operation is the same as the logical not of the third
- operation and is specified the same way as the third with the
- addition of a caret character (^) at the beginning of the test string
- just inside the open square bracket. The final operation uses the
- backslash character to invalidate the special meaning of the a open
- square bracket ([), the asterisk, backslash or the question mark.
- Two backslashes in sequence will result in the evaluation of the
- backslash as a character with no special meaning.
- 3.3.1 Examples
- a. [^]-] -- matches any single character other than a close square
- bracket or a minus sign/dash.
- b. *bdc -- matches any string that ends with the string "bdc"
- including the string "bdc" (without quotes).
- c. [0-9a-zA-Z] -- matches any single printable alphanumeric ASCII
- character.
- d. a??d -- matches any four character string which begins
- with a and ends with d.
- Barber Informational [Page 21]
- RFC 2980 Common NNTP Extensions October 2000
- 3.4 Additional Headers
- Many NNTP implementations add headers to Usenet articles when then
- are POSTed via NNTP. These headers are discussed in this section.
- None of these headers conflict with those specified in RFC 1036 and
- should be passed unchanged by Usenet transports conforming to RFC
- 1036.
- 3.4.1 NNTP-Posting-Host
- This line is added to the header of a posted article by the server.
- The contents of the header is either the IP address or the fully
- qualified domain name of the client host posting the article. The
- fully qualified domain name should be determined by doing a reverse
- lookup in the DNS on the IP address of the client. If the client
- article contains this line, it is removed by the server before
- acceptance of the article by the Usenet transport system.
- This header provides some idea of the actual host posting the article
- as opposed to information in the Sender or From lines that may be
- present in the article. This is not a fool-proof methodology since
- reverse lookups in the DNS are vulnerable to certain types of
- spoofing, but such discussions are outside the scope of this
- document.
- 3.4.2 X-Newsreader and others
- There are other lines that are added by clients as well. Most of
- these indicate the type of newsreader software that is posting the
- article.
- 4.0 Common Implementation Issues
- Many NNTP implementations do not follow the specifications in RFC
- 977. In this section, some common implementation issues are
- summarized.
- 4.1 The Response to the LIST command
- RFC 977 says that the fourth field of the "list of valid newsgroups
- associated information" returned must be "either 'y' or 'n'
- indicating whether posting to this newsgroup is allowed ('y') or
- prohibited ('n'). Most implementations simply output the exact
- contents of the transport system's active newsgroup list. For more
- implementations, the fourth field usually has more values that 'y' or
- 'n'.
- Barber Informational [Page 22]
- RFC 2980 Common NNTP Extensions October 2000
- 4.2 The Required Headers in an Article and the POST command
- RFC 977 notes in section 3.10.1 that articles presented "should
- include all required header lines." In fact, modern implementations
- only require From, Subject, and Newsgroups header lines and will
- supply the rest; further, many implementers believe that it is best
- for clients to generate as few headers as possible, since clients
- often do not format other headers correctly.
- This implementation behavior is consistent with both Bnews and Cnews
- which would supply missing headers for articles directly submitted to
- them.
- 4.3 Article Numbering
- RFC 977 does not directly address the rules concerning articles
- number. However, the current practice is simple: article numbers are
- monotonically increasing, articles may disappear, and therefore the
- high and low water marks returned in a GROUP command should be
- treated as maximum minima, and minimum maxima, respectively.
- 4.4 Availability of commands defined in RFC 977
- Some implementations permit administrators to disable commands
- defined RFC 977. Some implementations have some set of commands
- disabled by default. This means that client implementations cannot
- depend on the availability of the disabled set of commands. This
- increases the complexity of the client and does not encourage
- implementors to optimize the implementation of commands that don't
- perform well.
- NEWNEWS is one of the commands frequently disabled.
- 4.5 The Distribution header and NEWNEWS
- In section 12.4 of RFC 977, the optional distributions argument is
- described. This argument, according to RFC 977, would limit the
- responses to articles that were in newsgroups with prefixes that
- matched the optional distributions argument.
- Some implementations implement this by matching the Distributions
- header in articles to the distribution argument. Others do the match
- against segments of the newsgroup's name.
- This variation is probably best explained by the evolution of the
- USENET article format. At the time RFC 977 was specified, the
- newsgroup name defined how the group was distributed throughout
- USENET. RFC 1036 changed this convention. So, those that are
- Barber Informational [Page 23]
- RFC 2980 Common NNTP Extensions October 2000
- strictly implementing RFC 977 would match the newsgroup name prefix
- against the distribution argument and only display matches. Those
- that implement against the intent of the command (as modified by the
- redefinition of the article format)would match the Distributions
- header against the distribution argument and only display those
- matches.
- 5.0 Further Work
- With the continued use of NNTP on the Internet, there remains an
- interest in creating an optimized transport protocol for server-to-
- server transfers and an optimized client protocol for client-to-
- server interactions. There is also considerable interest is building
- better mechanisms to provide audit information on which news groups
- are being read by which users.
- An IETF working group has been formed and it is the hope of this
- author that these issues will be addressed in that forum.
- 6.0 Security Considerations
- The use of the AUTHINFO is optional. This command as documented has
- a number of security implications. In the original and simple forms,
- all passwords are passed in plaintext and could be discovered by
- various forms of network or system surveillance. The AUTHINFO
- GENERIC command has the potential for the same problems if a
- mechanism is used that also passes cleartext passwords. RFC 1731 [8]
- discusses these issues in greater detail.
- 7.0 References
- [1] Kantor, B and P. Lapsley, "Network News Transfer Protocol", RFC
- 977, February 1986.
- [2] Limoncelli, Tom, "Read This Before You Write a Newsreader",
- http://mars.superlink.net/tal/news-software-authors.html, June,
- 1996.
- [3] Horton, M. and R. Adams, "Standard for interchange of USENET
- messages", RFC 1036, December 1987.
- [4] Salz, Rich, Manual Page for wildmat(3) from the INN 1.4
- distribution, UUNET Technologies, Revision 1.10, April, 1992.
- [5] Robertson, Rob, "FAQ: Overview database / NOV General
- Information", ftp://ftp.uu.net/networking/news/nntp/inn/faq-
- nov.Z, January, 1995.
- Barber Informational [Page 24]
- RFC 2980 Common NNTP Extensions October 2000
- [6] Lea, Iain, "FAQ about the TIN newsreader",
- http://www.cs.unca.edu/~davidson/handouts/tinfaq.html
- [7] Kappesser, Peter, "[news.software.readers] trn newsreader FAQ",
- 2 parts, ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/news/
- software/readers/%5Bnews.software.readers%5D_trn_newsreader
- _FAQ%2C_part_1%3A_Basics and ftp://rtfm.mit.edu/pub/usenet-by
- -hierarchy/news/software/readers/%5Bnews.software.readers
- %5D_trn_news-reader_FAQ%2C_part_2%3A_Advanced, February, 1995.
- [8] Meyers, J., "IMAP4 Authentication Mechanisms", RFC 1731,
- December 1994.
- [9] Mills, D., "Network Time Protocol (Version 3), Specification,
- Implementation and Analysis", RFC 1305, March 1992.
- 8.0 Notes
- DEC is a registered trademark of Compaq Computer Corporation. UNIX
- is a registered trademark of The Open Group. VMS is a registered
- trademark of Compaq Computer Corporation.
- 9.0 Acknowledgments
- The author gratefully acknowledges the comments and additional
- information provided by the following individuals:
- Wayne Davison <davison@armory.com>
- Chris Lewis <clewis@bnr.ca>
- Tom Limoncelli <tal@lucent.com>
- Eric Schnoebelen <eric@egsner.cirr.com>
- Rich Salz <rsalz@osf.org>
- This work was precipitated by the work of various newsreader authors
- and newsserver authors which includes those listed below:
- Rick Adams -- Original author of the NNTP extensions to the RN
- newsreader and last maintainer of Bnews
- Stan Barber -- Original author of the NNTP extensions to the
- newsreaders that are part of Bnews.
- Geoff Collyer -- Original author of the OVERVIEW database proposal and
- one of the original authors of CNEWS
- Dan Curry -- Original author of the xvnews newsreader
- Wayne Davison -- Author of the first threading extensions to the
- RN newsreader (commonly called TRN).
- Geoff Huston -- Original author of ANU NEWS
- Barber Informational [Page 25]
- RFC 2980 Common NNTP Extensions October 2000
- Phil Lapsey -- Original author of the UNIX reference
- implementation
- Iain Lea -- Original maintainer of the TIN newsreader
- Chris Lewis -- First known implementor of the AUTHINFO GENERIC
- extension
- Rich Salz -- Original author of INN
- Henry Spencer -- One of the original authors of CNEWS
- Kim Storm -- Original author of the NN newsreader
- 10.0 Author's Address
- Stan Barber
- P.O. Box 300481
- Houston, Texas, 77230
- EMail: sob@academ.com
- Barber Informational [Page 26]
- RFC 2980 Common NNTP Extensions October 2000
- 11.0 Full Copyright Statement
- Copyright (C) The Internet Society (2000). All Rights Reserved.
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- Acknowledgement
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
- Barber Informational [Page 27]
- Sat 12/21/02 23:31:54 /net/u/1/e/erco
- [erco@panix1.panix.com] 9 :
|