Linux Server

FAX サーバ構築(mgetty+sendfax)

  

ご注意下さい

この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。

5
(1)

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。

WS000000.JPG

また、printfax.pl, faxlpq, faxlprm については/usr/bin配下に置きパーミッションを変更。

実際に送信を行うためにはfaxrunqコマンドでキューを送り出す必要があるので、faxrunqコマンドをcronに仕込む

* * * * * /usr/bin/faxrunq

これでOKかな。

④PCからのFAX送信設定
③でSambaに定義したプリンタにPostScriptドライバを設定して登録。

WS000003.JPG

登録完了。

WS000004.JPG

こんな感じでFAX送信ができます。

・respondを常駐させる。
ダウンロードしてきたrespondを適当にフォルダに解凍し、起動します。
WS000002.JPG

・アプリケーションから登録したプリンタへ印刷。
WS000005.JPG

WS000006.JPG

・ポップアップが出るのでFAX番号を入力
WS000008.JPG

・OKを押すと、FAX送信フォルダにスプールされる
WS000009.JPG

・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の時も同じようなことがあったのでそのうちパッチがでるかなー。

この記事は役に立ちましたか? | Is this article useful for you?

評価をお願いします | Please leave your rating.

平均 | Av.: 5 / 5. 投票数 | Votes: 1

最初の評価を下さい | Please vote for the first rating.

-Linux Server
-

© 1999 - 2021 蒲田ネット