[daemontoolsのインストール]
                daemontoolsは、D.J.Bernstein氏によって作成された各種デーモンの
                起動管理及びログ収集を行うツール群です。
                /usr/local/src以下に
                daemontools-***.tar.gz
                がダウンロードされていると思いますので、展開しインストールを行いましょう。
                ダウンロードされたファイルが、daemontools-0.70.tar.gzである場合
                # cd /usr/local/src
                # tar zxvf daemontools-***.tar.gz
                # cd daemontools-***
                # make
                # make setup check
                でインストールは完了です。
                ダウンロードされたファイルがdaemontools-0.76.tar.gzである場合、
                # cd /usr/local/src
                # tar zxvf daemontools-***.tar.gz
                # cd admin/daemontools-***
                # package/install
                
          でインストールは完了です。
          [Redhat Linux 9の場合](※必要ない人は読み飛ばしてください)
          Redhat Linux 9では、glibcのアップグレードに伴い、そのままではコンパイルできなくなっています。
          daemontools-0.76の場合、解凍したdaemontools-***内のsrcディレクトリに移動し、その中にあるerror.hを開き、ファイル先頭の次の部分を表示してください。
          /*---
          #ifndef ERROR_H
          #define ERROR_H
          extern int errno;
          (以下省略)
          ---*/
          上記ファイル中
          extern int errno
          の部分のせいでエラーが起きています。
          そこで、上記ファイルextern int errno;の部分を次のように書き換えてください
          /*---
          #ifndef ERROR_H
          #define ERROR_H
          #include <errno.h>
          (以下省略)
          ---*/
          以上の修正が終わったら、daemontools-***ディレクトリに戻り、インストールを行ってください。
          以上の作業をすることにより、Redhat Linux9でもインストールが可能になります。
          
          daemontoolsのバージョンが0.70である場合
                # ./rts > rts.out
                # cmp rts.out rts.exp 
                でテストを行います。何も出力されなければインストールは成功です。
                バージョンが0.76の場合、上記コマンドがないようですので
                インストール時に上記コマンドが実行されている気がします。
                更に、上記に加えタイムスタンプの確認を行います。
                下記コマンドを実行してください。
                0.76では、commandというディレクトリに移動すれば下記コマンドは存在するはずです。
                出力の左と右で時間が同じであれば問題ありません。 
                # date | ./tai64n | ./tai64nlocal
                # date | sh -c './multilog t e 2>&1' | ./tai64nlocal 
                
                0.70では、svscan用にディレクトリを作成する必要があります。
                # mkdir /service
                # chmod 755 /service 
                0.76ではインストールの時点で自動作成されるようです。
                上記まで作業が進んだらsvscanを起動するための起動スクリプトを作ってみましょう。
                まずはLINUXの場合です。
                [LINUXの場合]
                
          LINUXの場合には/etc/rc.d/init.dの下にsvscanという起動スクリプトを作りましょう。
          (daemontools-0.76の場合、自動的に起動されるので、このファイルを作る必要はありません。)
                スクリプトの内容は以下のようにします。
                 
                 
                  #!/bin/sh # # svscan Start svscan. 
                   # CopyRight: TAKIZAWA Takashi
                   # chkconfig: 345 99 50
                   # description: svscan starts and monitors a 
                    collection of services. 
                  # see http://cr.yp.to/daemontools.html 
                  # processname: svscan
                   # pidfile: /var/run/svscan.pid 
                  # service directory: /service
                   # Source function library.
                   . /etc/rc.d/init.d/functions
                   export PATH="/usr/local/bin:$PATH" 
                  SVDIR=/service 
                  case "$1" in
                   
                   
                     start)
                     
                     
                       echo -n "Starting svscan: "
                       exec env - PATH="/usr/local/bin:/usr/bin:/bin" 
                        SVDIR="$SVDIR" \
                       csh -cf 'svscan $SVDIR &; echo $! > /var/run/svscan.pid'
                       RETVAL=$? # Sorry, I don't catch exit code 
                        of svscan.
                       echo
                       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
                       ;;
                    
                     stop)
                     
                     
                      echo -n "Stopping svscan: "
                       killproc svscan
                       RETVAL=$?
                       svc -dx $SVDIR/*
                       svc -dx $SVDIR/*/log
                       echo
                       [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/svscan
                       ;;
                    
                     status)
                     
                     
                       status svscan
                       RETVAL=$?
                       ;;
                    
                     restart|reload)
                     
                     
                       $0 stop 
                      $0 start 
                      RETVAL=$?
                       ;;
                    
                     *)
                     
                     
                       echo "Usage: $0 {start|stop|status|restart|reload}" 
                      
                      exit 1 
                    
                  
                  esac
                   exit $RETVAL
                
                上記のようにすることで、
                /etc/rc.d/init.d/svscan start:起動
                /etc/rc.d/init.d/svscan stop:停止
                /etc/rc.d/init.d/svscan restart:再起動
                などが可能になります。
                [FreeBSDの場合]
                FreeBSDでは/etc/rc.d/init.dのようなフォルダは存在しないようです。
                daemontools HOW-TO:
                http://www.emaillab.org/djb/daemontools/daemontools-howto.htmlや
                daemontoolsに関するマニュアルの邦訳である
                http://www.emaillab.org/djb/tools/daemontools/svscan.html#boot
                によれば、BSD形式の起動スクリプトは
                 
                 
                  BSD システム上では、
                   env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin 
                    csh -cf 'svscan /service &' 
                  を /etc/rc.local に加え、リブートしてください。 
                
                だそうですので、/etc/rc.localに上記を追加しましょう。
                なお、daemontools-0.76では、インストール時点で
                csh -cf '/command/svscanboot &'
                のような記述が、rc.localに追加されるようです。
                さて、上記作業が終わったらsvscanを起動してみましょう。
                [LINUXの場合]
                /etc/rc.d/init.d/svscan start
                でsvscanが起動されるはずです。
                [FreeBSDの場合]
                0.70の場合、
                # env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin 
                  csh -cf 'svscan /service &
                で起動がされると思います。(これはちょっと不明です。)
                0.76の場合、
                # csh -cf '/command/svscanboot &'
                で起動が行われるようです。
                # ps aux | grep svscan
                とすると
                root 62102 0.0 0.3 892 396 p0 S 5:55PM 0:00.01 
                  svscan /service
                のようにsvscanが/serviceを監視していることが分かるでしょう。
                それでは、smtpやpopをこれによって監視することにしてみましょう。
                [共通の設定]
                まず、ログ管理ユーザとして「qmaillog」,「smtplog」,「pop3log」を追加することにしましょう。
                 
                 
                  [LINUX系OSの場合]
                  # useradd -g qmail -d /var/qmail -s /bin/false 
                    qmaillog 
                  # useradd -g qmail -d /var/qmail -s /bin/false 
                    smtplog 
                  # useradd -g qmail -d /var/qmail -s /bin/false 
                    pop3log
                  [FreeBSDの場合]
                  # pw useradd qmaillog -g qmail -d /var/qmail 
                    -s /nonexistent
                  # pw useradd smtplog -g qmail -d /var/qmail 
                    -s /nonexistent
                  # pw useradd pop3log-g qmail -d /var/qmail -s 
                    /nonexistent 
                  一応、上記では
                  qmaillog:「qmail用」
                  smtplog:「tcpserverによって起動する qmail-smtpd用」
                  pop3log:「tcpserverによって起動するpop3用」
                  としました。 
                  qmailを自動起動するために、まず設定用ディレクトリを作成します。 
                  # mkdir /var/qmail/services
                  # mkdir /var/qmail/services/qmail 
                  # chmod +t /var/qmail/services/qmail 
                  # mkdir /var/qmail/services/qmail/log 
                  $ chown qmaillog:qmail /var/qmail/services/qmail/log 
                  
                  ログをとるためには、設定ディレクトリにスティッキービットが
                  たっていないといけないようです。
                  daemontoolsによって起動されるのは、/serviceの中にあるrunと
                  いう名前のスクリプトです。
                  そこで、設定ディレクトリ直下(/var/qmail/services/qmail/run)には
                  サービスの起動ファイル、
                  ログディレクトリ直下(/var/qmail/services/qmail/log/run)には
                  ログの起動ファイルをおくことにします。 
                  まず、/var/qmail/services/qmailの下にrunという起動スクリプトを作りましょう。
                  スクリプトの中身は次のようにします。
                  ここで、コピーする時には最後に空白などをあけないようにしましょう。
                   
                   
                     ==> /var/qmail/services/qmail/run <==
                     #!/bin/sh
                     exec env - PATH="/var/qmail/bin:$PATH" \
                     qmail-start ./Maildir/ splogger qmail
                  
                  ログはmultilogというコマンドで取ります。
                   
                   
                    ==> /var/qmail/services/qmail/log/run <== 
                    
                    #!/bin/sh 
                    exec /usr/bin/env - PATH="/usr/local/bin" 
                      \ 
                    setuidgid qmaillog multilog t ./main 
                  
                  setuidgidコマンド(daemontools)によって、ログユーザーを qmaillog 
                    にして、
                  multilogでログを ./main ディレクトリ以下に書き込むという設定になります。 
                  
                  上記二つのファイルをqmaillogの所有にし、chmodで実行権限を
                  700にしておきましょう。
                  # chown qmaillog:qmail /var/qmail/services/qmail/run
                  # chmod 700 /var/qmail/services/qmail/run
                  # chown qmaillog:qmail /var/qmail/services/qmail/log/run
                  # chmod 700 /var/qmail/services/qmail/log/run
                  各種デーモンは、svscanのチェックディレクトリである /service にリンクを
                  張ることで監視下におけるようになります。 
                  # ln -s /var/qmail/services/qmail /service/qmail 
                  
                  実際に監視を開始する時は、
                  # svc -u /service/qmail
                  などとすれば監視が始まるでしょう。
                
                [daemontoolsによるsmtpの起動]
                 
                 
                  基本的にはqmailのときと同じです。
                  設定ディレクトリは /var/qmail/services/smtpd、ログユーザーはsmtplog 
                    としています。 
                  # mkdir /var/qmail/services/smtpd 
                   # chmod +t /var/qmail/services/smtpd 
                  # mkdir /var/qmail/services/smtpd/log 
                   # chown smtplog:qmail /var/qmail/services/smtpd/log 
                  
                  /var/qmail/services/smtpd/runとして起動スクリプトを書きましょう。
                   
                   
                    ==> /var/qmail/services/smtpd/run <== 
                    #!/bin/sh
                     exec /usr/local/bin/tcpserver -v -u qmaildのUID 
                      -g nofilesのGID \
                     -x /var/qmail/control/tcprules.dat \ 
                    0 smtp /var/qmail/bin/qmail-smtpd 2>&1
                  
                  ログはやはりmultilogで取ります。
                   
                   
                    ==> /var/qmail/services/smtpd/log/run <== 
                    
                    #!/bin/sh 
                    exec /usr/bin/env - PATH="/usr/local/bin" 
                      \
                     setuidgid smtplog multilog t ./main 
                  
                
                 
                 
                  上記二つのファイルをsmtplogの所有にし、chmodで実行権限を
                  700にしておきましょう。
                  # chown smtplog:qmail /var/qmail/services/smtpd/run
                  # chmod 700 /var/qmail/services/smtpd/run
                  # chown smtplog:qmail /var/qmail/services/smtpd/log/run
                  # chmod 700 /var/qmail/services/smtpd/log/run
                  各種デーモンは、svscanのチェックディレクトリである /service にリンクを
                  張ることで監視下におけるようになります。 
                  # ln -s /var/qmail/services/smtpd /service/smtpd 
                  
                  実際に監視を開始する時は、
                  # svc -u /service/smtpd
                  などとすれば監視が始まるでしょう。
                
                [daemontoolsによるpopの起動]
                 
                 
                  やはり基本的にはqmailのときと同じです。
                  設定ディレクトリは /var/qmail/services/pop3、ログユーザーはpop3log 
                    としています。 
                  # mkdir /var/qmail/services/pop3 
                  # chmod +t /var/qmail/services/pop3 
                  # mkdir /var/qmail/services/pop3/log 
                  # chown pop3log:qmail /var/qmail/services/pop3/log 
                  
                   
                   
                    ==> /var/qmail/services/pop3/run <==
                     #!/bin/sh 
                    exec /usr/local/bin/tcpserver -v 0 pop3 \ 
                    
                    /var/qmail/bin/qmail-popup \
                     自ホストのFQDN /bin/check_apop_pop \
                     /var/qmail/bin/qmail-pop3d Maildir 2>&1
                  
                  ログはやはりmultilogで取ります。 
                   
                   
                     ==> /var/qmail/services/pop3/log/run <==
                     #!/bin/sh 
                    exec /usr/bin/env - PATH="/usr/local/bin" 
                      \
                     setuidgid pop3log multilog t ./main 
                  
                  上記二つのファイルをpop3logの所有にし、chmodで実行権限を
                  700にしておきましょう。
                  # chown pop3log:qmail /var/qmail/services/pop3/run
                  # chmod 700 /var/qmail/services/pop3/run
                  # chown pop3log:qmail /var/qmail/services/pop3/log/run
                  # chmod 700 /var/qmail/services/pop3/log/run
                  各種デーモンは、svscanのチェックディレクトリである /service にリンクを
                  張ることで監視下におけるようになります。 
                  # ln -s /var/qmail/services/pop3 /service/pop3 
                  
                  実際に監視を開始する時は、
                  # svc -u /service/pop3
                  などとすれば監視が始まるでしょう。
                  5秒以内でにサービスがスタートされるので、psなどで確認しましょう。
                  以下のようなコマンドでも確認できます。 
                  daemontoolsのマニュアルの邦訳に各コマンドの使用法が書いてあります。
                  http://www.emaillab.org/djb/tools/daemontools/top.html
                  # svstat /service/qmail 
                  /service/qmail: up (pid 624) 1215 seconds 
                  # svstat /service/qmail/log 
                  /service/qmail/log: up (pid 629) 1218 seconds
                   # svstat /service/smtpd
                   /service/smtpd: up (pid 613) 1223 seconds 
                  # svstat /service/smtpd/log
                   /service/smtpd/log: up (pid 632) 1225 seconds 
                  
                  # svstat /service/pop3 
                  /service/pop3: up (pid 633) 1232 seconds 
                  # svstat /service/pop3/log 
                  /service/pop3/log: up (pid 636) 1234 seconds 
                  
                  きちんと設定していない場合、0 secondsから1 secondsでの再起動を繰り返します。
                  以上で設定は終了です。外部からメールなどを送ってテストしてみましょう。
                  
                  
                     
                      |  | qmail 
                          メールサーバの構築Expert UNIX Series  ↑ご購入は、こちらからどうぞ。 内容(「BOOK」データベースより) qmailのインストールから、設定、運用まで、FreeBSDとLinuxの場合について、あますところなく解説。付属CD‐ROMにはFreeBSD、4.4‐RELEASEとqmailソースを収録。もっとも詳しいqmailの解説書。 
                           内容(「MARC」データベースより) qmailのインストールから、設定、運用まで、FreeBSDとLinuxの場合について解説。付属CD-ROMにはFreeBSD 
                          4.4-Releaseとqmailソースを収録。とても詳しい解説書。 (C) Amazon.co.jp | 
                  
                   
                  
                     
                      |  | SendmailとqmailによるLinuxメールサーバー構築ガイド 
                         ↑ご購入は、こちらからどうぞ。 内容(「BOOK」データベースより) 本書は主に、LinuxなどのUNIX系OSを使用してメールサーバー、つまりはインターネットメールシステムを構築しようとしているユーザーを対象としている。まずUNIX系OSにおいて一般的なメール転送エージェント、すなわちMTAであるsendmailについて解説している。後半では、最近注目を集めているqmailについて解説している。  内容(「MARC」データベースより) メール転送エージェントのsendmailや、最近注目を集めているqmailを用いて、メールサーバーのシステム構築から運用管理、セキュリティ対策までを自分で作るためのマニュアル。 
                          (C) Amazon.co.jp | 
                  
                   
                  
                     
                      |  | qmailで作る快適メールサーバー―qmailのインストールから活用までを徹底解説 
                            ↑ご購入は、こちらからどうぞ。 内容(「BOOK」データベースより) 安全・強固で使いやすいメールサーバー"qmail"の、はじめての完全解説書。次世代標準となったメールサーバーをはじめて完全解説。「Postfix」の解説を同時収録。 
                           内容(「MARC」データベースより) ポストsendmail ナンバー1は、qmailで決まり! 
                          安全・強固で使いやすい、次世代標準となったメールサーバーqmailのはじめての完全解説書。  (C) Amazon.co.jp |