現: 2023-03-23 (木) 20:44:16 yuji Deleted an attach file: rt500ki.png at 2023-03-24 (金) 08:21:45, Deleted an attach file: jp.zip at 2023-03-27 (月) 13:26:16, Deleted an attach file: sendfax.sh at 2023-03-29 (水) 14:51:46 at 2023-03-30 (木) 07:21:16 at 2023-03-30 (木) 07:23:11 at 2023-03-30 (木) 07:28:20 at 2023-03-30 (木) 08:39:13 at 2023-03-30 (木) 09:24:02 at 2023-03-30 (木) 12:04:47 at 2023-03-30 (木) 12:29:16 at 2023-03-31 (金) 12:59:23 at 2023-03-31 (金) 15:39:00 at 2023-04-03 (月) 09:34:09 at 2023-04-03 (月) 10:24:58 at 2023-04-03 (月) 14:50:49 at 2023-04-03 (月) 16:02:19 at 2023-04-03 (月) 16:27:19 at 2023-04-03 (月) 16:28:31 at 2023-04-03 (月) 17:00:35 at 2023-04-03 (月) 18:37:59, Deleted an attach file: ux-t35cl.png at 2023-04-04 (火) 09:20:07 at 2023-04-04 (火) 14:34:43 at 2023-04-04 (火) 15:30:57 at 2023-04-04 (火) 17:17:46 |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * FAXサーバーを作る [#k9f22f6c] | ||
+ | //#ref(ux-t35cl.png,around,30%) | ||
+ | 家で骨董品のようなSHARPの電話/FAX機(UX-T35CL)を使っているが,何年か前にスキャナー部分が壊れてしまってFAXの送信が出来なくなっている ;( ~ | ||
+ | FAXの送信はめったにしないけどたまに必要な時があるので,どうしようかと思っていた。~ | ||
+ | |||
+ | SHARPの電話/FAX機が置いてあるそばに[[Raspberry Pi Zero W>/PC/RaspberryPi/スペック#c2fd2f44]]があるんで,いまさらではあるがFAX Modemを使ってFAXを送受信出来る環境を作成し,ネットワーク上のPCからFAXを送信したり,FAXを受信したらプリンターから印刷するようにしてみた。~ | ||
+ | |||
+ | ** FAX ModemとRaspberry Piと電話回線 [#p4239a10] | ||
+ | [[US Robotics>https://www.usr.com]]の古いSPORTSTERやMegahertzもまだ持ってるけど,これらを[[Raspberry Pi Zero W>/PC/RaspberryPi/スペック#c2fd2f44]]で使うにはちょっと大変なんで,以前使っていたRATOCの[[REX-USB56>https://amzn.to/42BU4Sg]]がどこかにあるはずなのでそれを見つけて使ってみることにした。~ | ||
+ | #ref(REX-USB56.png,,20%) | ||
+ | [[Raspberry Pi Zero W>/PC/RaspberryPi/スペック#c2fd2f44]]は[[学習リモコン>/PC/RaspberryPi/WEBリモコン/学習リモコンを作る]]や部屋の温度/湿度の測定なんかで使っていたんだけど,[[IFTTT>https://ifttt.com]]の無料で使えるサービスが劣化してしまってからは部屋の温度/湿度の測定ぐらいにしか使っていなかった。~ | ||
+ | |||
+ | OSは[[Raspbian Stretch>/PC/RaspberryPi/Linuxを動かしてみる/Raspbianのインストール]]を使っているんだけど,しばらく更新をしてこなかったので更新作業から始めた。そしたらなかなかすんなり更新が出来ず,更新エラーを修正していたらなんとBusterになってしまった :p それでも古いけど((現在はRaspberry Pi OSになっている。))・・・~ | ||
+ | |||
+ | Raspberry Pi Zero WのUSBコネクタはUSB 2.0 MicroUSBなんで,[[OTGケーブル>https://amzn.to/3n4Xq0l]](MicroUSB/USB A)経由で[[REX-USB56>https://amzn.to/42BU4Sg]]を接続した。自動的にハードウェアを認識して,デバイスドライバーのロードとデバイスファイルが作成された。~ | ||
+ | # lsusb | ||
+ | Bus 001 Device 003: ID 0572:1321 Conexant Systems (Rockwell), Inc. | ||
+ | : | ||
+ | # dmesg | grep cdc_acm | ||
+ | [ 21.644279] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device | ||
+ | : | ||
+ | # lsmod | grep cdc_acm | ||
+ | cdc_acm 19834 2 | ||
+ | |||
+ | # ls -la /dev/ttyACM* | ||
+ | crw------- 1 uucp dialout 166, 0 1月 3 09:15 /dev/ttyACM0 | ||
+ | |||
+ | NTT西日本からレンタルしている[[RT-500KI>https://web116.jp/shop/hikari_r/500ki/500ki_00.html]]の電話機2と[[REX-USB56>https://amzn.to/42BU4Sg]]を接続した。~ | ||
+ | 電話機1には壊れているSHARPの電話/FAX機がそのままつながっていて,電話機として引き続き使っている。~ | ||
+ | |||
+ | [[NTT西日本のフレッツ光>https://flets-w.com/]]での固定電話はひかり電話なのだが,FAXを外部から着信する時に指定着信番号を追加すると電話機2で直接着信することが出来るのでFAX専用としては便利に使える。~ | ||
+ | RT-500KIの電話機2に指定着信番号に2を設定して,電話番号*2で着信できるようにした。~ | ||
+ | #ref(rt500ki.png,,60%) | ||
+ | また,ひかり電話はアナログ電話と違いIP電話なのでパケットが途切れる場合がある。途切れた場合音声電話であれば特に問題にはならないが,FAXデータの送受信時にパケットが途切れるとFAXデータの伝送が途切れてしまいエラーとなってしまう。RT-500KIの設定の音質優先モードを「優先や最優先」に設定することで多少は改善出来るかもしれない。~ | ||
+ | 現在はとりあえず「なし」で運用している。~ | ||
+ | |||
+ | ** FAXサーバーソフトウェアのインストール [#u93fd409] | ||
+ | FAXサーバーを実現するのにオープンソースで開発されていて無料で使用できる[[HylaFAX Community Edition>https://www.hylafax.org/]]をインストールする。~ | ||
+ | |||
+ | FAXサーバーを使うと,ネットワーク上の他のマシンからFAXを送信したり,外部からFAXを受信して他のマシンで確認したり,プリンターで印刷したり出来るようになる。~ | ||
+ | 印刷しなければエコにつながるかも。~ | ||
+ | |||
+ | 以下のようにパッケージ管理ツールでHylaFAXをインストール出来た。~ | ||
+ | # apt install hylafax-server | ||
+ | |||
+ | インストール後に''faxsetup''が起動され,設定を色々と尋ねられて答えることで設定を行う。~ | ||
+ | 必要だろうと思われるところだけ設定して,後はデフォルトのままにした。~ | ||
+ | - Country Code: 81~ | ||
+ | 81で日本にする。~ | ||
+ | - Area Code: 72~ | ||
+ | 住んでいる所の市外局番の初めの0を除いて設定する。~ | ||
+ | - Long distance dialing prefix: 0~ | ||
+ | 国内プレフィックス番号の0にする。~ | ||
+ | - International dialing prefix: 010~ | ||
+ | 国際電話プレフィックス番号を設定する。NTT西日本だと010。~ | ||
+ | - Serial port that modem is connected to: ttyACM0~ | ||
+ | FAX Modemとの通信デバイスを設定する。上記で確認したttyACM0にした。~ | ||
+ | - Phone number of fax modem: +81.72.657.XXXX~ | ||
+ | 国番号からのFAXの番号を設定する。~ | ||
+ | - Local identification string: 072657XXXX*2~ | ||
+ | FAXの1行目のヘッダーで相手に知らせるFAX番号として設定する。FAX番号に*2(指定着信番号)をつけた番号にした。~ | ||
+ | - Rings to wait before answering: 1~ | ||
+ | 早すぎるとかかってきた電話番号をうまく取得出来ないかも? でもとりあえず1にした。~ | ||
+ | |||
+ | これらの設定でModem関連は''config.ttyACM0''のようなファイルに保存されるので,後で変更もできる。~ | ||
+ | |||
+ | インストール後,TagLineFormat(FAXの1行目のヘッダーでどのように表示するかを設定する)を以下のように変更した。デフォルトだと日付部分が%cになっていて,OSのロケールが日本語だと文字化けするから。~ | ||
+ | TagLineFormat: "From %%l|%Y-%m-%d %T|Page %%P of %%T" | ||
+ | ここに使われるフォントは,18pointのLucida Typewriterフォント(lutRS18.pcf)が使われている。~ | ||
+ | TagLineFont: etc/lutRS18.pcf | ||
+ | |||
+ | 用紙のサイズを''/etc/hylafax/pagesizes''ファイルでデフォルトをA4に設定する。~ | ||
+ | default A4 9921 14031 9255 13207 472 345 | ||
+ | |||
+ | Hylafaxサーバーにログインするためのユーザーアカウントを作成する。~ | ||
+ | 管理者ユーザーの場合,~ | ||
+ | # faxadduser -a 管理者パスワード -p ユーザーパスワード ユーザー名 | ||
+ | 通常ユーザーの場合,~ | ||
+ | # faxadduser -p ユーザーパスワード ユーザー名 | ||
+ | とすればユーザーアカウントを作成できる。~ | ||
+ | ユーザーの削除は,~ | ||
+ | # faxdeluser ユーザー名 | ||
+ | とするようだ。~ | ||
+ | |||
+ | クライアントアプリから作成したユーザーアカウントで接続できる。~ | ||
+ | |||
+ | HylaFAXのサービスを再起動する。ステータスでエラーが無いか確認しておく。~ | ||
+ | # systemctl restart hylafax | ||
+ | # systemctl status hylafax -l | ||
+ | |||
+ | ** FAXの送信テスト [#ff61ef7e] | ||
+ | HylaFAXのsendfaxコマンドで送信できる。~ | ||
+ | # sendfax -n -m -d 送信先電話番号 送信するファイル(txtやpdfなんか) | ||
+ | 送信先電話番号のところにFAXが届けば送信機能は問題ない。~ | ||
+ | |||
+ | ** FAXの受信テスト [#m7fdc5ca] | ||
+ | 外部からFAXを家の「電話番号*2」としたFAX電話番号に送ってみる。~ | ||
+ | |||
+ | Modemが無音で着信して,FAXが受信できれば問題ない。FAXデータは''/var/spool/hylafax/recvq''ディレクトリにTIF画像(FAXでは標準フォーマットらしい)で保存されるので確認しておく。~ | ||
+ | |||
+ | *** 受信したFAXデータをメールで送る [#f4ce4415] | ||
+ | 受信したFAXデータを指定した宛先へメールで送信してみる。~ | ||
+ | この場合,Raspbianでメールが外部に送信出来る環境が構築出来ている必要がある。~ | ||
+ | |||
+ | ''/etc/hylafax/FaxDispatch''ファイルを,以下の内容で作成する。~ | ||
+ | FILETYPE=pdf; | ||
+ | SENDTO=送信先メールアドレス; | ||
+ | FROMADDR=送信元メールアドレス; | ||
+ | |||
+ | これで,FAXを受信するとTIF画像をPDF文書に変換した後,指定した宛先へメールで送る。~ | ||
+ | 複数の宛先にしたい場合は,SENDTO=XXXXXXを縦に必要数設定すればいいみたい。~ | ||
+ | |||
+ | ''/var/spool/hylafax/recvq''ディレクトリのTIF画像はそのまま残る。定期的に削除したほうが良いかも。~ | ||
+ | FILETYPEで指定できるのは,ps,tif,pdf。~ | ||
+ | |||
+ | ''/etc/hylafax/FaxDispatch''ファイルには,通常のHylaFaxの保存先とは違うカスタム処理を定義する事が可能。~ | ||
+ | |||
+ | *** 受信したFAXデータを家のプリンターで印刷する [#g5707fbe] | ||
+ | Raspbianで印刷出来るプリンター(最近EPSONのEW-M754Tを買った)があれば,''/etc/hylafax/FaxDispatch''に,~ | ||
+ | if [ -f $FILE ]; then | ||
+ | tiff2ps -a -w 9 -h 11 $FILE | lp -o fitplot -o media=a4 -d EPSON_EW_M754T_Series | ||
+ | fi | ||
+ | |||
+ | のように追加すると,FAX受信後自動的に指定したプリンターで印刷される。~ | ||
+ | [[EPSON EW-M754T>https://www.epson.jp/products/ecotank/ewm754t/]]は電源がOFFになっていても印刷データを受信すると自動的にONになって印刷されるのでなかなか便利(しばらくすると電源OFFになる) :) ~ | ||
+ | |||
+ | ** 失敗時の通知 [#l76d0618] | ||
+ | FAX送信時に何らかの原因で失敗した時は,デフォルトでジョブ番号が記載されている通知がメールされる。~ | ||
+ | |||
+ | 通知に送信しようとしたFAX画像を含めるには,''/etc/hylafax/FaxNotify''に設定する必要がある。~ | ||
+ | TOADDR=faxyyyy@xxxxx.xxx | ||
+ | NOTIFY_FAXMASTER=errors | ||
+ | RETURNFILETYPE=PDF; | ||
+ | |||
+ | 実際の処理は,''/var/spool/hylafax/bin/notify''で行われる。~ | ||
+ | |||
+ | * クライアントアプリ [#l9c6dd97] | ||
+ | 普段使っているPCのアプリからFAXを送信する時に使うHylaFAXのクライアントアプリも,[[いろいろリリースされている>https://www.hylafax.org/desktop-client-software/]]。~ | ||
+ | |||
+ | 以下は,Windowsマシンで仮想プリンターを利用してFAX送信ができるクライアントアプリ。~ | ||
+ | 現在Winprint HylaFAX Reloadedを使っている。~ | ||
+ | |||
+ | 基本的には,クライアントアプリはローカルネットワーク上(自宅orVPN接続)での環境で使用する。~ | ||
+ | |||
+ | ** Winprint HylaFAX Reloaded [#i8b97aeb] | ||
+ | Windowsマシンで仮想プリンターを使ってアプリから印刷をすると,FAXサーバーから送信出来るようにするHylaFAXクライアント。GPLで無料で使用できる。~ | ||
+ | ''受信したFAXの管理を行う機能はない。''~ | ||
+ | |||
+ | インストールは[[Winprint HylaFAX Reloaded>https://sourceforge.net/projects/wphf-reloaded/]]のFilesからインストーラーをダウンロード(version 0.4.11)して,ファイルをダブルクリックでインストール出来る。~ | ||
+ | 自前で''日本語化する''&ref(ja.zip,,言語ファイル);を作成したので,解凍してlocaleディレクトリにコピーする。~ | ||
+ | |||
+ | アプリを起動しConfigureボタンをクリックしてLanguageで日本語に設定してOKを押すと,日本語表示になる。~ | ||
+ | 再度設定ボタンを押して,メインタブでHylafaxが動作しているサーバーのIP Addressと上記で作成したログイン用のユーザー/パスワードを設定すると,HylaFAXサーバーに接続出来る。~ | ||
+ | ページサイズをA4に,解像度をファインに設定しておく。~ | ||
+ | |||
+ | Windowsアプリから印刷するプリンターに''HylaFAX''を選択して印刷をしてみる。~ | ||
+ | 送信先のFAX番号が入力出来るダイアログが表示されるので送信先のFAX番号を入力して送信ボタンを押すと,HylaFAXのFAXサーバーからFAXが送信が出来た。~ | ||
+ | #ref(fax.png,,70%) | ||
+ | 電話帳にはaddressbook.csvというファイル名のcsvファイル(UTF-8)が使用できる。~ | ||
+ | ABC会社,XXX-YYY-ZZZZ | ||
+ | |||
+ | ** YajHFC [#ibcdbcee] | ||
+ | [[YajHFC>https://www.yajhfc.de/]]はJavaで書かれているWindows,Linux,MacOS Xなんかで動作するHylaFAXクライアントで,無料で使用できる。~ | ||
+ | Windowsでは仮想プリンターからFAX先を指定して送信が出来る。受信したFAX(recvqに保存されている)もクリックして表示できる。また送信キューの管理も出来る。~ | ||
+ | |||
+ | [[YajHFCのDownloads>https://www.yajhfc.de/downloads/current-version]]からダウンロードでき,Windows用のインストーラーも用意されている。~ | ||
+ | |||
+ | 電話帳にLDAPが使用できるのがGood。 | ||
+ | |||
+ | * PDFを添付したメールからFAX送信 [#xfdc8453] | ||
+ | 上記のHylaFAXクライアントはローカルネットワーク上(自宅orVPN接続)で使用するので,インターネット上の端末等からはFAXサーバーに接続してFAX送信は出来ない。~ | ||
+ | |||
+ | そこで,FAX送信したいPDFファイルを電子メールに添付して,件名に相手の送信先FAX番号を入れてメールすると,HylaFAXからメールに添付されたPDFファイルをFAX送信するようにしてみた。~ | ||
+ | |||
+ | これが出来ると,Internet経由のメールやAndroid端末とかでもFAXが送れるようになるので便利になる。~ | ||
+ | 便利ではあるが勝手に使用されないような最小限の対策も行う必要がある。 | ||
+ | |||
+ | ** メールサーバーでFAX送信用のアカウントを作る [#w499e4b0] | ||
+ | インターネットからメールが受信できるメールサーバーに,''FAX送信メール専用のメールアカウント''を作成する。~ | ||
+ | |||
+ | 自前で運用しているメールサーバーがあるので,そこにfaxxxxxというアカウントを作成した。~ | ||
+ | このメールアドレス宛にFAX送信メールを送ると,このメールサーバーに届くようにする。~ | ||
+ | |||
+ | ** メールサーバーのメールを取得する [#of484d18] | ||
+ | HylaFAXサーバーが動作しているRaspberry Pi Zero Wで,上記のメールサーバーのfaxxxxx宛のメールを読み出すために,[[fetchmail>https://ja.wikipedia.org/wiki/Fetchmail]]を使用する。~ | ||
+ | |||
+ | fetchmailのインストールはパッケージ管理ツールで行える。~ | ||
+ | # apt install fetchmail mpack nkf | ||
+ | |||
+ | faxxxxxアカウントを作成し,作業ディレクトリを用意する。~ | ||
+ | $ mkdir -p ~/sendfax/tmp | ||
+ | |||
+ | fetchmailの設定ファイル~/.fetchmailrcを,以下のような内容で作成する。~ | ||
+ | set postmaster yuji # error mailの送信先 | ||
+ | set no bouncemail # error mailを送信者に返さない | ||
+ | set no spambounce # spam mailを送信者に返さない | ||
+ | poll xxxxx.xxx # 接続mailサーバー | ||
+ | protocol pop3 # POP3 | ||
+ | port 995 # 接続port | ||
+ | user 'faxxxxx' # mailユーザー名 | ||
+ | pass 'yyyyyyyy' # mailパスワード | ||
+ | ssl # POP over SSL/TSLで接続 | ||
+ | mda '/home/faxxxxx/sendfax.sh' | ||
+ | 内容は,メールサーバー(例ではPOP3s)に合わせて作成する。~ | ||
+ | |||
+ | パーミションの設定をしておく。~ | ||
+ | $ chmod 600 ~/.fetchmailrc | ||
+ | |||
+ | 通常fetchmailはメールサーバーからメールを取ってきてローカルマシンのメールボックスに転送目的で使用するが,今回はメールを取ってきて''sendfax.sh''に渡すようにしている。~ | ||
+ | |||
+ | ** メールから添付ファイルを取り出してFAXを送信 [#r3d6387d] | ||
+ | メールから添付されたPDFファイルを取り出して,FAXを送信するスクリプト''~/sendfax.sh''を作成した。~ | ||
+ | #code(bash,nonumber,sendfax.sh) | ||
+ | |||
+ | 必要なところ(トークンパスワード等)は編集し,パーミションの設定をしておく。~ | ||
+ | $ chmod 700 ~/sendfax.sh | ||
+ | |||
+ | sendfax.shはfetchmailから実行される。FAXの送信は,HylaFAXのsendfaxコマンドを使用している。~ | ||
+ | |||
+ | FAXサーバー側のsendfax.shで,正しいトークンが記載されているかどうかチェックし,正しくない場合はFAXの送信はしないようにしている。~ | ||
+ | |||
+ | こうしておかないと,どのユーザーからのメールでもFAXを送信することが出来てしまい,電話回線が勝手に使われてしまうことになってしまうから &worried; | ||
+ | |||
+ | またFAXでのカバーページは送信しないようにしている。~ | ||
+ | |||
+ | 注意する事として,munpackだと添付ファイル名に日本語を使うとうまく処理できない場合があるので,''添付ファイル名は英数字にする。'' | ||
+ | |||
+ | ** cronでfetchmailを定期的に動かす [#o780211f] | ||
+ | fetchmailが5分毎に動作するようにcronに設定した。~ | ||
+ | */5 * * * * /usr/bin/fetchmail -s | ||
+ | |||
+ | これで定期的にfetchmailが動作し,メールサーバーからfaxxxxx宛の新しいメールを読み出して,sendfax.shスクリプトを使ってそのメールに添付されたPDFファイルを取り出してFAX送信される。~ | ||
+ | |||
+ | ** メールでFAX送信を依頼してみる [#rb6f5e64] | ||
+ | 電子メールでFAX送信するPDFファイル(FAX出来るのはPDFのみ)を添付し,件名に送信先のFAX番号を入れ,本文に以下のようなトークンを記載(知っている人以外にFAXを送信できなくなる)したメール作成して送信する。~ | ||
+ | pass:ZZZZZZZ | ||
+ | |||
+ | しばらくしてFAXが宛先に届けば,問題なく動作している。~ |