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 改訂
       
  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:
newsfeeds の(論理)行の一番左の名前(上の例では jh1pfo.ihave)は、 一般論としては記事の送り先で、Path: の行にその名前がなければ、 その機械を通って来てはいないので、送る必要があると考え、 この行の処理を行ないます。 ここの例のように .ihave と付いていると Path: jg1rfe!jh1pfo! とは素直には一 致しないので、そのような記事は送る必要があるとなって、 この行に該当する処理をされてしまいそうですが、 それを防ぐため /jh1pfo と書いておいて、 そういう記事は除外するようにします。
 
  この行は 最後に何も指定していないので、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:
---------