[1] Common NNTP Extensions 共通 NNTP 拡張
Copyright (C) The Internet Society (2000). All Rights Reserved.
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.
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.
RFC977 は NNTP protocolを定義しており、十年前に発表されました。 それ以来、 NNTP は Internet で使われる最も人気のあるprotocolの1つになりました。 このprotocolの多くの実装が多くの異なるplatformやoperating systemで作られてきました。 protocolの利用が伸びるに従い、 NNTP の改訂作業が 1991年に始まりましたが、新しい標準protocol仕様には至っていません。 しかし、この作業部会の多くの考えは多くの NNTP の実装に取り入れられました。 加えて、多くの他の、しばしばnewsreaderの著者が作った拡張も使われています。 この文書は、執筆の時点で何らかの形で発表された公式 NNTP サーバーで利用出来る全ての既知の NNTP への拡張を収集・定義します。 可能であれば、その拡張を最初に実装したサーバー・ソフトウェアも注記します。 著者の望むところは、この文書を RFC 977 と併用して本質的に同じことをする新しい拡張の追加を制限することです。 ソフトウェア開発者は新しいソフトウェアの開発のための資源としてこの文書や他のものを使いたいと願うかもしれません。
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.
この文書はいかなる種類のInternet Standardを規定するものでもありません。 この文書はただ現在の慣習を文書化しようとするものです。 この文書は RFC 977 の曖昧性を明確化するかもしれませんが、全ての場合において RFC 977 が信頼するべきものであるとみなすべきです。 厳密には RFC 977 に適合しない実装が幾つかあり、必要ならば、標準からの相違点を記します。 この文書は Ned Freed と Stan Barber が議長を務める IETF NNTP-EXT 作業部会の作業を反映していません。
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.
この文書は実装者が拡張についての統一情報源を持つことを補助するものですが、ここに列挙された拡張はどの現行 NNTP 標準の一部でもないことをいかなる実装者予備軍もが理解することが重要であります。 実際、この文書に列挙した内には既に現代 NNTP 環境では使用するべきではないため新しい NNTP 実装には含めないのがよいものがあります。 そのような命令は歴史的なものと考えるのが良く、この文書ではそう書いています。
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.
拡張は3つの種類に分類できます。転送, newsreader, その他です。 転送拡張は特にニュース記事をあるサーバーから他のサーバーへ移動するために作られた NNTP 仕様への拡張です。 newsreader拡張は NNTP clientがニュース記事をサーバーから選択したり取り出したりするのを補助する NNTP 仕様への拡張です。その他の NNTP への拡張は他の2つの分類のどちらにも特に当てはまらないものです。 その他の拡張の例には認証や日中の時刻の拡張を含みます。 各命令について、 RFC 977 の3節の書式を使います。
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.
各命令は分かりやすいように大文字で示しますが、 NNTP
サーバーの命令の解釈では大文字・小文字の区別はされません。
[大括弧] 中に示されたパラメーターは省略可能です。
例えば、 [GMT] は3文字 GMT
が出現しても省略されても良いことを示します。
繰り返しても良いパラメーターは ...
を続けることで示します。
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.
CHECK はpeerが、指定した message-id
を持った記事をサーバーに TAKETHIS
命令を使って送信するのが良いかどうかを調べるのに使います。peerは次の命令を送信する前にサーバーからの応答を待つ必要はありません。
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.
CHECK 命令の連続への応答を使うことから、送信する記事の一覧を続く
TAKETHIS
命令の使用に向けて構築できます。
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.
CHECK
命令のstreamingへの使用は任意です。
TAKETHIS
命令を直接使ってpeerの送信queueにある全ての記事をサーバーに送信する実装もあります。
On some implementations, the use of the CHECK command is not permitted when the server is in slave mode (via the SLAVE command).
幾つかの実装では、サーバーが (SLAVE
命令により)
slaveモードである時には CHECK
命令を許していません。
Responses that are of the form X3X must specify the message-id in the response.
X3X の形式の応答は、応答中に message-id を指定しなければなりません。
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.
MODE STREAM
はpeerがサーバーに NNTP
の段階固定対話性を停止して命令をstreamで送信したいと示すのに使います。
この命令は TAKETHIS
及び CHECK
の前に使用するのが良いです。詳しくは命令 TAKETHIS
及び CHECK
の節をご覧下さい。
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.
TAKETHIS
はstreamingmodeにおいて記事をサーバーに送信するのに使います。
記事全体 (頭及び本体をこの順序で。) は TAKETHIS
命令をpeerが送信したすぐ後に送信します。peerは次の命令及び関連付けられた記事を送信する前にサーバーからの応答を待つ必要はありません。
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.
記事の転送の際、peerは記事全体, つまり頭及び本体を、サーバーからのtext転送の方法で送信するのが良いです。 詳しくは RFC 977 2.4.1節をご覧下さい。
Responses that are of the form X3X must specify the message-id in the response.
X3X の形式の応答は、応答中に message-id を指定しなければなりません。
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.
XREPLIC
命令によりあるサーバーのニュースspool構造を他のサーバーに丁度複製することが出来ます。
これは 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.
この命令は RFC 977 で規定されている IHAVE
命令と同様に機能します。同じ応答符号が使われます。
命令行引数は単一の読点で区切られた項目群で構成します。
各項目はnewsgroup名, コロン, 記事番号から成ります。
サーバーが 335
応答で応答した場合、記事は XREPLIC
命令行で指定したニュース組及び記事番号で埋めるのが良いです。
サーバーが一度受け入れた記事を成功裏に取り入れられなければ、失敗を示すのに
436
又は 437
の応答符号を使うことが出来ます。
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.
この命令は受信サーバーが他の1つのサーバーのみから供給されている場合にのみ使うのが良いです。 複数の供給のあるサーバーで使うとこの命令は頻繁に失敗するようです。
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.)
XREPLIC slavingは INN 1.7.2 版以降では非推奨とされています。
INN は今は転送の手段で, 単純に記事の Xref
headerを転送することでサーバーをslaveしています。
(以前の版では、このheaderは) localで生成して外部に供給する時には捨てていました。)
It is likely that future versions of INN will no longer support XREPLIC.
将来の版の INN は XREPLIC
に対応しなくなるかもしれません。
newsreaderNewsreader 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.
拡張は主にニュースを読むclientで使われるものです。 次に示すのは各転送拡張命令とその命令により返される応答の説明です。
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.
各命令は分かりやすいように大文字で示しますが、 NNTP
サーバーの命令の解釈では大文字・小文字の区別はされません。
パラメーターは小文字で示します。 [大括弧] 中に示されたパラメーターは省略可能です。
例えば、 [GMT] は3文字 GMT
が出現しても省略されても良いことを示します。
繰り返しても良いパラメーターは ...
を続けることで示します。
相互に排他的なパラメーターは垂直線 (|
) 文字で区切ります。
例えば、 ggg|<message-id> は、組名又は <message-id>
を指定しても構いませんが、両方を指定してはいけないことを示します。
パラメーターの中には、大文字・小文字を区別するものがあります。
特に <message-id> はそうです。詳しくは RFC1036
をご覧下さい。
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.
また、ある命令は複数のnewsgroupの選択にpatternを使用します。
このpatternは全ての場合において Rich Salz が1986年に考案した wildmat
形式に基づいています。 wildmat 形式で指定する引数は文字列 wildmat
で示します。この形式は詳しくはこの文書の3.3節で述べています。
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 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.
元の LIST
命令は RFC 977 では引数を取らず、活性fileの内容を規定の形式で返しました。
元のnewsreaderが活性fileに加えてニュース転送ソフトウェアで利用出来る他の情報を使っていたので、
LIST
命令の拡張はこうした情報を NNTP newsreaderが利用出来るように作られました。
単純にファイルの内容を返す他の LIST
命令の拡張もあるかもしれません。
この方法は動詞の追加よりも提案されています。例えば、 LIST MOTD
は XMOTD
の追加の代わりに使用出来るでしょう。
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.
LIST ARCHIVE
は RFC 977 で規定されている LIST
命令と全く同じです。応答及び書式は引数無しの LIST
命令と全く一致するのが良いです。省略可能の一致パラメーターが指定されている場合、一覧はpatternに一致するgroupのみに限定されます。
単一のgroupの指定は普通サーバーには非常に有用で、
wildmat pattern (この文書の後で説明。)
を使って複数のgroupを指定しても構いません。
何も一致しなかった場合空の一覧が返され、エラーにはなりません。
こう命令は最初 UNIX reference versionに現れました。
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.
active.times
fileは幾つかのニュース転送systemで、いつ誰がそのnewsgroupを作ったのかの情報を維持しています。
このfileの書式では通常、3つの欄が含まれます。
最初の欄はnewsgroupの名前です。2番目はそのgroupがこのニュース・サーバーで作られた時刻を1970年1月1日からの秒数で示したもの (Un*x 時間)
です。3番目はnewsgroupを作ったemailアドレスの実体です。
実行された時、情報は 225
応答に続けて表示されます。表示が完了した時、サーバーは句点のみから成る行を送ります。
情報が利用不能な場合、サーバーは 503
エラー応答を返します。この命令は最初 UNIX reference versionに現れました。
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 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.
配布fileは幾つかのニュース転送systemで、ニュース記事headの
Distribution:
行で妥当な値とその値の意味についての情報を入れて維持されています。
各行は値と値の意味の短い説明の2つの欄で構成されます。
実行された時、 215
応答に続けて情報が表示されます。
表示が完了した時、サーバーは句点のみの行を送ります。
情報が利用出来ない場合、サーバーは 503
エラー応答を返します。この命令は初め UNIX reference versionに出現しました。
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.
distrib.pats
fileは、特定newsgroupへの投稿時のニュース記事の
Distribution: 行の値の既定値を含めるために幾つかのニュース転送系で維持されています。
この情報は記事を投稿する時にheaderの Distribution:
行の既定値を提供するのに使っても構いません。この情報はコロンで区切った3つの欄を含みます。
最初の列は重みです。2番目はgroup名又はwildmat形式でgroup名に一致するpatternです。
3番目はgroup名が一致して重み値が最大の時に使うのがよい Distribution:
行の値です。この処理は全てニュース投稿clientにより行われ、サーバー自体は行いません。
サーバーはただクライアントに、この情報を使うか無視するかを選べるよう提供するだけです。
実行された時、情報は 215
応答に続けて表示します。
表示が完了した時、サーバーは句点のみの行を送ります。
情報が利用出来ない場合、サーバーは 503
エラー応答を返します。
この命令は最初に INN に実装されました。
215 information follows 503 program error, function not performed
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 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]