FAX受信 -> e-mailに引き続き今度は送信側。不適切な設定で勝手に使われるなどして莫大な電話代請求されても責任は取れませんので、細心のご注意を。HylaFAXクライアントを使用すればキューの制御もできて便利ですが、いろいろなOSで使えるような良いものを探すのも面倒です。今回はHylaFAX付属のfaxmailをPostfix経由で使用します。メールを読んでlatin1テキストならばそのまま、MIMEならば引っぺがして変換可能であれば変換してsendfaxに送り込んでくれます。
あて先の電話番号は 000000000@fax.test (Postfix master.cfで${user}使用) でも hoge+00000000@fax.test (${extension}使用) でも良いですが、今回は簡単のために後者にします。まかり間違っても認証もなしに普通にインターネットから到達できる構成にしてはいけないです。
適切に設定されて動作している内部向け専用Postfixの etc/postrix/master.cf に
1 2 |
fax unix - n n - 1 pipe flags=q user=uucp argv=/usr/local/bin/faxmail -n -T -s a4 -t done -d ${extension} |
を追加。ここで指定したfaxという名のサービスに hoge@fax.test で到達させるために、etc/postfix/transports(etc/postfix/main.cfでtransport_maps=regexp: で指定されている場合)に、
1 |
/^hoge\+\+?[-.0-9a-yA-Y]{5,13}@fax.test$/ fax: |
を、引っかかるような位置に追加。local_recipient_mapsが/etc/aliases.dbと指定されている場合はreject_unlisted_recipientが使えるように/etc/aliasesに hoge: root とでも追加してnewaliasesしておきます。etc/postfix/main.cfのmydestinationに@のドメイン部分であるfax.testを追加すればPostfixの設定終了でPostfix再起動。
HylaFAXのサーバはデフォルトでIPv6の*:4559をlistenしていて、クライアントはデフォルトでlocalhostのサーバにアクセスします。/etc/hostsで::1がlocalhostではなくてlocalhost-v6である場合には/usr/local/lib/fax/hyla.confに
1 |
Host: localhost-v6 |
を追加。パスワード無しでサーバにアクセスするために/var/spool/hylafax/etc/hosts.hfaxdに
1 |
localhost (/etc/hostsの::1の行の先頭) |
を追加。この時点で
faxstat
コマンドが認証無しで実行できてしまうようになります。続いて/usr/local/lib/fax/faxmail.confに
1 2 3 |
PageHeaders: Yes AutoCoverPage: No Headers: clear |
などをお好みで追加。/var/spool/hylafax/bin/notifyの内容を見ながら、お好みで/var/spool/hylafax/etc/FaxNotify作成。
1 2 |
TOADDR=FaxMaster@example.jp NOTIFY_FAXMASTER=errors |
hfaxd(hylafax)再起動。ここまでで hoge+000000000@fax.test 宛e-mailにPDFやPostScriptを添付しするとFAXとして送信されるようになりました。残念なことにfaxmailはMIMEではないメールの扱いがlatin1のみでtyperulesも効かないので修正が必要です。時間が取れたらパッチ作成。万が一電話番号を間違えたら自力でfaxstatしてfaxrmするのが手間ですが、PDF添付でFAXが送れるだけでも十分実用的。