この章では、nntpd のインストール、設定、gnspool, gninews との連係について解説し ます。
適当なディレクトリに nntpd のソースを展開します。
まず、nntp.1.5.11t/common/conf.h
を編集します。特にディレクトリ関係の設
定は、gnspool での設定と矛盾しないようにしなければなりません。私は次のようにしま
した。
#define DBM #undef DBZ #define CNEWS #define GHNAME #undef UUNAME #define STAT_FILE "/usr/lib/news/mgdstats" #define NGDATE_FILE "/usr/lib/news/groupdates" #define ACTIVE_FILE "/usr/lib/news/active" #define ACCESS_FILE "/usr/lib/news/nntp_access" #define DISTRIBUTIONS_FILE "/usr/lib/news/distributions" #define NEWSGROUPS_FILE "/usr/lib/news/newsgroups" #define HISTORY_FILE "/usr/lib/news/history" #define INEWS "/usr/lib/news/inews" #define POSTER "news"
デフォルトでは dbz ライブラリを使うようになっているのを、dbm ライブラリを使うよ
うに変更しています。dbz ライブラリのある人は、そのままで構いません。変更した場合
は、Makefile
も変更します。
デフォルトでは /etc/uucpname
を参照してホストの名前を解決するようになっ
ていますから、gethostname() を使って解決するように変更しました。
編集が終ったら、make server
を実行して nntpd を生成して下さい。私のとこ
ろでは nntp.1.5.11t/server/timer.c
に変更が必要でした。124行目の
select() 関数がおかしいといわれたので、
#if 1 /* Was EXECLAN */ n = select(fileno(stdin) + 1,&readfds, (fd_set*)0, (fd_set*)0, timeout); #else
次に、root になって /usr/sbin/
に nntpd をコピーします。
/etc/inetd.conf
を修正して、nntpd が起動されるようにします。次の1行を付
け加えるか、修正して下さい。
nntp stream tcp nowait news /usr/sbin/tcpd nntpd
次に、/usr/lib/news/nntp_access
を作成します。このファイルで、nntp によ
るアクセスを許可するホストを設定しています。とりあえずは、次のような設定でよいで
しょう。
default no no localhost read post
ここまでの設定でニュースを読めるようになっているはずです。環境変数 NNTPSERVER を localhost に設定して mnews などで読んでみましょう。
読めなかった場合は、telnet localhost nntp
として、反応を見て下さい。
"Can't talk to you" といわれた場合は nntp_access
の設定が間違っています。
/var/log/messages
や /var/log/syslog
にエラーの情報が残ってい
ると思いますので、参考にして下さい。
次のような内容のスクリプト /usr/lib/news/inews
を作成します。
#!/bin/sh /usr/lib/news/bin/gninews
これだけで、投稿できるようになっているはずです。ニュースリーダーから投稿のテスト
をして下さい。すると、/var/spool/news/news.out/gn??????
というファイル
に投稿した記事がスプールされているはずです。次に、
su news -c "gnspool -py -h news.server"
gnspool で記事を投稿する場合、スプール時の From: は無視され、.gnrc の設定
を用いて次のように変更されます。
[注. gn-1.40 からスプール時の From: を使うように gnspool に強制することが出
来るようになりました。gn(1) のオプション SUBSTITUTE_HEADER についての説明を参照
してください。このオプションを適切に設定すると、後述の impost に頼らずに From:
を使い分けることができます。]
From: news@mydomain.or.jp (Hoge Hoge)
名前とドメイン名は .gnrc
の設定が使われ、gnspool を実行しているアカウン
ト (news) と組み合わせて、From: が生成されるようになっています。従って、送信者を
明示したい場合は、Sender: や Reply-To: などのヘッダを利用して下さい。
news@mydomain.or.jp が、自分とは関係ない人のメールアドレスとなって都合が悪い場合 には、環境変数 LOGINNAME が利用できます。例えば、次のようなスクリプトを用いると、
#!/bin/bash export NEWSLIB=/usr/lib/news export NEWSSPOOL=/var/spool/news export LOGINNAME=hogehoge gnrc=$NEWSLIB/.gnrc export NNTPSERVER=$(/usr/bin/awk '/^NNTPSERVER/ {print $2}' $gnrc) /usr/lib/news/bin/gnspool -py
From: hogehoge@mydomain.or.jp (Hoge Hoge)
どうしても From: を使い分けたい場合には、impost という Perl のスクリプトがありま
す。gnspool の代わりに投稿用のスクリプトとして使えば、スプールした時の From: を
使って投稿することが出来ます。最新バージョンは 0.99i で、
ftp://falcon.econ.kyoto-u.ac.jp/pub/dist/impost/ で手に入ります。
[
この項は fj.os.linux に投稿された次の記事を参考として書かれました。
実際に impost を使う手順について解説します。impost を
/usr/lib/news/bin/
にコピーして下さい。その時、先頭行の perl のパスをシ
ステムに合わせて変更し、実行許可属性を与えておきます。次に、環境設定ファイル
/usr/lib/news/.impostrc
を用意します。私は次のような内容にしました。
config: default option: -SMTPservers mail.server option: -NNTPservers news.server option: -noESMTP option: -NewsPost option: -User hogehoge option: -Name Hoge Hoge option: -NameInComment option: -Org dokoka option: -FromDomain mydomain.or.jp option: -noMsgId option: -noDate option: -noNScmpl option: -noMIMEbcc option: -noNewsCheck option: -Lines 3000 option: -JustQueuing option: -ObeyHeader option: -h config: post option: -noVerbose option: -ProcessQueue
/usr/lib/news/inews
を変更して、gninews の代わりに impost が起動される
ようにしておきます。
ニュースリーダーとして mnews を利用している場合、メッセージに Path: ヘッダが付加 されますが、impost は Path: のついているメッセージを invalid なものと見なします。 これを回避するため、impost の275行目付近の
&& !&header_value("Path")
これで準備できたはずです。テスト投稿をしてみましょう。オフラインの状態で投稿する
と、/usr/lib/news/.imqueue/
というディレクトリに記事がスプールされます。
その後、
su news -c "/usr/lib/news/bin/impost -config post"
上記の設定で impost を利用した場合、ヘッダは次のようになります。
Newsgroups: test Subject: test From: someone@myhost.mydomain.or.jp (Someone) Path: someone X-Newsreader: mnews [version 1.19] 1995-07/21(Fri) Organization: dokoka Originator: hogehoge@mydomain.or.jp (Hoge Hoge) X-Dispatcher: impost version 0.99i (Apr. 6, 1997) Lines: 1
この内、Organization:, Originator:, X-Dispatcher:, Lines: の各ヘッダが impost に よって付加されたヘッダです。From: には記事で指定した From: が使われ、Originator: によって投稿した人が確定されます。