UUCP接続への道(FreeBSD編)

Office:greg@apt.fxis.fujixerox.co.jp
Home:greg@greg.rim.or.jp
last modified 1996/06/08
現在、工事中です。
御意見/要望などがありましたら上記アドレスまで御連絡下さい。

1 始めに

 今日、私達を取り巻く環境の中に「インターネット」と言う単語が 多くなって来ています。そんな中、自分も利用/接続してみたいと考 えている人も増えて来ていると思います。

 従来は利用したい/接続したいと考えても限られた人/機関しか 利用できませんでした。しかし、今日ではIIJ等に代表されるインター ネットプロパダイバが登場し、個人でも接続できるようになりました。 これはこれで喜ばしい事ではあるのですが、接続するための敷居と言う物は NIFTYなどに代表されるパソコン通信と違ってなかなか高いようです。しかし、 それは

「接続するためのノウハウが入手しづらい」
「近くに接続経験を持った人がいない」

と言う事が原因のようなきがします。たしかにパソコン通信に比べると、 多少多くの知識を要求されるかも知れません。しかし、一つ一つの事は決して 難しい事ではありません。一つ一つこなしていけばいいのです。その先には きっと明るいインターネットへの道が開けているでしょう!


2 接続の前に

2.1 接続方法の決定まで

 では、インターネットへ接続するためのお話しにはいりましょう。 まず、インターネットへ接続する回線と方法を決定しなければなり ません。私が考えただけでも以下のようなものが考えられます。

  • 専用線による接続
    • slipによる接続
    • pppによる接続
  • 一般電話回線による接続
    • ダイアルアップslipによる接続
    • ダイアルアップpppによる接続
    • UUCPによる接続
  • ISDNによる接続
    • ダイアルアップslipによる接続
    • ダイアルアップpppによる接続
    • UUCPによる接続

 個人的にインターネットへ接続する事を前提としているので、 専用線を使うようなコストがかかる方法は取れません(お金持ち な人はトライしてください)。ということで、一般電話回線か ISDNを利用する事になります。
 次に、接続するためにどの様な方法を取るかです。私の場合、 以下のような理由でUUCP接続を選択しました。

  1. とりあえず、お金がかからない方法である事。
  2. 既存の物を利用できる事。
  3. 比較的設定が容易な事

2.2 どの様なシステムを使うか

 まず、貴方はどのようなシステムでインターネットへ接続しよう としているでしょうか?私の場合、IBM-PCの上でFreeBSD1.1.5.1を 走らせ、UUCPで接続しています。貴方のシステムが私のシステムと 違っているからといって、接続できないなんて考えないでください。 現在ではほとんどのシステムでUUCPを利用できるのです。もし 私の場合と違っている場合でも、同じような点をクリアしてゆけば 必ず接続できます。

3 下準備

 接続方法が「一般電話回線を利用したUUCP接続」と決定した所で、一つ チェックしなければなりません。それは、貴方がUUCPソフトウェアを 持っているか?と言う事です。持っているなら3.1 UUCPの入手は無駄 です。読み飛ばしてください

3.1 UUCPの入手

 もし、貴方がUUCPのUUCPソフトウェアを持っていない/持って いるUUCPソフトウェアが古い場合、できるだけ新しいものを入手 しましょう。もし貴方が使っているシステムがFreeBSDなら 3.2へ進みましょう。FreeBSDはデフォルトで Taylor UUCP 1.05が入っています。
 私がお勧めするUUCPパッケージはTaylor UUCP-1.05 *1です。なぜかと言えば、

  1. 比較的最近リリースされた物である。
  2. 割と多くの人が使っている。
  3. gプロトコル以外にも多くのプロトコルをサポートし ている。

という理由からです。
これ以外にもっと安定している物があると言う人は、それを利用 してください。

*1) MS-DOS/Mac等で接続しようとしている人はSuper ASCII等で、どの UUCPが使えるか探してみてください。きっと見付かるはずです。

 それでは、実際の入手経路です。私の知っている限り以下のような 所から持って来れるようです。

  • ftp://ftp.iij.ad.jp/
  • NIFTYのFUNIXのライブラリ

3.2 UUCP設定

 まず、貴方のマシンを現すノード名を決定してください。 このノード名はUUCPリンクの中でユニークな物になるようにして ください(できる事なら世界中でたった一つになるようにした方 が好ましい)。しかし、当面の間は適当につけても問題は無いで しょうから適当につけても構いません。
 では、実際にリンクの設定に入りましょう。リンクの設定を行 うには以下のような項目を設定しなければなりません。

  1. 設定ファイルの編集
  2. 使用するTTYポ−トの設定
  3. モデムの設定

3.2.1 設定ファイルの編集
 何はともあれ、UUCPの作業ディレクトリ/参照する ファイルを規定する設定ファイルを編集します。FreeBSD の場合、このファイルは/etc/uucpにconfigと言うファイル 名で置いてあります。見付けたらこのファイルで編集します。 まず、先程決定したノード名をこのファイルの中で設定しま す。この項目はnodenameと言う項目に設定します。書式は

nodename <貴方が決めたノード名>

です。FreeBSDを利用している場合、この項目以外に設定 する物はありません。しかし、念のために説明しておき ます。先を急ぎたい方は 次の項目へ 読み飛ばしてください。次に、UUCPがスプーリングを行う ディレクトリを設定します。NET/2リリース以降のBSDの 場合、デフォルトで/var/spool/uucpが設定されています。 この項目の書式は

spool <スプールディレクトリ>

です。さらに


などがあります。これらの項目はあまり変更する必要が 無いと考えましたので、とくに変更しません。詳しく知 りたい方はNutShellのUUCP関連をお読みください。なお、 そんな物は読みたくない方は、以下の物のノード名を変 更して御使用ください。
nodename	貴方のノード名		# The UUCP name of this system
spool		/var/spool/uucp		# The UUCP spool directory
logfile		/var/spool/uucp/Log	# The UUCP log file
statfile	/var/spool/uucp/Stats	# The UUCP statistics file
debugfile	/var/spool/uucp/Debug	# The UUCP debugging file
sysfile         /etc/uucp/sys		# Default "sys"
portfile        /etc/uucp/port		# Default "port"
dialfile        /etc/uucp/dial		# Default "dial"
dialcodefile    /etc/uucp/dialcode	# Default "dialcode"
callfile        /etc/uucp/call		# Default "call"
passwdfile      /etc/uucp/passwd	# Default "passwd"
			
3.2.2 使用するTTYポ−トの設定
 それでは、TTYポートの設定にはいりましょう。まず始 めに、モデムがつながっているポートを決定して下さい。 例では/dev/cua01を使用します。次に、ポートにつながっ ているモデムのダイアラーを決定します。今現在、普通に 販売されているモデムはhayese-ATコマンドを搭載してい ると思います。私の所の設定を以下に示します。
#
# Phisical device type
#
type modem

# Enable compression/error correction
port compress
device /dev/cua01	# 使用するTTYポート
dialer hayescom		# 使用するダイアラー
speed   57600		# 使用するデフォルトの回線速度
speed-range 2400 57600	# 使用可能な回線速度

#Disable compression/error correction
port nocompress
device /dev/cua01	# 使用するTTYポート
dialer hayes		# 使用するダイアラー
speed   57600		# 使用するデフォルトの回線速度
speed-range 2400 57600	# 使用可能な回線速度
上記の例では、物理的には一つのポートを使用して、 2つのタイプのポートを用意しています。それぞれの ポート名はcompressとnocompressです。それぞれが使用する、 TTYポートは/dev/cua01です。また、デフォルトの回線速度 と使用可能な回線速度の設定は使うモデムに合わせて下さい。 上記の例では同一のTTYポートを2種類のポートとして 扱おうとしています。これには以下のような理由があります。

  1. 最近のモデムはデータの圧縮機能を持っている ので圧縮機能の、有効/無効を切替えたい。
  2. 接続先によってはデータ圧縮を有効にした方が スピードがでる場合がある。

また、端末速度はモデムの回線速度より高速に設定して 下さい。最近のモデムはデータ圧縮/エラー訂正などの 処理を行っています。 データが圧縮されて送信して来た場合、回線速度に対して 200%から400%前後の量が転送されて来ます。 それを回線速度と同じ速度で受け取っていたのでは最高性能 の25%から50%くらいしか発揮しません。非常に無駄です。
また、エラー訂正のみを行った場合も同様です。 再送処理のオーバヘッドがありますので、出来るだけ高速に データを送って下さい。

3.2.3 モデムの設定
 次に、モデムの操作方法を設定します。以下に例を 示します。
# This is a typical Hayes modem definition.

#
# Enable compression mode
#
dialer hayescom
chat "" ATZ\r\d\c OK ATDP\T CONNECT
chat-fail BUSY
chat-fail NO\sCARRIER
complete \d\d+++\d\dATHZ\r\c
abort \d\d+++\d\dATHZ\r\c

#
# Disable compression mode
#
dialer hayes
chat "" ATZ\r\d\c OK AT%C0\\N\r\d\c OK ATDP\T CONNECT
chat-fail BUSY
chat-fail NO\sCARRIER
complete \d\d+++\d\dATHZ\r\c
abort \d\d+++\d\dATHZ\r\c
 この例では2種類のダイアラを設定しています。 2つの設定はほぼ同一の宣言を行っていますが、一点だけ 違いがあります。その違いはデータ圧縮機能の有効/無効 だけです。詳しくはモデムに付属しているマニュアルを 参照して下さい。

3.3 UUCPで接続してみる

 まず以下の事をチェックしましょう。

  1. "uuname -l"コマンドを実行した結果、 設定したノード名が表示されますか?
  2. 使いたいモデムに対応したモデムの操作方法 が記述されていますか?
  3. 接続されているポートのエントリーがありますか?

ここ以降に進みたい人はこのことをしっかりチェックしましょう。 ここの部分がしっかりしていないと後ではまり込む事になります。
 それでは、隣接サイトへ接続する設定を開始しましょう。まず、 接続するためには以下の事が分かっていなければなりません。


 もし、テストを行う接続先がとくに見付からない場合、 IIJ のUUCPアーカイブサーバを利用してみて下さい。IIJのアーカイブ サーバの接続は


で接続できます。

 隣接サイトの設定はsysファイルに行います。 IIJのアーカイブサーバへ接続する場合の設定を以下に示します。

#
# SYSTEM "iijnet" (Internet Initiative Japan) ...... UUCP archive server
#
system                  iijnet
chat                    "" \r\c gin:-BREAK-gin:-BREAK-gin:-BREAK-gin:-BREAK-gin: \d
\d\d\L
call-login              uucp
call-password           ""
time                    any
phone                   0990603781
chat-timeout            50
port                    nocompress
設定できたらiijからREADMEを取り寄せてみましょう。 取り寄せ方は以下のように行います。

uucp "iijnet!~/README" "~"

どうでしょうか?スプールにREADMEと言うファイルは転送されて来ましたか? 転送されて来ていたら、UUCPリンクは出来上がった事になります。 転送されていない場合、何らかのエラーが発生したいる事になります。
 この段階でメールの設定が出来ている場合、 貴方の手元にエラーメールが届いていると思います。 それを元に、設定をしなおして下さい。
 メールの設定が出来ていない場合、以下のようにしてもう一度試して下さい。

uucp -r "iijnet!~/README" "~"
/usr/libexec/uucp/uucico --debug chat,abnormal -s iijnet

この場合、/var/spool/uucp/Debugと言うファイルに、 エラーの発生状況などが記録されます。この情報を元に設定を見直して下さい。

注意:IIJのanonymous UUCPサービスは有料のサービスです。使いすぎに注意しましょう。利用料金は30円/1分です。

3.4 隣接サイトを追加してみる

 では、実際に隣接サイトへの定義を追加してみましょう。基本的 には前の章と同じような設定をします。 きちんと接続できていない人は前の章へ戻って 動作の確認をして下さい。
基本的には前の章で使用したエントリーをちょっとだけ修正して 使用します。以下のエントリーは私が実際に使用しているエントリー です。
system		<リモートシステム名>
alias		<リモートシステムのエイリアス>
chat		"" \r\c gin:-BREAK-gin:-BREAK-gin:-BREAK-gin:-BREAK-gin: \d\d\d\L word \P
call-login	<UUCPのユーザ名>
call-password   <UUCPのパスワード>
time		any
chat-timeout	50
command-path	/bin
commands	rmail rnews

port		V110
phone		54897613
alternate

port type	tcp
address		remote.host.or.jp

このエントリーは前の例とは違う所が7箇所あります。それらの ほとんどはnews/mail等のフィード等を行うためのものです。 ですから、そういう部分はそういうものだと深く考えないで下さい。 で、ここで重要な点は
port		V110
phone		54897613

alternate

port type	tcp
address		remote.host.or.jp
という部分です。この部分の意味は、

です。実際にどの様に動作するかと言うと。
  1. とりあえず、V110と言うポートで接続を試みる。
  2. 確保できなかった場合、第2のエントリで再挑戦。

と動きます。基本的には、各エントリは電話番号/使用するポートの 組み位を記述しておけばOKです。また、UUCP over TCPも設定して おけばPPPと共存した時に便利です。しかし、使用するPPPがUUCP ロックをしてくれないとこの手は使用できません(モデムの奪い 合いをしてしまいます)。また、この手は接続先がUUCP over TCP をサポートしていない場合は、使えません。確認してからやってみて下さい。

4 接続先の確保

4.1 大学/会社を利用する場合

工事中(誰か書いて下さい)

4.2 インターネットに接続している個人団体を利用する場合

工事中(誰か書いて下さい)

4.3 プロバダイバを利用する場合

 最近は個人向けプロバイダが乱立していますから、接続先に困る ことは無いでしょう。しかし、UUCPをサポートしている所は少ないと 思います。詳しくはInternet Users等に任せるとして、UUCPをサポート している所を上げておきます。

5 インターネットへの接続

 インターネットに接続したら、まず使いたくなるのがメール/ニュースだと思います。 この章ではメール/ニュースを立ち上げる、簡単な説明をします。 詳しくは

を御覧下さい。

5.1 メールシステムの設定

 メールの設定は、sendmailの設定を行う事にはじまり/sendmailの 設定を行う事に終ると言えます。はっきりいって、ここまでの中でこれが 一番難しいかの知れません。ハッキリ言って何も知らない人が、いきなり できる代物ではないのです。と、言いたい所ですが、最近はsendmail.cfを 簡単に生成してくれるツールが存在します。これを使えば、とっても簡単に 望みのsendmail.cfが出来上がります。このツールは以下の2種類あります。

  • sendmailのソースに付属してくるツール
  • CF-3.3と呼ばれるパッケージ

 詳細はこれらのツールに付属するREADME等を参照してもらうか、UNIXマガジンなどを 参考にしてください。
なお、このどちらのツールを使ってもポイントは同じなので、以下の点を満たす設定を行えば すぐに使えるsendmail.cfが生成されます。

ローカル宛ではないメールは上位サイトへ転送

これで完璧です。とりあえずはこれだけを行えば十分です。より詳しく知りたい方はこちらも参照して下さい。

5.2 ニュースシステムの設定

 ニュースシステムのサーバを立ち上げるに当たって、 事前に決定しておかなければならない事が1つあります。 それは、どのサーバを使用するかと言う事です。ニュースサーバは、 以下のような物があります。

  • Bnews
  • Cnews
  • INN

私の場合、以下のような理由でINNにしました。

  1. 会社のサーバがINNを使用している。
  2. 比較的新しい実装だから使ってみたい。
  3. 主要なコードがCで記述されているので動作が早そうだ。

 大した理由ではありませんが、一応そういう事です。

 では、INNを立ち上げましょう。まず、inn-1.4sec2.tar.gzを獲得して下さい。入手方法は幾つか考えられるので、以下の中から選択して下さい。

  • NiftyServのFUNIX/FINET等のライブラリからダウンロードする。
  • UnixUsersのCDROMからコピーする
  • 手近なFTPサーバからGETする。

入手できたらそれを展開します。展開か終了したら、confと言うディレクトリへ移動して下さい。このディレクトリにconfig.DISTと言うファイルが存在すると思います。 このファイルをconfig.dataと言う名前でコピーします。
このコピーしたファイルはinndの動作/システムの仕様等を定義するファイルです。 貴方のシステム/望む動作に合わせて編集して下さい。FreeBSDの場合、変更する物はほとんど無いはずです。 編集は終了したら、inndを展開したトップディレクトリに戻ってmakeして下さい。 どうですか?うまくmake出来たでしょうか?出来なかった場合、lint関係を行おうとしているはずです。Makefileを編集してlint関係を削除して下さい。 では、出来上がったものをインストールして下さい。インストールは

make install

でインストールできるはずです。

インストールが終了したら、ニューススプールに指定したディレクトリ へ行って

mkdir control

を行って下さい。また、サーバを インストールしたディレクトリで

touch newsgroups

を行って 下さい。これらの作業は必須です。 これらの作業が終了したら、

$newsdir/etc/rc.news

を実行し て下さい。これで、ニュースサーバが起動したはずです。

 うまくニュースサーバが起動できましたか?うまくできなかった 場合はSuperASCII/UNIXマガジンなどを参考にして下さい。


6 トラブルについて

 この章では接続するに当たって、いろいろと直面するトラブルの解決方法について解説します。

メールを発信したのですが、メールが送信させれません。
まず、1つ確認して下さい。

sendmail -bt

とコマンドラインから入力して下さい。sendmailのプロンプト がでた所で、

0 foo@your.domain

と入力して下さい。どのように答えて来ましたか?

#local

と言う行を含んでいた場合、自分のドメインあてのメールは正しく 認識しています。ここまでは正常です。このような行が出力されな かった場合、sendmail.cfがおかしいです。 sendmail.cfを生成する所からやり直して下さい。
次に、

0 foo@bar.hoge.hoge

と入力して下さい。

#UUCP又は#relay

と言う行を含む行が出力されたでしょうか?出力されなかった場合、 他のドメイン宛のメールが正しく処理できていません。出力された 場合、sendmail.cf自体は正しく生成されているようですから、UUCP の設定を疑って下さい。

rmail Permittion deninedというエラーが発生してメールが送信できません。
貴方のsysファイルを確認して下さい。そのシステムに対して /bin/rmailが実行可能になっていますか?なっている場合、 実行可能なコマンドを格納しているパスの設定を確認し直して下さい。

上位サイトからニュースが転送されて来たのですが、rnewsが異常終了してしまい、フィードに失敗します。
rnewsのオーナーとパーミッションを確認して下さい。デフォルトでは

-r-xr-xr-x    1 news        87445 Dec 18 23:44 /bin/rnews

等となっていると思います。これを

-r-sr-sr-x    1 root        87445 Dec 18 23:44 /bin/rnews

に直します。これを行わないとユーザIDの変更に失敗して 動作しません。