FlashAir(無線LAN機能付きSDカード)で家庭用FAXの受信データをNASに自動転送する (3)メール編



準備編転送編の続きです。

今回は、NASに画像ファイルが書き込まれた時点で、メールを送る仕組みです。

fax-flashair-nas_mail_1

以下はQNAP TS-131(4.2.2)とFlashAir W-03、FAXはKX-PD601Wでの作業を前提にしています。NASのIPアドレスは固定(192.168.0.xxx)です。

NASには、書き込み予定のディレクトリを何らかの方法で監視する方法が必要です。使用するNASはLinuxベースで、様々な手段がありますが、今回は「inotifywait」というコマンドを使います。

メールに関しては、QNAPのWEB上の管理画面から、使用するメールサーバーなど設定をして、sendmailで送るようにします。管理画面-「コントロールパネル」-「通知」-「E-mail」タブ-「smtpサーバ」を設定し、テストEmailの送信で送ることができるか確認しておくとわかりやすいと思います。sendmailではこのsmtpサーバーが使われます。

これらの動きをスクリプトにまとめ、自動起動するように設定します。 watchfaxdir.shという名前で/share/homes/admin/bin/に保存し、実行権限を(chmod +x watchfaxdir.sh)与えます。

#!/bin/sh
#
#  watchfaxdir.sh
#
#メールを送信
dir="/share/CACHEDEV1_DATA/ftp/fax"
[ ! -d $dir ] && echo "$dir does not seem to exist" && exit
echo $dir
SendTo="to@example.com"
SendFrom="from@example.com"
Subject="FAXディレクトリにファイルが追加されました"
while true; do
rm -f /tmp/watchfaxdir.email
touch /tmp/watchfaxdir.email
echo "From: ${SendFrom}"     >>/tmp/watchfaxdir.email
echo "To: ${SendTo}"         >>/tmp/watchfaxdir.email
echo "Subject: ${Subject}"   >>/tmp/watchfaxdir.email
echo ""                     >>/tmp/watchfaxdir.email
inotifywait -r -e close_write $dir >>/tmp/watchfaxdir.email \
&& cat /tmp/watchfaxdir.email | sendmail -t
rm -f /tmp/watchfaxdir.email
done

頻繁にFAXが来るわけではないので、最低限の監視です。追加だけでなく、何かしらの書き込みがあった時点でFAXされるので、FAX本体で画像ファイルのexifなどの変更があった場合も回り回ってメールされます。

このあたり、もっとスマートにしたり、追加の情報もメールするつもりがあれば、スクリプトの工夫が必要です。

ざっくりとスクリプトの概要を説明します。まず、メールの宛先等を下書きしておきます。inotifywaitをサブディレクトリまで監視対象にする-rオプション、書き込み完了を知らせる-e close_writeオプション、そして対象ディレクトリを指定して実行しています。書き込み完了のイベントが起きると、内容をメールの下書きに追加して、sendmailで送ります。inotifywaitは-mオプションを使わなければ一回のみのイベントで終了しますので、whileで繰り返しています。

最後にNASを起動した際にスクリプトを自動起動するよう設定します。/etc/config/qpkg.confに以下を追加して、再起動すれば完了です。

[watchfaxdir]
Name = watchfaxdir
Version = 1.0
Author = tomodigi
Date = 2016-10-22
Shell = /share/CACHEDEV1_DATA/homes/admin/bin/watchfaxdir.sh
Install_Path = /share/CACHEDEV1_DATA/homes/admin/bin
Enable = TRUE

以上で「FlashAir(無線LAN機能付きSDカード)で家庭用FAXの受信データをNASに自動転送する」当初の目的は達成されました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

SPAM防止のため数字と漢数字の算数の計算をお願いします。 * Time limit is exhausted. Please reload CAPTCHA.