
今回はmailmanの監視について紹介したいと思います。
Plesk搭載のVPSプランではWatchdogと言う監視ツールが標準で
インストールされているのでApacheやqmailなどサービスの監視が行えるのですが、
mailmanの監視はできないようになっています。サーバ過負荷やリソース不足で
メールが届かなかったり、mailmanのプロセス自体が落ちたりすることもあると思います。
それを防ぐため、私の場合は下記ようなスクリプトを使用してmailmanの監視を行っています。
状況としては以下の2パターンあります。
1.
・ /var/spool/mailman/in 配下に配送されないメールがたまっている。
・ /var/spool/mailman/shunt にはなにもない。
・ /var/log/mailman/error になにもない。
・ mailman の再起動で配送されるようになる。
2.
・ mailmanが落ちている。
・ mailmanの起動をおこなう。
#!/bin/bash
#----------------------------
# Monitering of mailman process
#----------------------------
# /var/spool/mailman/in 配下に配送されないメールがたまっているかを確認
unsent=`ls -l /var/spool/mailman/in/ | grep -c ".pck"`
# Mailmanのプロセスが立ち上がってないかを確認
isAlive=`ps ax | grep -v grep | grep -c "mailmanctl"`
_host=`hostname`
_to=alert@example.com
#$unsentの値が0でない場合はmailmanの再起動を行います。
#mailmanの再起動通知メールを送ります。
if [ $unsent -ne 0 ]; then
/etc/init.d/mailman restart > /dev/null 2>&1
/usr/sbin/sendmail -t <<EOF
To: $_to
Subject: [Alert] Mailman restarted.
Mailman has been restarted on $_host
EOF
#mailmanのプロセスが存在しない場合はmailmanを起動します。
#mailmanの起動通知メールを送ります。
elif [ $isAlive -eq 0 ]; then
/etc/init.d/mailman start > /dev/null 2>&1
/usr/sbin/sendmail -t <<EOF
To: $_to
Subject: [Alert] Mailman started.
Mailman has been started on $_host
EOF
fi
▼vi エディターなどを開いて上記スクリプトをサーバに保存します。
私の場合は/usr/local/bin/以下に保存しています。
# vi /usr/local/bin/mailman-monit.sh
▼パーミッションを変更する
# chmod a+x mailman-monit.sh
▼一分毎にスクリプトが実行されるようにクーロンに登録する。
* * * * * /usr/local/bin/mailman-monit.sh > /dev/null
これで毎分クーロンが実行され、mailmanの監視されるようになります。