Tips記事
» 2002年06月26日 00時00分 UPDATE

mgetty+sendfaxでFAXサーバを構築したい

[木田佳克,ITmedia]

 ADSL全盛の2002年現在、いまや利用されることが少なくなったFAXモデム。しかし、Linuxサーバと組み合わせればFAXサーバとして活用することが可能だ。ADSLを利用して24時間稼働させているインターネットサーバであれば、常時FAX送受信も可能になるだろう。

 導入する際のポイントは、シリアルポートを監視させるデーモンと、FAXを送受信するツール(viewfaxなど)を組み合わせて利用する点だ。まず最初に、シリアルポート監視のデーモン「mgetty」のインストールから設定までを解説しよう。

 Red Hat Linuxであれば、レッドハットから関連するRPMパッケージが配布されている。このバイナリを利用するのが用意だろう。現在の環境にインストールされているかどうかは、次のようにして確認すればよい。表示されない場合には、システムCD-ROMから探すか、「SpeakEasy.Rpmfind.Net」サイトなどから手に入れればよい。

・RPMパッケージの確認からmgettyの設定

# rpm -qa|grep mge
mgetty-viewfax-1.1.28-3
mgetty-sendfax-1.1.28-3
mgetty-voice-1.1.28-3
mgetty-1.1.28-3

 mgettyは、前述のようにシリアルポートを監視するためのツール(デーモン)だ。FAXの送受信は、viewfax/sendfaxと呼ばれるツールが使われる。これらのツールも上記リスト上のRPMパッケージに含まれているので、別途インストールする必要はない。

 ちなみに、インストール後にsendfaxというファイル名(ディレクトリ名)が含まれる物を確認すると、次のようになる。これで設定ファイルなどが含まれているディレクトリが「/etc/mgetty+sendfax」であることも確認できるだろう。

# locate sendfax
/etc/logrotate.d/sendfax
/etc/mgetty+sendfax
/etc/mgetty+sendfax/faxspool.rules.sample
/etc/mgetty+sendfax/dialin.config
/etc/mgetty+sendfax/login.config
/etc/mgetty+sendfax/mgetty.config
/etc/mgetty+sendfax/faxheader
/etc/mgetty+sendfax/faxrunq.config
/etc/mgetty+sendfax/sendfax.config
/etc/mgetty+sendfax/voice.conf
/usr/lib/linuxconf/lib/fax_to_mgetty+sendfax.sh
/usr/lib/mgetty+sendfax
/usr/lib/mgetty+sendfax/cour25.pbm
/usr/lib/mgetty+sendfax/cour25n.pbm
/usr/lib/mgetty+sendfax/viewfax.tif
/usr/sbin/sendfax
/usr/share/man/man8/sendfax.8.gz

 次にシリアルポートが認識されているかを確認しよう。FAXモデムがCOM1ポートにつながっているのであれば「ttyS0」、COM2であれば「ttyS1」のデバイス名になっているはずだ。「モデム(TA)が認識しているのか調べたい」Tipsも参考にしてほしい。

# setserial -a /dev/ttyS0
/dev/modem, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
  Baud_base: 115200, close_delay: 50, divisor: 0
  closing_wait: 3000
  Flags: spd_normal skip_test

 上記、別Tipsでも解説しているように「/dev/modem」をシンボリックリンクで作成しておくのがおすすめだ(もちろん/dev/ttyS0のままでもよく、自分が分かりやすい方を選べばよい)。mgettyの標準設定ファイル内では、modemとして標準設定されている個所も見られる。

# ln -s /dev/ttyS0 /dev/modem
# chmod 660 /dev/modem
# ls -l /dev/modem
lrwxrwxrwx 1 root  root  10 6月 22 01:05 /dev/modem -> /dev/ttyS0

 mgettyのデーモン起動設定に移ろう。次のように、/etc/inittabファイル内に、終了したら再起動する「respawn」設定で指定する(最下行でよいだろう)。

# vi /etc/inittab

〜中略〜

s1:12345:respawn:/sbin/mgetty -a modem -R 60 -n 1

 なお、上記のmgettyへ続くパラメータ指定は、デバイスファイルmodem(-a modem)、1回目の呼び出し後60秒以内(-R 45)に次のコールがあれば、2コールで着信(-n 1)を意味する。

 次に、上記の設定を有効にするため次のように指定し、デーモンとして起動されているか確認しておこう。

# init q

# ps ax | grep mgetty
15807 ? S 0:00 /sbin/mgetty -a modem -R 45 -n 2

 次に、最低限2ファイルを確認しておけば設定完了となる。

# vi /etc/mgetty+sendfax/mgetty.config
ログを見る >>

# vi /etc/mgetty+sendfax/sendfax.config
ログを見る >>

・viewfaxでFAXをコマンドライン表示&送信

 viewfaxは、ファックス受信で作成されたG3形式のファイルを直接表示するためのツールだ。/var/spool/incoming/ディレクトリを覗けば、これまでの設定後に受信されたFAXデータが保存されているはずだ。

# cd /var/spool/incoming
# viewfax [G3ファイル名]

 また、送信をするためには次のようにfaxspoolと呼ばれるツールを使う。さらにこのコマンドでは送信「予約」だけが行われるので、実際に送信を行うためにはfaxrunqコマンドでキューを送り出す必要がある。

 ここでは、簡単に送受信を行うまでを解説しているが、実用的な環境のためにcronでfaxrunqを定期実行する、などのカスタマイズが必要になるだろう。

# faxspool 092-xxx-xxxx test.txt
# faxrunq

 なお、「dfaxlow」、「dfaxhigh」と呼ばれるそれぞれのモジュールがghostscriptに組み込まれていなければ正常に送信ができない。次のように指定して、組み込まれているかを確認しておこう。

# ghostscript -h|grep dfax
declj250 dfaxlow dfaxhigh djet500c dl2100 dnj650c eps9high eps9mid epson

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ