ローカルに news 配送 (96/10/22)

先日 cipher にも inn を立 ち上げた。これは基本的にはローカルでの mnewsgnus 等 のテストの為である。

したがって現在のところ、ニュースグループは local.test しかない。 (もちろん controljunk はあるけど…)

だけど、できれば fj のいくつかのグループの記事は、ちょっとこっ ち(つまり cipher ね)に持ってきておきたい。貴重な情報が良く流 れているからね。

でもだからといってわざわざ NetNews をフィードしてもらうわけにも いかない。だっていつでも cipher は立ち上がっているとはかぎらな いし、そんなことすると色々と面倒だしねぇ。

ではどうすればよいか。答えは suck を使えば良い。

基本的に suck というのはリモートの NNTP サーバからの記事のフィー ドを受けることなくローカルの News サーバに記事を取り込むものです。

こういうのが欲しかったんだぁ

では早速インストールしましょ。始めに展開。

cipher:~# ls -l suck-3.3.0.tar.gz 
-rw-r--r--   1 yokota   users      100598 Oct 18 09:01 suck-3.3.0.tar.gz
cipher:~# tar xfz suck-3.3.0.tar.gz 
cipher:~# cd suck-3.3.0
あとは ./configuremake でコンパイルはできる。ただし 環境によっては Makefilesuck_config.h を修正したほう がよい。
cipher:~# ./configure
cipher:~# make CFLAGS=-O2 LDFLAGS='-O2 -s'
あとは make install でインストール完了である。ただし私は /usr/local/suck/ にインストールしたかったので、自分でコピーして しまった。
cipher:~# mkdir /usr/local/suck
cipher:~# mkdir /usr/local/suck/doNews
cipher:~# cp suck rpost testhost sample/get.news.innxmit /usr/local/suck
cipher:~# cp sample/put.news /usr/local/suck/doNews
次に get.news.innxmit を環境に合わせて修正する。私の場合は以下 のようになる。
cipher:~# diff -u get.news.innxmit_orig get.news.innxmit      
--- get.news.innxmit_orig       Tue Oct 22 22:49:38 1996
+++ get.news.innxmit    Tue Oct 22 21:57:39 1996
@@ -2,12 +2,12 @@
 
 #BEFORE USING - check to ensure all the paths defined below are correct!!
 
-REMOTE_HOST=news.pixi.com
+REMOTE_HOST=news.msi.co.jp
 LOCAL_HOST=localhost
 
 SPOOLDIR=/usr/spool/news               # base directory for articles to be rposted
 NEWSDIR=/usr/lib/news                  # base directory for news binaries 
-BASEDIR=/home/boby/doNews              # base directory for scripts and data files
+BASEDIR=/usr/local/suck/doNews         # base directory for scripts and data files
 
 LOCALPOST=${NEWSDIR}/bin/innxmit       # location of binary
 CTLINND=${NEWSDIR}/bin/ctlinnd         # location of binary
@@ -22,9 +22,9 @@
 SCRIPT=${BASEDIR}/put.news             # my filter for rpost
 OUTFILE=/tmp/tmp$$                     # used by rpost as article after it is filtered
 
-TESTHOST=testhost
-RPOST=rpost
-SUCK=suck
+TESTHOST=/usr/local/suck/testhost
+RPOST=/usr/local/suck/rpost
+SUCK=/usr/local/suck/suck
 
 # is the local host up and running so we can post messages we download?
 ${TESTHOST} ${LOCAL_HOST} -s
@@ -60,7 +60,7 @@
        fi
 
        # now upload messages
-       if [ -s ${OUTGOING}  -o -s ${OUTGOINGNEW}]; then
+       if [ -s ${OUTGOING} -o -s ${OUTGOINGNEW} ]; then
 
                ${TESTHOST} ${REMOTE_HOST} -s
 
最後の箇所、これは私の /bin/sh ではエラーになったので修正したも のです。もしかしたら大丈夫な人もいるのかもしれないですね。ちなみに私の /bin/shbash 1.14.7 です。

そして sucknewsrc を作成しておく。私の場合はとりあえず fj.mailfj.os.linux を設定しておく。

cipher:~# cd /usr/local/suck/doNews
cipher:~# cat sucknewsrc 
fj.mail -1
fj.os.linux -1
この sucknewsrc は、読み込むグループの指定、及び既にどこまで読 み込んだかを記録しておくファイルです。-1 を指定しておけば suck が最大記事番号を調べてくれます。詳しくは man suck してください。

さて suck の設定は以上だ。極簡単に最小限のことしかここでは記し ていないが、suck に関しては付属のドキュメントに目を通してくださ い。3.3.0 以降は日本語のドキュメントが付属しています。

あとはローカル(つまり cipher ね)側の inn の設定をして おく。つまりニュースグループの追加である。これをしておかないと取り込ん だ記事を junk に放り込むことになる。

cipher:~# su news
bash$ cd /usr/lib/news/bin
bash$ ./ctlinnd newgroup fj.mail y yokota@cipher
Ok
bash$ ./ctlinnd newgroup fj.os.linux y yokota@cipher
Ok
これで OK だ。あ、そうそう。最後に /usr/lib/news/expire.ctl の 中で「寿命」を設定しておこう。

例えば私の場合は /usr/lib/news/expire.ctl

fj.*:A:never:never:never
と入れておく。これは fj.* では expire されないで記事が残っ ていることになる。でもきっと DISK が切迫してきたら適当な日数をいれるこ とになるでしょうな。:-)

ではでは。実際に起動してみよう。まずは PPP 接続をする。それから get_news.innxmit を起動してみる。

cipher 511# ./get.news.innxmit
Attempting to connect to news.msi.co.jp
Using Port 119
Official host name: quux.msi.co.jp
Alias news.msi.co.jp
Address: 192.51.54.2
Connected to quux.msi.co.jp
200 msi.co.jp InterNetNews NNRP server INN 1.4 22-Dec-93 ready (posting ok).
Elapsed Time = 0 mins 0.56 seconds
0 Articles to download
Deduping Elapsed Time = 0 mins 0.00 seconds
Deduped, 0 Items remaining, 0 dupes removed
Processing History File Elapsed Time = 0 mins 0.03 seconds
Processed history, 0 dupes removed
Total Articles to Download: 0
No articles.
Closed connection to quux.msi.co.jp
Cleaning up after myself
No articles to download
You can hang up the modem now
最初は二つのグループとも -1 にしておいたので記事を取り込むこと はない。そのかわり sucknewsrc に最大記事番号が記されている。
cipher:~# cat doNews/sucknewsrc
fj.mail 5291
fj.os.linux 13001
これでリモートの NNTP サーバに新たに記事がとどけばローカルに記事を取り 込むことができる。

もちろん以前の記事も取り込みたいのであれば、この数字を変える。つまり取 り込みたい記事番号に修正をしてから再び get_news.innxmit を起動 すればよい。

今日はルンルンのスィッチオフ。

戻る