nntp

news: URL scheme、nntp: URL scheme

[1] news: と nntp: は、USENET ネットニュースを表す URL scheme です。 元々は news: がプロトコル非依存の記事、 nntp: が NNTP を表していたようですが、 次第に区別が曖昧となり、実装によっては同義として扱っているようです。

[33] また snews: は、 NNTP over SSL/TLS を表していましたが、歴史的 >>5 とされています。

[4] ネットニュースの衰退により、現在ではほとんど使われなくなっています。

仕様書

[37] RFC 5538 は実際に使われている URL の一部のみしかカバーしていないようですが、 その範囲がどのように選ばれたのかは明確ではありません。複数の実装があっても RFC に含まれていない構文もあれば、実装されていないことがあっても RFC には含まれている構文もあるようです。

構文

記事のメッセージID

[17] news: とメッセージIDを指定することで、 (特定の鯖に限定されない) 記事を表します >>5。

  1. |
    1. news:
    2. snews:
  2. メッセージID

[21] アクセス時には、設定による既定の鯖を使います >>5。

ニュースグループ

[18] news: とニュースグループの名前を指定することで、 (特定の鯖に限定されない) ニュースグループ群を表します >>5。

  1. |
    1. news:
    2. snews:
  2. ニュースグループ群

[22] アクセス時には、設定による既定の鯖を使います >>5。

鯖と記事のメッセージID

[19] news:// と鯖と / とメッセージIDを指定することで、 特定の鯖の記事を表します >>5。

  1. |
    1. news://
    2. snews://
  2. authority
  3. /
  4. メッセージID

鯖とニュースグループ群

[20] news:// と鯖と / とニュースグループの名前を指定することで、 特定の鯖のニュースグループ群を表します >>5。

  1. |
    1. news://
    2. snews://
  2. authority
  3. /
  4. ニュースグループ群

鯖とニュースグループ

[7] nntp:// と authority と / とニュースグループの名前を指定することで、 特定の鯖のニュースグループを表すことができます >>5。

  1. nntp://
  2. authority
  3. /
  4. ニュースグループ

鯖とニュースグループと記事番号

[7] nntp:// と authority と / とニュースグループの名前と / と記事番号を指定することで、 特定の鯖のニュースグループに含まれる記事を表すことができます >>5。

  1. nntp://
  2. authority
  3. /
  4. ニュースグループ
  5. /
  6. 記事番号

鯖

[11] authority が鯖を表します >>5。

RFC 3986 が参照されています >>5。

[36] snews: の既定のポート番号は 119 です。

[34] snews: の既定のポート番号は 563 です >>5。

ニュースグループ

[10] nntp: URL で指定するニュースグループは、 1つ以上の文字かパーセント符号化により表現します。 ここで文字は、ASCIIラテン文字、ASCII数字、 -、+、_、. のいずれかです。 >>5

  1. +
    1. |
      1. ASCIIラテン文字
      2. ASCII数字
      3. -
      4. +
      5. _
      6. .

[14] RFC 5536 (USEFOR) で認められているニュースグループ名は、 パーセント符号化なしで表現できます。 RFC 3977 (NNTP) では更にそれ以外の記号や非ASCII文字も使えますが、 それを表すにはパーセント符号化が必要です。 >>5

[26] news: URL で指定するニュースグループ群は、 RFC 3977 wildmat-pattern です。すなわち、 ニュースグループの名前に加えてワイルドカードである * と ? を使うことができます。 >>5

[27] ただし ? はパーセント符号化が必要です >>5。

[28] なお、 空文字列は、 * と等価です >>5。

[29] ワイルドカードがなければ、特定のニュースグループを表しており、 利用者エージェントは普通は記事一覧を表示します >>5。

[30] ワイルドカードがあれば、利用者エージェントは該当するニュースグループの一覧を表示できます >>5。

[31] 利用者エージェントによっては、 ワイルドカード無しの指定と * のみの指定にしか対応していません >>5。

記事番号

[16] 記事番号は、1-16桁のASCII数字で、 RFC 3977 (NNTP) によるものです >>5。

  1. +
    1. ASCII数字

メッセージID

[23] メッセージIDは、記事の Message-ID: ヘッダーのうち、 < と > を除いたもの (RFC 5536) です >>5。

[24] ただし、 gen-delims と % はパーセント符号化しなければなりません >>5。

[25] 解釈するエージェントは、すべてのパーセント符号化を復号する必要があります >>5。

[32] なお、ニュースグループとメッセージIDは、 @ の有無によって区別します >>5。メッセージID には歴史的に @ が含まれることとなっています。 RFC 3977 (NNTP) によれば @ が含まれることは要求されていませんが、 RFC 2822 と USEFOR によれば記事の構文上は @ が要求されています。

歴史

[3]

RFC 1738 にはありませんが、lynx 等と同じ様な以下の URL を
解釈する様にしました。
news: は、nntp: の <host>:<port> が、オプション nntpserver
(環境変数 NNTPSERVER) の値になる以外は nntp: と同じになります。
# lynx 等では、news://<host>:<port>/ とか <host>:<port> なしの
# nntp: も使える(news: と nttp: が完全に同じ)様だけど見送り。
[記事の取得]
    nntp://<host>:<port>/<newsgroup-name>/<article-number>  (RFC 1738)
    nntp://<host>:<port>/<newsgroup-name>/<message-id>
    nntp://<host>:<port>/<message-id>
    news:<newsgroup-name>/<article-number>
    news:<newsgroup-name>/<message-id>
    news:<message-id>  (RFC 1738)
[Newgroup の記事のリスト]
    nntp://<host>:<port>/<newsgroup-name>
    nntp://<host>:<port>/<newsgroup-name>/<start-number>-<end-number>
    news:<newsgroup-name>  (RFC 1738)
    news:<newsgroup-name>/<start-number>-<end-number>
推奨はしませんし、内部でも使わないようにしていますが、
news:<newsgroup-name>/<start-number>-<end-number> は使わざる
をえないので使っています。
# news:<newsgroup-name>#<start-number> にしていたのですが
# lynx 等に合わせました。

[6] RFC 1738 によって標準化された後、実装との乖離が大きくなり、 また RFC 2396 その他により RFC 1738 が廃止されながらも改訂されず有効な仕様書が存在しない状態で長年放置されていましたが、 2010年にようやく RFC 5538 が出版されました。

[35] RFC 5538 は、 NNTP over TLS は非推奨であるとして、 snews: を状態「歴史的」でIANA登録簿に登録しています。 構文は news: と同じと述べています。 >>5

例

[2] news:*はすべてのニュース・グループを表します。

記事群を表す URI

  • [8] nntp://server.name:port/news.group
  • [9] nntp://server.name:port/news.group/no1-no2 ;; 記事番号 no1〜no2。 2- のような書き方もある
  • [13] nntp://server.name:port/ ;; サーバー

記事を表す URI

  • [12] nntp://server.name/msg-id
  • [15] nntp://server.name:port/msg-id
  • [15] nntp://server.name:port/no ;; 記事番号 no の記事。 RFC1738

[564] news/nntp/snews - URL Programmer's Manual ( ( 版)) <http://www.gnu.org/software/emacs/manual/html_node/url/news_002fnntp_002fsnews.html>

[565] 226890 – Thunderbird doesn't handle news: and nntp: URLs properly (RFC 5538) ( ( 版)) <https://bugzilla.mozilla.org/show_bug.cgi?id=226890>

[566] URL Schemes Supported in Lynx ( ( 版)) <http://lynx.isc.org/current/breakout/lynx_help/lynx_url_support.html#news_url>

[567] Web Applications 1.0 r8872 Add openpgp4fpr: scheme to whitelist for registration ( ( 版)) <https://html5.org/r/8872>

[568] Web Applications 1.0 r8878 Put back nntp to the scheme whitelist, since it was removed completely accidentally. ( ( 版)) <https://html5.org/r/8878>