gnloops について



gnloops は gnspool で取寄せた記事を他のニュースサーバに転送するツール
です。

なお、転送先のサーバにポストされた記事の出口は別途用意しておく必要があ
ります。gnloops は、転送先のサーバにポストされた記事の出口に関して、一
切関知しません。双方向で gnloops を使うという手はありますが、、、

(多分)こんな使い方ができます。
# suck と rpost の組合せでも同じようなことが可能ですが、
# libretto + Windows95 で使いたかったので、作ってしまいました。

(1)ネットワークでつながっていないニュースサーバへ記事を配送
	勤務先で gnspool を使ってノートPCやFD/MOなどに記事を取
	得し、自宅のニュースサーバに転送するといった場合
	kaisya-server -----> gnspool
				|
				V
			  NOTE-PC,FD/MO
				|
				V
			    gnloops  ----> jitaku-server	

	勤務先のニュースサーバと、自宅のニュースサーバは当然記事番号が
	異なります。newsrc の共用はできません。

	勤務先で通常使用している newsrc を基に記事を取得すると、自分が
	未読の記事しか転送されません。自分以外が自宅のニュースサーバを
	アクセスする場合、転送用の newsrc を別途用意する必要があるでしょ
	う。たとえば、以下のようなスクリプトを作って記事を取得します。
		#!/bin/sh
		setenv HOME $HOME/kaisya-server
		gnspool -egC -h kaisya-server

	自分以外が自宅のニュースサーバをアクセスしたり、自宅のニュース
	サーバからさらに別のサーバに記事を転送する場合、そういうことを
	してもいいのか、勤務先のニュースサーバの管理者に確認が必要でしょ
	う。後述の gnspool が取得する記事のニュースグループや配布範囲
	には十分注意することはもちろんのことです。

	自宅のニュースサーバにポストされた記事を外部に転送する方法は別
	途考えなければなりません。

(2)別々のサーバで運用されている別々のニュースグループを1台に集約
	サーバAには fj,comp が存在し
	サーバBには tnn,japan が存在し
	サーバCには alt,omronsoft が存在し
		:
	といった場合に、複数のニュースサーバから記事を取得し、1台のサー
	バですべてのニュースグループを参照できるようにするといった場合

	 server-A	server-B	server-C
	     |		   |		   |
	  fj,comp	tnn,japan    alt,omronsoft
	     |		   |	           |
	     V		   V		   V
	  gnspool	gnspool		gnspool
	     |		   |		   |
	     V		   V		   V
	    disk	  disk		 disk
	     |		   |		   |
	     V		   V		   V
	  gnloops	gnloops		gnloops
	     |		   |		   |
	     |		   V		   |
	     +--------> my-server <--------+
	
	dnas でも同様のことができますが、以下のような違いがあります。
	・別のサーバにある同一名のニュースグループに対する処理が異なる
		dnas: 別々のニュースグループとして管理
			ポストされた記事もそれぞれのサーバへ転送
		gnloops: 同じニュースグループとして管理
			ポストされた記事はどのサーバへ転送して良いかわ
			からない X-<
			どのサーバに転送しても良い場合もあるが、同一名
			でサーバそれぞれ別々に運用されている場合、転送
			には十分注意が必要
			例:
				server-A でも server-B でも local.test 
				というテスト用ニュースグループが設けら
				れている。
				server-A からも server-B からも 
				local.test を my-server に転送した。
				転送されてきた記事に対するフォローを 
				my-server 上でおこなった場合、
				その記事は server-A に転送?
				それとも server-B に転送?

	・転送元サーバと切れていても良い
		dnas: オンライン
			基本的に server-A,server-B,server-C とはオンラ
			イン状態でないといけない
		gnloops: オフライン
			基本的に server-A,server-B,server-C とはオフラ
			インで良い
			 
			     
	my-server にポストされた記事を外部に転送する方法は別途考えなけ
	ればなりません。上記の通り、複数のサーバで同一名のニュースグルー
	プが運用されている場合には特に注意が必要です。


(3)複数のサーバから記事を取得し、信頼性の向上を図る
	複数の経路がある場合、別経路のニュースサーバから記事を取得し、
	本経路で配送されなかった記事を補完するといった場合
	ISP-A <---> server-A  ----> gnspool
					|
					V
				      disk
					|
					V
	ISP-B <---> server-B <-----  gnloops

	通常、記事の補完をする場合は、相互に記事をフィードしたり、
	ihave/sendme をするものですが、server-A の手を借りられなかった
	り、server-A の管理者がやってくれなかった場合には、このような
	運用もあるでしょう。

	当然 server-A の管理者にはこのような運用をする旨承諾を得ておく
	必要があるでしょう。

	後述の gnspool が取得する記事のニュースグループや配布範囲には
	十分注意することはもちろんのことです。

	単純にすべての記事を取得、転送する場合、server-A の方が expire 
	期間が長いと expire された記事が再び転送されることになります。
	gnspool/gnloops による転送する前に server-A に到着した記事はあ
	きらめ、newsrc-server-A は、全部既読状態から始める事をおすすめ
	します。
	つまり、初回は
	(1) gn -h server-A
	(2) ニュースグループモードで c 0-1000000(全部の記事を catchup)
	(3) q コマンドで gn 終了。newsrc-server-A は全部既読状態。
	(4) 多少の時間をおく
	(5) gnspool -h server-A
	(6) gnloops -h server-A -d server-B
	のような手順を踏むことになります。

	両方のニュースサーバとオンラインの場合、disk を使わなくとも
	(1) server-A から新着記事の Messege-ID を得る
	(2) server-B にその記事を持っているか訪ねる
	(3) 欲しいといわれれば server-A から取寄せ、server-B に転送
	といったこともできますが、gnloops はこのような転送をサポートし
	ていません。このような転送には gntunnel を使います。
	注:gntunnel は、まだ(?)実在しません。
	

(4)ニュース配送
	多数のサーバに記事を配送するような場合、my-server 上で動作する 
	nntpsend や nntplink の代わりに、別の(複数の)マシンで 
	gnloops 使えば、負荷分散、トラフィック分散になるかな?

			my-server
			   |
			   V
			gnspool
			   |
			   V
	     +---------- disk -------------+
	     |		   |		   |
	     V		   V		   V
	  gnloops	gnloops		gnloops
	     |		   |		   |
	     V		   V		   V
	 server-A	server-B	server-C

**************重要*******************
gnspool が取得する記事のニュースグループや配布範囲には十分注意のこと

(1)ローカルニュースグループの意図しなかった範囲へ記事の流出
	記事を取得するニュースサーバ(以下元サーバ)上にローカルなニュー
	スグループがある場合、そのニュースサーバから記事を取寄せ、別の
	サーバに転送すると、元サーバでは意図していなかった範囲からロー
	カルニュースグループが読めてしまいます。

	例:
		元サーバに omronsoft.confidential というニュースグルー
		プが存在しており、omronsoft.co.jp 内からのアクセスだけ
		が許可されていたとする。
		omronsoft.co.jp 内のマシンで gnspool を使用し、このニュー
		スグループを取寄せ、別のサーバに転送した。この転送した
		サーバはアクセス制限をしていなかったため、Internet 上
		のすべてのマシンから omronsoft.confidential というニュー
		スグループを参照できてしまった。

(2)ローカルディストリビューションの意図しなかった範囲への記事の流出

	元サーバ上にローカルなディストリビューションがある場合、そのサー
	バから記事を取寄せ、別のサーバに転送すると、元サーバでは意図し
	ていなかった範囲から記事が読めてしまいます。

	例:
		元サーバの fj.test に Distribution: local で記事がポス
		トされた。この記事を取寄せ、別のサーバに転送した。
		転送先のサーバは Distribution: を考慮せずにまた別のサー
		バに記事を転送した。
		結果、Distribution: local な記事が外部に流出した。

(3)転送先に存在しないニュースグループ
	元サーバ上には存在するが、転送先のサーバに存在しないニュースグ
	ループがある場合、その記事は junk に落ちてしまう。

	例:
		元サーバには omronsoft.* というニュースグループがある。
		ところが転送先サーバには omronsoft.* というニュースグ
		ループは存在しない。
		元サーバから omronsoft.* の記事を取寄せ、転送先のサー
		バに転送したところ、記事はすべて junk に落ちた。

Copyright (C) yamasita@omronsoft.co.jp
	Sep.19,1997
著作権は放棄しません。ただし、営利目的以外の使用/配布に制限は設けません。

オムロン ソフトウェア 技術開発部
山下 康成
yamasita@omronsoft.co.jp