ここでは、qmailの作者であるD. J. Bernstein氏作のサービスの起動を行うツールdaemontoolsで管理下のサービスのログの取得方法について説明します。
既に daemontoolsのインストール / daemontoolsからサービス起動方法 が完了しているものとして説明しています。
ここでは、qmailの作者であるD. J. Bernstein氏作のサービスの起動を行うツールdaemontoolsで管理下のサービスのログの取得方法について説明します。
既に daemontoolsのインストール / daemontoolsからサービス起動方法 が完了しているものとして説明しています。
daemontoolsでログ取得するにはmultilogを利用します。
multilogとは 管理しているサービスのログを取得する利用するプログラムでdaemontoolsをインストールすると/usr/local/bin/multilogにインストールされています。
multilogの設定の大きな流れは以下の通りになります。
(1) /var/supervise/サービス名/以下にログを取得するディレクトリ(log/main)を作成する。
(2) /var/supervise/サービス名/log/以下にmultilogを起動するrunスクリプトを設置する。
(3) /var/service/以下に作成した サービスを管理するディレクトリのシンボリックリンクを張る。
といった手順になります。
では実際に実際にqmail(qmailで apop の実装)を例にとって説明します。
※既にdaemontoolsで起動しているものとして想定して説明しますので起動方法は daemontoolsからサービス起動方法 を参照下さい。
(1) smtpサーバの設定
現在daemontools経由で起動しているスクリプトを停止します。
# rm /var/service/smtp # svc -dx /var/supervise/smtp
サービスを管理するディレクトリ以下にログを取得ディレクトリ作成します。
# cd /var/supervise/smtp # mkdir -p log/main
multlogの起動runスクリプトを/var/supervise/smtp/log/run作成します。
スクリプトは以下の用になります。
#!/bin/sh exec env - PATH="/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin: \ /usr/local/sbin:/usr/local/bin" \ multilog t ./main
最後の ./main はログを格納するディレクトリを指します。
作成したスクリプトに実行権を与えます。
# chmod 755 /var/supervise/smtp/log/run
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/smtp /var/service/smtp
これで問題なければ、自動的に起動用のrunスクリプトとログ取得用のrunスクリプトが起動します。
svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/smtp /var/service/smtp/log
/var/service/smtp: up (pid 6540) 568 seconds
/var/service/smtp/log: up (pid 597) 968 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
(2) popの設定
現在daemontools経由で起動しているスクリプトを停止します。
# rm /var/service/pop # svc -dx /var/supervise/pop
サービスを管理するディレクトリ以下にログを取得ディレクトリ作成します。
# cd /var/supervise/pop # mkdir -p log/main
multlogの起動runスクリプトを/var/supervise/pop/log/run作成します。
スクリプトは以下の用になります。
#!/bin/sh exec env - PATH="/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin: \ /usr/local/sbin:/usr/local/bin" \ multilog t ./main
最後の ./main はログを格納するディレクトリを指します。
作成したスクリプトに実行権を与えます。
# chmod 755 /var/supervise/pop/log/run
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/pop /var/service/pop
これで問題なければ、自動的に起動用のrunスクリプトとログ取得用のrunスクリプトが起動します。
svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/pop /var/service/pop/log
/var/service/pop: up (pid 6540) 568 seconds
/var/service/pop/log: up (pid 597) 968 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
(3) qmailの設定
現在daemontools経由で起動しているスクリプトを停止します。
# rm /var/service/qmail # svc -dx /var/supervise/qmail
サービスを管理するディレクトリ以下にログを取得ディレクトリ作成します。
# cd /var/supervise/qmail # mkdir -p log/main
multlogの起動runスクリプトを/var/supervise/qmail/log/run作成します。
qmail自身の実行ユーザがrootではないのでmultilogでも一工夫必要になります。スクリプトは以下の通りです。
#!/bin/sh exec env - PATH="/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin: \ /usr/local/sbin:/usr/local/bin" \ setuidgid qmails multilog t ./main
setuidgidでqmailsと指定し、qmailsのUID/GIDで実行することになります。
作成したスクリプトに実行権を与えまた、logディレクトリもqmailsの権限へ変更する必要がでてきます。
# chmod 755 /var/supervise/qmail/log/run # chown -R qmails:qmail /var/supervise/qmail/log/
また、qmailの起動スクリプトはsploggerでsyslogにログを出していました。最後の行の"splogger qmail"という記述を削除し以下の様に設定して下さい。
/var/supervise/qmail/run
#!/bin/sh # Using splogger to send the log through syslog. # Using qmail-local to deliver messages to ~/Mailbox by default. exec env - PATH="/usr/local/qmail/bin:$PATH" \ qmail-start ./Maildir/
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/qmail /var/service/qmail
これで問題なければ、自動的に起動用のrunスクリプトとログ取得用のrunスクリプトが起動します。
svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/qmail /var/service/qmail/log
/var/service/qmail: up (pid 6540) 568 seconds
/var/service/qmail/log: up (pid 597) 968 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
multilogでログを取得するとmain/以下にcurrentというログがたまります。
しかし中身をみると
@4000000040cebb173743e93c delivery 431: success: did_0+0+1/
@4000000040cebb173746bbe4 status: local 0/10 remote 0/20
といったようにタイムスタンプが訳分かりません。これはTAI64形式とうもので人間がわかりやすいようにみるには以下のコマンドを実行しましょう。
# tai64nlocal < current
2004-06-15 18:02:05.927197500 delivery 431: success: did_0+0+1/
2004-06-15 18:02:05.927382500 status: local 0/10 remote 0/20
これで見やすくなりますね。(^^;
また、参考までにmultilogのオプションは以下の様なものがあります。
t | TAI64N形式のスタンプをログにつける |
---|---|
-pattern | patternにマッチした行を出力しない |
+pattern | patternにマッチしたログを出力する |
ssize | ログファイルのサイズをsize以下にする(デフォルト99999byte) |
nnum | ログの世代数をnum世代にする(デフォルト10世代) |
=file | 選択された先頭1,000バイトをfileへ出力 |
AVQ251-500-N アンチウィルス for Linux Qmail版 ギデオン / ¥ 415,800 |
|
AVQ1-50-N アンチウィルス for Linux Qmail版 ギデオン / ¥ 138,600 |
|
AVQ51-100-N アンチウィルス for Linux Qmail版 ギデオン / ¥ 207,900 |