Postfixのメールのキューが溜まっていないかをチェックする
サーバを管理している人はなんらかの監視を入れていると思いますが、
私はlogcheckを入れてsyslogを監視しています。
Postfixにメールのキューが溜まっていたら自動的logcheck経由で
報告してほしいなと思っていたので、
ささっとスクリプトを作ってみました。
とりあえず、logcheckは必須なので、
apt-get install logcheck
してインストールして設定済であることを前提にして、
#!/usr/bin/env ruby require 'syslog' require 'open3' stdin, stdout, stderr = *Open3.popen3("/usr/sbin/postqueue -p") stdin.close postqueuelines=stdout.readlines postqueuelines+=stderr.readlines if postqueuelines.size > 3 Syslog.open('postfix', Syslog::LOG_PID | Syslog::LOG_NDELAY, Syslog::LOG_MAIL) postqueuelines.each do |line| Syslog.alert(line.chomp) end # Syslog.alert(postqueuelines.join) end
こんなスクリプトを/opt/check_postque.rbあたりに保存して、
5 * * * * /opt/check_postqueue.rb
こんな感じでcronに登録します。
1時間に1回キューのチェックをしてくれます。
ちなみに、postqueueの結果が3行以上だったら
syslogに書かれてしまうので、自分で調節してください。
キューが溜まっていたら自動的にlogcheckに拾われて
報告されてくるので便利です。