HylaFAXでの送受信速度を制限する

回線は大丈夫でもモデムがおかしかったりして強制的に送受信速度を制限したい場合は、HylaFAXのコマンド設定の先頭に!をつけるとその応答があったとみなす機能を使用します。

Class 1 FAXモデムの場合 ITU-T.31

送信 (ITU-T.31の8.3.3およびTable 6)

例えばログに

のように出ている場合で9600bit/sにしたい場合は、表を見ると121,122,145,146を削って設定ファイルに

と記載すればよいことになりそうですが、実際にはV.17のトレーニングが成功してしまうために14400bit/sでの通信が始まります。V.17でトレーニングさせないためには参照先の表をよく眺めてこの場合は73,74,97,98,121,122,145,146も削らなければならないのでした。

受信 (ITU-T.31の8.3.4およびTable 6)

同様に AT+FRM の応答ログと設定ファイルの Class1RMQueryCmd を使用します。

Class 2 FAXモデムの場合 ITU-T.32

ITU-T.32の8.5.1.1およびTable 21

同様に AT+FCC の応答ログと設定ファイルの Class2DCCQueryCmd を使用します。

PDF -> e-mail添付 -> FAX送信でペーパレス 続爆速インストールHylaFAX

FAX受信 -> e-mailに引き続き今度は送信側。不適切な設定で勝手に使われるなどして莫大な電話代請求されても責任は取れませんので、細心のご注意を。HylaFAXクライアントを使用すればキューの制御もできて便利ですが、いろいろなOSで使えるような良いものを探すのも面倒です。今回はHylaFAX付属のfaxmailをPostfix経由で使用します。メールを読んでlatin1テキストならばそのまま、MIMEならば引っぺがして変換可能であれば変換してsendfaxに送り込んでくれます。

あて先の電話番号は [email protected] (Postfix master.cfで${user}使用) でも [email protected] (${extension}使用) でも良いですが、今回は簡単のために後者にします。まかり間違っても認証もなしに普通にインターネットから到達できる構成にしてはいけないです。

適切に設定されて動作している内部向け専用Postfixの etc/postrix/master.cf に

を追加。ここで指定したfaxという名のサービスに [email protected] で到達させるために、etc/postfix/transports(etc/postfix/main.cfでtransport_maps=regexp: で指定されている場合)に、

を、引っかかるような位置に追加。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に

を追加。パスワード無しでサーバにアクセスするために/var/spool/hylafax/etc/hosts.hfaxdに

を追加。この時点で

faxstatコマンドが認証無しで実行できてしまうようになります。続いて/usr/local/lib/fax/faxmail.confに

などをお好みで追加。/var/spool/hylafax/bin/notifyの内容を見ながら、お好みで/var/spool/hylafax/etc/FaxNotify作成。

hfaxd(hylafax)再起動。ここまでで [email protected] 宛e-mailにPDFやPostScriptを添付しするとFAXとして送信されるようになりました。残念なことにfaxmailはMIMEではないメールの扱いがlatin1のみでtyperulesも効かないので修正が必要です。時間が取れたらパッチ作成。万が一電話番号を間違えたら自力でfaxstatしてfaxrmするのが手間ですが、PDF添付でFAXが送れるだけでも十分実用的。

FAX受信 -> PDF -> e-mailでペーパレス 爆速インストールHylaFAX

あるお客様が一日中ひっきりなしにFAXを受け、トナーを買いに行く手間も値段もバカにならないし紙も大量に消費して地球に優しくないとのこと。常時可動のサーバも無いので、そりゃHylaFAXの出番でっせ、と社に戻って記憶をたどってワークショップをあさると、ありました外付けモデムME5614D2 for まいと~く、そして非力ながらもまだまだ使えるWindows 2000 Professionalときらきら光るシールの張ってあるPC。これでナンバーディスプレイ対応FAX e-mail変換機が簡単にできるじゃありませんか。送信時は媒体が定まっていないので今までどおりFAXに挿すままでよさそう。受信だけが問題である、というわけでさらに簡単(後日 PDF -> e-mail添付 -> FAX送信でペーパレス もやりました)。他にも「HylaFAXでの送受信速度」も参考になるかもしれません。あとインターネットからサーバへのアクセスはフィルタするなり対処が必要です。IPv6でlistenしているからいいやとほっておくと、当たり前にIPv6になった日に大騒ぎになるかもしれません。

まずはFreeBSD RELEASEを最小インストール、そしてpowerd, ntp, ipfw, メール, syslog転送など必要な設定(ざくっと省略)。

デフォルト以外を選択したのは

  • [nn] Default page size: A4

だけ。 /dev/cuau0 (cf. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/serialcomms.html)がモデムがつながっているやつであることをさくっと確認。ATI4とかATI3とか。そしてアプリケーションでの設定。USBモデムならば/dev/cuaU0とか。

デフォルト以外を選択したのは

  • Country Code: 81
  • Area Code: 3 (東京03から国内開放番号の0を除いた3)
  • Long distance dialing prefix: 0  (国内開放番号)
  • International dialing prefix: 010 (国際開放番号 cf. マイライン)

自動的にfaxaddmodemが起動され、そこでデフォルト以外を指定したのは

  • Serial port that modem is connected to: cuau0
  • Phone number of fax modem: +81.3.0000.0000 (FAXの番号)
  • Local identification string: HOGEHOGE (任意のFAXID。相手側のFAXに通知される。)
  • Long distance dialing prefix: 0  (国内開放番号)
  • International dialing prefix: 010 (国際開放番号 cf. マイライン)
  • Tracing during normal server operaton: 0x1a73f
  • Default tracing during send and receive sessions: 0x1a73f
  • Rings to wait before answering: 3  (早すぎると相手番号を取得し損ねる)

Windows用のinfファイルを見ながら適当にモデムに向かって電話をかけつつ、Caller IDを取得する方法(ここではAT+VCID=1)を見つけて /var/spool/hylafax/etc/config.cuau0 とか.cuaU0 などに追加。

CallIDPatternの後者は自機の番号。AT+GCI=00はAmazonなどで売っているConexant CX93001搭載の技適マークなんか付いてないど安いClass 1.0, Class 2 USB FAXモデムを構内回線につないでFAX受信時にATAでオフフックにならないような場合に付けてあげるともしかしたらつながるようになるかもしれません。Amazonの商品コメントでもFAXの送信ができても受信が安定してないとかできないと書いてありますが、料金からしてだめもとでいろいろ試して楽しめちゃう人向け商品ですね。IN/OUTがあるとかいう深い謎を持った商品もありましたがLINE/PHONEの間違いでしょうきっと。AT+GCI=で設定してATI5で返ってくる00の部分は、日本製でもITU-T.35のAnnex Aに基づいているものもあれば某携帯キャリアのように81とか電話の国番号だったり、某モデムでは64とかなんでかわからない値だったりするので、チップセットメーカによって違う場合があります。話を戻してその他のATI4とかはログで眺めてふーんとうなずくためのものです。ついでに下のこのME5614D2 for まいと~く用に書いた追加設定でMR560E5 for まいと~くも動作することも確認。

e-mail送り先などを指定するために /var/spool/hylafax/etc/FaxDispatch を作成。http://www.hylafax.org/content/Handbook:Server_Operation:Receiving_Faxesにも詳しく書いてありますが、/var/spool/hylafax/bin/faxrcvd を見ながら作成すると必要なものが一目瞭然。

他にも${CALLID1}が自社の番号の時には自社の名前を表示するようにしたりして遊んでみました。/var/spool/hylafax/etc/templates/ro(ちょっとしたボケ)/faxrcvd-succces.txtを自分の気に入った順番や必要な情報だけに整理(ftp://など必要ない)して、

/etc/ttysでは、TAで送信者の電話番号による振り分けを行って2つのfaxgettyで捌くように設定します。

を追加。

して、syslogでエラーが無いことを確認。FAXを送って動作していることを確認して、再起動。再起動後もFAXを送ってちゃんと動作していることを確認。ハードディスクの空きは十分すぎるほどあるのと、良く伺うお客様なので、キューはひたすら溜めて問題時対応用に。いずれフラッシュするようにしましょう。

さらに万が一のPCハングや保守時にも受信できないといけないので、ワークショップからCFカードにFAXを受信できるVE-GP62をひっぱりだしてきましたが、さすがに大量のファックスをいちいち確認するのは大変かもしれないので、冗長用には今のFAXの使い方の紙に印刷のまま使ってもらうのが良いでしょうか。そもそも送信用のFAXは今までのを使うのだから後者ですね。実際に運用して確認してもらいましょう。

ありがとう HylaFAX と portsシステム。あなた方のおかげで楽して世の中がまたまた少しエコになりました。多分。