投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2011年9月18日日曜日

【Linux CentOS 5.7】 iaxmodemとhylafaxのインストールと基本設定作業

CentOS 5.7(64bit)に、iaxmodemとhylafaxをインストールする手順

HylaFaxというFAXサーバとそのクライアントソフトウェアを使えば、ネットワークを通じてWindowsマシンなどから手軽にFAXを送信することができるようになる。
さらに、HylaFaxで使用するモデムとしてiaxmodemを使えば、Asteriskと連携することができるようになる。

(前提)ASTERISKのインストールが完了していて、外線への発信ができていること。


今回、CentOS 5.7(64bit)にインストールしたバージョン
・iaxmodem-1.2.0
・hylafax-6.0.5

(注意)
この条件でインストールした場合、コマンドラインからsendfaxコマンドを使ってFAXを送出しようとしても、フォント周りのエラーが表示されできなかった。
しかし、そのような状態でも、代わりにhylafaxのクライアントソフト(たとえば、Hylafax WinPrint)を用いれば、正常にFAXを送出することができた
クライアントソフトを使った場合、sendfaxコマンドで必要だったプロセスがクライアントソフト上で解決されたために、FAXを送出できたのだろう。
FAXサーバーとしての本質的な機能は正常にインストールされているようだ。クライアントソフトウェアを使ってFAXを送出するなら、この条件でも問題はないと思う。(後述)

○クライアントソフトであるHylafax WinPrintのインストール手順については次のページに記載。
http://akira-arets.blogspot.com/2011/09/ms-windows7-winprint-hylafaxfax.html



■インストール共通手順■

◇システムを最新にアップデートする。

[root@localhost ~]# yum update
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-238.19.1.el5 #1 SMP Fri Jul 15 07:31:24 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux


◇コンパイルに必要なモノをインストールする。

[root@localhost ~]# yum install gcc gcc-c++
Installed:
  gcc.x86_64 0:4.1.2-51.el5 gcc-c++.x86_64 0:4.1.2-51.el5
Dependency Installed:
  cpp.x86_64 0:4.1.2-51.el5 glibc-devel.x86_64 0:2.5-65 glibc-headers.x86_64 0:2.5-65 kernel-headers.x86_64 0:2.6.18-274.3.1.el5 libstdc++-devel.x86_64 0:4.1.2-51.el5

Complete!

 
■iaxmodemのインストールと設定■


◇必要なライブラリをインストールする

[root@localhost ~]# yum install libjpeg libjpeg-devel libtiff libtiff-devel
Installed:
  libjpeg-devel.i386 0:6b-37         libjpeg-devel.x86_64 0:6b-37         libtiff-devel.i386 0:3.8.2-7.el5_6.7         libtiff-devel.x86_64 0:3.8.2-7.el5_6.7

Complete!
[root@localhost ~]# yum install ghostscript ghostscript-devel ghostscript-fonts sox
Installed:
  ghostscript.i386 0:8.70-6.el5_7.3    ghostscript.x86_64 0:8.70-6.el5_7.3    ghostscript-devel.i386 0:8.70-6.el5_7.3    ghostscript-devel.x86_64 0:8.70-6.el5_7.3
  sox.x86_64 0:12.18.1-1.el5_5.1

Dependency Installed:
  alsa-lib.x86_64 0:1.0.17-1.el5  ghostscript-fonts.noarch 0:5.50-13.1.1  libICE.i386 0:1.0.1-2.1             libSM.i386 0:1.0.1-3.1        libXt.i386 0:1.0.2-3.2.el5
  libXt.x86_64 0:1.0.2-3.2.el5    libogg.x86_64 2:1.1.3-3.el5             libvorbis.x86_64 1:1.1.2-3.el5_4.4  urw-fonts.noarch 0:2.3-6.1.1

Complete!

◇iaxmodemをダウンロードしインストールを行う
 
[root@localhost iaxmodem]# wget http://sourceforge.net/projects/iaxmodem/files/iaxmodem/iaxmodem-1.2.0/iaxmodem-1.2.0.tar.gz/download
`iaxmodem-1.2.0.tar.gz' へ保存完了 [3075769/3075769]
[root@localhost iaxmodem]# tar zxvf iaxmodem-1.2.0.tar.gz

[root@localhost iaxmodem]# cd iaxmodem-1.2.0
[root@localhost iaxmodem-1.2.0]#

一つ目のライブラリをインストールする。
[root@localhost iaxmodem-1.2.0]# cd lib/libiax2/
[root@localhost libiax2]# ./configure
[root@localhost libiax2]# make
[root@localhost libiax2]# make install
[root@localhost libiax2]# cd ../..
[root@localhost iaxmodem-1.2.0]#

二つ目のライブラリをインストールする。
[root@localhost iaxmodem-1.2.0]# cd lib/spandsp/
[root@localhost spandsp]# ./configure
[root@localhost spandsp]# make
[root@localhost spandsp]# make install
[root@localhost spandsp]# cd ../..
[root@localhost iaxmodem-1.2.0]#

これらのライブラリをシステムに登録する。すでに/usr/local/libが登録されていればこの作業は不要。
[root@localhost iaxmodem-1.2.0]# touch /etc/ld.so.conf.d/iaxmodem-i386.conf
[root@localhost iaxmodem-1.2.0]# echo '/usr/local/lib' >> /etc/ld.so.conf.d/iaxmodem-i386.conf
[root@localhost iaxmodem-1.2.0]# cat /etc/ld.so.conf.d/iaxmodem-i386.conf
/usr/local/lib
[root@localhost iaxmodem-1.2.0]# ldconfig

ビルドしてバイナリを生成し、パスの通ったディレクトリにコピーする。
[root@localhost iaxmodem-1.2.0]# ./build
[root@localhost iaxmodem-1.2.0]# ls ./iaxmodem
./iaxmodem
[root@localhost iaxmodem-1.2.0]# cp -p iaxmodem /usr/local/sbin/


◇設定ファイルを編集する

ディレクトリを作成し、iaxmodemの設定ファイルをコピーする。
[root@localhost iaxmodem-1.2.0]# mkdir /etc/iaxmodem
[root@localhost iaxmodem-1.2.0]# cp -p iaxmodem-cfg.ttyIAX /etc/iaxmodem/ttyIAX
[root@localhost iaxmodem-1.2.0]# vim /etc/iaxmodem/ttyIAX
device          /dev/ttyIAX
owner           uucp:uucp
mode            660
port            4570
refresh         300
server          127.0.0.1  ←ASTERISKの動作しているコンピューター
peername        iaxmodem ASTERISKのiax.confで設定するもの
secret          password
cidname         John Doe
cidnumber       8005551212
codec           slinear

ASTERISKのiax.confサンプルファイルの一番下に、このiaxmodemに対応した設定を追加する
[root@asterisk asterisk]# vim /etc/asterisk/iax.conf
(略)
[iaxmodem]
type=friend
username=iaxmodem
secret=password
host=dynamic
disallow=all
allow=ulaw ←実際の運用時にはulawが用いられた。
allow=slinear
requirecalltoken=no
context=fax_outgoing
(略)
念のため挙げると、[general]項目は次のようにした。
[general]
autokill=yes
maxregexpire = 300
iaxcompat=yes
language=jp
bandwidth=high
disallow=all
allow=slinear
allow=ulaw
allow=alaw
jitterbuffer=no ←yesにするとFAX伝送に時間がかかった。noのままにする。
forcejitterbuffer=no


ASTERISKのextensions.confに、fax送信用のコンテクストとエクステンションを追加する
[root@asterisk asterisk]# vim /etc/asterisk/extensions.conf
[fax_outgoing]
exten => _0.,1,Dial(SIP/${EXTEN}@外線発信用デバイス名)

ASTERISKを再起動させる
[root@asterisk asterisk]# service asterisk restart



◇iaxmodemを自動起動させるための設定

[root@localhost iaxmodem-1.2.0]# cp -p iaxmodem.init.fedora /etc/init.d/iaxmodem
[root@localhost iaxmodem-1.2.0]# chmod +x /etc/init.d/iaxmodem
[root@localhost iaxmodem-1.2.0]# chkconfig --add iaxmodem
[root@localhost iaxmodem-1.2.0]# chkconfig iaxmodem on
[root@localhost iaxmodem-1.2.0]# chkconfig --list | grep iaxmodem
iaxmodem        0:off   1:off   2:on    3:on    4:on    5:on    6:off

◇iaxmodemのログ用ファイルを置く
[root@localhost iaxmodem-1.2.0]# mkdir /var/log/iaxmodem
[root@localhost iaxmodem-1.2.0]# touch /var/log/iaxmodem/iaxmodem


◇IAXmodemを起動する
[root@localhost iaxmodem-1.2.0]# service iaxmodem start

IAXmodem を起動中:                                         [  OK  ]
[root@localhost iaxmodem-1.2.0]# ls /dev/ | grep ttyIAX
ttyIAX    ・・・デバイスが作成されている


◇念のため、Asterisk側で、iaxmodemが正常にレジストされているか確認する

Asterisk CLIを起動し、iax2のレジスト状況を確認する
[root@asterisk asterisk]# asterisk -r
asterisk-01*CLI> iax2 show peers 
Name/Username    Host                 Mask             Port          Status
iaxmodem/iaxmod  192.168.xxx.yyy  (D)  255.255.255.255  58553         Unmonitored
設定したiaxmodemモデムが、192.168.xxx.yyyからレジストしていることが分かる。



以上で、iaxmodemのセッティングは完了。


◇initでiaxmodemを起動する設定を行う

エディタをつかって、斜体で書かれた行を挿入する。
[root@localhost iaxmodem-1.2.0]# vim /etc/inittab
(略)
# Run gettys in standard runlevels
(略)
# Run iaxmodem in standard runlevels
im1:2345:respawn:/usr/local/sbin/iaxmodem ttyIAX

(略)

引数のttyIAXは、後で/etc/iaxmodemディレクトリに置かれる設定ファイルである。

◇試しに起動して、チェックを行う

システムの再起動を行い、iaxmodemを起動させる。
[root@localhost ~]# reboot

再起動後、プロセスを確認する。
[root@localhost ~]# ps -A | grep iaxmodem
 3043 pts/0    00:00:00 iaxmodem
iaxmodemのデバイスファイルが生成されていることを確認する。
[root@localhost ~]# ls /dev/ttyIAX
/dev/ttyIAX



■hylafaxのインストールと設定■

以下はソースからインストール手順である。

しかし、代わりにyumを用いてパッケージからインストールすることもできる。
(下記リンクの手順で、Hylafax+ 5.5.9 のインストールができた。)
http://akira-arets.blogspot.jp/2017/07/linux-centos69-hylafaxplus-installing.html



◇必要なモノをインストールする

[root@localhost ~]# yum install mgetty-voice zlib-devel
Installed:
  mgetty-voice.x86_64 0:1.1.33-9.fc6                        zlib-devel.i386 0:1.2.3-4.el5                        zlib-devel.x86_64 0:1.2.3-4.el5

Complete!


◇hylafaxをダウンロードしインストールを行う

[root@localhost hylafax]# wget ftp://ftp.hylafax.org/source/hylafax-6.0.5.tar.gz
`hylafax-6.0.5.tar.gz' へ保存終了 [1295267]
[root@localhost hylafax]# tar xvfz hylafax-6.0.5.tar.gz
[root@localhost hylafax]# cd hylafax-6.0.5
[root@localhost hylafax-6.0.5]#

[root@localhost hylafax-6.0.5]# ./configure
(省略)
Press Return to Continue
番号を指定し値を入力し、パラメーターを変更する。

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]? ?

"?" is not a known page size; the following are known page sizes:

Name                    Abbrev  Width   Height  Width   Height  Top     Left


ISO A3                  A3      14030   19840   13200    18480  472     345
ISO A4                  A4       9920   14030    9240    13200  472     345
ISO A5                  A5       7133    9921    6455     9236  472     345
ISO A6                  A6       5055    6991    4575     6508  472     345
ISO B4                  B4      12048   17196   11325    16010  472     345
North American Letter   NA-LET  10200   13200    9240    12400  472     345
American Legal          US-LEG  10200   16800    9240    15775  472     345
American Ledger         US-LED  13200   20400   11946    19162  472     345
American Executive      US-EXE   8700   12600    7874    11835  472     345
Japanese Letter         JP-LET   8598   12141    7600    10200  900     400
Japanese Legal          JP-LEG  12141   17196   11200    15300  900     400
設定できる値がわかったので、A4を指定する。
Default page size [North American Letter]? A4
さらに、14番のパラメーターの値も変更する。
Are these ok [yes]? 14
同様に、設定可能な値リストを表示させる。
Default vertical res (lpi) [98]? ?
ファインモードを設定するので、196を入力する。
"?" is not a valid vertical resolution; choose either "98" lines/inch
(low resolution) or "196" lines/inch (often called fine resolution)
.
Default vertical res (lpi) [98]? 196
入力された値に変更されたパラメーターリストが表示される。
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:                 ISO A4
[14] Default vertical res (lpi):        196
確認してから、yesを入力する。
Are these ok [yes]?yes
さらに、パラメーターリストが現れるが、これは変更せずにyesを入力する。
HylaFAX configuration parameters (part 2 of 2) are:

[15] Location of getty program:         /sbin/agetty
[16] Location of voice getty program:   /sbin/vgetty
[17] Location of sendmail program:      /usr/sbin/sendmail
[18] Location of TIFF tools:            /usr/bin
[19] Location of SysV init scripts:     /etc/rc.d/init.d
[20] Location of SysV start scripts:    ../rc2.d ../rc3.d ../rc4.d ../rc5.d
[21] Location of SysV stop scripts:     ../rc0.d ../rc1.d ../rc6.d
[22] Name of SysV start script:         S97hylafax
[23] Name of SysV stop script:          K05hylafax
[24] Init script starts faxq:           yes
[25] Init script starts hfaxd           yes
[26] Start paging protocol:             no
Are these ok [yes]? yes
(省略)

[root@localhost hylafax-6.0.5]# make
[root@localhost hylafax-6.0.5]# make install



◇初期設定を行う

[root@localhost hylafax-6.0.5]# /usr/local/sbin/faxsetup
(略)
Country code [1]? 81 ←日本
Area code []? xx ←日本国内の市外局番から0を除いたもの
Long distance dialing prefix [1]? 0 ←日本での場合は0
International dialing prefix [011]? 010 ←環境に適当なものを入力
(略)
Do you want to run faxaddmodem to configure a modem [yes]? no

Done verifying system setup.
この内容は、/var/spool/hylafax/etc/config というファイルに保存されていた。


ソースからコンパイル作業を行ったiaxmodem-1.2.0 ディレクトリから、IAXmodem用のconfigの原型を持ってくる。
これがなければ、たとえば送出したファックスにタグ(ヘッダー)を付けられなかった。
[root@localhost iaxmodem-1.2.0]# cp -p ./config.ttyIAX /var/spool/hylafax/etc/config.ttyIAX


ファックスのFromタグに表示させる名称を、必要に応じて編集しておく。(ただし英数字のみ可)
[root@localhost ~]# vim /var/spool/hylafax/etc/config.ttyIAX
CountryCode:            81
AreaCode:               xx
FAXNumber:              +81.xxx.xxx.xxx
LongDistancePrefix:     0
InternationalPrefix:    xxx
DialStringRules:        etc/dialrules
ServerTracing:          0xFFF
SessionTracing:         0xFFF
RecvFileMode:           0600
LogFileMode:            0600
DeviceMode:             0600
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        "example Co.Ltd."  ←ファックス送信元情報
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l %%n   |%c   Page %%P of %%T"  ←ファックスヘッダーのフォーマット(意味は下に記載)
MaxRecvPages:           200
#
(以下省略)
ファックスヘッダーフォーマットで使われている記号の意味
%%l  ・・・LocalIdentifier項目の値
%%n ・・・FAXNumber項目の値
%c ・・・現在の日時
| ・・・ファックス文書のヘッダー領域を左右に均等に区分するもの(上の例では、二分される)


ロケールを英語に切り替える(ファックス文書に印字される日本語の日付が文字化けするため
[root@localhost ~]# date
2011年  9月 26日 月曜日 19:14:05 JST  ←初めはこのように日本語で表記されていた
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"  ←変数の値は、書き換え前このようになっていた
[root@localhost ~]# vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[root@localhost ~]# date
Mon Sep 26 19:18:18 JST 2011  ←再起動後に英語表記に切り替わった(再起動はあとで)



◇システム起動時に、必要なプロセスが始動するように設定を行う

Hylafaxのfaxgettyというプログラムに、iaxmodemモデムに繋がる/dev/ttyIAXを渡す。

/etc/rc.local に、/usr/local/sbin/faxgetty /dev/ttyIAX を記述する方法と、
inittabを使う方法がある。いずれかの方法で設定すればよい。


[root@localhost hylafax-6.0.5]# vim /etc/rc.local
最後の行に追加する。
/usr/local/sbin/faxgetty /dev/ttyIAX

あるいは、次のようにする。
[root@localhost hylafax-6.0.5]# vim /etc/inittab
# Run gettys in standard runlevels
(略)
# Run iaxmodem in standard runlevels
im1:2345:respawn:/usr/local/sbin/iaxmodem ttyIAX
# Run faxgetty in standard runlevels
imh1:2345:respawn:/usr/local/sbin/faxgetty /dev/ttyIAX

(略)

[注意]
このfaxgettyの行は、iaxmodemの行の後に追加すること。引数/dev/ttyIAXが、iaxmodemにより設定ファイルに基づいて生成されるからである。



◇システム起動時にhylafaxが自動起動されるように設定する

 [root@localhost hylafax-6.0.5]# chkconfig hylafax on



◇iaxmodemなど必要なプロセスと共にhylafaxを起動させる

システム再起動後、全てが連動する。
[root@localhost hylafax-6.0.5]# reboot


以上でインストール作業の完了



■動作チェック■

【FAXの送信】

sendfaxコマンドを使ってfaxを送信しようとすると次のようなエラーが出て失敗した。

[root@localhost ~]# sendfax -n -d 電話番号 テキストファイル
/usr/local/sbin/textfmt: No font metric information found for "Courier-Bold".(略)
しかし、クライアントソフトウェアのWinPrint HylaFaxを使ってHylaFaxサーバーへアクセスすると、正常にfaxを送ることができた

WinPrint Hylafaxは、Windowsのプリンタデバイスのように振舞うクライアントソフトウェアである。
文書を扱う適当なWindowsのアプリで「印刷」実行するだけで、Hylafaxサーバーに文書の送出を指示し、任意の宛先へFAXを送ることができる。

この場合、次のように送出される。

Windowsアプリ⇒ WinPrint Hylafax⇒ Hylafax⇒ IAXmodem⇒ ASTERISK⇒ 電話回線

WinPrint Hylafaxの設定については、こちらのリンクを参考
http://akira-arets.blogspot.com/2011/09/ms-windows7-winprint-hylafaxfax.html


◇送信中には、ASTERISKのCLIには、次のようなメッセージが表示された
asterisk-01*CLI>
    -- Accepting AUTHENTICATED call from 192.168.yyy.zzz:
       > requested format = slin,
       > requested prefs = (),
       > actual format = ulaw, ←双方で使うコーデックとしてulawが選択されている
       > host prefs = (ulaw|slin),
       > priority = mine
    -- Executing・・・(省略)・・・
たとえばiaxmodem側とasterisk側で共にulawが使われている場合、コーデックの変換はなく、そして次に説明するPLCは用いられない。(ulawとalawの組み合わせでも問題ない)
音声FAX通信ではPLCが生じていないことは大切である。

PLCとは、パケットがロスしたときにそれがわからないよう無音を挿入するための機能である。
音声を使うFAX通信では、パケットロス時にPLCによって無音が挿入されるとうまく通信ができなくなってしまう。
通信中に20msの無音に遭遇するとFAXモデムは"carrier loss"を検出するからだ。
"carrier loss"は、FAXプロトコルでは次の手順に移るという意味を持っているため通信は失敗してしまう。

FAX送信でエラーが頻発する場合、asteriskを含めた相手先のアナログ電話への経路途中で、PLCが発生していないことを確かめる必要があるだろう

(参考)
・Asterisk IAXmodem < http://www.voip-info.org/wiki/view/Asterisk+IAXmodem > 2011/10/30
・Member "asterisk-1.6.2.20/doc/tex/plc.tex" of archive asterisk-1.6.2.20.tar.gz:
< http://fossies.org/unix/misc/asterisk-1.6.2.20.tar.gz:a/asterisk-1.6.2.20/doc/tex/plc.tex > 2011/10/30


【FAXの受信】

◇ASTERISKのextensions.confに、fax着信用のコンテクストとエクステンションを追加する
[root@asterisk asterisk]# vim /etc/asterisk/extensions.conf
[fax_incoming]

exten => incoming-fax,1,Dial(IAX2/iaxmodem)
当然、この例では、
外線から着信するデバイスの設定で、着信先コンテクストにはfax_incomingを指定し、
さらに、registerステートメントで、着信先エクステンションとしてincoming-faxを指定する必要がある。

◇外線からhylafaxへFAXを送信する

外線からFAX機などを使って文書を送信し、コンテクストfax-incomingのエクステンションincoming-faxに着信させると、
iaxmodemにダイヤルされ、hylafax側でiaxmodemが応答しfaxが受信される。


hylafaxの受信用ディレクトリを確認する
[root@localhost ~]# ls /var/spool/hylafax/recvq/
fax000000006.tif
このように、インデックスがつけられてtif形式で画像ファイルとしてFAXは保存される。

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad