INN-2.1 のインストールログ (Solaris 2.3 on SPARC) [準備] inn-2.1.tar.gz 1. 前準備 1.1 GNU ツールの準備 flex の最新版を用意(今回は 2.5.4a) bison の最新版を用意(今回は 1.25) gcc の最新版を用意(今回は安定性を重視して 2.7.2.3) (古いバージョンだといろいろなところでエラーが出てmakeできない) fileutils-3.76.tar.gz (の中の df コマンド。innwatch で使う。) 1.2 news ユーザIDの準備 もし news というユーザとグループがない場合は作っておく。 /etc/passwd news:x:11:11:News(INN)-Admin(0000):/usr/local/news:/usr/bin/csh /etc/group news::11:root 同時に /etc/aliases に usenet がなければ作成して、ニュース管理者にメール が行くようにしておく。 1.3 perl のバージョンの確認 また、perl のバージョンが 5.004 以前なら新しいバージョンにしておく。 2. 展開 tar zxvf inn-2.1.tar.gz cd inn-2.1 3. configure 3.1 PATH の設定 余分なコマンドを検索しないよう PATH を最低限に設定 (sendmail が探せるよう最後に /usr/lib を付け加える) setenv PATH /usr/bin:/usr/ccs/bin:/usr/ucb:/usr/local/bin:/usr/lib (インストールマシンには GNU の ld が入っていたので、それを使わない ように /usr/local/bin を後にする。また /usr/local/sparc-sun-solaris2.3/bin にも ld があり、これが使われると make できてもうまく動作しないので、この ディレクトリごと名前を変えて使われないようにした。OS 標準の ld なら問題 ないようだ。) 3.2 configure ./configure --with-perl --enable-pgp-verify --enable-tagged-hash (最後のオプションはメモリ使用量を減らすため) 4. make make 5. make install 6. とりあえず動かしてみる。 6.1 設定ファイル(inn.conf) の編集 ソースを展開したディレクトリの siteサブディレクトリ に移動する。 emacs inn.conf で次の部分の編集。 organization: Fukuoka University of Education pathhost: news.fukuoka-edu.ac.jp domain: fukuoka-edu.ac.jp fromhost: news.fukuoka-edu.ac.jp hiscachesize: 16384 storageapi: no ここで、su news したあと make install-config 6.2 syslog の設定 /etc/syslog.conf の最後に次の3行を追加。 news.crit /usr/local/news/log/news.crig news.err /usr/local/news/log/news.err news.notice /usr/local/news/log/news.notice cd /usr/local/news/log touch news.crit news.err news.notice kill -HUP `head -1 /etc/syslog.pid` 6.3 データベースファイルの作成 また、/usr/local/news/db ディレクトリにデータファイルを作成する。 active ファイルには最低以下を書く。 junk 0000000000 0000000001 y control 0000000000 0000000001 y control.cancel 0000000000 0000000001 y control.ihave 0000000000 0000000001 y control.sendme 0000000000 0000000001 y control.newgroup 0000000000 0000000001 y control.rmgroup 0000000000 0000000001 y control.checkgroups 0000000000 0000000001 y control.sendsys 0000000000 0000000001 y control.senduuname 0000000000 0000000001 y control.version 0000000000 0000000001 y history ファイルを作成するため次のようにする。 su news /usr/local/news/bin/makehistory -o 6.4 innwatch.ctl の修正 最後に innwatch で df コマンドの結果の正しいフィールドを見るように /usr/local/news/etc/innwatch.ctl を編集。 !!! /usr/local/bin/df . | awk 'NR == 3 { print $3 }' ! lt ! 8000 ! throttle ! No space (spool) !!! /usr/local/bin/df ${BATCH} | awk 'NR == 3 { print $3 }' ! lt ! 800 ! throttle ! No space (newsq) !!! /usr/local/bin/df ${PATHDB} | awk 'NR == 3 { print $3 }' ! lt ! 25000 ! throttle ! No space (newslib) !!! /usr/local/bin/df -i . | awk 'NR == 3 { print $3 }' ! lt ! 200 ! throttle ! No space (spool inodes) !!! /usr/local/bin/df ${OVERVIEWDIR} | awk 'NR == 3 { print $3 }' ! lt ! 8000 ! throttle ! No space (overview) 変更点は OS 標準の df では結果が使いにくいので、GNU fileutils の df を /usr/local/bin/df としてインストールしておきそれを使う点と、 その結果が ディスクアレイを使っているせいで、 Filesystem kbytes used avail capacity Mounted on /dev/vx/dsk/rootdg/vol02 1921768 29674 1699924 2% /usr/local/news のように必要な結果が3行目に表れ、必要なカラムも3カラム目になるので、 NR == 3 の部分と print $3 の部分を変更した点である。 6.5 起動 su news /usr/local/news/bin/rc.news うまく動いていれば、/usr/local/news/bin/ctlinnd mode すると、 Server running Allowing remote connections Parameters c 14 i 50 (0) l 1000000 o 51 t 300 H 2 T 60 X 0 normal specified Not reserved Readers separate enabled Perl filtering enabled のような表示が得られる。 7. 上流サイトと接続 設定ファイルはデフォルトで /usr/local/news/etc にあるのでそれを調整する。 7.1 incoming.conf の設定(隣接のサーバとの接続許可関連) # 全体の設定 streaming: true # streaming allowed by default max-connections: 8 # per feed peer ME { hostname: "localhost, 127.0.0.1" } # 下流サイト peer tack.ftokai-u.ac.jp { hostname: tack.ftokai-u.ac.jp } # 上流サイト peer hakata { hostname: hakata.cc.kyushu-u.ac.jp } 7.2 nnrp.access の設定(クライアントからの接続許可) # 一番下の行を加えただけ stdin:Read Post:::* localhost:Read Post:::* 127.0.0.1:Read Post:::* 133.81.*.*:Read Post:::* 7.3 nntpsend.ctl の設定(nntpsend で記事の転送をする場合の設定) # tack は inn-1.*, hakata は Diablo tack.ftokai-u.ac.jp:tack.ftokai-u.ac.jp::-a -T1800 -t300 hakata:hakata.cc.kyushu-u.ac.jp::-a -T1800 -t300 7.4 newsfeeds の設定(innd からの情報を nntpsend に渡せるよう設定) 今回は INN-2.* の新しい記事保存形式ではなく、従来の traditional な 保存をする。 # ME:*,!control,!control.*:: # 記事の格納のための overchan の起動 overview!:*:Tc,WO,S16384:/usr/local/news/bin/overchan # for Tokai Univ. Fukuoka tack.ftokai-u.ac.jp:\ */!local\ :Tf,Wnm: # for hakata (upper site of Kyushu Univ. Computer Center) hakata:\ !fueipc.*/!local\ :Tf,Wnm: 7.5 expire.ctl の設定(時間のたった記事の削除) 最初はデフォルトのままで、後でディスク容量と相談しながら調整 # /remember/:14 ## Keep for 1-10 days, allow Expires headers to work. *:A:1:10:never ## Some particular groups stay forever. # Keep FAQ's for a month, so they're always available *.answers:M:1:35:90 news.announce.*:M:1:35:90 7.6 変更を innd に通知する。 設定ファイルを変更した場合は、 /usr/local/news/bin/ctlinnd reload all '理由' で読み込ませる。 7.7. 補足 今回は最初に最低限の active で動かしてみて、あとから上流サイトと接続 したので、後でわけてもらった active ファイルから必要なニュースグループ の行を active に追加した。(不必要な行まで追加するとニュースリーダからの 読み込みが遅くなる。) また、記事番号も1からにリセットするために、例えば #!/usr/local/bin/perl $active = "active.tmp"; open(DATA,$active); while() { @line = split(/ +/, $_); $newsgroup = $line[0]; $num1 = $line[1]; $num1 = "0000000000"; $num2 = $line[2]; $num2 = "0000000001"; $moderator = $line[3]; print "$newsgroup $num1 $num2 $moderator"; } close(DATA); のようにして、記事番号をリセットした。 これで、再起動するため、/usr/local/news/bin/ctlinnd shutdown '理由' と していったんサーバを止め、起動した。 設定ファイルの変更はソースを展開したディレクトリの site ディレクトリ (例えば /usr/local/src/inn-2.1/site) にある設定ファイルを変更してから su news になり、 make install-config とするようにする方法もあるそうである。 後は log ディレクトリのログをみてエラーがないか、チェックし、テスト用  のニュースグループへ投稿してテストしてみる。(kyushu.test に投稿すると、 うまく転送されていれば csce.kyushu-u の自動応答プログラムが返答してくれる。)