From: makoto@komekome.bay.prug.or.jp (Makoto ja1xms Fujiwara) Newsgroups: ampr.news.software.unix Subject: Re: [inn] setup ihave/sendme verion 0.3 Date: 12 Oct 1995 14:22:05 GMT Organization: Packet Radio Users Group, Chiba Japan Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP 先日 v 0.2 を投稿したのですがその改訂版です。v0.1,v0.2 には これをうのみにして設定すると複数のものが一つにつながった記事 を送ってしまうという重大な問題がありました。ごめんなさい。 inn で ihave/sendme の設定をしています。 ( inn1.4sec と sendbatches-2.0 を組合わせています。sendbatches は inn1.4/contrib/sendbatches のように展開して設置の作業をします。 自分でも書いておかないと忘れそうだし、また間違って理解・設定して いることがあると思うので、投稿します。 もっといい方法がある、間違っている、この通り試したがうまく動かな い。このようなことはどこそこに書いてある、など何でも仰って下さい。 藤原 誠@komekome.bay.prug.or.jp 6/16/95, 23:15 v 0.1 9/22/95, 22:40 v 0.2 改訂newsfeeds の(論理)行の一番左の名前(上の例では jh1pfo.ihave)は、 一般論としては記事の送り先で、Path: の行にその名前がなければ、 その機械を通って来てはいないので、送る必要があると考え、 この行の処理を行ないます。 ここの例のように .ihave と付いていると Path: jg1rfe!jh1pfo! とは素直には一 致しないので、そのような記事は送る必要があるとなって、 この行に該当する処理をされてしまいそうですが、 それを防ぐため /jh1pfo と書いておいて、 そういう記事は除外するようにします。10/12/95, 23:20 v 0.3 改訂 ( viasoro2 他 ) ------------- INN での ihave/sendme の設定の方法 ------------ inn 同志で nntpsend を使って NNTP の方式で記事を転送する時は、 にも少し書いてありますが設定がとても簡単な上に「これ要る?」 「重複(duplicate)しているから要らない」とか「要る」とかやって とても効率的なのですが、相手が普通の jnet の場合、ihave の記 事を作って送り相手から sendme の記事が来たら送るというように 設定する必要があります。これについて説明します。 ------------------------------------------------------------- 実際に使われている次のような例をとって説明を進めて行きます。 低速回線 Ethernet (nntpsend) jh1pfo ------- tateyama -------- komekome jnet inn inn soroban Sun-3/80 SS1 このような構成です。このうちの 左二つで ihave/sendme をします。 ihave を送る ihave を受取る = sendme を送る sendme を受取る の三段階の設定が必要です。その前に control.ctl に関連して、 【コントロール・メッセージの受取】 inn では、/usr/local/news/control.ctl に control message を 受取った時の動作をこまかく設定出来ます。 どの種類:誰から:group:(受ける|無視する) という指定です。例えばこのような行です。 ----------- ihave:*@*.bay.prug.or.jp:*:doit sendme:*@*.bay.prug.or.jp:*:doit ----------- ここで「受けて実行する」= doit と設定すると、 /usr/local/news/bin/control/(コントロール・メッセージと同名のもの) が呼び出されます。ここでは ihave, sendme になります。 ここで必要なことは、( control.ctlを正しく読むために ) ・config.data の EGREP に正しく動作するegrep が書いてあること ・そしてもちろんその egrep が正しく動くことです。 gnu の grep は、gnugrep という名前で呼出された時には、egrep と して動作しません。egrep という名前で hard link したものが一番の おすすめです。egrep 'test|this' filename などとして動作を確かめ ておくのがいいと思います。 の二点が必要です。 【ihave の送信】 ihave の送信は二つの段階から成ります。 (1) 相手に送る Message-Id を書きためていくこと (2) そのためた Message-Id の一覧を送ること です。 【1】相手に送る Message-Id を書きためていくこと これは newsfeeds に設定します。 newsfeeds に相手に送る Message-id を書きためていく行を書きます。例えば次の ような行です。 jh1pfo.ihave/jh1pfo\ :!*,bay.*,ampr.*,jouban.*,ymt.*,tonton.*\ :Tf,Wm:
この行は 最後に何も指定していないので、out.going/jh1pfo.ihave に Message-Id を書いて行きます。 【2】ためた Message-Id の一覧を送ること これを crontab を使って、send-ihave を起動し、相手に送ります。 send-ihave jh1pfo とすると、上で書き出した /var/spool/news/out.going/jh1pfo.ihave を処理します。( send-ihave の引数に .ihave を付けたものを処理する ) crontab の書き方の例を示します。 ---------- news@tateyama■%P(~)crontab -l | grep send-iha 0,10,20,30,40,50 * * * * /usr/local/news/send-ihave komekome 2,12,22,32,42,52 * * * * /usr/local/news/send-ihave jh1pfo ---------- さてこの send-ihave は ----------- Newsgroups: to.相手の名前 Control: ihave 自分の名前 持っている Message-Id の一覧 ----------- という記事を作ってやはり inews -h で投稿します。inews を経て投稿されるとい うことはもう一度 newsfeeds を見ることになります。そこで、newsfeeds にいま 投稿される ihave のコントロール・メッセージ記事の処理の方法を書いておきます。 つまり、「to.相手の名前」と書いてあるものを送る行が必要です。ここでは 後の説明の( ihave の受取 = sendme の送信 ) にも出て来る、 jh1pfo\ :!*,to.jh1pfo*\ :Tp:/usr/local/news/bin/batch/viasoroban jh1pfo がそれに相当します。 inn を build する時に、次のように指定しておけば、もっと簡単に --------------- makoto@komekome■22:40:18(/home2/inn1.4sec/config)> grep MERGE config.data #### =()@>()= MERGE_TO_GROUPS DO -------------- jh1pfo\ :to.*\ :Tp:/usr/local/news/bin/batch/viasoroban jh1pfo と書くことも出来るようですが、僕はまだ使っていません。 まとめておくと ・newsfeeds に ihave を書きためる行(設定) ・newsfeeds に to.相手/ihave を相手に送る設定 ・crontab に send-ihave の設定 が必要です。 【ihave の受取】= 【sendme の送信】 初めに書いたように、ihave を受取ると、bin/control/ihave が起動されます。 /usr/local/news/bin/control/ihave はとても短いシェル・スクリプトで、 --------------- Newsgroups: to.相手の名前 Control: sendme 自分の名前 (送って欲しい) Message-ID の一覧 --------------- というコントロール・メッセージを作って inews -h で投稿します。 これは、すなわち sendme の送信です。 ここで必要なことは、(少し重複しますが) ・control.ctl に(例えば次のような)行があること ihave:news@jh1pfo*:*:doit ・to.相手の名前 というニュース・グループを作っておくこと。 ・nnrp.access の設定が news@自分の名前 で投稿出来るようになっていること (これが正しくないと、仮にニュース・グループが作ってあっても No Such group などと言われてしまう ) ・newsfeeds にその投稿されたものが(sendme)、相手に送られるような行が用意さ れていること。例としては、 jh1pfo\ :!*,to.jh1pfo*\ :Tp:/usr/local/news/bin/batch/viasoroban jh1pfo このような行があることです。(この例は ihave の送信と共用です。) 【sendme の受取】 同様に /usr/local/news/bin/control/sendme はとても短いシェル・スクリプトで、 sendme で要求されている記事が history にあれば、それの /var/spool/news から の相対パスを、 /var/spool/news/out.going/相手の名前.work に書き出します。 ここで書き出された一覧から、crontab で、sendbatches を使って相手に送る設定をしておき ます。 ---------- news@tateyama■%P(~)crontab -l | grep sendbatch 1,11,21,31,41,51 * * * * /usr/local/news/bin/sendbatches komekome >/dev/null 3,13,23,33,43,53 * * * * /usr/local/news/bin/sendbatches jh1pfo >/dev/null ---------- sendbatches を使うので、/usr/local/news/sendbatches.ctl に --------- jg1rfe 10 10000 nocomp viasoro2 --------- 例えばこんな行が必要です。viasoro2 は、複数の記事を rnews@soroban-host が 受取れるように記事を一つの空行で区切ってつないだ上に左端に N を付けてメール で送るものです。(実際には sendbatches で作られたものの #! rnews nnnn を空行 に代えます。 【その他】 (0) (御存知だと思いますが) bin/ctlinnd newgroup control.ihave y '' bin/ctlinnd newgroup control.sendme y '' などのように control message に応じてグループを作っておくと inn は種類ごと に分類してくれるので、便利です。 (1) 何故次のことが必要なのかの説明が思い出せません。 ・newsfeeds に 相手の名前の fqdn ( Fully Qualified Domain Name ) で始まる行 確か send-ihave の中で、ctlinnd -s -t30 flush ${SITE}.ihave という行があること。 soroban が sendme を送って来るとき sendme jh1pfo.bay.prug.or.jp と言って来るのが関係していたはずなのですが。 (2) sendme を受取った後に sendbatches をする時、 mv が /var/spool/news/out.going/jh1pfo がない cat が /var/spool/news/out.going/jh1pfo.work がない などと言って、ちょっとうるさいので、 sendbatches を少し変更しています。これは本当に必要なのか (3) sendbatches は >/dev/null 2>&1 で起動しているが、log に残す方法が あるはずだ。(でもいつもはつまらないことしか言ってないのだけれど ) (4) /usr/local/news/bin/batch/viasoroban は次のようなものです。 -------- #! /bin/sh # send via mail (protected against stupid mailers) # 8-31-92 # 9-12-92 ( echo ; sed 's/^/N/' ) | mail rnews@$1 -------- (5) /usr/local/news/bin/batch/viasoro2 は次のようなものです。 --------- #! /bin/sh # send via mail (protected against stupid mailers) # 8-31-92 # 9-12-92 #( sed /^#!rnews /;/ sed 's/^/N/' ) | mail rnews@$1 # perl -nle 'if (/^#! rnews .*/) { print "" } else { print "N",$_ }' | mail rnews@$1 --------- 【謝辞】この記事を書くにあたって、 冨田 誠さん tomita@jp1eye.bay.prug.or.jp 近藤 雄公さん Katsuhiro Kondou にいろいろ教えていただいています。 それから sendbatches の存在については 岡 利章さん Toshiaki OKA に教えていただきました。皆様ありがとうございます。 千葉市中央区長洲 藤原 誠 makoto@komekome.bay.prug.or.jp ---(付録1)---- この (5) の viasoro2 は、次のような標準入力を --------------------- #! rnews 2842 Path: jg1rfe!jg1rfe!komekome.bay.prug.or.jp!komekome!makoto From: makoto@komekome.bay.prug.or.jp (Makoto ja1xms Fujiwara) Newsgroups: bay.project.a Subject: [inn] newsfeeds change at komekome Followup-To: bay.project.a Date: 21 Sep 1995 14:09:05 GMT 先日お送りした newsfeeds は inncheck しても文句が出ないのですが、 (略) #! rnews 1542 Newsgroups: ampr.rec.ham.misc Path: komekome.bay.prug.or.jp!quelle!fukuma From: fukuma@quelle.bay.prug.or.jp (Yukio Fukuma) Subject: Re: First class Sender: fukuma@quelle.bay.prug.or.jp (Yukio Fukuma) Message-ID: Date: Thu, 21 Sep 1995 11:50:31 GMT ふくま です。 (略) #! rnews 2811 Path: komekome.bay.prug.or.jp!asogw!jf3koa!msr-ribbon!jk1lot!jf1ndq!jm1dvc!js1cpw!kamide Newsgroups: ymt.misc References: <118d.1891@js1cpw.ymt.prug.or.jp> Distribution: ymt Organization: << YMT_net >> Yokodai Multiport Tcp/ip station --------------------- 次のように変更した上で rnews@となりの名前にメールするものです。 --------------------- N NPath: jg1rfe!jg1rfe!komekome.bay.prug.or.jp!komekome!makoto NFrom: makoto@komekome.bay.prug.or.jp (Makoto ja1xms Fujiwara) NNewsgroups: bay.project.a NSubject: [inn] newsfeeds change at komekome NFollowup-To: bay.project.a NDate: 21 Sep 1995 14:09:05 GMT N N 先日お送りした newsfeeds は inncheck しても文句が出ないのですが、 N (略) N N NNewsgroups: ampr.rec.ham.misc NPath: komekome.bay.prug.or.jp!quelle!fukuma NFrom: fukuma@quelle.bay.prug.or.jp (Yukio Fukuma) NSubject: Re: First class NSender: fukuma@quelle.bay.prug.or.jp (Yukio Fukuma) NMessage-ID: NDate: Thu, 21 Sep 1995 11:50:31 GMT N N ふくま です。 N (略) N N NPath: komekome.bay.prug.or.jp!asogw!jf3koa!msr-ribbon!jk1lot!jf1ndq!jm1dvc!js1cpw!kamide NNewsgroups: ymt.misc NReferences: <118d.1891@js1cpw.ymt.prug.or.jp> N NDistribution: ymt NOrganization: << YMT_net >> Yokodai Multiport Tcp/ip station N --------------------- ---(付録2)--- tateyama の newsfeeds です。(上記の説明には関係ないものも含まれています。) news@tateyama(~)grep -v '^#' newsfeeds | sed '/^$/d' ME\ :*,!foo.*:: komekome\ :!*,alt.*,ampr.*,bay.*,bt.*,comp.*,fj.*,gnu.*,iij.*,\ isdn.*,jouban.*,komekome.*,news.*,ofuna.*,pin.*,prug.*,rec.*,\ tnn.*,tonton.*,ymt.*\ :Tf,Wnm: jh1pfo.ihave/jh1pfo\ :!*,bay.*,ampr.*,jouban.*,ymt.*,tonton.*/!ihave,!sendme\ :Tf,Wm: jh1pfo.d0/jh1pfo\ :!*,bay.*,ampr.*,jouban.*,ymt.*,tonton.*/!ihave,!sendme\ :Tf,Wm:jh1pfo.d0 jh1pfo\ :!*,to.jh1pfo*/sendme,ihave\ :Tp:/usr/local/news/bin/batch/viasoroban jh1pfo jh1pfo.bay.prug.or.jp/jh1pfo\ :!*,dummy*\ :Tp:/usr/local/news/bin/batch/viasoroban jh1pfo murasaki\ :!*,komekome.*,bay.*,ymt.*\ :Tf,Wn: jp1eye\ :!*,bay.*,ampr.*,jouban.*,ymt.*,tonton.*/!ihave,!sendme\ :Tf,Wnm: ---------