ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
FAXサーバの構築を行います。なぜFAXサーバが必要か?というと仕事で主に使っているからです。
オフィスは客先ですので、お客さんのFAXを使用するしかありません。送信は別にいいのですが、受信するものにはお客さんに見られたくないものもありますので、自宅でFAXを受けてそれをFAXサーバがTIFFに変換してメール送信してくれる、この機能が一番大事です。
自宅では、respondというクライアントを通して、Samba上のプリンタ(Faxサーバ)に印刷することでFAX送信が可能です。
大前提として、FAXモデムがないとダメです。winmodemはダメ。MODEMがMacにも対応していれば、Linuxでも使用可能です。
①mgetty初期設定
②FAX受信設定
③FAX送信設定
④PCからのFAX送信設定
⑤諸問題対応
となります。
① mgetty 初期設定
最新のmgetty関連パッケージを導入します。
mgetty-viewfax-1.1.30-2
mgetty-sendfax-1.1.30-2
mgetty-1.1.30-2
次に設定ファイルの編集
・FAX受信設定
/etc/mgetty+sendfax/mgetty.config
debug 4
fax-id 03-xxxx-xxxx
speed 115200
port ttyS0 ★モデムが繋がるデバイス
speed 38400
switchbd 19200
modem-type cls2 ★自宅のRockwellモデムはFAX Class2コマンドまでしかサポートしない
・FAX送信設定
/etc/mgetty+sendfax/sendfax.config
verbose y
debug 5
fax-devices ttyS0
fax-id 03-xxxx-xxxx
max-tries 3
max-tries-continue y
port ttyS0
modem-type cls2
そして起動設定。
/etc/inittabの最終行に下記起動コマンドを追記。
s1:2345:respawn:/sbin/mgetty ttyS0
#EOF
ここまで設定できたら、まずはmgettyが起動していることを確認する。
# init q
# ps -eaf | grep mgetty
root 14443 1 0 19:31 ? 00:00:00 /sbin/mgetty ttyS0
root 14445 14184 0 19:31 pts/1 00:00:00 grep mgetty
#
さらにmgettyのログをチェックして、モデムが認識されているかのチェック。
#tail -f /var/log/mgetty.log.ttyS0
--
08/14 19:35:55 yS0 mgetty: experimental test release 1.1.30-Dec16
08/14 19:35:55 yS0 check for lockfiles
08/14 19:35:55 yS0 locking the line
08/14 19:35:56 yS0 lowering DTR to reset Modem
08/14 19:35:57 yS0 send: dATQ0V1H0[0d]
08/14 19:35:57 yS0 waiting for ``OK'' ** found **
08/14 19:35:57 yS0 send: ATS0=0Q0&D3&C1[0d]
08/14 19:35:57 yS0 waiting for ``OK'' ** found **
08/14 19:35:57 yS0 mdm_send: 'AT+FCLASS=2' -> OK
08/14 19:35:57 yS0 mdm_send: 'AT+FCLASS=0' -> OK
08/14 19:35:57 yS0 mdm_send: 'AT+FAA=1;+FCR=1' -> OK
08/14 19:35:57 yS0 mdm_send: 'AT+FBOR=0' -> OK
08/14 19:35:58 yS0 mdm_send: 'AT+FLID="03-xxxx-xxxx"' -> OK
08/14 19:35:58 yS0 mdm_send: 'AT+FDCC=1,5,0,2,0,0,0,0' -> OK
08/14 19:35:58 yS0 waiting...
モデムが繋がっていなかったりすると以下のエラーメッセージが出力され続けます。
--
08/14 19:35:10 yS0 mgetty: experimental test release 1.1.30-Dec16
08/14 19:35:10 yS0 check for lockfiles
08/14 19:35:10 yS0 locking the line
08/14 19:35:10 yS0 WARNING: DSR is off - modem turned off or bad cable?
08/14 19:35:10 yS0 lowering DTR to reset Modem
08/14 19:35:11 yS0 send: dATQ0V1H0[0d]
08/14 19:35:11 yS0 waiting for ``OK''
08/14 19:35:31 yS0 timeout in chat script, waiting for `OK'
08/14 19:35:31 yS0 init chat timed out, trying force-init-chat
08/14 19:35:31 yS0 send: d[10][03]ddd+++ddd[0d]dATQ0V1H0[0d]
08/14 19:35:35 yS0 waiting for ``OK''
08/14 19:35:55 yS0 timeout in chat script, waiting for `OK'
08/14 19:35:55 yS0 init chat failed, exiting...: Interrupted system call
08/14 19:35:55 ##### failed in mg_init_data, dev=ttyS0, pid=14480
②FAX受信設定
続いてFAX受信設定。
mgetty は FAXを受信すると/etc/mgetty+sendfax/new_faxスクリプトを起動します。
(#strings /sbin/mgetty | grep new_fax
/etc/mgetty+sendfax/new_faxで確認)
サンプルはここ。昔ながらに使っていたメールで転送するスクリプトです。
mmencodeコマンドを使用しているので、metamailパッケージが必要です。[PRM Search]で探してインスコ。
次に、new_faxのテスト。/usr/share/doc/mgetty-1.1.30/samples/にサンプルがいろいろあり、その下のnew_fax.all/配下に新しいnew_faxがあるのでチェックしてみましょう。人によってプリンタに出すとか削除するとかアーカイブするとかできるみたいです。
今回は昔ながらのnew_faxの互換をチェックするために以下を実行。
# /etc/mgetty+sendfax/new_fax 0 12345 1 /var/spool/
fax/incoming/fn11dfd10S0-0337316045.01
pnmscale: promoting from PBM to PGM
#
OK。FAXを親から送って貰ったらうまく受信もできました。(たまには帰ります)がファイルサイズが異様に大きい(1.8M)。FAX受信1枚でこれでは使い物にならない。いろいろ調べてみたけどunisysの特許の絡みでpnmtotiffコマンドにデフォルトでかかるlzwオプションが無効になっている模様。そこで 明示的に-packbitsオプションを付加して、クリア。
③FAX送信設定
アプリケーション(ワード等)からsambaで定義したプリンタ(FAX)に書き込み(PS変換を行い)、respondというフリーソフトを使用してFAXSPOLにいれ、その後faxrunqでFAX送信という手順でFAX送信を可能にします。
FAXを送信できるのはWindowsなマシンからのみっていうことになります。
ここのサイトから以下のモジュールをダウンロードしましょう。
・respond 1.6 preview3a 32bit
・printfax.pl V1.5.0
・faxlpq V1.0.1
・faxlprm V1.0.1
次にsambaの設定変更
/etc/samba/smb.conf
[fax]
comment = Fax-Modem on Linux Server
printer name = fax
printable = yes
public = yes
guest ok = yes
path = /var/spool/fax
print command = ( /usr/bin/printfax.pl %I %s %U %m; rm %s ) &
lpq command = /usr/bin/faxlpq
lprm command = /usr/bin/faxlprm %j
以下のように見えればOK。
また、printfax.pl, faxlpq, faxlprm については/usr/bin配下に置きパーミッションを変更。
実際に送信を行うためにはfaxrunqコマンドでキューを送り出す必要があるので、faxrunqコマンドをcronに仕込む
* * * * * /usr/bin/faxrunq
これでOKかな。
④PCからのFAX送信設定
③でSambaに定義したプリンタにPostScriptドライバを設定して登録。
登録完了。
こんな感じでFAX送信ができます。
・respondを常駐させる。
ダウンロードしてきたrespondを適当にフォルダに解凍し、起動します。
・faxrunqがcronで起動してFAX送信。完了するとメールにて通知されます。
faxadminユーザにメールを送るので、aliasesを設定しておきましょう。
⑤諸問題対応
・印刷してもrespondの画面がポップアップしない。
respondを起動しているXPProマシン上にてTrendMicroのウィルスバスターが起動していた。
VBのパーソナルファイアウォールにてrespondで使用するポート5555の穴が開いていなかったので空けた。
telnet 5555
としてポップアップがあがればOK。
そうでなければSambaでFAX Spoolと指定しているディレクトリのパーミッションをチェック(/var/spool/fax)。sambaが600で一時ファイルを作成しようとします。
・手動でprintfax.plを実行するとうまくFAX送信できるのに、respond経由だとうまく行かない。
ためしにsetoatuにて実行。
$ printfax.pl 192.168.xx.xx smbprn.00000015.ECK6Vk setoatu vaiov
Connected. Type your message, ending it with a Control-D
sent 64 bytes
/usr/bin/printfax.pl[6578]: Can't open `/var/spool/fax/outgoing/printfax.log': 許可がありません
ログに書き込み権がないようだ。chmod 666 /var/spool/fax/outgoing/pintfax.logとしてクリア。
・どうも発信がうまくいかない。モデムがガリガリ言っている。
モデムの状態を確認。cuコマンドを使用(cuコマンドがない場合にはuucpパッケージが必要)
その前に/etc/inittabからmgettyを外し、init qを忘れずに。
# cu -l ttyS0 -s 9600
Connected.
AT
OK
atd090xxxxxxxx ★携帯へかけてみる。
BUSY
att
~.
Disconnected.
やっぱりかりかり言ってかからない。明示的にトーンにしてみる。
# cu -l ttyS0 -s 9600
Connected.
AT
OK
atdt090xxxxxxxx
BUSY
att
~.
Disconnected.
今度は携帯にかかった。
ってことでsendfax.configファイルを修正。
# which command is used to dial out? (Could be ATD, ATDP, ATX3D0W...)
dial-prefix ATDT
・プリンタのステータスが(アクセス拒否)となっている。(未解決)
samba2.2.2の時も同じようなことがあったのでそのうちパッチがでるかなー。