pasasの日記: qmail と logger
qmail を使ってメールサーバを運用している。
qmail にはログを保存するために splogger というプログラムがある。
これは qmail-send が出力したログを syslog に渡すという仕事をやっているようだ。
でも、syslog は重いという問題があるので、できれば使いたくない。
そんなわけで daemontools を使って qmail を起動し、multilog を使ってログを保存することを考えたけど、
daemontools は勝手にサービスを監視しているというのが余計なお世話だ。
というのも、今回は特定の時間帯だけ qmail-send を安全に止めておきたい。
qmail-send を安全に停止するには TERM シグナルを qmail-send に送ればよいんだけど、
svc を使って TERM シグナルを qmail-send に送ると、再起動してしまうのだ。
まぁ、そんなことも含めていろいろあるので、splogger を自作して syslog 使うことなく
ログを保存するプログラムを作った。
これならば splogger を置き換えるだけなので簡単だし、qmail をインストールできる人なら設定できる。
というわけで作ったプログラムは以下のような感じ。
#define LOG_FD 0
if( ( log_fp = fdopen( LOG_FD, "r")) == NULL ) {
perror("fdopen");
exi(-1);
}
while( fgets( buffer, sizeof( buffer), log_fp) != NULL ) {
/* いろいろ */
}
ついでに HUP シグナルを送るとログを rotate するようにしておいた。
qmail と logger More ログイン