最近忙しすぎて久々の更新になってしまいました。
さて。
何がしかの理由でメールの滞留が起こった時に、
管理者にアラートメールを飛ばすスクリプトを作ってみました。
スクリプトだのプログラムだのすげー苦手なので、ズラズラと並べてるだけ。
正規表現?何それ美味しいの?
最初、ほんとは
# 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