PC: 2008年3月アーカイブ

ここのところホームサーバーでFAXを送受信することを目標に夜な夜な実験していました。

結果実用に耐えるFAX環境を構築することができましたのでまとめて報告したいと思います。

 

実は以前RedHatLinux9サーバーからCentOS4.4サーバーに引っ越しした際、

このまま一挙にFAXサーバーも構築してしまおう!と思ったこともあったんです。

その時思いついたのはPCI接続のFAXモデムカードを通じて

サーバ-----モデム-----Voipアダプタ-----IP電話-----アナログ電話網

という力技の発想でした。

結果的には手元にあるPCIのモデムカードがどれもこれもWinモデムで諦めちゃったんですが

仮に使えるモデムがあったとしても実用に耐えたかはビミョーだったかも知れませんね。

 

あれから一年とちょっと・・・久しぶりに気分が盛り上がったので挑戦してみたら

自動アップデートでいつの間にかCentOS4.6になっていたサーバーに

Asterisk1.4.9+iaxmodem1.1.0+hylafax4.4.4という組み合わせでうまくいきました。

届いたFAXはすぐにPDFになってメールで届くので便利。

FAXなんてそんなに使う?なんて言っちゃあいけません。

ホームサーバーでFAXを送受信できること自体に喜びを感じなきゃ!(笑)

 

我が家の構成と構築したIP-FAXはこんな感じ。(灰色は従来からあるもの)

asterisk.gif

(図中のWindows hylafaxクライアントのFrog Fax@Mail は一見上手く働いてくれましたが

実際にはプリントできませんでした。Vista未対応なのでしょうか?現在検証中)

NTTからレンタルしている光電話ルータ[RT-200KI]からSo-netにPPPoEセッションを貼れば

二つ目のルーター[AtermWB7000H2]はいらない訳なんですが

そうするとなぜか@nifty光ユーザーからHTTPアクセスできなくなるのであえてこうしています。

そのときapacheのaccess_logにはトップページのhtmlをgetするログが残るんですけど

それ以降のアクセスが出来ないみたい・・・なぜこんなことが起こるのかわかる方いらっしゃいます?

 

話がそれてしまいました(^^;)

まずはAsteriskのインストール、現在の安定版は1.4.9だそうですので素直に従います。

Asteriskのインストールに先立ってZaptelというアナログ回線用のソフトをインストール。

IAXのタイミング制御にztdummyが必要なんだそうです。

 

インストール

Zaptel-1.4.9のインストール

############################################################

# cd /usr/src

# wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.4.9.tar.gz

# tar zxvf zaptel-1.4.9.tar.gz

#cd zaptel-1.4.9

# ./configure

# make menuselect

                              *******************************
                                  Zaptel Module Selection
                              *******************************

                                    Press 'h' for help.

                              ---> 1.  Kernel Modules
                                   2.  Utilities
                                   3.  Binary Firmware Packages

1.  Kernel Modulesで[Enter]を押す

                              *******************************
                                  Zaptel Module Selection
                              *******************************

                                    Press 'h' for help.

                                   [ ] 1.  pciradio
                                   [ ] 2.  tor2
                                   [ ] 3.  torisa
                                   [ ] 4.  wcfxo
                                   [ ] 5.  wct1xxp
                                   [ ] 6.  wct4xxp
                                   < > 7.  wctc4xxp
                                   [ ] 8.  wctdm
                                   [ ] 9.  wctdm24xxp
                                   [ ] 10. wcte11xp
                                   [ ] 11. wcte12xp
                                   [ ] 12. wcusb
                                   [ ] 13. xpp
                                   < > 14. ztd-eth
                                   < > 15. ztd-loc
                                   [*] 16. ztdummy
                                   [ ] 17. ztdynamic
                                   [ ] 18. zttranscode

ztdummyだけを選択[スペースキー]して[x]で終了

menuselect changes saved! ←と表示される。

続いて

# make
# make install
# make config
############################################################
 

Asterisk-1.4.9のインストール。

############################################################

# cd /usr/src

# wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.4.1.tar.gz

# tar zxvf asterisk-1.4.9.tar.gz 

#cd asterisk-1.4.9

# ./configure

# make

# make install

# make samples

############################################################

 

IAXmodem-1.1.0のインストール。

############################################################

# cd /usr/src

# wget http://jaist.dl.sourceforge.net/sourceforge/iaxmodem/iaxmodem-1.1.0.tar.gz

# tar zxvf iaxmodem-1.1.0.tar.gz

# cd iaxmodem-1.1.0/lib/libiax2

# ./configure

# make

# make install

# cd ../spandsp

# ./configure

# make

# make install

/usr/local/libにiaxとspandspのライブラリが作られるので

お好きなエディタで /etc/ld.so.conf に /usr/local/lib の一行を付け足す。

# vi /etc/ld.so.conf

または

# cat >> /etc/ld.so.conf

/usr/local/lib [Enter]

[Ctrl]+[D]

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf
/usr/ofed/lib
/usr/local/lib

↑のように追加されていれば良い。

# cd ../../  (=cd /usr/src/iaxmodem-1.1.0)

# ./build

# cp iaxmodem /usr/local/sbin/iaxmodem

# mkdir /etc/iaxmodem

# cp iaxmodem-cfg.ttyIAX /etc/iaxmodem/ttyIAX

# cp iaxmodem.init.fedora /etc/init.d/iaxmodem

# chmod 755 /etc/init.d/iaxmodem

# chkconfig --add iaxmodem

############################################################

 

hylafaxのインストール

############################################################

# cd /usr/src

# wget ftp://ftp.hylafax.org/source/hylafax-4.4.4.tar.gz

# tar zxvf hylafax-4.4.4.tar.gz

# cd hylafax-4.4.4

# ./configure

Are these ok [yes]?

と聞かれたら

13 [Enter]

Default page size [North American Letter]?

A4 [Enter]

としておきましょう。その他はデフォルトでいいと思います。

Are these ok [yes]?

y [Enter]

# make

# make install

# cp /usr/src/iaxmodem-1.1.0/config.ttyIAX /var/spool/hylafax/etc/config.ttyIAX

############################################################ 

 

以上でサーバー側で必要なソフトのインストールは完了です。

# chkconfig --list asterisk
asterisk        0:off   1:off   2:on    3:on    4:on    5:on    6:off

# chkconfig --list hylafax
hylafax         0:off   1:off   2:on    3:on    4:on    5:on    6:off

# chkconfig --list iaxmodem
iaxmodem        0:off   1:off   2:on    3:on    4:on    5:on    6:off

としてサービスに登録されていますね?

あとはfaxgettyが自動で起動するように

# vi /etc/inittab

一番最後に

mo:2345:respawn:/usr/local/sbin/faxgetty ttyIAX

という行を追加。

これでリブート後も自動的にFAXサーバーとして働いてくれます。

 

設定

Asteriskの設定

############################################################

/etc/asterisk/sip.conf

 [general]
maxexpirey=3600
defaultexpirey=3600
context=default
port=5060
bindaddr=0.0.0.0
srvlookup=yes
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=jp
localnet=192.168.1.0/255.255.255.0
;externip=*.*.*.*    ;←固定IPで運用する場合は指定する
externhost=aaa.bbb.ccc  ;←DynamicDNSで運用する場合はこちら
externrefresh=60
nat=never

;RT-200KI
;register => 3:ntttel:0003@192.168.*.*/0123456789

;So-net phone
;useragent=Fletsphone/2.3 (VOIP_AD 3.00\; NTTEAST/NTTWEST) ;VoIPアダプタを偽装する場合
register => 05012345678@so-net.ne.jp:password:username@voip00.so-net.ne.jp/05012345678

;[ntttel]
;type=friend
;username=0003
;secret=ntttel
;host=192.168.*.*
;canreinvite=no
;dtmfmode=inband
;disallow=all
;allow=ulaw
;allow=alaw
;context=fromntttel
;insecure=very

[so-net]
type=friend
username=username
secret=password
host=voip00.so-net.ne.jp
fromdomain=so-net.ne.jp
fromuser=05012345678
canreinvite=no
dtmfmode=inband
disallow=all
allow=ulaw
allow=alaw
progressinband=no
context=so-net
insecure=very

 RT-200KIにレジストできることは確認してありますが

ひかり電話は普通に使いたいのでここではコメントアウトしてあります。

 

/etc/asterisk/iax.conf

 [general]
bindport=4569
bindaddr=0.0.0.0
iaxcompat=yes
language=jp
bandwidth=medium
disallow=all
allow=ulaw
allow=gsm
jitterbuffer=no

[iaxmodem]
bindport=4570
type=friend
username=iaxmodem
secret=passeord
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=slinear
context=faxout

iaxmodemではポート4570を使うようになっていますが

tcpdumpで4570をモニターしてもパケットが流れません。

設定とは関係なく4569を使うのかな?よくわかりません。

 

/etc/asterisk/extensions.conf

[general]
writeprotect=no
priorityjumping=no

[so-net]
exten => 05012345678,1,Ringing
exten => 05012345678,n,Wait(2)
exten => 05012345678,n,Playback(fax)
exten => 05012345678,n,Dial(IAX2/iaxmodem/${EXTEN})

[faxout]
exten => _0.,1,Set(CALLERID(num)=05012345678)
exten => _0.,n,Set(CALLERID(name)=05012345678)
exten => _0.,n,Dial(SIP/${EXTEN}@so-net,300,T)

 

[so-net]の050番号からFAXがかかってきたときの処理は

exten => 05012345678,1,Dial(IAX2/iaxmodem/${EXTEN})

だけでもかまいません。

しかしそれだけだとかけた瞬間いきなりモデムが反応するので

手動でFAXを送る一般の方はびっくりしちゃうかも知れません。

そこで

1.呼び出し音を鳴らし始め

2.一回分鳴らす頃合いまで待つ

3.fax.gsm(FAXを受信可能です。FAXのスタートボタンを押してください)を再生する。

4.iaxmodemにつなぐ

という人に優しい応対にしてみました。

fax.gsmは各自適当に用意して/var/lib/asterisk/soundsに入れておいてください。

面倒な方はその行を飛ばしてしまえばいいだけです。

 

/etc/asterisk/rtp.conf

[general]
rtpstart=10000
rtpend=11000

デフォルトは10000~20000までですが

そんなに必要ないかな・・・と。

たくさんポートを開けるのがなんとなく嫌なだけです。

UDPだからそんなに心配しなくてもいいと思いますけどね。

 

iaxmodemの設定

############################################################

/etc/iaxmodem/ttyIAX

device          /dev/ttyIAX
owner           uucp:uucp
mode            660
port            4570
refresh         60
server          192.168.*.*
peername        iaxmodem
secret          password
cidname         iaxmodem
cidnumber       05012345678
codec           slinear

特に悩むところはありませんね。

passwordはiax.confの[iaxmodem]で設定したものと合わせてください。

 

hylafaxの設定

############################################################

/usr/local/sbin/faxsetupを一度実行しておきましょう。

わかるところだけ設定すればよいと思います。

 

/var/spool/hylafax/etc/config.ttyIAX

CountryCode:            81
AreaCode:               50
FAXNumber:              +81.050.1234.5678
LongDistancePrefix:     0
InternationalPrefix:    001
DialStringRules:        etc/dialrules
ServerTracing:          0xFFF
SessionTracing:         0xFFF
RecvFileMode:           0600
LogFileMode:            0600
DeviceMode:             0600
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        "faxserver" #(←相手のファックスの液晶に表示される名前)
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l 050-1234-5678|%c|Page %%P of %%T"
MaxRecvPages:           200

(以下略)

電話番号の設定は間違っていても送受信には影響ないと思われます。

TagLineFormatは送ったFAXの先頭に印字されるものです。

上の設定だと "From fax server 050-1234-5678         2008年03月24日  12:34:56    1 of 1"

と期待したいところですが実際は日付の漢字の部分が文字化けします。

これはhylafax4がマルチバイト文字をサポートしないのでどうしようもありません。

気になる方は%cを消してしまえば日時が表示されなくなります。

 

届いたFAXをメールで転送して欲しいなら同じディレクトリで

# vi FaxDispatch

としてFaxDispatchファイルを新規作成し、内容を

SENDTO=your@mail.add.ress;
FILETYPE=pdf;

としておけばyour@mail.add.ressにpdf化されたFAXが添付されて届きます。

FAXとメール環境があればどこでも簡易スキャナになりますね。

 

最後にFAXを送信可能にするためファックスユーザーの登録をします。

# faxadduser -a password root ←管理者のパスワード

# faxadduser -p password user ←一般ユーザ&パスワード

 

############################################################

以上ですべての設定は完了です。

# reboot

ですべて自動で起動させるのもよし、

事情でサーバーを落とすわけにはいかないなら

# service asterisk start
# service hylafax start
# service iaxmodem start
# /usr/local/sbin/faxgetty /dev/ttyIAX &

とすべて起動すればFAXサーバーが稼働します。

外からFAXすると/var/spool/hylafax/recvqにtifファイルとして格納されます。

/var/spool/hylafax/etc/FaxDispatchの設定がしてあれば

同時にメールに添付されてお手元に届きます。

送信するにはfaxadduserに登録したユーザーで

$ sendfax -n -d 0123456789(送信先の電話番号) abcd.tif(送信したいファイル)

faxの状態を知るには

# faxstat -d

とかで。

 

参考.使用するポート

############################################################

外向きに開けなければならないのは

SIP     5060/UDP

RTP     10000:20000/UDP(rtp.confで指定した範囲)

家の場合so-net以外からのSIPは無視して良いので

#iptables -A INPUT -p udp -s [so-netのvoipサーバのアドレス] --dport 5060 -j ACCEPT

のようにしました。

ルーターでポートフォワードするのをお忘れなく。

 

LAN内で使用するのは同じく

SIP     5060/UDP

RTP     10000:20000/UDP(rtp.confで指定した範囲)

それと

IAX     4569:4570/UDP

Frog Fax@Mailを使うのであれば

hylafax     4559/TCP

30000:50000/TCP

ちゃんと調べたわけではありませんがかなり広い範囲で変動するようです。

通信できないとFrog Fax@Mailがハングします。

 今回VistaではFrog Fax@Mailが使えなかったので

変わりに使えるものがあったら加筆修正したいと思います。

それでは。

2009年1月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

このアーカイブについて

このページには、2008年3月以降に書かれたブログ記事のうちPCカテゴリに属しているものが含まれています。

前のアーカイブはPC: 2008年2月です。

次のアーカイブはPC: 2008年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

DrecomRSS

Blog People

ミミがお手伝いした本





Powered by Movable Type 4.0