読者です 読者をやめる 読者になる 読者になる

Postfixのメールのキューが溜まっていないかをチェックする

Ruby Postfix Debian

サーバを管理している人はなんらかの監視を入れていると思いますが、
私は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に拾われて
報告されてくるので便利です。