qmail を daemontools の svc 経由で起動するのもアリなのだけど,redhat系に浸っている自分としては
/etc/init.d/qmail start
で,qmail を起動したい.
そこで, daemontools から multilog だけインストールする方針で作業を行う.
まず,http://cr.yp.to/daemontools/ から daemontools-0.76.tar.gz を入手.
展開して,コンパイル.
$ tar xvfz daemontools-0.76.tar.gz $ cd admin/daemontools-0.76 $ ./package/compile
例によって extern int errno; とか,妙なことをしているのでコンパイルが通らない.さくっと修正する
修正結果は以下の通り
--- admin/daemontools-0.76/src/error.h.glibc23 2004-09-21 05:24:53.000000000 -0400 +++ admin/daemontools-0.76/src/error.h 2004-09-21 05:25:04.000000000 -0400 @@ -3,7 +3,7 @@ #ifndef ERROR_H #define ERROR_H -extern int errno; +#include <errno.h> extern int error_intr; extern int error_nomem;
次に,インストール作業.でもそのままインストールしてしまうと svc が起動してしまって悲しいことになるので,必要なコマンドだけインストール.
$ sudo install -m 0755 setuidgid /usr/local/bin $ sudo install -m 0755 multilog /usr/local/bin
最後に /etc/init.d/qmail を作成
#!/bin/sh # # chkconfig: 345 60 60 # description: qmail # processname: qmail # # # $Id: qmail.init,v 1.1 2004/09/22 08:03:21 ?????? Exp $ # Source function library. . /etc/rc.d/init.d/functions function qmail_start() { HOST=`hostname` mkdir -p /var/log/qmail mkdir -p /var/log/pop3 mkdir -p /var/log/smtp chown qmaill /var/log/qmail chown qmaill /var/log/pop3 chown qmaill /var/log/smtp # qmail exec env - PATH="/var/qmail/bin" \ qmail-start ./Maildir/ \ | /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t n100 s1000000 /var/log/qmail & # smtp env - PATH="/var/qmail/bin" \ /usr/local/bin/tcpserver -v -H -R -l0 -u `id -u qmaild` -g `id -u qmaild` \ -x /var/qmail/vpopmail/etc/tcp.smtp.cdb \ 0 smtp /usr/local/bin/fixcrio /var/qmail/bin/qmail-smtpd 2>&1 \ | /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t n100 s1000000 /var/log/smtp & # pop env - PATH="/var/qmail/bin" \ /usr/local/bin/tcpserver -v -H -R -l0 \ 0 pop3 /var/qmail/bin/qmail-popup ${HOST} \ /var/qmail/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \ | /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t n100 s1000000 /var/log/pop3 & return 0 } function qmail_stop() { killall qmail-send killall tcpserver killall multilog return 0 } function qmail_status() { /var/qmail/bin/qmail-qstat return 0 } RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting qmail services: " qmail_start RETVAL=$? echo ;; stop) echo -n "Stopping qmail services: " qmail_stop RETVAL=$? echo ;; status) qmail_status RETVAL=$? ;; restart) qmail_stop sleep 2 qmail_start RETVAL=$? ;; *) echo "Usage: qmail {start|stop|status|restart}" exit 1 esac exit $REVAL
あとは,
$ sudo /sbin/chkconfig --add qmail
qmail関連のログは,
以下に出力されるようになる.