ノウハウ
[エンジニア向け]

mailmanの監視

ノウハウ
テクニカルサポート

今回は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の監視されるようになります。

この記事を書いた人

テクニカルサポート

テクニカルサポートを得意とするCloudGarage、エクスクラウドのサポートスタッフ。

この記事のタグ

オススメの記事

ページトップへ