AsteriskとFUSION IP-Phone SMARTで構築する月額基本料・着信無料のFAX環境

昨日の記事で、FUSION IP-PHONE SMARTとさくらのVPSAsteriskとFax for Asteriskを組み合わせると、FAXが届くとPDFにしてメールが届くシステムが構築できることをさらっと書いたら、「FAXのあたりをもう詳しく知りたい」とはてブでコメントを頂いていたようなので追記。
月額基本料・着信ともに無料で発信のみ有料。

以下、環境構築編。

1) さくらインターネットVPSを借りる。

別にさくらインターネットじゃなくてもいいのだけれど、弊社では開発用に借りていたVPSが既にあったので同居させた。
OSはCentOS 6.4。

2) FUSION IP-PHONE SMARTを契約。

要クレジットカード。
WEBからオンラインサインアップできる。050番号が使えるようになるまで最長で1時間ぐらい。
http://www.fusioncom.co.jp/kojin/smart/
screenshot
サインアップが終わると、電話番号(050xxxxxxxx)、ドメインSIPアカウント、SIPアカウントパスワードが発行される。

3) Asterisk 11.4をインストール。

ソースから。

4) DigiumからFax for Asteriskを1ライセンスもらう

Fax for Asterisk | Asterisk Software | Digium
「Get 1 Free License」をクリックし、カートに入れて「checkout」。(無償。要アカウント作成)

メールで
「Digium Order Confirmation」という確認と
「Digium Free Fax For Asterisk License for Order」というライセンスキーが届く。

ライセンスキーのメールに記載されているURLに、READMEがあるので、手順に沿ってAsteriskにインストール。
簡単にまとめると
 registerをダウンロードして実行し、インストールキーを登録。
 benchfaxを実行し、適切なモジュールを示してもらう。
 res_fax.soかres_fax_digium.soのどちらかをダウンロードし、/usr/lib/asterisk/modulesに配置。

5) FAXを受信したらPDFに変換するスクリプト

こちらのブログ([http://01.selfip.net/server/linux/1083)で公開されている、fax2mail.plを/var/lib/asteriskに設置。
事前にNet:SMTPとかMIME::Entityとかtiff2pdfは仕込んでおく。
/var/spool/asteriskにfaxディレクトリを掘っておく。

6) Asteriskの設定

今回のネタに絡むものだけ抜粋。

extension.conf

[globals]
MYNUMBER1=XXXXXXXX(※FUSIONから発行されたSIPアカウント)

[default]

;From fusion
exten => ${MYNUMBER1},1,Goto(faxrec,receive,1)

exten => _0.,1,Dial(SIP/fusion-smart/${EXTEN:1})

[faxrec]
exten => receive,1,NoOp(**** SETTING FAXOPT ****)
exten => receive,n,Set(FAXOPT(ecm)=yes)
exten => receive,n,Set(FAXOPT(headerinfo)=NAME) ※自社名など
exten => receive,n,Set(FAXOPT(localstationid)=8150xxxxxxxx) ※自社050番号
exten => receive,n,Set(FAXOPT(maxrate)=14400)
exten => receive,n,Set(FAXOPT(minrate)=2400)
exten => receive,n,Set(FAXFILE=${EPOCH}.tif)
exten => receive,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****)
exten => receive,n,ReceiveFAX(/var/spool/asterisk/fax/${FAXFILE})

exten => h,1,System(/var/lib/asterisk/fax2mail.pl ${FAXFILE})
exten => h,n,Hangup

sip.conf

[general]
register => 発行されたSIPアカウント:発行されたパスワード@FUSIONから指定されたドメイン
maxexpirey=3600
defaultexpirey=3600
context=default
port=5060
bindaddr=0.0.0.0
srvlookup=yes
allowguest=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=en
faxdetect=yes

[fusion-smart]
type=friend
username=FUSIONから発行されたSIPアカウント
fromuser=FUSIONから発行されたSIPアカウント
secret=発行されたパスワード
host=FUSIONから指定されたドメイン
fromdomain=FUSIONから指定されたドメイン
context=default
insecure=port,invite
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
dtmfmode=inband
nat=never

7) ファイアウォールの設定

Asteriskが着信できるように、iptablesを適切に設定。

8) 外部から自社050番号にFAXしてみる。

ローソンのFAXからは050番号へ発信できない。FAXを持っている知人などに頼む。

以上で、FAXが無料で受信できる環境が整う。
発信についてはおいおい追記。