UUCP over TCP/IPの設定
特に指定がなければrootの権限で作業します。
1 パッケージの導入
CD-ROMのcontrib/Networkにあります。
installpkgやpkgtoolでインストールして下さい。
2 設定ファイル
/usr/lib/uucp/taylor_configにあります。
sys port dialの3つがありますが、必要なのはsysとportのみです。
まず、必要な情報をまとめておきましょう。
以下の前提で設定します。
接続先のuucpサーバ名:server
newsfeedsのホスト名:server.himitu.or.jp
接続先のフルドメイン名:server.himitu.or.jp
こちらのマシン名:je4smq
ユーザ名:maachan
パスワード:himitu
発呼時間:深夜2時14分
まずはsysです。
接続先に関する内容を書きます。
system server.himitu.or.jp
myname je4smq
time Any
port type tcp
address server.himitu.or.jp
protocol t
chat ogin:--ogin: maachan word: himitu
chat-timeout 20
send-request true
remote-send /usr/spool/uucppublic
local-receive /
remote-receive /usr/spool/uucppublic
Commands /usr/bin/rmail /usr/bin/smail /usr/local/news/bin/rnews
次にportです。
モデムを直接制御する場合のコマンドセット(dialにある)を指定するのですが、
TCP/IPでは以下の内容だけです。
port tcp
type tcp
接続先によっては
service telnet
も必要かも知れません。
3 接続試験
ユーザuucpになります。必ず事前にsuでrootの権限を得てから,
su uucp
以下のコマンドで接続を行います。
自動発呼ではない場合,既にダイアルアップ接続が完了している状態で行って下さい。
/usr/lib/uucp/uucico -r1 -x9 -s server
すぐにプロンプトに戻ると思いますが、バックグランドで実行されています。
-r1はクライアント側を示すお約束で必ず付けます。
-x9はログを残す設定です。9がレベルで多いほど詳しく残ります。
ログは/var/log/uucp/.Admin/audit.localに出来ます。
試験時はログ表示専用のktermを開いてtail -fで表示しっぱなしにしておくと良いでしょう。
-s serverがマシン名serverへ接続せよという意味です。
uustat -mで接続状態が表示できます。
TALKINGが通信中、FAILDが失敗、SUCCESSFULが成功です。
通信に失敗すると、uucicoをしても接続しにいきません。
/var/spool/uucp/.Status/接続先のuucpサーバ名というファイルがあるので、catで内容を見た上で削除するとロックが解除されて接続できるようになります。
4 ニュースを送る設定
/usr/local/news/etc/newsfeedsへ接続先の追加をします。
行頭はマシン名です。
server.himitu.or.jp/server.himitu.or.jp:*,!fj.*,!tnn.*,!junk,!japan.*,!local.*,!control*:Tf,Wnb:
行の最後のTf,WmbはNNTPとは違うので注意してください。
次に/var/spool/cron/crontabs/newsにsend-uucpを記述します
送るべきニュースを圧縮してuucpのqueueへ置く処理です。
newsの権限で実行します。
必ずuucicoを動かす前に一度は必要です。
何度実行してもかまいませんが、実行時点で未送信のニュースをqueueするため、実行頻度が高い場合は小さいqueueがたくさん作られる結果になります。
13 2 * * * /usr/local/news/bin/send-uucp server.himitu.or.jp
最後に/var/spool/cron/crontabs/uucpにuucicoをuucpの権限で定期的に実行するよう記述します。
14 2 * * * /usr/lib/uucp/uucico -r1 -s server.himitu.or.jp
これで完成です。
5 便利な手段
4で示した方法は教科書的です。
自動発呼が出来ない場合は一連の操作をシェルスクリプトにすると良いでしょう。
ppp-onで発呼→send-uucp→uucico→ppp-offで切断
server:
#!/bin/sh
ppp-on
sleep 60
/bin/su - news -C /usr/local/news/bin/send-uucp server.himitu.or.jp
/bin/su - uucp -C /usr/lib/uucp/uuc
sleep 10
ppp-off
uuc:
#!/bin/sh
/usr/lib/uucp/uucico -r1 -s server.himitu.or.jp
send-uucpはnewsの権限で実行するため、suコマンドを使用しています。
uucicoはuucpの権限で実行しますが、suコマンドから呼んでも正しく動かないため、uucicoコマンドのみを記述したシェルスクリプトをsuコマンドから呼ぶことで解決します。
これで、/var/spool/cron/crontabs/rootに
14 2 * * * /usr/lib/uucp/server
だけで済みます。