kilin> how to> efax

Linux FAXサーバー (efax)

(2006.12.23 - 2014.1.31)

2006年時点で販売中のシリアル(RS232C)接続のオムロンのFAXモデム(ME5614/E2)を使って,FAXサーバーを構築しました.受信FAXはe-mailに添付して送ってきてくれますし,送信はスクリプトで一発です.便利です.
(環境) CentOS 5.1-5.4, CentOS 6.5, efax, オムロンモデムME5614/E2, 株式会社ミヨシ 自動転換式回線アダプタ MSR-323/N

mgetty+sendfaxとefax

rootで
# yum list | grep fax
とやると,
efax.i386
mgetty-sendfax.i386
mgetty-viewfax.i386
と表示される.Fedora Core 6, , CentOS 5.1に用意されているFAXサーバーはmgetty+sendfaxとefaxのようである.それぞれの特徴は,
soft 特徴 対応モデム
mgetty-sendfax 高機能,標準的 class 2, 2.0
efax 簡単 class 1, class 2, 2.0
なので,クラス2のFAXモデムを持っていれば,mgetty+sendfaxのほうがよさそうですが,購入したオムロンモデムME5614/E2はクラス1のFAXモデムなのでefaxを選択(するしかない).

efaxのインストール

rootで(以下プロンプトが#ならroot,$なら普通のユーザー),
# yum install efax

モデムの準備

モデムをシリアルポートに接続.アクセス権限を設定.
# chmod 666 /dev/ttyS0
(注:2014年購入のDell T320/CentOS6.5サーバーではttyS0ではなくttyS1でした。「モデムが見つからない」というエラーが出る場合はS0,S1,S2...と順に試して行くとよいでしょう。変更箇所はこのアクセス権限とfaxの設定ファイルのDEV=ttyS0のところ。)

設定ファイルの変更

設定ファイルをバックアップしてから,設定変更.
# cd /usr/bin
# cp fax fax.org
# vi fax
デバイス
# The device to which the fax modem is connected (e.g. ttya for
# /dev/ttya).  Use a dial-out (cua) device if available.  If
# there are links to this device then all programs must use same
# name or the UUCP locking mechanism will fail.  For example, if
# /dev/modem is a link to /dev/cua1, then getty, uucp, kermit,
# pppd, dip, etc. must *all* use either /dev/modem or /dev/cua1.

#DEV=modem
DEV=ttyS0
fax番号
# Your fax number in international format, 20 characters maximum.
# Use only digits, spaces, and the "+" character.

#FROM="+0 000 000 0000"
FROM="+81 54 264 0000"
名前
# Your name as it should appear on the page header.

#NAME="from a Red Hat Linux system"
NAME="FUKUDA Hiroshi, University of Shizuoka"
ページサイズ
# The preferred page size for creating and printing faxes.
# Allowed values are "letter", "legal", and "a4".

#PAGE=letter
# PAGE=legal
PAGE=a4
トーン/パルスの選択(トーンはT,パルスはP)
# Dial string prefix and suffix such as T for tone dialing, P for
# pulse dialing, 9 to get an external line, commas for delays or
# W to wait for dial tone.  See definition of TELCVT below if you
# have more complex requirements.

#DIALPREFIX="T"
DIALPREFIX="P"
FAX受信までの呼び出し回数(電話と共用する場合)
# The number of rings to wait before answering.

ANSRINGS=6

自動受信

inittabをバックアップしてから
# cd /etc
# cp inittab inittab.org
# vi inittab
最後の行に以下を追加して
#efax
s1:345:respawn:/bin/sh /usr/bin/fax answer
reboot.
# reboot
以上で,受信されたFAXは/var/spool/faxにtiff(G3)形式で保存される.パソコンに転送して拡張子tifを付加してirfanviewなどの画像閲覧ソフトで受信FAXを見ることができる.また,このファイルはメールに添付されてroot宛てに送信されるので,aliasesでroot宛てのメールをユーザ宛にしておく.
# vi aliases
# Person who should get root's mail
#root:          marc
root:           taro
aliasesの設定を反映させる.
# newaliases

FAX送信

PDFファイルは,簡単に作ることができるので,FAXしたいファイルをPDFにして,以下のように送るのが楽.
$ pdftops sample.pdf
pdfをpsに変換.sample.psができる.
$ fax make sample.ps
psをtiff(G3)に変換.複数ページある場合は,ページ数個のファイルができる.sample.ps.001, sample.ps.002など
$ fax send 相手先FAX番号 sample.ps.0* 
FAX送信.ファイルにはpsを指定することもできますが,複数ページのFAXは,このようにtiffを指定しないとうまく送れません.
送信のときにlockファイルのエラーがでる場合は,
# chmod 777 /var/lock
でlockフォルダのパーミッションを変更しておく.
なお,pdftopsが使えないときは,yumでインストール.
# yum install poppler-utils ghostscript

FAXスクリプト

そこで,以下のようなCシェルスクリプトを作っておくと,
$ ./faxsend FAX番号 PDFファイル名(拡張子を除く)
でPDFファイルが送れるので便利.
(faxsendスクリプト)
#
rm $2.ps.0*
pdftops $2.pdf
fax make $2.ps
fax send $1 $2.ps.0*
さらに,このスクリプトを別のスクリプトから呼び出すようにしておいてもよい.
(電話番号入りスクリプト)
#
source ./faxsend 054-264-xxxx $1

電話機との共用

上記FAXサーバーを普通の電話機と共用するには,株式会社ミヨシ 自動転換式回線アダプタ MSR-323/N をつかうとよい.これは,電話線を3つに分岐して,先に立ち上げた方を優先し,残り2回線を秘話にする回線アダプタで,しかも,回線が通じてから,秘話になった回線をオンにして,先に通じた回線をオフにすると,回線の切り替えも行える.
したがって,以下のように接続しておくと,
  1. 部屋にいる時,電話にでて,電話ならそのまま話す.FAX音がしたら:WindowsでFAXを手動受信にし,電話を切れば,WindowsでFAXを受けることができる.
  2. 部屋に誰もいないときは,FAXサーバーがFAXを受信してメールでFAXを送ってくれる.また,遠隔からFAXを送信できる.
のように,全ての状況にペーパーレスで対応できる.
(接続)
TEL1 電話機へ
TEL2 Linux FAXサーバーのモデムへ
FAX-MODEM WindowsのFAXモデムへ

参考

$ man fax
$ man efax
efaxでFax modemを使う (http://shino.pos.to/linux/fax.html) 2006.12現在
LinuxでFAXを使おう (http://www.yk.rim.or.jp/~kawagisi/fax.html) 2006.12現在