RT58i と rsyslog を使って発信者番号をメール通知

ヤマハの RT58i には着信した電話の発信者番号を syslog に出力する機能があります。そして syslog デーモンの一種 rsyslog にはログをメールで送る機能があります。

そこでこれを組み合わせたら、着信した電話の発信者番号をメールで通知することができるのではないかと考えて試してみたので設定を紹介します。

前提条件

今回試した設定では以下のバージョン (リビジョン) を利用しました。

  • RT58i: ファームウェア Rev.9.01.51
  • rsyslog: バージョン 8.4.2 (Debian 8 収録のもの)

準備

RT58i でログを別ホストに送信する設定

まず RT58i でログを別ホストに送信するように設定します。以下のようにホスト名なり IP アドレスなりで rsyslog の動作するホストを指定します。

syslog host syslog.example.com

これを設定したら save を忘れずに。

rsyslog で別ホストからログを受信する設定

rsyslog.conf (Debian の場合は /etc/rsyslog.d 以下の任意の example.conf ファイルに記載するとよいでしょう。) に以下を記述して UDP 受信を有効にします (ここでは legacy configuration で記載しています。)。

$ModLoad imudp
$UDPServerRun 514

ここまで設定して service rsyslog force-reload を実行すれば、RT58i のログが rsyslog で記録されるようになるはずです。

rsyslog で着信電話の発信者番号をメール送信する設定

RT58i では電話の着信があると以下のようなログを残します。

TEL[**/*] InComing Call from 0ABCDEFGHIJ

そこでまずこれを抜き出すために以下のような正規表現を使ったフィルターを使います (まあ国内の電話番号なら必ず 0 で始まるはずなので [0-9] は余計かもしれませんが念のために入れておきました。)。

:msg,regex,"InComing Call from [0-9]" action

rsyslog の仕様なのか TEL[…] の部分は msg プロパティーには含まれないので正規表現には含めていません。

次にこのフィルターを利用して以下のように発信者番号をメール送信するように設定します。

$ModLoad ommail

$template MailSubject,"Got an incoming call"
$template MailBody,"From %msg:R,ERE,1: from ([0-9]+)--end%"

$ActionMailFrom nobody@example.com
$ActionMailTo somebody@example.com
$ActionMailSubject MailSubject

:msg,regex,"InComing Call from [0-9]"   :ommail:;MailBody

ここまで終わったらもう一度 service rsyslog force-reload を実行して新しい設定を有効にします。

最後に自分の携帯電話から発信するなり誰かに発信してもらうなりして実際にメールで発信者番号が通知されることを確認すれば作業は終わりです。

たぶん後継機種の NVR500 でも同様にできると予想しますが、そこは自己責任でお願いします。