2010年代にどのMTAを使うのがいいかよくわからないkazeburoです
qmailのキュー数をCloudForecastで監視するためのモジュールを書いてみました。
gistです
このリソース定義を使うには、メール配送サーバのsnmpd.confに
extend qmail /var/qmail/bin/qmail-qstat
を追加する必要があります。snmpdがroot以外で実行されている場合は、sudoとか使えばいいのかな。
snmpgetでextendで指定したコマンドの実行結果をとるには、
$ snmpget -c public -v 2c myserver 'nsExtendOutputFull."qmail"'
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."qmail" = STRING: messages in queue: xxxx
messages in queue but not yet preprocessed: 0
のような方法が使えます。しかし、perlのSNMP.pmモジュールでは「qmail」の指定をうまく行う事ができませんでした。
my $s=SNMP::Session->new(
Community=>"public",
Version=>"2c",
DestHost=>"myserver"
);
print $s->get(["nsExtendOutputFull",q!"qmail"!]); #NOSUCHINSTANCE
そこで、一度extendの設定に関する情報が入るnsExtendConfigTableを取得し、qmailコマンドのoidを調べてからgetを行うようにしています。
print Dumper( $s->gettable('nsExtendConfigTable') );
=comment
$VAR1 = {
'5.113.109.97.105.108' => {
'nsExtendArgs' => '',
'nsExtendToken' => 'qmail',
'nsExtendCacheTime' => '5',
'nsExtendInput' => '',
'nsExtendStatus' => '1',
'nsExtendExecType' => '1',
'nsExtendRunType' => '1',
'nsExtendCommand' => '/var/qmail/bin/qmail-qstat',
'nsExtendStorage' => '4'
}
};
# 5.113.109.97.105.108がoid
=cut
$s->get(['nsExtendOutputFull', '5.113.109.97.105.108']);
この方法は汎用的に使えそう