最近忙しすぎて久々の更新になってしまいました。


さて。


何がしかの理由でメールの滞留が起こった時に、

管理者にアラートメールを飛ばすスクリプトを作ってみました。



スクリプトだのプログラムだのすげー苦手なので、ズラズラと並べてるだけ。


正規表現?何それ美味しいの?


最初、ほんとは

# mailq

の結果、最後に出力される滞留メール件数をカウントして

しきい値と照らし合わせようとしてたんですけど

なんか出力フィールドの抽出が途中でめんどくさくなったので、

単純に滞留メールが保存されているフォルダにあるメール本体の数を

カウントするようにしました。


まぁ意味合いは大体同じなんですけどね。。。


ほんと苦手なんで参考にしないでください。

成長過程の記録として敢えて恥を晒しますww

スタイリッシュにスクリプト組める人すげーなーと思います(´д`)y-~~


使ってみようという物好きな人は、メールアドレス、滞留を検地するメールの件数、

滞留するメールの保存フォルダ、メールの本文なんかはお使いの環境に合うように直して、

cronでお好きなタイミングで定期実行するように設定してくださいな。


あんまり間隔を短くするとウザイので(笑)筆者はせいぜい30分に1回ぐらいにしてます。



#!/bin/sh
#------------------------------------------------------------------------------
#
# deffered フォルダ監視スクリプト
#
#------------------------------------------------------------------------------


# 管理者のメールアドレス

MILADR="root@hogehoge.com "


# 日時の取得
#--------------
YYYY=`date +%Y`
MM=`date +%m`
DD=`date +%d`
hh=`date +%H`
mm=`date +%M`
#--------------


# サーバ名の取得
SERVER=`uname -n`


# メールの件名(Subject)
SUBJCT="[ $YYYY/$MM/$DD $hh:$mm ] $SERVER too many deffered mail alart!!"


# 滞留が起こっているメールの件数を標準エラーを出力させずにカウントしてMILCHKに代入

MILCHK=`find /var/spool/postfix/deferred/*/* 2> /dev/null | wc -l`


# もしも滞留してるメール(/var/spool/postfix/deferred配下にファイル)が10個以上あったら通知する。

# なかったらそのままスクリプトを終了する。


if [ $MILCHK -ge 10 ];

then

mail -s "$SUBJCT" "$MILADR" <<- END
$SUBJCT ($(date))
END

else

exit 0

fi

exit 0