INN-2.2 インストール & 設定ガイド


インストール手順


記事の保存方法について

INN-2.x から記事の保存方法に以下の 3種類の方法を選ぶことができるように なった。

traditional INN-1.x の頃から使用されている形式で、 ~news/spool/article の下に news/software/nntp/12345 という形式で記事を保存する。 古いバージョンとスプールの互換性はあるので移行は容易だが、 スピードが遅いのがデメリット。
timehash 1 article 1 file は traditional と同じだが、 hash 関数を用いて保存するディレクトリを決定する。 スピードは中程度。
cnfs article 用の buffer を確保して、 そこに連続的に cyclic に書き込みを行う。 buffer が溢れると古い記事が自動的に上書きされるため スプールが溢れることはないが、 記事の保存期間を設定することはできない。 スピードは速い。

フルフィードを行なっているサイトでは性能を重視して cnfs を 使用するのがいいが、ごく一部のニュースグループしか講読して いないサイトだとスピードはそれほど問題にはならないので、 管理の容易さを重視して traditional を使用するのがいいだろう。

なお、このドキュメントでは traditional を使用する場合について説明する に留める。timehash または cnfs を使用する場合は INSTALL 等の他のドキュ メントを参照のこと。


設定方法

以下のようにファイルの作成・変更して設定を行う。 なお、以下で作成するファイルの owner はすべて news にする必要がある。 そのため、news ユーザーで作業を行うのも 1つの方法である。 また、INN-2.2 に付属の INSTALL ファイルも併せて読むのが望ましい。
  1. news ユーザー、news グループの作成

    もし /etc/passwd, /etc/group に news というユーザー、news というグルー プが存在しない場合はあらかじめ作成しておく。

    news ユーザーのホームディレクトリは configure 時に --prefix で指定し たディレクト (デフォルトは /usr/local/news)、シェルは sh か csh に 設定する。

  2. inn.conf の修正

    ~news/etc/inn.conf をサイトの環境に合うように修正する必要がある。 修正が必要と思われるエントリーは以下の通り。

  3. newsfeeds の設定

    ~news/etc/newsfeeds を以下のように記述する

        ME:*,!control*,!junk::
        host/alias:*,!local.*,!control*,!junk/!local:Tf,Wnm:
    alias には、feed 元で Path に記述される名前を書く。 ただし、上で書かれる名前が host に一致する場合は省略可。

    次に、overview データベースを自動的に作成させるために、

         #overview!:*:Tc,WO:/usr/local/news/bin/overchan 
    のコメントも外す。また、
         #crosspost:*:Tc,Ap,WR:/usr/local/news/bin/crosspost 
    のコメントを外すとクロスポストの処理速度を向上させることができる。 この場合には inn.conf の innflags に -L を追加する必要がある。

    さらに、

         #controlchan!\
         #    :!*,control,control.*,!control.cancel\
         #    :Tc,Wnsm:/usr/local/news/bin/controlchan 
    のコメントを外すとコントロールメッセージの処理速度を向上させる ことができる。使用する場合は ~news/etc/inn.conf に
         usecontrolchan: true 
    の設定もあわせて行なう。

  4. incoming.conf の変更

    ~news/etc/incoming.conf ファイルに、自分にニュースをフィードするサイ トを FQDN または IP address で記述する。

        (例)
        peer hostname {
          hostname: hostname.domain.name
        } 
    このファイルは、INN-1.x の hosts.nntp に相当する。

  5. nnrp.access の設定

    ~news/etc/nnrp.access に接続を許すホストを FQDN または IP address で 列記する。

  6. nntpsend.ctl の設定

    ~news/etc/nntpsend.ctl に以下のように記述する。

        host:FQDN:1m:-T1800 -t300  
    ここで、host には newsfeeds に書いた host と同じ文字列を使用する。

  7. moderators ファイルの設定

    デフォルトでは

        *:%s@moderators.isc.org 
    となっていて、moderator group に投稿された記事は ISC にある moderators データベースに飛んでいくようになっているので特に設定する 必要はないが、自力で設定したい場合や local に moderator group を 作成する場合は、上の行の前に以下のような設定を moderators ファイルに 追加する。
        gnu.*:%s@prep.ai.mit.edu
        jp.inet.*:%s@utsun.s.u-tokyo.ac.jp
        fj.*:%s@creamy.ics.es.osaka-u.ac.jp
        tnn.*:%s@news.iij-mc.co.jp
        iij.*:%s@news.iij.ad.jp
        *:%s@uunet.uu.net 
  8. control.ctl の設定

    講読していないニュースグループのコントロールメッセージが、クロスポスト 等を通して流れ込んでくる場合には、そのグループのコントロールメッセージが 自動的に処理されないように、コメントアウトしておく。 また、今後アドレスの変更のアナウンスがあった場合にも 修正の必要が出てくるので、注意しておく。

  9. motd.news, distributions ファイルの作成

    これらのファイルは、ユーザーに情報を与えるためだけに使用されるので、 特に作成する必要はないが、ユーザーに便宜を与えたい場合には作成する。

  10. expire.clt の設定

    expire の期間をデフォルトの設定から変更した場合は、 expire.ctl の中身を修正する。

  11. active file の作成

    上位サーバーの active ファイルを入手して、以下の sed script によって カウンターをリセットし、~news/db/active として置く。

        % sed -e "s/\([^ ]*\).*\(.\)/\1 0000000000 0000000001 \2/" 
    なお、上位サーバーの active ファイルを入手するにはメールで送ってもら う方法もあるが、上位サーバーに接続できるのであれば、
        % script
        % telnet news.domain.name nntp
        list active
        quit 
    を実行して、typescript ファイルを編集する方法もある。

    また、閉じた環境で運用する場合など、 active ファイルを送ってもらうことのない場合には、

        control 0000000000 0000000001 y
        junk 0000000000 0000000001 y 
    という内容で、最低でも control と junk だけは作成しておく。

  12. history file の作成
       % ~news/bin/makehistory -i
    を実行して、history database を作成する。

    次に ~news/db に移って、以下のコマンドでファイル名を変更する。

        # mv history.n.index history.index
        # mv history.n.hash history.hash
        # mv history.n.dir history.dir 
    なお、history ファイルのフォーマットは INN-1.x とは違うため、バージョ ンアップする場合でも makehistory を使って history データベースを作り 直さないと INN-2.x は動作しないので、注意が必要。

    ただし、INN-1.x からバージョンアップする時に上のコマンドを実行すると、 spool を直接読みにいって history の再構築を行なうため、 かなり時間がかかるので、代わりに

       % ~news/bin/makehistory -r -s `cat history|wc -l` -f history
    を実行して、既存の history database を使って history database を 作成するのがいい。

  13. syslog.conf の設定

    /etc/syslog.conf に以下の設定を追加する。

         news.crit                       /dev/console
         news.crit                       /usr/local/news/log/news.crit
         news.err                        /usr/local/news/log/news.err
         news.notice;news.debug          /usr/local/news/log/news.notice
    /usr/local/news の部分は、configure 時に --prefix で指定したディレク トリに置き換える。 なお、左右の区切りは TAB を用いること。スペースを用いると正しくログ を出力されないので注意する。

    変更したら

        # touch /usr/local/news/log/news.crit
        # touch /usr/local/news/log/news.err
        # touch /usr/local/news/log/news.notice 
    でファイルを作成した後、
        # kill -HUP `cat /etc/syslog.pid` 
    を実行して、設定変更を実行中の syslogd に反映させる。

  14. /etc/aliases の変更

    /etc/aliases を変更して news と usenet の alias を定義し、 newaliases を実行する。

        例)
        news:       postmaster
        usenet:     news 
  15. pgp の設定

    pgpverify を使いたい場合は、inn.conf に

        pgpverify: true 
    を設定した上で、以下の作業を行なう。 なお、以下の作業はすべて news ユーザー権限で実行する必要がある。

    1. ~news/.pgp ディレクトリを作成する。mode は 700 にする。
    2. pgp -kg で pgp の初期化を実行。
      • PGP key size … 1024 bit を選択
      • user ID … "news " の形式で入力する
      • pass phrase … password を入力
      • random bits … 適当にキー入力する
    3. PGPKEYS ファイルを ftp://ftp.isc.org/pub/pgpcontrol/PGPKEYS から入手する。
    4. 入手した PGPKEYS ファイルから、エディタを使って講読している ニュースグループだけを取り出す。
    5. "pgp -ka /tmp/PGPKEYS" を実行する。このとき、
      • "y/N" と聞かれるところはすべて "y" と答える。
      • pass phrase には、初期化するときに入力したパスワードを入力する。
      • trust するかどうかには、"3=Usually" を答える。

  16. 設定の確認

    以上の設定が終了したら、~news/bin/inncheck を実行して、設定が正しい かどうかを確認する。

  17. INN の起動

    news ユーザーで ~news/bin/rc.news を実行し、ps を実行して news のプ ロセスが動いているかどうかを確認する。

    以下のプロセスが動いていればよい。

        % ps -ef | grep news
        news 17870     1  0 15:01:56 ?        0:00 /usr/local/news/bin/innd -p4
    もし、動いていない場合は、/var/adm/messages および ~news/log 以 下にあるログファイルを見て、エラーを特定し、修正後、再度 rc.news を 実行する。

  18. cron の設定

    news ユーザーの cron を

        0,10,20,30,40,50 * * * * /usr/local/news/bin/nntpsend
        45 4 * * * /usr/local/news/bin/news.daily expireover lowmark 
    のように設定して、

    1. 10分おきに配送先へニュースの配送
    2. 毎日1回、expire の実行

    を行うようにする。

    news.daily に指定するオプションは "expireover lowmarkl" が最も一般的 だが、他のオプションを指定することも可能。 どのようなオプションを指定できるかは news.daily のマニュアルを 参照すること。

  19. /etc/rc.local の変更

    SunOS 4.1.4 では、以下の行を /etc/local に追加して、boot 時に news が起動するようにする。

        #
        # start up INN
        #
        if [ -f /usr/local/etc/rc.news ]; then
            /bin/su - news -c /usr/local/news/bin/rc.news > /dev/null & echo -n ' innd'
        fi
    Solaris 2.x の場合は /etc/rc2.d/S95inn として以下のファイルを置いて、 boot 時に news が起動するようにする。

        #!/sbin/sh
        #
        # start up INN 2.2
        #
    
        PATH=/usr/bin; export PATH
    
        case "$1" in
    
        'start')
                if [ -f /usr/local/news/bin/rc.news ]; then
                        /bin/su - news -c /usr/local/news/bin/rc.news
                        echo "Start up INN 2.2"
                fi
                ;;
        'stop')
                /bin/su - news -c '/usr/local/news/bin/ctlinnd shutdown ""'
                ;;
        *)
                echo "Usage: /etc/init.d/news {start|stop}"
                ;;
        esac

トラブル・シューテング

ニュースがうまく動かないときは、特に以下を手掛りに設定の確認を行う。


SPAM filter について

configure 時に --with-perl を指定した場合は、SPAM filter を使う機能が 有効になる。デフォルトで設定される filter でもある程度は SPAM 記事を弾 くことができるが、効果的にこの機能を利用したい場合は、以下のような filter を手に入れて、~news/bin/filter/filter_innd.pl を置き換えて使用 する。

なお、filter_innd.pl は隣接のニュースサーバーから配送される記事に対して 機能するが、ローカルにポストされた記事に対して filter の機能を有効にしたい 場合は、filter_nnrpd.pl を置き換える filter を利用する。

その他のメモ


Q & A

  1. INN のプロセスを殺すには、どうしたらいいのでしょうか?
  2. 次のコマンドを実行して下さい。
      % /usr/local/news/bin/ctlinnd shutdown ""
    innwatch を使っている場合は、innwatch のプロセスも手動で kill し ておいた方がいいでしょう。

  3. 特定の Message-ID が history に残っているか、どうすれば調べられ るでしょうか?
  4. grephistory コマンドを使って下さい。

  5. ローカルに投稿された記事を管理者宛にメールで送信するには、 どうすればいいのでしょうか?
  6. 以下のようなエントリーを newsfeeds に追加するといいでしょう。
        mail/remote-path-host:*:Tp:\
         /usr/local/news/bin/innmail -s "Posted news at xxx" news@domain.name
  7. コントロールメッセージの処理で process full になってしまいました。
  8. 以下の設定を行なって、sendsys, version の control message は 無効にする。
            sendsys:*:*:log=sendsys
            version:*:*:log=version
    また、それ以外の control message に対しては、 controlchan! を使って 1つのプロセスで処理するようにする。

  9. 毎日送られてくるレポートを Web で表示するにはどうしたら いいのでしょうか?
  10. innreport.conf の html を true にして、inn.conf の pathhttp にデータを格納したいディレクトリを指定します。このディレクトリ は news 権限で書き込めるようにしておきます。 なお、perl のライブラリ GD をインストールするのを 忘れないようにしましょう。

  11. ニュースサーバーを二重化するにはどうしたらいいのでしょうか?
  12. slave 側の inn.conf に xrefslave を true にし、 nnrpdposthost に master news server を記述することで可能です。 これによって、
    1. xrefslave によって、slave 側では Xref ヘッダを見て 記事番号を master側に合わせる。
    2. nnrpdposthost によって、slave 側にポストされた記事は master 側へ丸投げされ、必ず master → slave という経路で 処理される。
    という処理が行われ、サーバー間で記事番号等の同期が 確保されます。

  13. 毎日送られてくるログファイルに以下のようなエントリーが 出力されることがあります。
        Thu Mar  4 20:30:22 1999: starting
        Thu Mar  4 20:30:22 1999: loaded $inn::controlprogs/checkgroups.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/ihave.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/newgroup.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/rmgroup.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/sendme.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/sendsys.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/senduuname.pl
        Thu Mar  4 20:30:23 1999: loaded $inn::controlprogs/version.pl 
  14. これは controlchan が出力しているエントリーですが、 controlchan は perl から syslog が使えない状態のため、 ファイルに直接出力されて Error Log として扱われています。 おそらく、h2ph を実行し忘れているために perl から syslog が使えなくなっていると思われますので、 以下のコマンドを実行してみて下さい。
        # cd /usr/include
        # h2ph *.h sys/*.h 

  15. 新規ニュースグループを追加するにはどうしたらいいのでしょうか?
  16. 以下のような方法があります。

INN に関する情報交換の場

INN に関して情報交換を行なっている場としては以下のようなものがある。 設定で自分でいろいろ試してみてもうまくいかないことがあれば、 以下の場所で質問してみると、適切な解答が得られることも多い。

関連情報

日本語の情報 英語の情報 ニュースグループに関する情報
ksakai@kt.rim.or.jp
Last modified: Fri Mar 5 15:05:38 1999