これでスキャンするとPDFにしてくれるスキャナーがあれば
スキャンデーターをメールすればOK
ファックス複合機はいらなくなる
やっとメーカーの縛りから開放できる
実現の手順
メールのタイトルをFAX送信先の電話番号にする
この番号を抽出する
本文はPDFファイルを添付してメールする
抽出したデーターをsendfaxにあてはめてFAXする
メールアドレスはFAXだけのアドレスを作る
わたしはgmailに専用アドレスを作った
popを有効にする必要がある
専用アドレスのメールをfetchmailでhylafaxサーバーに持ってくる
crontabを使い3分おきぐらいに実行させる
実際の手順
$ sudo apt-get install fetchmail nkf $ mkdir ~/sendfax $ mkdir ~/sendfax/tmp
$ vi ~/.fetchmailrc
poll pop.gmail.com protocol pop3 port 995 user 'ファックス専用アドレス@gmail.com' pass 'パスワード' ssl mda '~/sendfax.sh'
$ vi ~/sendfax.sh
#!/bin/sh
err_mail() #エラー発生時にsendmailでメール送信。
{
{
echo "From: fujimoto.takahiko.fax@gmail.com"
echo "To: "$1
echo "Subject: HylaFax MailFax"
echo
echo "FaxNo: "$2
echo $3
}|/usr/sbin/sendmail -i -t
exit 0
}
dest=~/sendfax/tmp #一時保存先
tmp="$dest/$$"
nkf -w > $tmp-mail #メールをMIMEデコードして保存
faxno=`grep -i "^Subject:" $tmp-mail | sed -e "s/subject: //i"` #タイトル取得
mailadr=`grep -i "^Return-Path:" $tmp-mail | sed -e "s/Return-Path: <//i" -e"s/>//"` #メールアドレス取得
#添付ファイル取得処理
grep -i '^Content-Type:' "$tmp-mail" |
grep "multipart/mixed" |
head -n 1 |
sed 's/..*boundary=//' |
tr -d '"' > $tmp-boundary
awk -v b="^--$(cat $tmp-boundary)" -v f="$tmp-F" \
'{if($0~b){a++};print > f a}' "$tmp-mail"
grep -i 'filename=' $tmp-F* |
sed 's/^\([^:][^:]*\):..*filename=\(..*\)/\1 \2/' |
tr -d '"' |
while read a b ; do
sed -n '/^$/,$p' "$a" |
base64 -d > "$a-${b}"
done
#添付ファイルここまで
find $dest -name "* *" | rename 's/ /_/g' #ファイル名のスペースをアンダーバーに置換
#PDFファイルのリストを作成。PDFファイルがない場合はエラーメールを送信。
file $tmp-* |grep -i "PDF DOCUMENT" |sed -e "s/:.*//" > ${tmp}filelist
if [ ! -s ${tmp}filelist ];then
err_mail $mailadr $faxno "No PDF File"
fi
#GhostscriptでPDFファイルを処理。全ファイルをA4縦に変換して連結。処理失敗時はエラーメールを送信。
gs -dNOPAUSE -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -o ${tmp}faxdata.pdf -f `cat ${tmp}filelist`
if [ $? = 1 ];then
err_mail $mailadr $faxno "Ghostscript Error"
fi
#FAX送信 エラー時はメール送信。
sudo sendfax -f $mailadr -n -d $faxno ${tmp}faxdata.pdf
if [ $? = 1 ];then
err_mail $mailadr $faxno "SENDFAX ERROR"
fi
#一時ファイルを削除して終了。
rm $tmp*
exit 0
$ chmod 600 ~/fetchmailrc $ chmod +x ~/sendfax.sh
これで一旦タイトルにファックス先の電話番号、本文は添付PDFファイルを専用アドレスにメールする
ファックスが送られたら成功
上記のスクリプトはここで拝借させていただきました
非常に助かりました
ただsendfax命令でパスワードを聞いてくるのでここで停止してしまいます
sudo sendfax に変更しました
最後に3分間隔で/usr/bin/fetchmailを実行する
$ crontab -e
*/3 * * * * /usr/bin/fetchmail



コメント