innはニュースサーバになるソフトです。
ニュースシステムにはいろいろなソフトが存在しますが、その中でもinnはもっとも良く利用されているものの一つでしょう。
さて、innの導入に必要な作業を簡単に示しましょう。 といってもinnにはportsが存在しますので、コンパイルにはそちらを使うのが楽でしょう。
ここでは、なにかと面倒なコンパイルしたあとの実際の運用に向けての設定方法に関して説明します。 なお、対象とするinnのバージョンは、2.2です。
/usr/local/news/etcこのディレクトリにある設定ファイルとその役割は以下の通りです.
| 設定ファイル | 意味 |
|---|---|
| hosts.nntp | ニュースの配送先のホスト設定 |
| nnrp.access | ニュースの購読を許可するホストの設定 |
| newsfeeds | 配送するニュースグループの設定 |
| inn.conf | ニュースサーバ自体のpathhostなどの設定 |
| expire.ctl | ニュースのexpireの設定 |
| moderators | モデレータの設定 |
| control.ctl | コントロールメッセージ処理の設定 |
それぞれのファイルの設定方法は以下の通りです.
newsserver.hogehoge:単に配送先のホスト名+:(コロン)を書いておくだけです.:の右にはパスワードが必要な場合にパスワードを記述しますが,普通は不要でしょうから,なにも書きません. なお,ここでの注意として,ホスト名にワイルドカードは使用できません.
## Default is no access, no way to authentication, and no groups. *:: -no- : -no- :!* ## Foo, Incorporated, hosts have no password, can read anything. 192.168.1.*:RP:::* 192.168.2.*:R:::*この場合であると,192.168.1.0/24からは読み書き可能で,192.168.2.0/24からは リードオンリーという設定です.それ以外からは,読むこともできません. このファイルのフォーマットは,1行が以下のようになっています.
host:perm:user:pass:groupsそれぞれの意味は以下の通りです.
hogehoge:RP:::*,!compという設定では,groupsのフィールドが,*,!compとなっているので,compグループ以外はすべて読み書き可能(compは不可)という設定になります.
site[/exclude,exclude...]\ ## :pattern,pattern...[/distrib,distrib...]\ ## :flag,flag...\ ## :paramまずは,ローカルのみでどこにも配送しない場合の設定例です.
ME:*::と,これだけです.ローカルでニュースサーバを運用する時はこれで十分でしょう. また,実際に他のサーバとの配送を行なうニュースサーバでも,最初は設定を確認するためにも,一旦この設定でローカルで運用し,動作を確認する方が良いでしょう. ここで,MEというのは自分自身を表しています.つまり,自分自身にポストされたものはすべて受けとるというものです.
実際に他のサーバへの配送を行なうようにする場合には,以下のようにします.
ME:*::
newsserver.other\
:*,!localnews/!local\
:Tf,Wnm:
ここで,newsserver.otherは,配送先(上流)のサーバであるとします.次の
*,!localnews/!local となっている部分ですが,
まず,/の前の前半部分では,localnewsというニュースグループ以外はすべて配送するということを意味します.つまり,ローカルなニュースグループがある場合は,ここで配送を禁止する設定をします.
後半の !local となっている部分は,配送してはいけないDisgtributionを設定しています.つまり,どんなニュースグループにポストされたメッセージでも,Distributionが local のものは配送しないという設定です.
pathhost: news.mqhnet organization: mqhnet server: mqh-host.mqhnetこの設定は,見れば直感的にわかると思います.といっても,pathhostだけはわかりにくいと思いますので,多少説明します. pathhostというのは,ホスト名ではありません.もちろん,ホスト名と同じでもかまわないのですが... ニュースのヘッダーを御覧になるとわかると思いますが,そのニュースがどこで投稿され,どのようなニュースサーバを通って来たかがずらずらと記録に残っていると思います. ここに入るのがpathhost名です.
*:A:14:14:14 ## Some particular groups stay forever. mqhnet.*:A:never:never:neverこの場合,mqhnetというニュースグループはexpireしない. それ以外は,14日保存するという設定です.
このファイルは,以下のフォーマットになっています.
patterns:modflag:keep:default:purgeそれぞれの意味は以下の通りです.
newsgroup:pathname具体的なサンプルを示します。 これは、innに付属のmoderatorsで定義されている内容です。 通常はこれをそのまま使えば良いでしょう。 ローカルでモデレータ付きのニュースグループを運用する場合は、そのアドレスを設定します。
*:%s@moderators.isc.orgfjを例にとると,fjの中でモデレータつきのグループに投稿された場合は,:(コロン)以降のメールアドレスにメールとして送るという設定を意味します.%sは,ニュースグループ名が入ります.たとえば,
fj.1st-readmeに投稿したニュースのメールの宛先は,
fj-1st-readme@moderators.isc.orgとして処理されます.もちろん,%sを使わずに,静的に定義することも可能です.
message:from:newsgroups:actionそれぞれのフィールドは以下の通りです.
| パラメータ | 意味 |
|---|---|
| doit | 命令実行し,news宛にメール送信 |
| doifarg | 引数があれば命令実行 |
| doit=xxx | 命令実行し,ログをxxxに書く |
| drop | 命令を無視する |
| log | error logに書く |
| log=xxx | ログをxxxに書く |
| news宛にメール送信 |
たとえば,
rmgroup:usenet@*ohio-state.edu:gnu.*:mailという設定であれば,gnu.*のニュースグループに関して,rmgroup(ニュースグループ削除)要求が,usenet@*ohio-state.eduから来たら,ローカルのnews当てにメールするということを意味します.
このファイルは,本格運用する時に,上流サーバの管理者からもらうといいでしょう.
% perl /usr/local/lib/news/bin/inncheckもちろん,上記のコマンドの実行のためには,これに先だってinnのインストールは終ってないとだめですよ.
% /usr/local/news/bin/ctlinnd reload WHAT 'REASON'ここで、WHAT にはどの設定を際読み込みさせるかを指定します。 'REASON'には、コメントなどを書きます。これは何でも構いません。 たとえば、すべての設定ファイルを読み込ませるには、
% /usr/local/news/bin/ctlinnd reload all ''というように実行します。
# cd /usr/local/etc/rc.d # cp innd.sh.sample innd.shその後rootで以下のように実行するか、マシンをrebootすれば起動します.
# /usr/local/etc/rc.d/innd.sh簡単ですね。 なお,ローカルで運用していたりで,配送先がない場合には,
ME bad_newsfeeds no feeding sitesと表示されますが,気にしなくて大丈夫です.
/usr/local/news/bin/ctlinndここでは,まず,hogehogeというニュースグループを作ってみましょう. 普通のニュースグループなら,
% /usr/local/news/bin/ctlinnd newgroup hogehoge yで作成できます.モデレータつきであれば,
% /usr/local/news/bin/ctlinnd newgroup hogehoge mで作成できます.最後のフラグが違うだけです.
削除するのなら,
% /usr/local/news/bin/ctlinnd rmgroup hogehogeだけです. これで自由にニュースグループを作ったり消したりができます.
この状態で,実際にニュースリーダなどを使って,正常に動作しているかチェックしてみましょう.
# crontab -e -u newsここではまず、以下の1行を設定します。 これは、1日のアクセスログをまとめたり不用になったニュースをexpireするプログラムです。
40 23 * * * /usr/local/news/bin/news.daily delayrm時間は好きなように設定して結構です。
次に、ニュースの配送の設定です。 以下のようにすると10分おきに配送するようになります。 もちろん、ローカルでの運用では配送先はないですから設定は不用です。
0,10,20,30,40,50 * * * * /usr/local/news/bin/nntpsendなお,これはあくまでもこちらから他のサーバへの配送時間です。 ニュースシステムでは他のサーバから自分に取り込む時間の設定はできません。 送信側の設定にゆだねられます。
さて、始めて上流サーバと接続しニュースをもらうという場合には、上流サーバの管理者からactiveというファイルをもらうと思います。 これは現在その上流サーバが扱っているニュースグループ一覧を示したファイルです。 このファイルをローカルのサーバにも反映させておかないと、いくら上流からニュースが送り込まれてきても受けとることができません。 不用なニュースグループがあったらそれを削除しておき、以下のように実行します.
% ctlinnd pause 'edit active' % cp active /usr/local/news/etc % ctlinnd reload active 'new active' % ctlinnd go 'edit active'簡単に説明すると、現在動作中のニュースシステムを一旦止め、activeファイルを置き換え、activeをニュースシステムに読み込ませシステムの動作を再開するという手順です。
ここまで設定が終れば、あとは上流サーバの管理者に頼んでニュースの配送を開始してもらって下さい。 あとは順調に動くことを期待しましょう。
なお、上流サーバと接続して本格運用を開始する時に上流サーバの管理者からもらっておくと良い(またはもらわないといけない)ファイルをまとめると以下のとおりです。
普段必要なチェックとしては以下のようなことがあげられます。