Mgetty+Sendfax with Vgetty Extensions (FAQ) Klaus Lichtenwalder, February 2 1997 中谷千絵, June 3 1997 この文書は mgetty+sendfax と vgetty についての FAQ (frequently asked questions) に答えることを計画しています。vgetty とは、 Klaus Weidner と Marc Eberhard の音声プロセスの拡張版で Gert Doering の fax を使える ように getty が置きかわっているものです。mgetty の公式版は現在 (少なく とも) 1.0 です。 Gert は Linux kernel のナンバー体系を取り入れていま す。つまり、製品版は偶数リリースナンバー (1.0,1.2..) になり、奇数ナン バーは開発版になります。 vgetty は改変されているので 1.0 では vgetty サポートはないことに注意してください。音声が必要なら 1.0 より古い版を 入手するか、それよりはより新しい版を入手しなければなりません。 1. Part I: mgetty を使うかどうかを決めるための質問 1.1. mgetty/vgetty とはどのようなものですか。 From: steve@work.bellingham.wa.us (Steve Work) Mgetty+sendfax は class 2.0 または 2 (2つは違うものです)のファックス モデムを使って、Unix 環境でファックスの送受信するプログラム集です。 vgetty は mgetty を拡張したもので、mgetty と一緒に配布されています。 vgetty はかかってくる音声電話に対応しています。そのようなモデムをお持 ちなら、vgetty は新しい型に正式に付加されているボイスモデムを扱いま す。 さらに具体的には、"mgetty" というプログラムは、class 2.0 あるいは 2 の ファックスモデムを使用して、従来通り有線経由の外部からのログインはもち ろんのこと、さらに追加機能としてファックスの送受信を可能にします。 "sendfax" はファックスファイルを送信する独立したプログラムです。 "vgetty" は mgetty の拡張版で、vgetty は受話器のように電話に応答でき て、 (検出すれば) 音声でのメールメッセージを記録します。そしてさら に、mgetty のファックスか、あるいは別の方法で扱うデータコールかを区別 して実行します。mgetty+sendfax の配布物には vgetty が含まれてい て、vgetty はファックスと音声メッセージを扱う適当なサイズにまとめられ たユーティリティプログラムです。 1.2. mgetty が動作する時、どのようになるのですか。 From: steve@work.bellingham.wa.us (Steven Work) and the distribution CC: clewis@ferret.ocunix.on.ca (Chris Lewis) ちょっと賢い `getty'というところでしょう。 getty は Unix コンピュータ でログイン手続きの最初の段階を管理しているプログラムです。モデムを使っ ている時、getty は着信コールを監視し、(通常は) "login:" プロンプト (username を読みとり、"login" をうまく行います)を出します。 従来の getty あるいは uugetty はモデムを自動応答モードに置きますが、 mgetty はそうではありません。着信コールがあると、mgetty はその時にでき る "RING" を監視します。それらが出来ると、mgetty はモデムに応答するよ うに伝え、それからモデムはどのような形態で接続するのかを mgetty に伝え ます。FAX であれば、mgetty は FAX を受信します。データであれば、mgetty は userid を求めます。それから通常のデータログインをするために空いてい る回線を渡します。 データ電話から ファックス電話を区別するモデムの働きに注意してくださ い。すべての fax モデムはこのようは動きません。そしてお使いのモデムが それができないなら、mgetty にそのようにさせる方法はありません。mgetty はデータ電話ととファックス電話を区別することができないモデムで使うこと ができますが、どんな種類の電話かをあらかじめ伝えてやらねばなりません。 mgetty はログインする際に userid に依存している特別な接続(たとえば uucico、fido やその他のプログラム)について、ログイン以外の別のプログラ ムを選択するように設定できます。 さらに mgetty は 相手先の id をサポートしており、電話番号をもとにする 接続を拒否することができます。 vgetty は mgetty の拡張版で、vgetty は追加の電話機能を提供するボイスモ デムで動きます。モデムが RING を返した時、vgetty はモデムを回線を選び だし、音声メッセージ(あいさつ)を流します。モデムがデータあるいは fax 電話を検出すれば、これを特別なコード (DLE-sequences ) で vgetty に報告 します。DLE-sequences というのはスイッチかモードのいずれかで vgetty を 起こします。そうでなければボイスモードが使われます。 モデムがあいさつ(数秒続く沈黙)に続いて何も聞かないなら、かかってきた電 話はデータモデムであるとみなし、データ接続をしようとします。 vgetty はメッセージをリモート再生するのと同様の通常の受話器の機能を実 行します。その操作はシェルスクリプトから行われるので、希望するなら十分 な音声メール保存箱としてさらに有効に使うことができます。(このボイスモ デムの動作についての記述は ZyXEL 類のモデムに適用されます。私 [steve@work.bellingham.wa.us] は他のボイスモデムでも同様だと考えていま す。) たとえば音声メールシステムがどのようなものかについてですが、voice の下 の scripts というディレクトリに Marc Schaefer の voice_mail.sh スクリ プトがあります。ボイスシェルは実際のモデムからは独立していて、ZyXELs 以外のほとんどのモデムでサポートされています。ハードウェアドライバはモ デムの特別な仕様を見ないので、ボイスシェルはモデムにまったく依存しない 一般的なインターフェースを提供します。もちろん完全なシステムの信頼性 は、使用している音声モデムの信頼性に依存します。ですから、違ったモデム の間では明らかに相違があります。 vgetty は 音声の電話に比重をおいて、データと音声用に電話回線を共有した い人向けです。記録された音声メッセージを聞いて区別できないモデムや接続 したくないモデムがあるので、ダイアルアップシステムについては意図してい ません。 特徴のある ring があるなら、1回線で可能です。vgetty は RING メッセー ジから電話の種類を検出できるので、直接的にデータかファックスモードを切 りかえます。特有の ring がサポートされている地域では、問題なく同じ回線 上でダイアルアップと音声を使うことができます。 音声拡張機能は最初、Klaus Weidner (klaus@snarc.greenie.muc.de) によっ て書かれましたが、現在は Marc Eberhard (Marc.Eberhard@Uni- Duesseldorf.DE) によって維持されています。それらについての直接的な質問 は添付のアドレスへ。 -------- 配布物からのさらなる情報(一部編集しています) ------- 標準の 2.0 または 2 の fax モデムをお持ちなら、sendfax で以下のような ことができます。 o 直接に、あるいはシェルスクリプト(他のアプリケーションと簡単に組合せ ることができます)を使ってファックスを送信します。 o "ファックスを保存" します。たとえば、あなたは気象観測所を呼び出し て、現在の天気図が含まれているファックスをあなた宛に送るようにその 機能を使うことだってできるということです。(すべてのモデム製造業者が モデムにこのような仕様を実施しているわけではありませんが!) o "fax 待ち行列" を作ります。つまり送信するファックスは自動的に送ら れ、ユーザはその結果についてメールで報告を受けます。'mgetty' は1本 のモデム線で電話を受け、電話をかけることができるということです。 o mgetty は "高機能" モデムの扱いも考慮されており、モデムを常に適切な 状態で扱うように作られています。(機種依存の初期化手続きも可能) o かかってきた電話には自動応答 (`ATS0=1') を使うかわりに手動で答えま す (`RING' -> `ATA' ->`CONNECT')。マシンが動いていない、あるいはロ グインが許可されない時、モデムはその電話を取らないということです。 o mgetty は完全に getty (あるいは) uugetty と置きかわります。uugetty のようによく知られた UUCP (HDB/BNU、 SVR4、 V7 と多様な仕様の Taylor) と互換性を持ったロックファイルをサポートしています。uugetty は mgetty がサポートしていない仕様を持っています。これについては、 後述の " mgetty は uugetty とどのように違いますか"の項を見てくださ い。 o mgetty は 端末コンフィグレーションである System V タイプの gettydef 類をサポートしています。 o mgetty は class 2 のファックス(そのモデムをお持ちなら) を受信できま す。 o mgetty は FidoNet の電話がわかります。 (訳注 FidoNet : メール、会議グループファイルを交換しあうパーソナル コンピュータ同士の、世界規模のホビイスト用ネットワーク。(詳しくは 「ハッカーズ大辞典」(アスキー出版局)をどうぞ。FidoNet に参加してい るネットのリストはここから探すことができます。FidoNet -Nodelist o mgetty は多くの記録を取り、デバックします。 「折り返し FAX 送信 (fax poll sending)」ができます。この機能は手持 ちのマシンに折り返し FAX 送信サービスをさせるもので、FAX 送信要求の 電話がかかって来た場合に依頼主に FAX を自動送信するものです。(例え ば、システムの現状報告を送ったり、その時々の天気図を送ったりするの です)。ただし、この機能をサポートしているモデムは更に限られているの で注意してください。 o mgetty は選択的に callerID に基づいて呼び出しを拒否することができま す。お使いのモデムがその機能をサポートしており、そしてあなたがその サービスを使えるようにしているならできます。CallerID は記録されま す。 o mgetty は利用できるディスクスペースが少ない時、受信ファックスを拒否 できる機能があります。 o mgetty は かかってくる電話の PPP 呼び出しがわかり、login や password を要求せずに PPP デーモンに渡します。この仕様は AutoPPP と して知られています。 o 音声電話に対して通常の受話器のように動作します。 o T.30 呼び出しトーンが検出されると自動的にファックスを受信します。 o 電話が人の声でもファックスでもない場合は、データ接続が試されます。 これがうまくいけば、電話をかけてきた者は通常ログインをします。 o ダイアルアウトのインターフェースはありません。 o DTMF コードを通してメッセージのリモート再生をします。 o 呼び出しベルの節約 --- 新規のメッセージがあれば、迅速に電話を取りま す。これは不用な呼び出しを避けて一定時間で電話を切るようにできると いうことです。 o メッセージ点灯 - お使いのモデムに自動応答ランプ LED があるなら、新 規メッセージがあれば点滅します。 o 再生が容易 - 同じモデム上で、DATA と VOICE を切替えることで新規メッ セージを再生できます。 o 音声合成装置が使えるなら、メッセージに対して日時記録を付加します(デ フォルトではありません)。そのスクリプトは rsynth のような音声合成装 置を使う方法を示していますが、パッケージには含まれていません。この ような装置を使うためには、rmd (raw modem data) フォーマットを pvf フォーマットに変換する音声変換モデムが必要です。これはすべてのモデ ムをサポートしているわけではありません。 o 音声変換ユーティリティ - /dev/audio でメッセージを再生します。 (す べてのモデムをサポートしていません。専用のフォーマットを使うモデム もあります。) 1.3. mgetty+sendfax/vgetty? を使うには何が必要ですか。 From: steve@work.bellingham.wa.us (Steve Work), and distribution CC: clewis@ferret.ocunix.on.ca (Chris Lewis) いくつかの条件があります。コンピュータはさまざまな種類(多くの)の Unix オペレーティングシステムが動作していること。(そのオペレーティングシス テムは termio.h あるいは termios.h をサポートしていなければなりませ ん。termio.h や termios.h は一般的には "pure BSD" のシステムを除外して います。) 受信のデータ接続 ("getty" など) をサポートするため、たぶんヘ イズ互換のモデムが必要です。ファックスを送受信するために、 Class 2 (あ るいは 2.0 ) のファックスコマンドを理解するモデムを必要とします。音声 については、音声を扱えるモデムが必要です。 vgetty は現在、Dolphin, Dr. Neuhaus Cybermod, Elsa, IS 101 compatible, Rockwell, Sierra, US Robotics、そしてすべての ZyXEL モデムをサポートし ています。 Cirrus Logic, ISDN4Linux と UMC のドライバは基本的には動作しますが、一 般的な vgetty 部分とハードウェアドライバとの間で新しい内部インターフェ イスをアップグレードしなければなりません。この変更は厳密に ANSI C 互換 にするために必要でした。現在、Vgetty は warning (警告) なしで、 gcc -Wall -pedantic でコンパイルできます。 mgetty は少なくとも次のようなシステムにインストールされ動作していま す。あなたがこのリストを読む時点ではもっと増えているでしょう。 o SCO Unix 3.2.1 (ODT 1.0) (very well tested) o SCO Unix 3.2.4 (ODT 2.0 + 3.0) (very well tested) o SCO Open Server 5.0 (Gert uses it ...) o Linux 0.99pl1 .. 2.1 (very well tested) o ISC Unix 3.0 (tested) o SVR4 Unix (well tested) o AT&T 3B1 3.51m (well tested) o HP-UX 8.x (well tested) o AIX 3.2.5, 4.1.4, 4.2 (mgetty, not vgetty) o SunOS 4.1.x (well tested) o SunOS 5.x (at least with USR 33.6 Misha Pavlov ) o NetBSD / FreeBSD (works) o BSDI v1.1 (under work, not done -- greg@wwa.com) `termio.h' あるいは `termios.h' があれば他の Unix 上でも mgetty を動か せるはずです。`select(S)' や `poll(S)' があれば一番よいのですが、なく ても何とかなります。 (警告: Unix SVR3.1 やそのより前の版では、poll() を使えません。それは tty デバイス上では動きません)。 現在、少なくとも以下のモデム、たぶんリストはもう少し増えているでしょ う、が十分使えます。 以下はよく使用されるモデムのリストです。データリストの最新版は、配布物 の doc というディレクトリにある modems.db をチェックしてください。 o Aceex 1496 o Boca V.32bis o Creatix LC 288 FC o Practical Peripherals PM14400FXMT o TKR Terbo Line o U.S. Robotics Courier V.34 Fax o U.S. Robotics Sportster V.34 28.800 Fax Modem o Zoltrix Platinum Series 14.4 o ZyXEL 1496E+, always recommended mgetty はすべての class 2 のファックスモデムで動作するはずです。おそら く `faxrec.c' によってページの最初で送られた DC2 キャラクタは旧型の class 2 モデム (標準の非常に古いドラフトで行っている) XON を変更しなけ ればなりません。不運にも、それぞれの class 2 モデムは少しづつ違ってい ます。 初期の USR モデムは Class 2.0(そして Class 2 もたぶん) に従って設定す ると良くない動きをします。現在の USR モデム (Sportster と Courier) は 問題なく動きます。 1.4. 他のソフトウェアが必要ですか? From: clewis@ferret.ocunix.on.ca (Chris Lewis) CC: gert@greenie.muc.de (Gert Doering) データのみに関しては他にソフトウェアは必要ありません。 mgetty それ自身は G3 (raster 走査線で表示 )フォーマットだけを送受信で きます。しかし配布物は 生の (raw) G3 ファイルを変換するツール、または "pbmplus" を使用したフォーマットを変換する Portable Bitmap Toolkit と いうツールを持っています。pbmplus フォーマットは大部分の raster-image プログラムをサポート(あるいはサポートされている)しており、UNIX の分野 で一般的に使われるファイルフォーマットです。pbmplus は次の URL にあり ます(他にもあります)。 ftp://sunsite.unc.edu/pub/X11/contrib/pbmplus10dec91.tar mgetty+sendfax 配布物は pbmplus の壊れた pbmtog3 コンバータを固定する パッチを含んでいます。パッチされていない pbmtog3 を使っていると、転送 の間にエラーを起こします。 フリーのポストスクリプトページ記述言語インタプリタ (Postscript page description language interpreter)である GhostScript は Postscript を G3 に変換します。Ghostscript は次の URL で利用できます(他にもありま す)。 ftp://sunsite.unc.edu/pub/gnu/applications/ghostscript-2.6.1.tar.gz (同じディレクトリにあるパッチファイルもチェックしてください) ftp://?? で利用できる Hp2pbm は text と PCL ( HP Laserjet language) を G3 あるいは PBM に変換できます。 Hp2pbm は PBM を PostScript、 PCL そ して Epson プリンタ用に変換するプログラムを持っています。 PBMPLUS はラスターフォーマットや ASCII で存在するほとんどのものから PBM に、そして PBM からラスターフォーマットへのコンバータを持っていま す。PBM と G3 との間で変換するために、mgetty で pbm2g3 と g32pbm ユー ティリティ を使うといいでしょう。 要点を言うなら、あなたは hp2pbm もしくは PBMPLUS だけを動作させること ができます。GhostScript を使うなら、ASCII(ページヘッダーなどに使われて いる) を変換するために、PBMPLUS か hp2pbm も必要です。 Mgetty+sendfax は vioce/ 以下のサブディレクトリに音声処理ユーティリ ティを持っているものがあります。これらのツール (pvftools)は ZyXEL、 Rockwell と ISDN4Linux の音声フォーマットを変換できます。その他のフォ ーマットも報告されています。GSM のコード化された音声フォーマットの翻訳 が成功したと報告している人もありますので、将来にはそのようなサポートが 加えられるでしょう。vgetty は現在上記の3つのモデムをサポートしてお り、さらにもっとサポートされる計画があるということです。 1.5. mgetty+sendfax/vgetty の使用にはどのような許諾事項がありますか。 配布物から mgetty+sendfax のパッケージは、Gert Doering に著作権 (1993年) がありま す。このプログラムについて、再配布、あなたが書いたプログラムに一部のコ ードを利用する、などのような、あなたがこのプログラムに望むいかなること も許可されていますが、あなたは私にクレジットを与えなくてはいけないの で、私の名前を取り除いてはいけません。 プログラムがちゃんと動作すれば、あなたは私の努力に敬意を表したいと思う でしょう。あなたはご自分がしたいだけの寄付をしてください。 あなたが mgetty に寄付をするなら、私は共有 (share) を望みます。それは 次のようなことを意味します。mgetty のインストールあるいはサポートに対 して支払うことは申し分なく了解します。しかし、あなたが mgetty を売りた い、あるいはモデムに mgetty を添付し、それを "Unix fax パッケージ" と して売りたいなら、最初に私に連絡を取ってください。 * 注意 * このパッケージはテスト段階のベータ版のソフトウェアですから、 あなた自身の責任において使用してください。** いかなる保証もありりませ ん **。あなたのハードディスクの中身をすべて消してしまっても、ハード ウェアを破損しても、さらにはあなたの愛犬を殺してしまっても、それはすべ てあなたの責任です。それでもプログラムは私のところではちゃんと動いてい ますし、他の多くの人のところでも動いているようですが。 Marcは音声に関する部分を GPL のもとに置いています。誤解を避けるため に、 Gert は配布物に GPL テキストを含ませていません。音声に関する著作 権は GPL にあります。 1.6. mgetty+sendfax はどこで入手できますか。 ホームページは 公式版を置いているサイトは次の URL です。 ftp://ftp.leo.org/pub/comp/networking/communication/modem/mgetty ftp://sunsite.unc.edu/pub/Linux/system/Serial/mgetty+sendfax* ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/... (or so) ftp://linux.nrao.edu/pub/packages/mgetty+sendfax/ 1.7. どのようにしたら仕事で使えますか。 From: Klaus Lichtenwalder and the mgetty dist. mgetty に、frontends というサブディレクトリがあります。多かれ少なかれ 受信したファックスを見る、印刷する、まとめる、そして多くの種類の違った プログラムから待ち行列にそれらを加える、そのような仕事のためにドキュメ ントが添付されたたくさんのプログラムがあります。 1.8. アーカイブされたリストはどこにありますか。 From: Gert Doering 他の多くのドキュメントと同様にアーカイブへのポインタは で見つけることができます。アーカ イブそのものは http://eli.wariat.org/mgarc/index.html にあります。 2. Part 2: その他の質問 2.1. mgetty/vgetty のユーザや開発者と連絡を取るにはどうしたらいいです か。 From: steve@work.bellingham.wa.us (Steve Wampler さんからの提言) メーリングリストがあります。国際的な性格を持つもので、この ML では *英 語* だけが使われています。de.alt de.alt.comm.mgetty のようなローカルな ニュースグループに通じていますが、リストに参加するためには、 mgetty- request@muc.de 宛にメールを送ってください(リストは手動で管理されていま すので、参加を尋ねる必要があるでしょう)。リストの多くの人のひとりひと りにメールを送信するためには、mgetty@muc.de 宛にメールを送信してくださ い。mgetty@muc.de 宛に参加申込を送ってはいけません。多くの人があなたに 管理者へのメッセージのためには mgetty-request を使うようにと返信するで しょうから。 mgetty@muc.de でのメールの量は週に1つ2つから日に10程度ですが、開発 活動の動向にもよるでしょう。 mgetty や vgetty の誤動作のために質問があるなら、あなたのログファイル の適切な部分を添付して下さい。ログファイルはいつも 6 のログレベルで得 られます。これらのログファイルのデフォルトのディレクトリは mgetty では /tmp/、vgetty では /var/log です。 2.2. sendfax はどのような画像ファイルフォーマットを送信できますか。 From: gert@greenie.muc.de (Gert Doering) 受信フォーマット 生の (raw) の G3 データです ( CCITT 標準の T.4 により、1 次元圧縮され たもの)。G3 は、GhostScript の "dfaxhigh" または "dfaxlow" ドライバあ るいは "pbm2g3" プログラムで作ることができます。("dfaxhigh" または "dfaxlow" ドライバは、sendfax + g3cat + g32pbm64 が認識もするけれど、 スキップもしてしまう 64 バイトヘッダーで G3 データを作ります。注意: "pbmplus" 配布物からの pbmtog3 プログラムは T.4 によって妥当な G3 デー タを作りません。正確にするべきで、ラインは 1728 ピクセルよりも短いと、 EOL コードの読み込みがミスされます。それを解決するために patches とい うディレクトリの pbmtog3.p1 でパッチします。 さらによいのは、あなたの ユーティリティを使うことです(パッチは私の pbm2g3 プログラムには *不用* です。パッチされていない pbmtog3 は、たぶん +FHNG:50 あるいは +FHNG:54 エラーコードを出すでしょう。 tiff-G3 データは使用しないでください。 tiff-G3 は、データそのものはコ ード化された G3 ですが、sendfax にとって必要でない面倒な解析が必要な TIFF ヘッダーの複雑な層に包まれています。TIFF ファイルをファックス送信 すると、sendfax が warning メッセージを出すことになり、恐らく、送信は 失敗になるでしょう。 送信フォーマット mgetty が FAX_SPOOL_IN に置くファイルは、sendfax が送る現在の CCITT T.4 の raw G3 データと同じフォーマットです。それらを pbm に変換するた めに、g32pbm を使います。X window xwd フォーマットに変換するには、 contrib というディレクトリにある g3toxwd を使います。 ファイルが転送エラーなしに受信されるなら、さらに別のものに変換すること なく受信したファックスを転送することができます。モデムのなかにはゼロの ビットを埋め込むものもあるので、 g3cat に通すことはいずれにしろお勧め で、余分のものを取り除き、乱れたラインをきれいにします。 2.3. mgetty はなぜ G3 以外のフォーマットを受信しないのですか。 mgetty はなぜ動作中に任意のイメージファイル (TIFF のような) を変換しな いで、生の G3 ファックスファイルだけしか送信しないのですか。 Chris Lewis さんから 私が TIFF について理解していることは、TIFF はそれそのもののフォーマッ トに加えて、他のいくつかのフォーマットを含むことができるということで す。別の言い方をすると、少なくともある程度まで、TIFF は 簡単に別のフォ ーマットにマジックナンバーをつけている方法なので、TIFF を利用できるよ うにするコンバータは複合フォーマットを扱うことができるのです。 あなたは確かに G3 を含む TIFF を持つことができます、そして、mgetty は それを使うことでたくさんのトラブルを持ちたくないのです。しかし、これ は、もし含まれているものが G3 でないなら、mgetty はどうするか?という 質問をあなたに残しています。それを変換しなければなりません。mgetty の 変換速度は class II FAX の転送中断の時間にあわせることができないという 状況に遭遇し、あなたは電話をかけている時間を浪費してしまうことになりま す。受信でも同じことになります。実際のところ、受信あるいは送信するファ イルが G3 以外のものなら、mgetty はそのままの状態を維持できないという のが本当のところです。 別の観点からこのことを考えてみるなら、mgetty は転送プロトコルであり実 行ファイルであることを思いだすべきです。ソフトウェアを変換しません。 mgetty は G3 を読み書きする必要があり、それがすべてです。別のソフト ウェアに変換するのは他にまかせましょう。 さらに Gert Doering さんから はい、TIFF は複合ファイルフォーマットで、それは非常に多種類のページデ ータのコード化の方法や、異なったバイトやビットの順序、ひとつのファイル で複数ページなどをサポートできます。TIFF は柔軟なフォーマットですが、 それを解析するのは複雑な作業です。 それに比べると、mgetty の g3 ファイルは生の G3 データです。ヘッダーが なく、フォーマットもなく、ファイルのなかから実際のページデータを見つけ るために翻訳コードを取り出す必要もありません。ファイルごとに1ページで あり、もっとも単純です。 TIFF を無視 ( 別のソフトウェアに TIFF 変換をまかせること)することは mgetty と sendfax を単純化し、ユーザインターフェイスをややこしくしませ ん。内部の動きをユーザから隠してしまう faxspool あるいは 同様なツール が使われている限り、すなわち、どのようなファックス端末装置がそのような データを望むかということになります。的確にやるべきです。TIFF サポート から離れれば、mgetty を *シンプル* にします。多くの UNIX プログラムは PBM を読み取ることができますし、G3 を pbm に変換するのはとても簡単で が、私はまだよい * マルチページ * Tiff から PBM へのコンバータを見たこ とがありません。 2.4. mgetty はなぜモデムの自動応答を使えないのですか。 1. モデムがちゃんと設定されていなければ、データ電話から fax を区別する ことができないからです。一方、モデムはホストが準備状態でないと電話 に答えないのを確認しましょう。 2. さらに callerid は極端な違いがないと動きません。 2.5. mgetty はなぜ 受信用デバイスに /dev/tty* 、発信用デバイスに /dev/cua* を使わないのですか。 [ Linux と SunOS を除く大部分の他の Unix 類では、mgetty は tty* デバイ ス上に設定されるべきで、そうすると、cua* デバイスが完全に無視されるは ずです。] From: "Theodore Y. Ts'o" /dev/ttySxx デバイスは完全な POSIX 対応の TTY デバイスです。あなたが tty デバイスだけを使うように設定しているなら、 /dev/ttySxx を使うべき です。 /dev/cuaXX デバイスは 2つの点で /dev/ttySXX とは違っています。まず最 初に CLOCAL が設定されず、 O_NONBLOCK フラグがデバイスをオープンするた めに与えられてなくとも、デバイスをオープンすることができるということで す。このことは /dev/ttySxx デバイスをオープンするために POSIXで 義務づ けられている (POSIX-mandated ) インターフェースを使わないプログラムを 可能にします。( cu は callout を行い、SunOS に由来します。) /dev/cuaXX が /dev/ttySXX と異なっている2つ目の点は、それらが使用され ていれば、単純化された kernel ベースでのロック機構を作るという点です。 もし /dev/ttySXX が複数のプロセスでオープンされたなら、 /dev/cuaXX を オープンしようとすると EAGAIN を返します。もし /dev/cuaXX が複数のプロ セスでオープンされたなら、 /dev/ttySXX をオープンしようとすると /dev/cuaXX が閉じられ、 carrier detect line が高くなるまで遮断されると いうことになります。 これは電話をかけるのにモデムを使っているユーザとログインのために回線を 聞く getty の間で単純なロックアウトをするということなので、たとえばダ イアルアウトと UUCP を使いたいユーザの場合、ダイアルアウトをするマルチ タイプのプログラムとの間で調整が必要なら、デバイスは動作しません。 FSSTND が tty ロックファイルを使うために標準の協定を確立する以前に、私 は最初、 cuaXX/ttySXX のロックアウトの機構を実行しました。 現在はその 協定があるので、ユーザは tty ロックファイルを使うべきで、 /dev/cuaXX を使う必要はありません。/dev/cuaXX がまだなくならないひとつの理由は互 換性の問題です。 - Ted [SunOS では、すべては次のように cua* を使うべきです] From: Gert Doering 2つのデバイス体系は、同時に同じ物理的デバイスにアクセスするマルチプロ セスを防ぐようになっています。mgetty は O_NDELAY でポートをオープンす るので、kernel は tty* 上(mgetty)のプロセスを見て、cua* (uucico、cu な ど) 上にオープンするのを防ぎます。だから、両方のプログラムに対して同じ デバイス を使わなくてはいけないのです。SunOS ではそれは cua* です。 2.6. トラブル対処 Q & A From: gert@greenie.muc.de Q: ページを送信した後、+FHNG:50 や +FHNG:54 というエラーコードが出ま す。時々 "page bad, retrain requested" と言われ、そのページを再送しま す。 A: このエラーは、お使いの端末がページデータを送っている間に、2つのマ シンの間で故障があることを意味しています。+FHNG:50 あるいは +FHNG:54 の場合、おそらく一方の端末がハングアップしているか(そうなるとあなたの モデムは別のページをまったく送ることが出来なくなります)、別の場合だ と、受信機はページにあるデータが不適当であると場合です。 このようになる最も普通の理由は、pbmplus 配布物に由来する pbmtog3 のコ ピーを使ったということです。それは私のパッチには含まれていません( pbmtog3 プログラムはページヘッダーを必要とします。faxspool にそれぞれ のページの先頭部分が置かれています)。 そうでないなら、フローコントロールの問題か、とてもノイズが多い回線を 使っているというような理由です。受信機と連絡を取り、そのページがちゃん と見えるかどうか、回線に故障がないかどうか、その他関連することを見つけ ましょう。エラーがなければ、フロー制御の設定を見直しましょう。 その他のことにエラーがなければ、 pbmtog3 の 私家版をお使いなのでしょう (pbm2g3 と言われるもの、あるいは pbmplus のパッチされた版です)。そうな らばモデムのなかで何か壊れたものがあり、私にはわかりません。あなたの ROM バージョンをアップグレードした方がいいでしょう。 Q: ファックスを受信している時、+FCON というメッセージが記録されます。 mgetty は "ファックス受信を開始します" と告げます、fax_wait_for(OK) と なりますが、記録はめちゃくちゃになり、timeout になって数分後に切断して しまいます。 A: あなたはたぶんホストに +FCON を送った後19200 bps にボーレートを切替 えるモデムを使っていて、正常に動作するポート速度が別にあるのでしょう。 policy.h の FAX_RECEIVE_SWITCHBD が定義されているかどうかをチェック し、それを定義します (もしモデムが速度を変更しないなら、その設定はでき ているので、効果は同じになります)。さらによい方法は、 mgetty.config で、runtime を設定することで、switchbd に のエントリーを加えるこ とです。 Q: 私は policy.h で変更したものを保存しましたが、何も変わりません。 A: あなたはたぶん /usr/local/bin/mgetty に mgetty の古い版をインストー ルしたのでしょう。そして /etc/init? からこれを呼び出しているのではない でしょうか。新しい版では /usr/local/sbin/mgetty にインストールされま す。あなたが コンパイルした mgetty と /etc/inittab にリストされる mgetty についてタイムスタンプをチェックしてください。 Q: 私が受信するファックスの半分はあまりに短いのですが、まるですべての second pixcel line をミスしているように見えます。 A: はい、それらはたぶん不足しているのでしょう。fine 解像度 (204x196 dpi)の代わりに、普通の解像度 (204x98 dpi) で受信されています。ファイル ネームを見るとわかります。ff* で始まっているものは fine で、fn* で始 まっているものは、ノーマルの解像度です。normal 解像度のものを適当な比 率に拡大するには g32pbm -stretch fn... を使います。 Q: login が "utmp エントリーがありません" と言われます。 A: utmp 部分でうまくいっていないのでしょう。たぶん、login.config ファ イルの設定で /bin/login を呼び出すエントリーに関する utmp 部分で、 - が書かれてないのでしょう。別の理由は、/etc/init (Linux のユーザだけに 該当しますが) がうまく行っていないか、あるいは /etc/utmp ファイルが損 なわれているのでしょう。このような場合は、マシンをリブートさせます。 Q: mgetty が動作中に私がダイアルアウトをすると、"CONNECT" しないだけで なく、 "+FCO"、 "+FTI:"、 "+FHS:20" となります。 A: mgetty での 2.0 の実行に伴う問題です。すなわち、mgetty が動作してい る間、モデムは "AT+FCLASS=2.0" モードとなり、リモート側でファックスと 接続するように期待します。(class 2 で われわれは、 +FCLASS=0;+FAA=1 に 設定することでこれを回避しましたが、2.0 ではなく、class 2 ではモデム応 答をするでしょう[さらにテストする課題です])。 解決方法:ダイアルアウトするプログラムで、"AT+FCLASS=0" でモデムを初期 化します。たぶん、モデムリセットコマンド (ATZ) でもいいでしょう。 Q: mgetty が始動する時たびに tty デバイスのパーミッションが変更されま す。ダイアルアウトできるように "chmod +w /dev/ttySx" をしなければなり ません。 A: それはバグではありません。それが仕様です。あなたはあなたのマシンを 誰でもがダイアルアウト (あなたが払う電話代を考慮して!) できるように望 んではいけません。それはセキュリティの問題です。あなたが誰に対してでも ダイアルアウトを許したいなら、policy.h で #define FILE_MODE 0666 にし ます。それはお勧めではありません。特定のグループにアクセス権を与え、そ してこのグループにダイアルアウトできるユーザを置きます。 Q: 私は Linux システムを使っており、/dev/cua1 (mgetty は /dev/ttyS1 で 動いています) でダイアルアウトをしようとすると、 "device busy" (EBUSY) と表示されます。 A: ダイアルインとダイアルアウトには同じデバイスを使いましょう(常時!) Linux では、/dev/ttySx を使い、SunOS と *BSD では /dev/cuax を使いま す。 Q: "gs -sDEVICE=dfaxhigh ..." でファックスファイルを作成し、それを sendfax で送信すれば、すべてはうまくいきます。"faxspool" を通すと、受 信者側ではエラーになります。"g3cat" プログラムが壊れているのでしょう か。 A: g3cat には問題はありません。本当の問題は "pbmtog3" にあって、インス トールされた pbmplus 配布物から pbmtog3 を持っているのだと思います。こ のプログラムは * 壊れて * います。パッチは mgetty/patches/pbmtog3.p に あります。つまり、pbmtog3 は適当な T.4/G3 ファックスデータを作りませ ん。したがって、ファックスを受信するマシンは損なわれた行(ページヘッダ ー)のあるファックスを受け取ってしまうのでしょう。pbmtog3 にパッチをあ てるか、 mgetty の pbm2g3 を使ってください。そのほうがより早く解決する でしょう。 Q: mgetty は FidoNet の電話を受け付けません。ログは次のようになりま す。 10/30 01:54:54 ##### data dev=ttyS1, pid=3401, caller=none, conn='38400/V32b 14400/V42b', name='', cmd='/bin/login', user='**EMSI_INQC816**EMSI_INQC816q.' または、 10/30 05:31:03 ##### data dev=ttyS1, pid=7238, caller=none, conn='38400/ZyX 16800/V42b', name='', cmd='/bin/login', user='q.q.q.' A: -DFIDO を定義して mgetty をコンパイルしましたか。そのようになってい ないのではないでしょうか。-DFIDO が設定されていないと、mgetty は fido を判別できません。 Q: バイナリーロックファイルを使うプログラムと ASCII ロックファイルを使 うプログラムがあります。mgetty はなぜエラーを出すのでしょうか。両方を 認識することはできないのですか A: mgetty はシステムのコンフィグレーションが正しくないというエラーを出 すでしょう。このようなエラーメッセージというのは、そのサイト上での *厳 しいコンフィグレーションエラー* を警告してシステム管理者を援助するため にあるのです。すべてのプログラムが両方のロックタイプを理解できるなら、 そのメッセージがおかしいことになるでしょう。しかし、kermit はいつも ascii ロックを無視し、uucico は binary ロックを無視するので、状況は * 高度な * エラー状態になるので、システム管理者はこれを見なければなりま せん。ロックファイルのタイプがすべて一致するように、モデムを使用するア プリケーションを再コンパイルしてください。 Q: モデムと私は1本の電話回線を使っています。私が電話を取ると、モデム が私に答えてしまいます。どのようにしたら megetty に取らせることができ ますか。 A: mgetty に SIGUSR1 の信号を送ります。そうすれば、mgetty が電話に応答 します。 Q. 1ページしかファックスを送ることができません。その後はエラーになっ てしまいます。 A. このようなログがあるでしょう。 > 03/22 19:15:58 yS1 fax_wait_for: string 'OK'** found ** > 03/22 19:15:58 yS1 fax_send: 'AT+FET=0' > 03/22 19:15:58 yS1 fax_wait_for(OK) > 03/22 19:15:58 yS1 fax_read_byte: read returned 0: Unknown error > 03/22 19:15:58 yS1 fax_get_line: cannot read byte, return: Unknown error > 03/22 19:15:58 ##### failed transmitting f1.g3: +FHS:-4, time=55s policy.h で FAX_SEND_IGNORE_CARRIER を定義します。そしてバイナリを再コ ンパイルします。 ページごとに DCD line を落としてしまうモデムがありま す。あるいは、コンフィグファイルで '' ignore-carrier true''を定義しま す。 Q: mgetty のログファイルに、 "WARING 警告: DSR が off です - モデムが オフになっているか、ケーブルがよくないのでは? " というメッセージが ずっと記録されるのですが。 A: こういうメッセージがあるなら、それは基本的に mgetty は dsr (data set ready) の状態になっていないということです。ケーブルが悪い か、Solaris で mgetty を使っているからです。Solaris は dsr 状態にでき ません。mgetty を違ったプラットフォームで動かしているなら、ケーブルあ るいはモデムの設定をチェックした方がいいでしょう。 2.7. プログラムが sendfax に対して G3 フォーマットに変換できない "無 効な" ポストスクリプトを作ります。 From: Gert Doering "無効な"ポストスクリプトを作るプログラムのリストは次のものです。 (Goastscript に不適切なラインの幅で G3 ファイルを作る原因になり、 sendfax に失敗させる原因になります)。 o FrameMaker 4.0 o WinWord (dunno which version) o dvipsk 5.58f Gert Doering wrote on Sun, 22 Dec 1996 00:26:55 +0100 in message : おもしろいことに、今日、私は dvipsk 5.58f を試してみました。それはこの ような良くない "setpagedevice" のどんなコマンドも出しません。このよう な結果から、出来上がったポストスクリプトは正しいページサイズを作りま す。たぶん dvips プログラムを最新のものにアップグレードすれば解決する でしょう。 サポートされている *正確な* 紙のサイズが何なのかを *ghostscript* に伝 えてやる必要があります。(A4 の場合 --- "gs -sPAPERSIZE=a4" と明記する ことで、 dvips が "a4" も同様に使えるようになるのを確かめないといけま せん。 たとえ十分ではないとしても( 違ったプログラムで違った紙サイズの間で不思 議な相互作用があることもあります)、G3 ファイルを "g3cat" (mgetty 0.99 から、96 年以降の版) あるいは "g32pbm badfile.g3 | pbm2g3 >goodfile.g3" で作成している人もあります。後者は明らかに助けになりま す。 2.8. ROM をアップグレードしたら、My ZyXEL が正しく動きません。 何が悪 いのでしょうか。 From: felix@escape.vsse.in-berlin.de ファームウェアを更新したら、モデムをフルリセットします。この件は ZyXEL のドイツ語版マニュアルには書いてありませんが (英語には記述されてます か?)、いずれにせよリセットしてください。 2.9. 時々 " tcsetattr failed: I/O error " というメッセージが 出るので すがなぜですか。 From: gert@greenie.muc.de Q: 時々、たいていはユーザがログアウトした後に (すなわち、ハングアップ するかわりにユーザが exit と入力した場合)、mgetty のログファイルに次の ようなメッセージが記録されます。 09/08 21:26:26 yS2 lowering DTR to reset Modem 09/08 21:26:27 yS2 tcsetattr failed: I/O error そして、syslog には I/O error メッセージが記録されているのですが。 A: これは Linux と SunOS での特有の問題です。mgtty がスタートした時 に、すでにモデムがリモートと接続状態の場合には、mgetty は DTR を下げる ことによって (そして、DTR 切断が十分でないと +++ATH を送って) 強制的に ハングアップさせます。これはモデムに DCD (carrier detect) を下げさせる ことになります。残念なことに、これは Linux kernel においてセキュリティ 機構の誘引になります。その機構はデスクリプタを通じての、それ以降のアク セスを拒否します。これはよく知られたパスワードハック (詳細に説明したく はありませんが) を防ぐためです。 モデム初期化中に起こるエラーを告知するという問題について、mgetty は単 純にポートを再度オープンし、そして、モデムとポートをすべて再実行しま す。なぜならエラーメッセージはミスしていることになり、出し続けますが、 害はありません (.......もう一度試してください)。 (訳注) file descriptor: デバイスファイルや通常ファイルに対して open 操作などを行ったときにシステムから割り当てられる識別子です。 2.10. mgetty は実際にはいつ動作するのですか? (すなわち、mgetty は何 をコントロールできるのですか?) From: Klaus Lichtenwalder mgetty はどんな時に回線上での制御をしているのですか。mgetty の 一生は どんなものかを考えてみましょう。いつでも (たとえばシステムをブートする と、init は 記述された run level を参照し、mgetty を始動します) コント ロールしなければならないデバイス上のロックファイルをチェックします。も しロックファイルがないなら、モデムを初期化し、その回線上に待機します。 キャラクターが届くと、mgetty は読むことはできませんが、最初にロック ファイルをチェックします。 ロックファイルが存在すれば、mgetty はだれかある人やあるものがダイアル アウトをしたいなら、定期的にロックファイルの存在をチェックします。ロッ クファイルが消失後、デバイスはフリーになり、mgetty は存在するだけにな ります。init によって再始動され、モデム回線は再初期化されます。 ロックファイルが存在しないと、モデムは RING を送ります。そこで、われわ れは予期した言葉 ( = RING) をチェックし、われわれの answer_chat を送り ます。もしそれが ファックス電話(そしてモデムがファックスを受信すること ができて、それらを受信できるようになっているなら)我々はページを得、保 存し、そして完了し、それから上述のように mgetty を再始動します。もしそ れがデータ接続電話 (私はいま DISTINGIVE_RING と Caller_ID のことは無視 していますが) なら、われわれはログインに進み、応答に対して待機します。 答えが読まれると、login.config ファイルとの対照をチェックし、適切なプ ログラムがmgetty によって実行状態になります。mgetty はその回線にはいな いということです。接続の終了後、他のプロセスが存在すれば、mgetty は init によって再始動します。 2.11. 回線切断後にユーザシェルが kill されません。 From: Gert Doering ユーザがモデムをハングさせ正常に logout しない時、mgetty はなぜユーザ シェルを kill しないのですか。 [Mod: あるいは簡単にクラッシュする] mgetty がどうしてユーザシェルを kill できるでしょうか。ユーザがログイ ンしている間、mgetty は * 動作していない * のです。 kernel は DCD がモデムドロップ上にある時、SIGHUP シグナルを経由して シェルに合図します。そのとき、シェルは存在しますが、init は mgetty を 再始動します。不運にも、 BASH シェルは多くのバージョンで壊れ、SIGHUP シグナルを無視するので、exit しないというのがひとつの理由です。 別の理由はモデム設定(AT&C0)が不適当な場合です。モデムが起動するとき、 恐らく DCDラインを下げているか (モデムのマニュアルをチェックしてくださ い) シリアルケーブルが正常 (テストするために別のケーブルと交換してみて ください) かを確かめてください。 2.12. AutoPPP が "who" リストを表示します。 From: Gert Doering 自動で ppp 接続をするために /AutoPPP/ オプションを使っているなら、 who リストでユーザネームは表示しません。かわりに AutoPPP や ppp のような何 かが表示されます。解決方法: pppd にパッチをしなくてはいけません。これ は mgetty の問題ではなく、mgetty にパッチをすることで解決できませ ん。pppd にパッチをしているなら、これをどのように動作させるかというこ とです。lonig.config で pppd に login オプションを与えます。 login.config のなかの/AutoPPP/ に関する行の3つ目の項目を "-"に変更し ます(例では a_ppp あるいは ppp となっています)。 3. Part 3: 互換性の問題 3.1. 問題のあるファックスマシン From: hm@ix.de (Harald Milz) 問題のあるファックスマシンについてデータを集めています。次のものは、 sendfax と一緒に使うことで問題を起こしたものです。sendfax かお使いの ファックスモデムのどちらか、あるいは両者を一緒に使えないファックスマシ ンがあるかどうかを見つけ出すのが主な理由です。この目的はバグをなくすこ とです。 次の項目に書き入れて私宛(hm@ix.de)に送ってください。 1. <ファックスマシンの種類と型> 2. < FAX 番号 > (オプション) 3. <ファックスモデムの種類と型> 4. <ファックスモデムのファームウェアのバージョン> # tbd from ATI1 5. <プロトコルパラメータ> # tbd from Faxlog 6. < Faxlog のエラー記録> # tbd from Faxlog 7. <注意点> あなたがファックスマシンで問題にであったら、受信側の人に連絡して、その 方々がご自分のマシンをよテストすることに喜んで応じてくれるなら、その人 たちのファックスマシンの種類と型を尋ねてください。 より正確なあなたのデータ(アンケートの最初の3項目はそれほどよくありま せんが)よりよい結果を生み出すでしょうし、歓迎します。 このリストはこの1月の間に(自動的に)ポストされたものです。そして5つの 新しいものが加えられています(手動です)。 1. Panasonic Panafax UF311 2. +49 89 74824899 3. ZyXEL U1496EG+ 4. U1496EG V 6.10g P 5. +FDCS:1,3,0,2,0,0,0,4 6. +FHNG:50 (Unspecified Transmit Phase D error) 7. when sending 15 pg, connection broke after 6 pg. 1. NEC Nefax 17 2. +49 2242 82114 3. ZyXEL U1496EG+ 4. U1496EG V 6.10g P 5. +FDCS:1,3,0,2,1,0,0,4 6. +FHNG:50 (Unspecified Transmit Phase D error) 7. machine didn't refuse when sending only 3 pages earlier. This time, 15 pg were sent. 1. Telekom AF-310 2. +49 7231 560851 3. ZyXEL U1496 E / 6.10a, E+ / 6.01, E+ / 6.11a 4. 5. +FDCS:1,3,0,2,0,0,0,4 6. +FTPS:2 -> page bad, retrain requested 7. sendfax hangs up after three tries. received fax shows black and white boxes at the footer, such as, ### ### ### ### ### ### ### ### ### ### ... ### ### ### ### ### 4. Part 4: vgetty をコンパイル、インストールし使用する 4.1. vgetty をコンパイルする From: Marc Eberhard , Klaus Lichtenwalder コンパイルするために (たとえば、policy.h-dist を policy.h としてコピー し、そのファイルを編集する) mgetty を設定した後、voice デイレクトリに 移動し、make と入力します。インストール (make install) は voice.conf- dist を voice.conf として mgetty のコンフィグレーションディレクトリ (通常は /usr/local/etc/mgetty+sendfax です) にコピーします。 voice.conf のコメントにしたがって編集します。 4.2. US Robotics の voice フォーマットコンバータ From: Scott Hutton voice の下の pvftools というディレクトリに私が書いた " extract_gsm" と 呼ばれるスクリプトがあります。それは US Robotics の " rmd" ファイルか ら GSM データを取り出します。いったんあなたがそれを持てば、そして .gsm ファイルを .au (あるいは他のフォーマット) に変換できる "sox" 版を持て ば、あなたは仕事ができます。 少し探して sox に必要なパッチを見つけました。 http://kbs.cs.tu-berlin.de/ jutta/toast.html sox パッチを当てようとする前に GSM ライブラリが必要になるでしょう。 sox は GSM をサポートをしていないのであまりよくありません。GSM は何か 他のものを持たないといけないようです。 また、Thomas Hellstroem (thomas@vtd.volvo.se) は GSM データを取り出す C プログラムを持っており、 彼のページの rmd ファイルに GSM データを梱 包したものを出しています。不運にも私はこの URL を記録していませんが。 -Scott Hutton, UCS Messaging Team, Indiana Univeristy 5. 日本語訳について 日本語訳:中谷千絵 jeanne@mbox.kyoto-inet.or.jp 03 June 1997 日本語訳についての問い合わせは jeanne@mbox.kyoto-inet.or.jp 日本語訳は Linux-JF プロジェクトの次の方々から多くのご助言を頂きまし た。ありがとうございます。 こじまさん kojima@criepi.denken.or.jp 花高さん hanataka@abyss.rim.or.jp Hiro Sugawara さん hiro@arkusa.com 山崎さん hiro@koneeko.linux.or.jp 岡本さん ikko-@pacific.rim.or.jp 中野さん nakano@apm.seikei.ac.jp 川島さん kei@sm.sony.co.jp