[俺日記]

qmail on Mac OS X(not Mac OS X Server) 7回目/tinydnsを設定する。 / 2003-06-18 (水)

tinydnsの設定には/usr/local/bin/tinydns-confを使います。終わり(嘘)。
tinydns-confを単独で実行すると

% /usr/local/bin/tinydns-conf
tinydns-conf: usage: tinydns-conf acct logacct /tinydns myip

なんて表示されますね。これは、

acct=tinydnsを実行するアカウント
logacct=tinydnsのログを取るアカウント
/tinydns=tinydnsが使うディレクトリ
myip=tinydnsが使うIPアドレス

です。こいつらを与えてやると、tinydns-confが最低限の設定をやってくれると言う寸法です。つーことで、

acct=tinydns
logacct=dnslog
/tinydns=/var/tinydns
ip=10.0.0.101

で設定しましょう。任意の名前で構いませんが、その場合は以下の説明を読み替えてください。その場合は、エディタにでもコピーして置換すると間違いが少ないと思います。

まずはグループとユーザの作成です。niloadというコマンドを使って、NetInfoにグループとユーザを登録します。

まずshellをroot権限で動かしましょう。

% sudo ${SHELL}

グループをNetInfoに登録します。

# niload group . <<END
tinydns:*:530:
dnslog:*:531:
END

次に、ユーザを登録します。

# niload passwd . <<END
tinydns:*:7501:530::0:0::/noexistent:/sbin/nologin
dnslog:*:7502:531::0:0::/noexistent:/sbin/nologin
END

530,531,7501,7502は任意の数字で構いませんが、他のグループ・ユーザのIDと重複しない事と、ここで同じ数字が入っているところは必ず一致させておく必要があります。

nidump passwd .

または

nidump group .

でそれぞれユーザ・グループの設定が確認できます。/etc/passwdや/etc/groupに書く必要はありませんし、書いても反映されませんのでご注意を。

登録したら、確認します。

# nidump group .|grep dns
tinydns:*:530:
dnslog:*:531:
# nidump passwd .|grep dns
tinydns:*:7501:530::0:0::/noexistent:/sbin/nologin
dnslog:*:7502:531::0:0::/noexistent:/sbin/nologin

確認できたら、

# tinydns-conf tinydns dnslog /var/tinydns 10.0.0.101

と入力します。たぶん実行自体は一瞬で終わると思います(何も表示されません)。

では/var/tinydnsに移動しましょう。

# cd /var/tinydns

/var/tinydnsの中はこんな感じ。
drwxr-sr-x 4 root wheel 136 Jun 17 10:13 env/
-rw-r--r-- 1 root wheel 11 Jun 17 10:13 env/IP
-rw-r--r-- 1 root wheel 18 Jun 17 10:13 env/ROOT
drwxr-sr-x 5 root wheel 170 Jun 17 10:13 log/
drwxr-sr-x 2 dnslog dnslog 68 Jun 17 10:13 log/main/
-rwxr-xr-x 1 root wheel 50 Jun 17 10:13 log/run*
-rw-r--r-- 1 dnslog dnslog 0 Jun 17 10:13 log/status
drwxr-sr-x 9 root wheel 306 Jun 17 10:13 root/
-rw-r--r-- 1 root wheel 44 Jun 17 10:13 root/Makefile
-rwxr-xr-x 1 root wheel 77 Jun 17 10:13 root/add-alias*
-rwxr-xr-x 1 root wheel 79 Jun 17 10:13 root/add-childns*
-rwxr-xr-x 1 root wheel 76 Jun 17 10:13 root/add-host*
-rwxr-xr-x 1 root wheel 74 Jun 17 10:13 root/add-mx*
-rwxr-xr-x 1 root wheel 74 Jun 17 10:13 root/add-ns*
-rw-r--r-- 1 root wheel 0 Jun 17 10:13 root/data
-rwxr-xr-x 1 root wheel 98 Jun 17 10:13 run*

./logはログが置かれるディレクトリです。tinydnsの場合は、中を見ることはあってもいじることはまずないので省略。ログを見るときは

# tail -f /var/tinydns/log/main/current | tai64nlocal

とするとリアルタイムで見られます。リアルタイムで見ないなら

# tai64nlocal < /var/tinydns/log/main/current | less

などとするといいでしょう。

./envの中にはenvdirコマンドによってtinydnsに渡される環境変数が入っています。ファイル名が変数名、中身がその値です。ここには二つファイルがあります。IPはtinydnsがリクエストを待ち受けるIPアドレスです。

# cat env/IP
10.0.0.101

ROOTはtinydnsを動かすときにtinydnsがchrootするディレクトリです。

# cat env/ROOT
/var/tinydns/root

こんな感じですね。とくにいじる必要はありませんが、tinydnsを動かすIPアドレスを変更するときは変更する必要があります(tinydns-confを使ったほうが楽ですね)。

./rootには最初7つファイルがあります。この中で一番大事なのは、tinydnsが提供する情報を収めたdataという名前のファイルです。./rootでmakeを実行するとMakefileにしたがって、dataからdata.cdbというファイルが作られます。
主なデータは./rootにあるadd-*スクリプトで生成することが出来ます(もちろん手動でもOKです)。dataは単なるテキストなので、viなどのエディタで直接編集することも可能ですし、sed/awk/perl/rubyなどのスクリプトで編集するのも簡単です。

ということで、さくさく登録しましょう。
なお、ネットワークの諸設定ですが、今回は以下のような構成であると仮定して行います。適当に読み替えたりエディタで置換して:-)作業してください。

IPアドレス=10.0.0.0/255.0.0.0(クラスA)
ドメイン名=dyndns.example.jp
で、登録するホストは
10.0.0.101=server.dyndns.example.jp
10.0.0.201=client1.dyndns.example.jp
10.0.0.202=client2.dyndns.example.jp
10.0.0.203=client3.dyndns.example.jp
10.0.0.204=client4.dyndns.example.jp
10.0.0.205=client5.dyndns.example.jp
の6つ。
また、

DNSコンテンツサーバ=10.0.0.101=server.dyndns.example.jp
SMTP&POPサーバ =10.0.0.101=server.dyndns.example.jp
DNSキャッシュサーバ=10.0.0.100=dnscache.dyndns.example.jp

とします。10.0.0.100はserver.dyndns.example.jpのマシンの内蔵イーサネットポートを複製したもの(次回以降解説)で、DNSキャッシュサーバとして稼動させるためにあります。

# cat <<END >data
.dyndns.example.jp::server.dyndns.example.jp:259200
+10.in-addr.arpa::server.dyndns.example.jp:259200
@dyndns.example.jp::server.dyndns.example.jp::86400
+dyndns.example.jp:10.0.0.101:86400
=server.dyndns.example.jp:10.0.0.101:86400
=dnscache.dyndns.example.jp:10.0.0.100:86400
=client1.dyndns.example.jp:10.0.0.201:86400
=client2.dyndns.example.jp:10.0.0.202:86400
=client3.dyndns.example.jp:10.0.0.203:86400
=client4.dyndns.example.jp:10.0.0.204:86400
=client5.dyndns.example.jp:10.0.0.205:86400
END

まぁこんな感じでしょうか。
なお、2行目は10.0.0.0/255.0.0.0なネットワークなので10.in-addr.arpaですが、たとえば192.168.0.0/255.255.255.0だったら
.0.168.192.in-addr.arpa〜
になります。

あとは/var/tinydns/rootでmakeを実行するだけです。

# make

dataを編集したら必ずmakeを実行しましょう。でないとせっかくの変更が反映されません。ちなみに、makeを実行するのはtinydnsを起動していても大丈夫です。

さて、設定が出来たらtinydnsを稼動してみましょう。

# ln -s /var/tinydns /service

最大5秒待つとdaemontoolsがtinydnsを起動してくれます。

# svstat /service/tinydns /service/tinydns/log
/service/tinydns: up (pid 17042) 4 seconds
/service/tinydns/log: up (pid 17041) 4 seconds

秒数が0または1でpidが毎回変わるようだと失敗しています。設定を見直しましょう。秒数が順調に増えていれば起動していると思われます。

# dig @10.0.0.101 dyndns.example.jp ns
# dig @10.0.0.101 dyndns.example.jp mx
# dig @10.0.0.101 client1.dyndns.example.jp a

ちゃんと引けてますかね?次回はDNSキャッシュサーバdnscacheを設定します。

[俺日記]

qmail on Mac OS X(not Mac OS X Server) 6回目/daemontoolsを設定する。 / 2003-06-13 (金)

前回の引きで『次はtinydnsの設定です。』なんて書いていたが、考えてみるとまだdaemontoolsが動いていないじゃないか。ということで今回はdaemontoolsを設定〜。

daemontoolsは、ものの本やwebを見ると、rc.なんとかのスクリプトを修正してー、とかなんとか書いてあるが(と言うか、/etc/inittabか/etc/rc.localがあれば、package/installの最後に実行されるpackage/runで動くように設定されているはず)、Mac OS X的にはStartupItemsに登録するのが正しい姿だろう。とか正論吐いてるふりしてrcとかinittabを知らない事を正当化する事にする。

実は、ぐるりが昔djbdnsをインストールする時にDjbdns Mac OS X How-toというページを参考にしてやったんだが、その後でインストールしたqmailでエラーが発生してしまったので結局自分で書き直したスクリプトがあるので、それを使うことにする。なお、改変・再配布も自由お好きにどうぞ。改良したらぐるりにも教えてください。なお、この日記に従ってインストールした場合、素直にsvscanbootを使うとエラーになる(表示されないけど)ので、そのためのパッチも用意したので、あわせて当てる事にする。

% cd ${HOME}/Desktop
% curl -L -O http://gururi.com/qmail/daemontools_sss.tgz
% curl -L -O http://gururi.com/qmail/svscanboot.patch
% sudo ${SHELL}
password:
# mkdir -p /Library/StartupItems
# cd /Library/StartupItems
# tar zxpvf ${HOME}/Desktop/daemontools_sss.tgz
# cd /usr/local/bin
# cat ${HOME}/Desktop/svscanboot.patch|patch
patching file svscanboot
# /Library/StartupItems/Daemontools/Daemontools start(あるいはMacを再起動する。)

1行目でDesktopに移動している。${HOME}と書いてるのは、チルダを書くとSafariで文字化けするからだ(2バイトのチルダになってしまう)。
2〜3行目はスクリプトとパッチをダウンロードしている。いずれもDesktopにダウンロードする。
4〜5行目はシェルをroot権限で動かしている。案外知らない人が多いんだよなぁ。こうすると、「rootになる」んではなく、あくまで「シェルをroot権限で動かす」ので、$HOMEやその他の環境変数ももとのユーザのままです。なので、cdだけ入力しても~rootではなく、「あなたの」ホームディレクトリに移動します。お間違い無きよう。
6〜7行目、標準状態では/Library/StartupItemsは存在しないので作成して移動している。
8行目、/Library/StartupItemsでSystemStarterScriptを展開する。
9〜11行目で/usr/local/binに移動して、svscanbootを修正している。
最後にdaemontoolsを起動する。スクリプトとディレクトリがDaemontoolsになっているのは、単に他のスクリプトにあわせただけで深い意味は無い。突っ込み入れないように>信者の人

これでdjbのプログラムをインストールする下準備は整った。次は今度こそdjbdnsの設定。でもたいした事はしない。ぐるりんちではDynamic DNSを使っている都合上、ローカルネットワーク以外からの問い合わせは想定していない内部用のDNSしか立てないのでそのつもりでよろしく。

tar zvpf daemontools_sss.tgzの結果。
drwxr-xr-x 2 root wheel 0 Jun 12 23:58 Daemontools
-rwxr-xr-x 1 root wheel 562 Jun 13 00:02 Daemontools/Daemontools
drwxr-xr-x 2 root wheel 0 Jun 12 23:58 Daemontools/Resources
drwxr-xr-x 2 root wheel 0 Jun 13 00:03 Daemontools/Resources/English.lproj
-rw-r--r-- 1 root wheel 309 Jun 13 00:05 Daemontools/Resources/English.lproj/Localizable.strings
drwxr-xr-x 2 root wheel 0 Jun 13 00:02 Daemontools/Resources/Japanese.lproj
-rw-r--r-- 1 root wheel 315 Jun 13 00:02 Daemontools/Resources/Japanese.lproj/Localizable.strings
-rw-r--r-- 1 root wheel 340 Jun 12 10:42 Daemontools/StartupParameters.plist

[変更] .Macのアドレスを自鯖に。curlに-Lオプション(302に追随する)を追加。


[俺日記]

ありえない日々2 / 2003-06-09 (月)

今日は篠原さんのラジオの日だ!と思っていたら今日はおやすみ......ショボーン....
#そういや先週「次は6/15」って言ってた気がする。

[俺日記]

あやや / 2003-05-31 (土)

OMEあぷでとしたら自分のソフトが動かなくなっちゃったよ。どうすべー。

[俺日記]

震度5弱 / 2003-05-26 (月)

揺れた揺れた。食器棚が倒れなくて良かったー。

[俺日記]

qmail on Mac OS X(not Mac OS X Server) 5回目/djbdnsをインストールしてみる。 / 2003-05-26 (月)

・djbdns
http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

例によって1行モード。そろそろ面倒くさくなって来たぞ(笑)

% curl -O http://cr.yp.to/djbdns/djbdns-1.05.tar.gz && tar zxvf djbdns-1.05.tar.gz && cd djbdns-1.05 && sudo make setup check

順番にやると以下のようになります。

% curl -O http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
% tar zxvf djbdns-1.05.tar.gz
% cd djbdns-1.05
% sudo make setup check

/usr/local/bin以下にインストールされます。これの他に、/etc/dnsroots.globalもインストールされているはずです。

おまけ:
ls -lrtvF /usr/local/bin /etc/dnsroots.globalした結果。

/usr/local/bin:
-rwxr-xr-x 1 root wheel 22436 May 26 16:47 dnscache-conf*
-rwxr-xr-x 1 root wheel 18124 May 26 16:47 walldns-conf*
-rwxr-xr-x 1 root wheel 22220 May 26 16:47 tinydns-conf*
-rwxr-xr-x 1 root wheel 22224 May 26 16:47 rbldns-conf*
-rwxr-xr-x 1 root wheel 18124 May 26 16:47 pickdns-conf*
-rwxr-xr-x 1 root wheel 22224 May 26 16:47 axfrdns-conf*
-rwxr-xr-x 1 root wheel 59860 May 26 16:47 dnscache*
-rwxr-xr-x 1 root wheel 34956 May 26 16:47 tinydns*
-rwxr-xr-x 1 root wheel 26448 May 26 16:47 walldns*
-rwxr-xr-x 1 root wheel 30728 May 26 16:47 rbldns*
-rwxr-xr-x 1 root wheel 30832 May 26 16:47 pickdns*
-rwxr-xr-x 1 root wheel 34592 May 26 16:47 tinydns-get*
-rwxr-xr-x 1 root wheel 38976 May 26 16:47 axfrdns*
-rwxr-xr-x 1 root wheel 26348 May 26 16:47 tinydns-edit*
-rwxr-xr-x 1 root wheel 30420 May 26 16:47 tinydns-data*
-rwxr-xr-x 1 root wheel 22192 May 26 16:47 rbldns-data*
-rwxr-xr-x 1 root wheel 26288 May 26 16:47 pickdns-data*
-rwxr-xr-x 1 root wheel 30668 May 26 16:47 dnsip*
-rwxr-xr-x 1 root wheel 30440 May 26 16:47 axfr-get*
-rwxr-xr-x 1 root wheel 30668 May 26 16:47 dnsname*
-rwxr-xr-x 1 root wheel 34800 May 26 16:47 dnsipq*
-rwxr-xr-x 1 root wheel 30664 May 26 16:47 dnstxt*
-rwxr-xr-x 1 root wheel 30668 May 26 16:47 dnsmx*
-rwxr-xr-x 1 root wheel 13772 May 26 16:47 random-ip*
-rwxr-xr-x 1 root wheel 34844 May 26 16:47 dnsfilter*
-rwxr-xr-x 1 root wheel 34764 May 26 16:47 dnsqr*
-rwxr-xr-x 1 root wheel 38900 May 26 16:47 dnsq*
-rwxr-xr-x 1 root wheel 1007 May 26 16:47 dnstracesort*
-rwxr-xr-x 1 root wheel 47092 May 26 16:47 dnstrace*

/etc:
-rw-r--r-- 1 root wheel 164 May 26 16:47 /etc/dnsroots.global

次はtinydnsの設定です。

[俺日記]

qmail on Mac OS X(not Mac OS X Server) 4回目/daemontoolsをインストールしてみる。 / 2003-05-26 (月)

・daemontools
次はdaemontoolsを入れまーす。こいつは/package hierarchy(slash package hierarchy)というファイルシステムレイアウトを採用していますが、無視します:-)。/package hierarchy使ってるのこいつだけなんで......。ちなみに、/package hierarchyってのは、コマンドは/packageにインストールし、コマンドのシンボリックリンクを/commandと/usr/local/binにも作るって感じになってます。まぁそいつを受け入れてもいいんだけど、敢えて無視。

さて、早速daemontoolsをダウンロード。

http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

例によって1行モードで。sudoは最後だけね。任意のディレクトリでおけー。sudoが最後だけなのは、/や/usr/local/binに書き込み権限を持たないユーザでやると、/commandとか/usr/local/binの中に作られるはずのシンボリックリンクとかが作られないから。それだけ。

% curl -O http://cr.yp.to/daemontools/daemontools-0.76.tar.gz && tar zxvf daemontools-0.76.tar.gz && cd admin/daemontools-0.76 && package/install ; sudo cp command/* /usr/local/bin

本当なら作業自体を/packageでやるんで、package/installまでで、コンパイルが行われて/commandと/usr/local/binに/package/admin/daemontools-0.76/command/*へのシンボリックリンクが作られるはずです。しかし、/に書き込み権限が無いユーザで作業を行うと、コンパイルまでは出来ますが、/commandおよびシンボリックリンクの作成が出来ないため、command以下に出来たコマンドをsudoで/usr/local/binにインストールしている訳です。

順番にやるとこんな感じか。

% curl -O http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
% tar zxvf daemontools-0.76.tar.gz
% cd admin/daemontools-0.76
% package/install
% sudo cp command/* /usr/local/bin

おまけ:
ls -lrtvF /usr/local/binした結果。

-rwxr-xr-x 1 root wheel 22236 May 26 15:17 envdir*
-rwxr-xr-x 1 root wheel 13720 May 26 15:17 tai64n*
-rwxr-xr-x 1 root wheel 18056 May 26 15:17 svstat*
-r-xr-xr-x 1 root wheel 740 May 26 15:17 svscanboot*
-rwxr-xr-x 1 root wheel 22340 May 26 15:17 svscan*
-rwxr-xr-x 1 root wheel 17880 May 26 15:17 svok*
-rwxr-xr-x 1 root wheel 18048 May 26 15:17 svc*
-rwxr-xr-x 1 root wheel 22596 May 26 15:17 supervise*
-rwxr-xr-x 1 root wheel 22068 May 26 15:17 softlimit*
-rwxr-xr-x 1 root wheel 18028 May 26 15:17 setuidgid*
-rwxr-xr-x 1 root wheel 22064 May 26 15:17 setlock*
-rwxr-xr-x 1 root wheel 9552 May 26 15:17 readproctitle*
-rwxr-xr-x 1 root wheel 17920 May 26 15:17 pgrphack*
-rwxr-xr-x 1 root wheel 31048 May 26 15:17 multilog*
-rwxr-xr-x 1 root wheel 13740 May 26 15:17 tai64nlocal*
-rwxr-xr-x 1 root wheel 18076 May 26 15:17 fghack*
-rwxr-xr-x 1 root wheel 22028 May 26 15:17 envuidgid*

出来たかな?次はtinydnsをインストールします。

[俺日記]

qmail on Mac OS X(not Mac OS X Server) 3回目/tcpserverをインストールしてみる。 / 2003-05-25 (日)

んじゃ行きますか。Terminalでの作業がメインになる(って言うかほぼ100%Terminalでの作業な)のでMacOSな人たちは覚悟完了しておくように。
#そんな難しくないけどな。つか決まったコマンド入力するだけなんだが。
なお、管理者権限とDeveloper Toolsが必要になるので、適宜ダウンロード・インストールの事。

・tcpserver
正しく(?)はucspi-tcpと言うらしい。ucspi-tcpなんて名前は覚えられないので(笑)、皆tcpserverと呼んでいるようですが。ともあれ、tcpserverは以下のURLにあります。

http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

#しかし、
#Last-Modified: Sat, 18 Mar 2000 15:21:39 GMT
#ってすごいなぁ......3年以上バージョンアップが不要だってことか。

で、1行で済ませようモードの場合。
curl http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz| tar zxvf - && cd ucspi-tcp-0.88 && make && sudo make setup check

これだと不安をおぼえる人向けに以下説明。
まずTerminalでダウンロード&展開。

% curl http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz| tar zxvf -

手抜きだな(笑)。アーカイブも残しておきたければ、

% curl -O http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
% tar zxvf ucspi-tcp-0.88.tar.gz

ですな。curlはデフォルトで/usr/bin/curlにあるはずですので、PATHを通しておきましょう。たぶんデフォルトで通っているはずです。curl: Command not found.などと表示される場合は/usr/bin/curlと指定してみましょう。

アーカイブが展開出来たらmakeしてインストールするだけです。簡単ですな。ただ、ふつーのUN*Xのプログラムと違って、./configure && make && make installじゃありません。この辺嫌われる理由なのか(笑)>DJB

% cd ucspi-tcp-0.88
% make
% sudo make setup check

エラーが出なければ、これで/usr/local/binにtcpserverと関連ファイルがインストールされたはずです。なお、インストール先を変更したい場合は、makeする前にconf-homeを編集しましょう。デフォルトでは/usr/localと書いてあります。ここに書いてあるディレクトリの下にbinが作られ、そこにインストールされる訳です。

tcpserverのインストールはこれでおしまい。

おまけ:
ls -lrtvF /usr/local/binした結果。

-rwxr-xr-x 1 root wheel 51836 May 25 16:06 tcpserver*
-rwxr-xr-x 1 root wheel 22144 May 25 16:06 tcprulescheck*
-rwxr-xr-x 1 root wheel 22160 May 25 16:06 tcprules*
-rwxr-xr-x 1 root wheel 17880 May 25 16:06 argv0*
-rwxr-xr-x 1 root wheel 43184 May 25 16:06 tcpclient*
-rwxr-xr-x 1 root wheel 22348 May 25 16:06 recordio*
-rwxr-xr-x 1 root wheel 157 May 25 16:06 who@*
-rwxr-xr-x 1 root wheel 287 May 25 16:06 http@*
-rwxr-xr-x 1 root wheel 203 May 25 16:06 finger@*
-rwxr-xr-x 1 root wheel 157 May 25 16:06 date@*
-rwxr-xr-x 1 root wheel 143 May 25 16:06 tcpcat*
-rwxr-xr-x 1 root wheel 18000 May 25 16:06 mconnect-io*
-rwxr-xr-x 1 root wheel 149 May 25 16:06 mconnect*
-rwxr-xr-x 1 root wheel 22308 May 25 16:06 fixcrio*
-rwxr-xr-x 1 root wheel 13684 May 25 16:06 delcr*
-rwxr-xr-x 1 root wheel 13684 May 25 16:06 addcr*
-rwxr-xr-x 1 root wheel 39000 May 25 16:06 rblsmtpd*

出来たかな?次はdaemontoolsです。

[俺日記]

がーん / 2003-05-24 (土)

~/Desktopと~/Documents/[0-9A-C]*消しちゃったよ..........(泣)
つまり、AppleScript(昔の)も消えた、と。これはバックアップあるけどな。
しかしそれより書きかけのqmailのテキストも~/Desktopとともに
事象地平の彼方へ.........(泣)

[俺日記]

qmail on Mac OS X(not Mac OS X Server) 2回目 / 2003-05-24 (土)

で、qmailを運用するのにおいらが使ってるその他のDJBなツールたちの話。

まぁdjbdnsは無くてもいいわけなんだけど、おいらはメールサーバにDNScacheサーバと家内ネームサーバもやらせてるので入れてます。家ん中はRendezvous対応のマシンだけじゃないからね。

qmailはDJBのサイトじゃなくってAppleのサイトで落とせるパッケージを使います。こいつはMac OS Xでコンパイル出来るようにパッチが当たっていて、makeし直すのもらくちんなのでこれ使います。

で、UN*Xな人は何が何をするものかてーのはお分かりと思いますが、Macな人にはどれが何をするのやらさっぱわからんと思うので、一応解説(モドキ)をしておきますね。

tcpserverってのは、一定のルールに基づいて、あるプログラムに対する外部からのアクセス許可/不許可、挙動の制御を行うプログラムです。面白いのは任意のプログラムを任意のポートで待ち受けさせる事が出来る、という点でしょうか。

tcpserver 0 8000 /usr/bin/ruby

とかしちゃうと8000番でrubyが待ち受け、とかも出来ます(笑)。TCPWrapperでも似た様な事が出来ますね。

daemontoolsはデーモンの監視・管理を行うプログラム。/service(変更可能)以下にあるディレクトリを監視して、そこにあるデーモンが落ちてたりしたら再起動してくれます。特定のデーモンを止めたり状態を表示したりと言う事も出来ます。また、取りこぼしの無いログを取る事が出来る、というのもウリのようです。

djbdnsはネームサーバ(だけじゃないけど)ね。ネームサーバには他にBINDつーのがありますが(つかMac OS Xにも入ってるみたいだけど)、djbdnsはネームサーバとキャッシュサーバが分離されてます。ネームサーバってのは、あるネットワークのIPアドレスとドメイン名の関係を管理しているサーバです。自分の管理しているホスト以外の情報は知りませんし答えません(訊いても答えられません)。一方キャッシュサーバは、クライアントからの要求に応じてネームサーバに問い合わせを行います。そしてその結果を返すと同時に、文字どおりキャッシュしておき、あとで同じ問い合わせが来た時に高速に返事が出来るようにするサーバです。このネームサーバとキャッシュサーバは動作は似ていますが、このように役目は違います。普段私たちがパソコンのネットワーク設定で入力しているDNSサーバってのは後者です。しかし、両方の役目を1台にやらせている事も多いようです。

ってことで、次回はまずこいつらをインストールします。