◇サーバー構築 〜tcpserverから起動するソフト〜

元は1ページの長い文章でしたので、文章が続かない場合はメニューに戻って頭から読んで下さい。

○tcpserverを使う

tcpwrapperの代わりになるものです。
ucspi-tcp-0.88.tar.gzを探して来て、インストールして下さい。
え? inetdを止めているのにどうするのかって? 自分から他のサーバへの FTPは問題ありませんよ。

> tar zxf ucspi-tcp-0.88.tar.gz
> cd ucspi-tcp-0.88
> make
> make setup check

○daemontoolsを使う

CDイメージマウントツールでは無くて、tcpserverを安定稼働させるのに優れているツールです。
daemontools-0.70.tar.gzを探してきて、インストールして下さい。

> tar zxf daemontools-0.70.tar.gz
> cd daemontools-0.70
> make
> make setup check

それから、ルートに /serviceディレクトリを生成して、起動させます。

> mkdir /service
> /usr/local/bin/svscan /service &

更に、これからユーザーを追加するグループも生成しておく。

> pw groupadd nofiles

○telnetを tcpserver起動する

これは必要であれば行って下さい。
予め、ログ取得用ユーザを作成してから、/serviceディレクトリ以下に設定を行います。

> pw useradd telnetd -g nofiles -d /service/telnetd -s /nonexistent
> cd /service
> mkdir .telnetd
> chmod +t .telnetd
> cd .telnetd
> mkdir log
> chown telnetd log

次に、telnetデーモン起動スクリプトを記述

#!/bin/sh
/usr/local/bin/tcpserver -RHv -l0 -c 3 -x ./telnet.cdb 0 telnet /usr/libexec/telnetd 2>&1

これを /service/.telnetd/runと言うファイル名で保存する。

> cd /service/.telnetd
> chmod 755 run

次に、ログ出力デーモン起動スクリプトを記述

#!/bin/sh
exec /usr/local/bin/setuidgid telnetd multilog t s5000000 n10 ./main

これを /service/.telnetd/log/runと言うファイル名で保存する

> cd /service/.telnetd/log
> chmod 755 run

次に、telnetを許可する IPを生成する。

IPアドレス:allow
IPアドレス:allow
IPアドレス:allow
:deny

このように IPアドレスを列挙した telnet.allowファイル(ファイル名称は何でも良い)を作成する。
それを tcprulesコマンドにて DB化する。

> cd /service/.telnetd
> /usr/local/bin/tcprules telnet.cdb telnet.tmp < telnet.allow

さて、ここからが一発勝負です。
うまくいかなかったら、/serviced/.telnetdディレクトリを削除してやり直した方が早いです。

> cd /service
> mv .telnetd telnetd

○FTPを tcpserver起動する

これは普通は必要でしょう。
手順は telnetとほぼ同じです。

予め、ログ取得用ユーザを作成してから、/serviceディレクトリ以下に設定を行います。

> pw useradd ftpd -g nofiles -d /service/ftpd -s /nonexistent
> cd /service
> mkdir .ftpd
> chmod +t .ftpd
> cd .ftpd
> mkdir log
> chown ftpd log

次に、ftpデーモン起動スクリプトを記述

#!/bin/sh
/usr/local/bin/tcpserver -RHv -l0 -c 3 -x ./ftp.cdb 0 ftp /usr/libexec/ftpd -l 2>&1

これを /service/.ftpd/runと言うファイル名で保存する。

> cd /service/.ftpd
> chmod 755 run

次に、ログ出力デーモン起動スクリプトを記述

#!/bin/sh
exec /usr/local/bin/setuidgid ftpd multilog t s5000000 n10 ./main

これを /service/.telnetd/log/runと言うファイル名で保存する

> cd /service/.telnetd/log
> chmod 755 run

次に、ftpを許可する IPを生成する。

IPアドレス:allow
IPアドレス:allow
IPアドレス:allow
:deny

このように IPアドレスを列挙した ftp.allowファイル(ファイル名称は何でも良い)を作成する。
それを tcprulesコマンドにて DB化する。

> cd /service/.ftpd
> /usr/local/bin/tcprules ftp.cdb ftp.tmp < ftp.allow

さて、ここからが一発勝負です。
うまくいかなかったら、/serviced/.ftpdディレクトリを削除してやり直した方が早いです。

> cd /service
> mv .ftpd ftpd

○qmailをインストールする

メールサーバーを起動させますが、sendmailは使いません。
10年以上もセキュリティホールを放置するようなツールを使うのは、生理的に受け付けません。
そこで、作者自身がセキュリティホールは無いと言う qmailを使う事にします。

portsからインストールを行います。

> cd /usr/ports/mail/qmail
> make enable-qmail

※enable-qmailオプションを付ける事で、OSが sendmailを使っていた部分を全て qmailに置き換えてくれます。

ここから先を説明する前に、少し説明を加えます。
sendmailはそれ単体で全ての事をこなしてくれますが、qmailは違います。
・qmail-smtpd:メールを受信する時に必要
・qmail-pop3d:メールボックスからメールを取り出す時に必要
・qmail-start:その他全てを行う為に必要
の3つのデーモンに分かれています。
1つづつ設定していきましょう。

・qmail-startを tcpserver起動する

手順は telnetとほぼ同じです。

予め、ログ取得用ユーザを作成してから、/serviceディレクトリ以下に設定を行います。
qmailには様々なユーザーが既に生成されており、区別する為に、後ろに logと付けてみました。

> pw useradd qmaillog -g nofiles -d /service/qmaild -s /nonexistent
> cd /service
> mkdir .qmaild
> chmod +t .qmaild
> cd .qmaild
> mkdir log
> chown qmaillog log

次に、qmail-startデーモン起動スクリプトを記述

#!/bin/sh
PATH=/var/qmail/bin
/var/qmail/bin/qmail-start ./Maildir/

これを /service/.qmaild/runと言うファイル名で保存する。

> cd /service/.qmaild
> chmod 755 run

次に、ログ出力デーモン起動スクリプトを記述

#!/bin/sh
exec /usr/local/bin/setuidgid qmaillog multilog t s5000000 n10 ./main

これを /service/.qmaild/log/runと言うファイル名で保存する

> cd /service/.qmaild/log
> chmod 755 run

さて、ここからが一発勝負です。
うまくいかなかったら、/serviced/.qmaildディレクトリを削除してやり直した方が早いです。

> cd /service
> mv .qmaild qmaild

・メール送信実験

ちゃんと動いているかをチェックしてみましょう。
sendmailと置き換えインストールしているはずと言うのもチェックする為に、以下のコマンドでチェックしてみます。

> echo test|mail -s"test" 「メールアドレス」

これでメールが届けば、OKでしょう。

・qmail-smtpdを tcpserver起動する

予め、ログ取得用ユーザを作成してから、/serviceディレクトリ以下に設定を行います。

> pw useradd smtplog -g nofiles -d /service/smtpd -s /nonexistent
> cd /service
> mkdir .smtpd
> chmod +t .smtpd
> cd .smtpd
> mkdir log
> chown smtplog log

次に、qmail-smtpデーモン起動スクリプトを記述

#!/bin/sh
/usr/local/bin/tcpserver -RHv -l0 -c 3 -x ./smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

これを /service/.smtpd/runと言うファイル名で保存する。

> cd /service/.smtpd
> chmod 755 run

次に、ログ出力デーモン起動スクリプトを記述

#!/bin/sh
exec /usr/local/bin/setuidgid smtplog multilog t s5000000 n10 ./main

これを /service/.smtpd/log/runと言うファイル名で保存する

> cd /service/.smtpd/log
> chmod 755 run

次に、smtp(メール送信)を許可する IPを生成する。

IPアドレス:allow,RELAYCLIENT=//
IPアドレス:allow,RELAYCLIENT=//
IPアドレス:allow,RELAYCLIENT=//

このように IPアドレスを列挙した smtp.allowファイル(ファイル名称は何でも良い)を作成する。
後ろに全てのリレーションを許可する RELAYCLIENT=//を付ける必要があります。
また、最後に denyを付けてはいけません。付けると許可した IPからのメールしか受信できなくなります(意図的にそうするのも良い)
それを tcprulesコマンドにて DB化する。

> cd /service/.smtpd
> /usr/local/bin/tcprules smtp.cdb smtp.tmp < smtp.allow

さて、ここからが一発勝負です。
うまくいかなかったら、/serviced/.smtpディレクトリを削除してやり直した方が早いです。

> cd /service
> mv .smtp smtp

・メール送信実験

メールソフトにサーバーのドメイン(IPも可)を設定して、自分宛に送信してみましょう。

・メール受信実験

qmailは(と言うよりメールサーバは)非常に複雑な設定が必要です。
ここでは、テストと言うことで、「ユーザーアカウント」@「サーバードメイン」のメール受信設定を行ってみます。

qmailの設定ファイルは、/var/qmail/controlです。
その中には、予め様々な設定が行われていますが、とりあえず無視します。
メールを受信する為に必要な設定は2点です。
1つは、/var/qmail/control/rcpthostsにサーバードメインが記述されていること
もう1つは、ユーザーディレクトリにメールボックスが作成されていること
です。

/var/qmail/control/rcpthostsをエディタであけて、サーバードメインを追記して下さい。
ここに記述されたドメインのメール(メアドの@より後ろね)を受信します。
設定が完了したら、以下のコマンドで反映させて下さい。

> /usr/local/bin/svc -t /service/smtpd

次にメールボックスを作成します。
例えば、nanashiアカウント用のメールボックスを作成するとします。

> cd /home/nanashi
> echo ./Maildir/ > .qmail
> /var/qmail/bin/maildirmake ./Maildir
> chown nanashi qmail
> chown -R nanashi Maildir

他のサーバからメールを送信してみて、/home/nanashi/Maildir/newディレクトリに届けば OKです。

・qmail-pop3dを tcpserver起動する

その前に checkpasswordと言うツールをインストールします。
簡単に portsから入れましょう。
> cd /usr/ports/security/checkpassword
> make install


予め、ログ取得用ユーザを作成してから、/serviceディレクトリ以下に設定を行います。

> pw useradd pop3log -g nofiles -d /service/pop3d -s /nonexistent
> cd /service
> mkdir .pop3d
> chmod +t .pop3d
> cd .pop3d
> mkdir log
> chown pop3log log

次に、pop3dデーモン起動スクリプトを記述

#!/bin/sh
/usr/local/bin/tcpserver -RHv -l0 -c 3 -x ./pop.cdb 0 pop3 /var/qmail/bin/qmail-popup mail.yun.cup.com checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

これを /service/.pop3d/runと言うファイル名で保存する。

> cd /service/.pop3d
> chmod 755 run

次に、ログ出力デーモン起動スクリプトを記述

#!/bin/sh
exec /usr/local/bin/setuidgid pop3log multilog t s5000000 n10 ./main

これを /service/.pop3d/log/runと言うファイル名で保存する

> cd /service/.pop3d/log
> chmod 755 run

次に、popを許可する IPを生成する。

IPアドレス:allow
IPアドレス:allow
IPアドレス:allow
:deny

このように IPアドレスを列挙した pop3.allowファイル(ファイル名称は何でも良い)を作成する。
それを tcprulesコマンドにて DB化する。

> cd /service/.pop3d
> /usr/local/bin/tcprules pop3.cdb pop3.tmp < pop3.allow

さて、ここからが一発勝負です。
うまくいかなかったら、/serviced/.telnetdディレクトリを削除してやり直した方が早いです。

> cd /service
> mv .pop3d pop3d

・メール受信実験

メールソフトにサーバーのドメイン(IPも可)を設定して、メール受信してみましょう。
先程のテストメールが取得出来れば OKです。





トップメニュー読み物サーバー構築メニュー