これでスキャンすると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
コメント