10
--
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
--
>>
<<
--
LATEST ENTRY
CATEGORY
ARCHIVE
PROFILE
SEARCH
RECENT COMMENT
  • エクセルファイルのパスワードを忘れたら・・・
    里奈 (09/09)
  • 【QUICKFIX】 FX自動売買への道 27 【接続時の仕様】
    mrsg (07/29)
  • 【QUICKFIX】 FX自動売買への道 11 【デモ環境への接続】
    大工の源さん (05/01)
  • 【QUICKFIX】 FX自動売買への道 19 【レート情報の取得(MarketDataRequest)】
    まこ (04/11)
  • 【QUICKFIX】 FX自動売買への道 19 【レート情報の取得(MarketDataRequest)】
    ぼん (04/11)
  • Excel の パスワード解除 (VBS版)
    おさる (01/05)
  • Excel の パスワード解除 (VBS版)
    おさる (01/05)
  • エクセルファイルのパスワードを忘れたら・・・
    ヤナト (07/07)
  • ffmpeg+libx264+libfaac の static ビルド
    ひげお (03/17)
  • TSの2重音声問題解決
    K (10/14)
MOBILE
qrcode
OTHERS
<< ひかり電話+X-Lite で ぱそこん電話 | top | Windows で Apache + PHP + Mysql + Eclipse + ZendDebugger の開発環境 >>
ひかり電話 + Asterisk + IAXmodem + Hylafax on CentOS で自動FAX
自動でFAXを指定先に送ってくれるサーバの構築を目指した記録

FAXサーバをたてる前に、仮想環境にて動作確認
仮想環境には VirtualBox を利用 (VirtualBoxはこちら
 
OSには当初 Puppy を利用しようと思いましたが・・ sendfax コマンドでどうやらエラーがでるようなので断念
Asterisk 使うだけなら Puppy でも可能でした
というわけで、OSは使い慣れた CentOS を利用することに

インストール用DVDイメージをダウンロードしてきて、仮想環境にマウント
最小構成でインストール。
インストールパッケージ記録
デスクトップ環境 なし
アプリケーション環境 テキストベースのインターネット
開発 開発ツール
開発ライブラリ
サーバー なし
ベースシステム ベース
クラスタリング なし
クラスタストレージ なし
言語 日本語

インストールが完了したら、今後のために作業用ユーザの追加
# adduser radmin
# passwd radmin

ssh の設定
# cd /etc/ssh   
# vi sshd_config   
    Protocol 2
    SyslogFacility AUTHPRIV
    PermitRootLogin no
    PermitEmptyPasswords no
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    GSSAPIAuthentication yes
    GSSAPICleanupCredentials yes
    UsePAM yes
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL
    Subsystem       sftp    /usr/libexec/openssh/sftp-server

sshd を再起動したら Tera Term で接続して作業継続


必要なファイルのダウンロード Asterisk は 1.6.1
IAXmodem は 1.2.0
Hylafax は 6.0.3

必要なライブラリのインストール
[root@faxserver src]# yum -y install libjpeg libjpeg-devel libtiff libtiff-devel ghostscript ghostscript-devel ghostscript-fonts sox
 
yum って便利ですね・・

Asterisk のインストール
[root@faxserver src]# tar xvf asterisk-1.6.1.6.tar.gz
[root@faxserver src]# cd asterisk-1.6.1.6
[root@faxserver asterisk-1.6.1.6]# ./configure
[root@faxserver asterisk-1.6.1.6]# make
[root@faxserver asterisk-1.6.1.6]# make install
[root@faxserver asterisk-1.6.1.6]# make samples

 
通常の手順どおりに configure make make install をやってます。
その後に、サンプルファイルのインストールもやっときます。
Asterisk は高機能すぎで設定が大変ですから・・・

IAXmodem のインストール その1(libiax2) 
[root@faxserver asterisk-1.6.1.6]# cd ..
[root@faxserver src]# tar xvfz iaxmodem-1.2.0.tar.gz
[root@faxserver src]# cd iaxmodem-1.2.0
[root@faxserver iaxmodem-1.2.0]# cd lib/libiax2/
[root@faxserver libiax2]# ./configure
[root@faxserver libiax2]# make
[root@faxserver libiax2]# make install

 
IAXmodem はライブラリを個別にコンパイルしてインストールします
で、ライブラリ登録で /usr/local/lib がなければ追加しときます。
 
[root@faxserver libiax2]# echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
[root@faxserver libiax2]# /sbin/ldconfig -v
/usr/local/lib:
        libiax.so.0 -> libiax.so.0.0.0

 
ldconfig コマンドでちゃんと登録できてることを確認しといてください

IAXmodem のインストール その2(spandsp) 
[root@faxserver libiax2]# cd ..
[root@faxserver lib]# cd spandsp/
[root@faxserver spandsp]# ./configure
[root@faxserver spandsp]# make
[root@faxserver spandsp]# make install
[root@faxserver spandsp]# /sbin/ldconfig -v
/usr/local/lib:   
        libspandsp.so.1 -> libspandsp.so.1.0.0   
        libiax.so.0 -> libiax.so.0.0.0   

 
こちらもちゃんと ldconfig の結果で登録されてることを確認

IAXmodem のインストール その3(iaxmodem) 
[root@faxserver spandsp]# cd ..
[root@faxserver lib]# cd ..
[root@faxserver iaxmodem-1.2.0]# ./build
[root@faxserver iaxmodem-1.2.0]# cp -p iaxmodem /usr/local/sbin/

 

IAXmodem の設定ファイル配置
[root@faxserver iaxmodem-1.2.0]# mkdir /etc/iaxmodem
[root@faxserver iaxmodem-1.2.0]# cp -p iaxmodem-cfg.ttyIAX /etc/iaxmodem/ttyIAX
[root@faxserver iaxmodem-1.2.0]# cat /etc/iaxmodem/ttyIAX
device          /dev/ttyIAX
owner           uucp:uucp
mode            660
port            4570
refresh         300
server          127.0.0.1
peername        iaxmodem
secret          password
cidname         John Doe
cidnumber       8005551212
codec           slinear
[root@faxserver iaxmodem-1.2.0]#

 
デフォルトのままで問題ないので編集はいらないです

Hylafax のインストール
#[root@faxserver iaxmodem-1.2.0]# cd ..
[root@faxserver src]# tar xvfz hylafax-6.0.3.tar.gz
[root@faxserver src]# cd hylafax-6.0.3
[root@faxserver hylafax-6.0.3]# ./configure
途中で設定を聞いてきます
ほぼデフォルトのままでいいのですが、2箇所だけ変更しておきましょう
(用紙サイズが North American Letter じゃぁねぇ)
HylaFAX configuration parameters (part 1 of 2) are:

[ 1] Directory for applications:        /usr/local/bin
[ 2] Directory for lib data files:      /usr/local/lib/fax
[ 3] Directory for lib executables:     /usr/local/sbin
[ 4] Directory for system apps:         /usr/local/sbin
[ 5] Directory for manual pages:        /usr/local/man
[ 7] Directory for spooling:            /var/spool/hylafax
[ 8] Directory for uucp lock files:     /var/lock
[ 9] Uucp lock file scheme:             ascii
[10] PostScript imager package:         gs
[11] PostScript imager program:         /usr/bin/gs
[12] Manual page installation scheme:   bsd-source-cat
[13] Default page size:                 North American Letter
[14] Default vertical res (lpi):        98

Are these ok [yes]? 13
Default page size [North American Letter]? A4
Are these ok [yes]? 14
Default vertical res (lpi) [98]? 196

[root@faxserver hylafax-6.0.3]# make
[root@faxserver hylafax-6.0.3]# make install

 
その後は普通に make  make install で

Hylafax のインストールが終わったら faxsetup を実行
[root@faxserver hylafax-6.0.3]# faxsetup
ほぼデフォルトでよいですが、国コード、市外局番などの設定は変えておきましょう
やっぱしアメリカ仕様ではまずいので
Country code [1]? 81
Area code []? 44
Long distance dialing prefix [1]? 0
International dialing prefix [011]? 001
国コードは日本は 81 です
市外局番は最初の ゼロ を抜かして登録します
で、市外局番の頭文字として ゼロ を登録
国際電話には 001 をつけろと指定
 
Do you want to run faxaddmodem to configure a modem [yes]? no
 
その後、モデムの設定も行うか?と聞いてくるので、 no といっておきます


ここまでで必要なもののインストールは完了です
 
次に各種設定

Asterisk 設定 sip.conf
[root@faxserver hylafax-6.0.3]# cd /etc/asterisk/
[root@faxserver asterisk]# cat > sip.conf
[general]
context=default
allowoverlap=no
maxexpirey=3600
defaultexpirey=3600
port=5060
bindaddr=0.0.0.0
srvlookup=yes
allowguest=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
localnet=10.10.10.0/255.255.255.0

;HIKARI ROUTER PR-S300SE
prs300se=10.10.10.1
register => 7:0007:0007@prs300se/201

[201]
type=friend
secret=pass
canreinvite=no
host=dynamic
dtmfmode=rfc2833
context=default

[prs300se]
type=friend
secret=0007
username=0007
fromuser=7
host=10.10.10.1
fromdomain=10.10.10.1
context=default
insecure=invite
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
[root@faxserver asterisk]#

 
ここで、ひかり電話に接続するための設定を行います
ひかり電話側の内線設定は以下のとおり
  
ひかり電話機のアドレスは 10.10.10.1 にしてあります

Asterisk 設定 iax.conf
[root@faxserver asterisk]# cat > iax.conf
[general]
iaxcompat=yes
language=jp
bandwidth=medium
disallow=all
allow=ulaw
allow=slinear
jitterbuffer=no
forcejitterbuffer=no

[iaxmodem]
type=friend
username=iaxmodem
secret=password
host=dynamic
disallow=all
allow=ulaw
allow=slinear
requirecalltoken=no
context=fax-out
[root@faxserver asterisk]#

 
iaxmodem を利用する際は context に fax-out を利用します

Asterisk設定 extensions.conf
# [root@faxserver asterisk]# cat > extensions.conf
[general]
autofallthrough=yes
writeprotect=no
priorityjumping=no

[globals]
MYNUMBER=0440000000

[default]
;Hikari - Other  Dial-in
exten => _20Z,1,Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _20Z,n,Monitor(wav49,"${DATE}-in-${CALLERID(num)}-${EXTEN}-${UNIQUEID}",m)
exten => _20Z,n,Dial(SIP/${EXTEN})
exten => _20Z,n,Wait(2)
exten => _20Z,n,Hangup

;Hikari Dial-out
exten => _[01].,1,Set(CALLERID(num)=${MYNUMBER})
exten => _[01].,n,Set(CALLERID(name)=${MYNUMBER})
exten => _[01].,n,Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _[01].,n,Monitor(wav49,"${DATE}-out-${EXTEN}-${UNIQUEID}",m)
exten => _[01].,n,Dial(SIP/${EXTEN}@prs300se)
exten => _[01].,n,Hangup

[fax-out]
exten => _X.,1,Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _X.,n,Set(L=${LEN(${EXTEN})})
exten => _X.,n,Set(SID=${IF($[${L} > 15]?${EXTEN:0:12}:000000000000)})
exten => _X.,n,Set(AID=${IF($[${L} > 15]?${EXTEN:12:3}:000)})
exten => _X.,n,Set(NUM=${IF($[${L} > 15]?${EXTEN:15}:${EXTEN})})
exten => _X.,n,Monitor(wav49,"${SID}-${AID}-${NUM}-${DATE}-fax-${UNIQUEID}",m)
exten => _X.,n,Dial(SIP/${NUM}@prs300se,20)
exten => _X.,n,Hangup
[root@faxserver asterisk]#
[root@faxserver asterisk]# mv extensions.ael extensions.ael.bak

 
200番台の番号は内線用になっています(サンプルがそーだったので・・)
電話番号の頭が 0か1から始まったらひかり電話に接続
この設定だと、市内でも必ず市外局番からかけないと電話をかけられませんのでご注意を
IAXmodem からの利用として fax-out を設定してあります
すべての電話は自動録音する設定になっています
不要な場合は Monitor の行を削除しといてください
録音ファイルは /var/spool/asterisk/monitor/ ディレクトリに保存します
録音ファイルの命名規則は以下のとおり
かかってきた電話 日付-in-相手先番号-受取内線番号-ユニーク番号.WAV
かけた電話 日付-out-相手先番号-ユニーク番号.WAV
送ったFAX 独自12桁-独自3桁-相手先番号-日付-fax-ユニーク番号.WAV

参考にしたのは以下のサイト(先人の知恵に感謝です)
http://www.voip-info.org/wiki/view/Asterisk+variables
http://blog.goo.ne.jp/jnana_tomo/e/123f1557e1d3303d15e358f7ed92d3fb
http://chuou-dk.homeip.net/mimi/mimi-blog/2008/03/ipasteriskfax.html
http://www.aska-ltd.jp/asterisk/pukiwiki/index.php?iaxmodem%E3%81%A8Hylafax%E3%81%A7FAX
http://voip-info.jp/index.php/Asterisk
http://www.syon.co.jp/syontech/tech010.html
http://www.ne.jp/asahi/davinci/code/asterisk/extensions/index3.html

Hylafax の設定 config.ttyIAX
[root@faxserver ~]# cd /usr/local/src/iaxmodem-1.2.0
[root@faxserver iaxmodem-1.2.0]# cp -p config.ttyIAX /var/spool/hylafax/etc/
[root@faxserver iaxmodem-1.2.0]# vi /var/spool/hylafax/etc/config.ttyIAX
ファイルの以下の部分だけ変更します (電話番号はダミーです)
CountryCode:            81       
AreaCode:               44       
FAXNumber:              +81.44.000.0000      
LongDistancePrefix:     0       
InternationalPrefix:    001       
LocalIdentifier:        "n73.jugem.jp 044-000-0000"       
LocalIdentifier は、FAXの最上部に表示される送信元名になります
どうやら日本語化対応されていないようなので、日本語は利用不可です
/etc/sysconfig/i18n も英語に設定しといた方が幸せになれると思います。。
[root@faxserver fax]# cat > /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"

Hylafax の設定 sendfax.conf
[root@faxserver iaxmodem-1.2.0]# cd /usr/local/lib/fax/
[root@faxserver fax]# cat > sendfax.conf
MaxTries:       2
MaxDials:       2
[root@faxserver fax]#
リトライ回数を 2回に設定します
デフォルトだと12回も送りなおそうとするので・・しつこいから

Hylafax の設定 hfaxd.conf
[root@faxserver fax]# vi hfaxd.conf
JobFmt:         "%-5j %1a %-27.27e %5P %5D %10Z %.25s"
ファイルの上記の部分だけ変更します
これで、faxstat コマンドの表示内容を変更します

Hylafax の設定 fax送信ユーザの登録
[root@faxserver fax]# /usr/local/sbin/faxadduser -a  root   password
[root@faxserver fax]# /usr/local/sbin/faxadduser -u  radmin   password
FAXを送信するユーザは登録しておいた方が良いでしょう
登録できたかは  /var/spool/hylafax/etc/hosts.hfaxd  を確認

 
次に自動起動の設定

Asterisk の自動起動設定
[root@faxserver asterisk-1.6.1.6]# cp -p ./contrib/init.d/rc.redhat.asterisk /etc/init.d/asterisk
[root@faxserver asterisk-1.6.1.6]# chkconfig --add asterisk
[root@faxserver asterisk-1.6.1.6]# chkconfig --list | grep :on
asterisk        0:off   1:off   2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@faxserver asterisk-1.6.1.6]#

IAXmodem の自動起動設定
[root@faxserver iaxmodem-1.2.0]# cp -p iaxmodem.init.fedora /etc/init.d/iaxmodem
[root@faxserver iaxmodem-1.2.0]# chmod +x /etc/init.d/iaxmodem
[root@faxserver iaxmodem-1.2.0]# chkconfig --add iaxmodem
[root@faxserver iaxmodem-1.2.0]# chkconfig --list | grep iaxmodem
iaxmodem        0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@faxserver iaxmodem-1.2.0]#
実行権つけるのをお忘れなく・・

Hylafax の自動起動設定
[root@faxserver ~]# chkconfig --list | grep hylafax
hylafax         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@faxserver ~]#
Hylafax はインストールすると自動的に設定されているはず

faxgetty の自動起動設定
[root@faxserver ~]# echo "# Run faxgetty" >> /etc/inittab
[root@faxserver ~]# echo "mo:2345:respawn:/usr/local/sbin/faxgetty /dev/ttyIAX" >> /etc/inittab


ここまでで設定作業は完了
 
動作確認

Asterisk の起動確認
[root@faxserver asterisk]# asterisk -vvvvvvvvvvvvvvvvvvvvvvvvv
〜 省略 〜
Asterisk Ready.

 
ずらずらずら〜〜〜〜 っといろいろ表示されます
エラーっぽい記述がなければOK

Asterisk の設定確認
[root@faxserver ~]# asterisk -vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvr
faxserver*CLI> sip reload (sipの設定ファイルを読み込み)
 Reloading SIP
faxserver*CLI> sip show users
Username                   Secret           Accountcode      Def.Context      ACL  NAT
201                        pass                              default          No   RFC3581
prs300se                   0007                              default          No   RFC3581
faxserver*CLI>
faxserver*CLI> sip show registry (ひかり電話に接続できてることを確認)
Host                           dnsmgr Username       Refresh State                Reg.Time
prs300se:5060                  N      7                 3585 Registered           Tue, 22 Sep 2009 13:18:30
1 SIP registrations.
faxserver*CLI>
faxserver*CLI> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status
201/201                    10.10.10.5       D          58213    Unmonitored
prs300se/0007              10.10.10.1                  5060     Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]
faxserver*CLI>
faxserver*CLI> iax2 reload (iaxの設定ファイル読み込み)
  == Loaded firmware 'iaxy.bin'
faxserver*CLI> iax2 show users
Username         Secret                Authen           Def.Context      A/C    Codec Pref
iaxmodem         password              000000000000003  fax-out          No     Host
faxserver*CLI> iax2 show peers (iaxの接続状況を確認・・まだ未接続)
Name/Username    Host                 Mask             Port          Status
iaxmodem/iaxmod  (Unspecified)   (D)  255.255.255.255  0         (E) Unmonitored
1 iax2 peers [0 online, 0 offline, 1 unmonitored]
faxserver*CLI>
faxserver*CLI> dialplan reload (extensionsの設定ファイル読み込み)
Dialplan reloaded.
  == Parsing '/etc/asterisk/extensions.conf':   == Found
  == Setting global variable 'MYNUMBER' to '0440000000'
    -- Registered extension context 'default' (0x85080e8) in local table 0x84eefd8; registrar: pbx_config
    -- Added extension '_20Z' priority 1 to default (0x85080e8)
    -- Added extension '_20Z' priority 2 to default (0x85080e8)
    -- Added extension '_20Z' priority 3 to default (0x85080e8)
    -- Added extension '_20Z' priority 4 to default (0x85080e8)
    -- Added extension '_20Z' priority 5 to default (0x85080e8)
    -- Added extension '_[01].' priority 1 to default (0x85080e8)
    -- Added extension '_[01].' priority 2 to default (0x85080e8)
    -- Added extension '_[01].' priority 3 to default (0x85080e8)
    -- Added extension '_[01].' priority 4 to default (0x85080e8)
    -- Added extension '_[01].' priority 5 to default (0x85080e8)
    -- Added extension '_[01].' priority 6 to default (0x85080e8)
    -- Registered extension context 'fax-out' (0x8507238) in local table 0x84eefd8; registrar: pbx_config
    -- Added extension '_X.' priority 1 to fax-out (0x8507238)
    -- Added extension '_X.' priority 2 to fax-out (0x8507238)
    -- Added extension '_X.' priority 3 to fax-out (0x8507238)
    -- Added extension '_X.' priority 4 to fax-out (0x8507238)
    -- Added extension '_X.' priority 5 to fax-out (0x8507238)
    -- Added extension '_X.' priority 6 to fax-out (0x8507238)
    -- Added extension '_X.' priority 7 to fax-out (0x8507238)
    -- Added extension '_X.' priority 8 to fax-out (0x8507238)
  == Parsing '/etc/asterisk/users.conf':   == Found
    -- Registered extension context 'app_dial_gosub_virtual_context' (0x84ee6b8) in local table 0x84eefd8; registrar: app_dial
    -- merging incls/swits/igpats from old(app_dial_gosub_virtual_context) to new(app_dial_gosub_virtual_context) context, registrar = pbx_config
    -- Added extension 's' priority 1 to app_dial_gosub_virtual_context (0x84ee6b8)
    -- Registered extension context 'app_queue_gosub_virtual_context' (0x84ee750) in local table 0x84eefd8; registrar: app_queue
    -- merging incls/swits/igpats from old(app_queue_gosub_virtual_context) to new(app_queue_gosub_virtual_context) context, registrar = pbx_config
    -- Added extension 's' priority 1 to app_queue_gosub_virtual_context (0x84ee750)
    -- Registered extension context 'parkedcalls' (0x84ee830) in local table 0x84eefd8; registrar: features
    -- merging incls/swits/igpats from old(parkedcalls) to new(parkedcalls) context, registrar = pbx_config
    -- Added extension '700' priority 1 to parkedcalls (0x84ee830)
    -- Time to scan old dialplan and merge leftovers back into the new: 0.002114 sec
    -- Time to restore hints and swap in new dialplan: 0.000003 sec
    -- Time to delete the old dialplan: 0.000013 sec
    -- Total time merge_contexts_delete: 0.002130 sec
faxserver*CLI>
faxserver*CLI> dialplan show (extensions設定内容表示
[ Context 'parkedcalls' created by 'features' ]
  '700' =>          1. Park()                                     [features]

[ Context 'app_queue_gosub_virtual_context' created by 'app_queue' ]
  's' =>            1. NoOp()                                     [app_queue]

[ Context 'app_dial_gosub_virtual_context' created by 'app_dial' ]
  's' =>            1. NoOp()                                     [app_dial]

[ Context 'fax-out' created by 'pbx_config' ]
  '_X.' =>          1. Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) [pbx_config]
                    2. Set(L=${LEN(${EXTEN})})                    [pbx_config]
                    3. Set(SID=${IF($[${L} > 15]?${EXTEN:0:12}:000000000000)}) [pbx_config]
                    4. Set(AID=${IF($[${L} > 15]?${EXTEN:12:3}:000)}) [pbx_config]
                    5. Set(NUM=${IF($[${L} > 15]?${EXTEN:15}:${EXTEN})}) [pbx_config]
                    6. Monitor(wav49,"${SID}-${AID}-${NUM}-${DATE}-fax-${UNIQUEID}",m) [pbx_config]
                    7. Dial(SIP/${NUM}@prs300se,20)               [pbx_config]
                    8. Hangup()                                   [pbx_config]

[ Context 'default' created by 'pbx_config' ]
  '_20Z' =>         1. Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) [pbx_config]
                    2. Monitor(wav49,"${DATE}-in-${CALLERID(num)}-${EXTEN}-${UNIQUEID}",m) [pbx_config]
                    3. Dial(SIP/${EXTEN})                         [pbx_config]
                    4. Wait(2)                                    [pbx_config]
                    5. Hangup()                                   [pbx_config]
  '_[01].' =>       1. Set(CALLERID(num)=${MYNUMBER})             [pbx_config]
                    2. Set(CALLERID(name)=${MYNUMBER})            [pbx_config]
                    3. Set(DATE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}) [pbx_config]
                    4. Monitor(wav49,"${DATE}-out-${EXTEN}-${UNIQUEID}",m) [pbx_config]
                    5. Dial(SIP/${EXTEN}@prs300se)                [pbx_config]
                    6. Hangup()                                   [pbx_config]

-= 6 extensions (22 priorities) in 5 contexts. =-
faxserver*CLI>

 

Windows機より、SIPソフト X-Lite を起動して Asterisk に接続してみる
X-lite の設定は sip.conf の通り


X-Liteで接続すると、以下が表示されるハズ
faxserver*CLI>
    -- Registered SIP '201' at 10.10.10.4 port 40570
       > Saved useragent "X-Lite release 1103k stamp 53621" for peer 201
faxserver*CLI>


X-Lite で外部に電話をかけてみる 時報の117にかけた場合は以下が表示される
faxserver*CLI>
  == Using SIP RTP CoS mark 5
    -- Executing [117@default:1] Set("SIP/201-085082a0", "CALLERID(num)=0440000000") in new stack
    -- Executing [117@default:2] Set("SIP/201-085082a0", "CALLERID(name)=0440000000") in new stack
    -- Executing [117@default:3] Set("SIP/201-085082a0", "DATE=20090922-132214") in new stack
    -- Executing [117@default:4] Monitor("SIP/201-085082a0", "wav49,"20090922-132214-out-117-1253593334.0",m") in new stack
    -- Executing [117@default:5] Dial("SIP/201-085082a0", "SIP/117@prs300se") in new stack
  == Using SIP RTP CoS mark 5
    -- Called 117@prs300se
    -- SIP/prs300se-085101f0 answered SIP/201-085082a0
  == Spawn extension (default, 117, 5) exited non-zero on 'SIP/201-085082a0'
faxserver*CLI>
ちゃんと時報が聞けることを確認する
だめだった場合は X-Lite の設定、Asterisk の設定を確認
X-Liteの音声 Codecs は要注意 G711 uLaw だけにしとくと良いと思う

X-Lite で外部からの電話を受けてみる 携帯からひかり電話に電話して以下が表示
faxserver*CLI>
  == Using SIP RTP CoS mark 5
    -- Executing [201@default:1] Set("SIP/prs300se-08508518", "DATE=20090922-132249") in new stack
    -- Executing [201@default:2] Monitor("SIP/prs300se-08508518", "wav49,"20090922-132249-in-08000000000-201-1253593369.2",m") in new stack
    -- Executing [201@default:3] Dial("SIP/prs300se-08508518", "SIP/201") in new stack
  == Using SIP RTP CoS mark 5
    -- Called 201
    -- SIP/201-0850ea58 is ringing
    -- SIP/201-0850ea58 answered SIP/prs300se-08508518
  == Spawn extension (default, 201, 3) exited non-zero on 'SIP/prs300se-08508518'
faxserver*CLI>

Asterisk の録音ファイルが作成されていることを確認
faxserver*CLI> quit
Executing last minute cleanups
[root@faxserver ~]# ls -l /var/spool/asterisk/monitor/
合計 32
-rw-r--r-- 1 root root  7146  9月 22 13:22 20090922-132214-out-117-1253593334.0.WAV
-rw-r--r-- 1 root root 22290  9月 22 13:23 20090922-132249-in-08000000000-201-1253593369.2.WAV
[root@faxserver ~]#

IAXmodem の起動確認
[root@faxserver ~]# /usr/local/sbin/iaxmodem ttyIAX &
[1] 16334
[root@faxserver ~]# [2009-09-22 13:27:04] Modem started
[2009-09-22 13:27:04] Setting device = '/dev/ttyIAX'
[2009-09-22 13:27:04] Setting owner = 'uucp:uucp'
[2009-09-22 13:27:04] Setting mode = '660'
[2009-09-22 13:27:04] Setting port = 4570
[2009-09-22 13:27:04] Setting refresh = 300
[2009-09-22 13:27:04] Setting server = '127.0.0.1'
[2009-09-22 13:27:04] Setting peername = 'iaxmodem'
[2009-09-22 13:27:04] Setting secret = 'password'
[2009-09-22 13:27:04] Setting cidname = 'John Doe'
[2009-09-22 13:27:04] Setting cidnumber = '8005551212'
[2009-09-22 13:27:04] Setting codec = slinear
[2009-09-22 13:27:04] Opened pty, slave device: /dev/pts/2
[2009-09-22 13:27:04] Created /dev/ttyIAX symbolic link
[2009-09-22 13:27:04] Registration completed successfully.

 
success が表示されることを確認

Asterisk 側で IAXmodem の接続を確認する
[root@faxserver ~]# asterisk -vvvvvvvvvvvvvvvvvvvvvvvvvr
Asterisk 1.6.1.6, Copyright (C) 1999 - 2009 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.6.1.6 currently running on faxserver (pid = 16182)
Verbosity is at least 32
faxserver*CLI>
faxserver*CLI> iax2 show peers (Host欄に接続されていることを確認)
Name/Username    Host                 Mask             Port          Status
iaxmodem/iaxmod  127.0.0.1       (D)  255.255.255.255  4570      (E) Unmonitored
1 iax2 peers [0 online, 0 offline, 1 unmonitored]
faxserver*CLI>

Hylafax( faxgetty )の動作確認
[root@faxserver ~]# /usr/local/sbin/faxgetty /dev/ttyIAX &
[root@faxserver ~]# faxstat -s
HylaFAX scheduler on faxserver: Running
Modem ttyIAX (+81.44.000.0000): Running and idle
[root@faxserver ~]#
Hylafax はインストール時に起動されているハズ
faxgetty に IAXmodem をつかませるために /dev/ttyIAX として起動する
ちゃんと ttyIAX をつかむまでしばらく待つコト
つかんでくれなかった場合は Hylafax を再起動してみる
# /etc/init.d/hylafax restart  とか

ここまで大丈夫だったら、FAXが送れるはず

FAX送信テスト
[root@faxserver ~]# sendfax -n -d 0440000000 /etc/hosts
request id is 50 (group id 50) for host localhost (1 file)
FAXを送信
 
[root@faxserver ~]# faxstat -s
HylaFAX scheduler on faxserver: Running
Modem ttyIAX (+81.44.000.0000): Initializing server

JID   S Number                      Pages Dials  UNIX Time Status
50    R 0440000000                   0:1   0:2  1253594412
[root@faxserver ~]#
FAXキューに登録されていることを確認
 
[root@faxserver ~]# faxstat -d | grep ^50
50    D 04400000000                   1:1   1:2  1253594443
[root@faxserver ~]#

 
しばらく待って、FAX送信が完了した後で
送信済みキュー に登録されていることを確認する

このとき、/var/log/message を監視していると、送信ログを確認できる
何らかのエラーが発生した場合もエラー内容が表示される
ghostscript 関連でエラーなど・・・

FAX送信が完了したら Asterisk の音声ファイルも確認する
[root@faxserver ~]# ls -l /var/spool/asterisk/monitor/ | grep fax
-rw-r--r-- 1 root root 82026  9月 22 13:39 000000000000-000-0440000000-20090922-133813-fax-1253594293.0.WAV
[root@faxserver ~]#

 



ここまでできれば動作確認も完了
あとは sendfax をぐるぐるまわすシェルでも書いて送るだけ :)

送信用のファイルはウィンドウズ側のプリンタにポストスクリプトプリンタを登録して、ファイル出力すれば作成できます。
エクセルでもワードでもパワポでもOK
プリンタ名が[  〜 PS] がついてれば、たぶんポストスクリプトプリンタ
 

私は「XeroxDocuPrint N2825 PS」ってのを追加してみました
プリンタポートは FILE:にしてあります
プリンタの詳細設定でPostScript 出力オプションを EPS にしておく

んで、プリンタの出力先フォルダを CentOS から mount -t cifs でもしておいて

cron で監視、ファイルが追加されたら自動で sendfax かなぁ


とりあえず、仮想環境でのサーバ構築は完了
最初はなんとか puppy で、と思ってたので苦労しました。。
4.1.2ではだめで、4.20とか3.0.1とか試しましたが、ダメ・・
原因わかる方、お知らせいただけると助かります

OSがCentOSになっちゃったので、ちゃんと動く性能のノートでも探してこなくちゃ
1万前後であるかな
Puppyなら・・・

秋葉原めぐりでもしてみるか


Asterisk のおかげで通話の記録が完全に取れるようになったのは助かります
通話の録音って・・法的になんか問題ありましたかね・・
自分の電話を自分で録音してるだけだし・・問題ないですよね??

まこ | ひかり電話 | 13:47 | comments(0) | trackbacks(0) |
スポンサーサイト
スポンサードリンク | - | 13:47 | - | - |
Comment









Trackback
URL: