私は IT の倉庫に転がっていたかけらを寄せ集めて PC を組み立てました - それは楽しいトレーニングでしたが - 最終的には P133(訳注:Pentium133MHz)、32MB の RAM、540MB のハードディスクで構成された試用システムが出来上がりました。 ハードディスクはもっと大きなものに交換する予定でしたが、 まずはその前にインストールのテストを行ないたかったのです。
以前に2、3回 RH6(訳注:RedHat Linux 6.0)をインストールしたことがあったので、私は(インストールなど)朝飯前であろうという事を "知って" いました.....「さて、それはどうかな?」そんなフレーズがぴたりとはまる事態となりました。 (原文:I believe "famous last words" is the phrase I am looking for!) インストールはうまくいったように見えましたが、初回の起動時(続いて次回もその次も)システムが Linux を展開しようとする時に "不正な圧縮フォーマットです(Invalid compressed format)" というエラーに遭遇しました。 そして起動時に "LI" とプロンプト表示し、システムがハングするようになりました。 u.c.o.l ではいくつかの質問でこれはドライブジオメトリの問題である、 と取り上げられていました。 LOADLIN から Linux にアタッチする MS-DOS のブートディスクからシステムを起動する事はできましたが とても容認できるやり方ではありませんでした。 その代わりに、1GB のハードディスクを使うことにしました。
次は NIC(訳注:この場合、いわゆる LAN カード)の問題が起こりました。 最初に使ったのは Realtek8019 ISA カードでした。これは NE2000 互換のカードだったので NE2000 のドライバを使う "べき" でした。 何度試してみても、カーネルの再コンパイルまでしても、このカードはそのドライバで動作しなかったので 他の PC に差さっていた D-Link DT-530 PCI カードと入れ替えました。 このカードは "tulip" ドライバで動作するという報告がありました。 ところが、RedHat のインストーラでは検出できませんでした。 D-Link のウェブサイトを覗いてみると、最新の via-rhine ドライバを使えば解決するとありました。 同サイト( http://www.scyld.com/network/via-rhine.html)の pci-scan driver file に沿って、このドライバをダウンロード、コンパイル、インストールしました。 このサイトにはインストールに関する素晴らしい解説も用意されていました。 新しいドライバでこのマシンは立ち上がり、2、3回 ping を打って NIC が正常に動いている事が確認できました。
RedHat をインストールする時に Version 2.0.3 が一緒に組み込まれました。 とりあえずのテストだったので最新バージョン(これを書いた時点では 2.0.7)をダウンロードする理由はとくに 見当たりませんでした。 Linux マシンから Windows PC の共有資源にアクセスする必要はないので smbclient はインストールしませんでした。 901 番ポートをウェブブラウザで指定(例: http://localhost:901)してアクセスできる SWAT ユーティリティのおかげで設定はいたって簡単でした。 このユーティリティにはネットワークを通じて Windows のマシンからさえもアクセス(http://<IPアドレス>:901) し、設定することが可能でした。
諸般の事情により、私の会社のユーザ達は - しばしばそれが可能であったにもかかわらず - 習慣的にあまり ワークグループ外のネットワークをうろうろしませんでした。 彼らのテリトリーを混乱させない様に、またアクシデントを最小限にとどめるため、サーバはサーバ自身のワークグループ に置きました。 Sambaのセットアップと設定についてはたくさんの素晴らしい文書がありますので、ここでその内容を繰り返すより それらの文献を紹介することとします。
会社の PC は全て固定の IP アドレスを持っており、ユーザ達は原則的に同じ PC の前に毎日座っていたので
私は Samba の共有セキュリティオプション を選択しました。
これは、ネットワークを参照する誰にでもリソースを開きっぱなしにするという危険をはらんでいたので、同時に
グローバルセクション(the global section)でホスト認証(host-allow)機能を使用しました。
ホスト認証は一部の IP アドレスを使用する私達のネットワーク内の人間に限定されました。
共有は様々なディレクトリに対して、全て新しい /resources
ディレクトリの下にポインタが作成されました。
MS Word97 のテンプレートに関する以外、全ての共有はうまくいきました。
MS Word はオプションとして Workgroup Templates の場所を設定する機能を持っています。
この問題はその場所の参照先が Samba の共有であった場合には、例えば //SERVER/template
の様なトップレベル上に
共有ポインタを置けないというものでした。
MS Word で「ファイル」 - 「新規作成」をクリックすると「その場所のテンプレートを開くことができません。」と
言ってくるのです。「ファイル」 - 「開く」では開くことが可能であるにもかかわらず、です。
さらに混乱することに、エクスプローラで例のトップレベル上の共有ディレクトリを開き、テンプレートをダブルクリック
すると、そのテンプレートを元にした新規文書を作成することができました。
結局、単純にテンプレートの親ディレクトリを共有し、そのパスを経由して(例: //SERVER/resource/template
)テンプレートを
見に行くように設定すると動作する事が分かりました。
ファイルのパーミッションやユーザ名を修正を幾度となく修正してみましたが、どうやらそれが唯一の方法でした。
原因がどちらにあるのかについては、未だにはっきりと分かりません。他のファイルは問題なく使えるので、MS Word が
犯人であるように思えますが、Windows のトップレベル共有では問題がない事から考えると Samba もまた疑わしいのです。
Mail Transport Agent (MTA) として RedHat 付属の sendmail ではなく qmail が選ばれました。 この主な理由は、qmail の方が、sendmail よりも設定の容易さや良好なセキュリティという点において世間で評判が良かったからです。
http://www.qmail.org のミラーサイトから最新のソースファイルをダウンロードし、コンパイルしてインストールしました。 qmail には大量の文書が付属してきましたが私は Life With Qmail ( http://web.infoave.net/~dsill/lwq.html) も利用しました。 この文書は HOWTO 物のような感じで、私達の目的のためにおそらく最も役立つ文書でした。
qmail は簡単にインストールできましたが、使用中に2、3の小さなトラブルに遭遇しました。
私は、パフォーマンスと信頼性の理由から、Maildir
をデフォルトの配達に使うように設定しました。
古き良き標準的なメールプログラムはこのような形の配達を認識しませんでしたので、どうして私のメールが
送り届けられるのかを理解しようと時間をかけましたが、分かりませんでした。
その解決法は Maildir
をサポートする mutt (
http://www.mutt.org)を使うことでした。
もちろんこれは、メールを読むのに Linux マシンではなく Windows のワークステーション上で POP クライアント
(MS Outlook)を使うユーザ達にとってはなんでもない問題でした。
fetchmail はメールの収集に使われ、インストールと設定は非常に容易でした。特に fechmailconf について理解した時は:o)。
常時メールを収集する必要はありませんが、設定した周期で行ないたかったのです。
これを容易にするためには、毎日 cron job で fetchmail を -d
オプションを付けて呼び出し、もう一方で
停止させるようにすればよいのです。
メールはネット上のホストにある 10個のメールボックスから収集されていました。 そのうちの一つはまるまる私たちのホスト名宛のものを転送するものでしたが、のこり 9 つの指定されたアドレスに対しては 預けられていました。 このメールボックスから全てをダウンロードし、受取人アドレスを使って qmail に SMTP 転送する為に fetchmail のマルチドロップ機能が使われました。 新しい qmail サーバから営業所の店員にメールを送る時、問題が起こりました。 彼らは、ネット上のホストから直接メールを読み込むのですが、彼らのドメイン名は社内の他のドメイン名と同じなのです。 したがって、(オフィス内の)ローカルユーザが(営業所の)店員の一人にメールを送ろうとするたびに qmail はメッセージを 送る為にローカルユーザ名を探し、該当するユーザがいないので、メールサーバの管理人に送りかえすという事になってしまいました。 これは、店員達のもう一つのメールアドレスに送信することで解決しました。 私達が使っていたネット上のホストはダイアルアップサービスを提供していなかったので、店員達は WEB にアクセスする為に 各自で無料 ISP(訳注:Internet Service Provider インターネットサービスプロバイダ)のアカウントを持っていました。 そのため店員達は別のドメインにアドレスを持っていたので、qmail は全てのメールをそのアドレスにエイリアスファイル を使って転送することができました。
注釈: 営業所の店員達の人生を過ごしやすくするため、私達が使っているネット上のホストは彼ら宛てに届くメールを全て 無料 ISP のメールアドレスに転送しました。これにより、店員達はノートパソコン上で複数のアカウントやアドレスを お手玉して "混乱" せずに済みました。彼らに幸あれ :o)
古いサーバ PC は Microsoft Network の FAX 機能を使って ネットワーク経由で FAX サービスを共有していました。 ユーザ達は MS Word の(VBA マクロが入った)テンプレートを使って自動的に FAX を作成/送信し、エラーはユーザにメールで通知されました。 新しいサーバで、前より良くならないまでも同等のサービスを提供するために、ローカル FAX サービスとして mgetty と sendfax の組合せを選択しました。 インストールは簡単で、すぐに Linux サーバからの FAX はスプールできる様になりました。 Windows クライアントからの FAX に関しては比べものにならないほど困難で、結局別の選択をせざるを得なく なりました。
以前の構成では、全ての Windows クライアントに FAX サービスを提供するために MS Outlook で Microsoft Fax
を使ってサーバ PC から FAX モデムを共有していました。
これに付け加えて、自動的に FAX 送信する機能を持った標準の Word97 テンプレートを使用していました。
VBA の Sendfax
コマンドを使ったこのマクロで、ユーザ達はテンプレートの項目を埋めて、Word のツールバーにある
"今すぐ FAX を送信する" というボタンを押すだけで FAX を送信することができました。
たった今テンプレートに入力したばかりの内容を、全て繰返し入力しなければならないようないかなるサードパーティ製の
プログラムを使わなくても済んだのです。
このようにして、以前のこの構成ではユーザ達にシームレスな FAX 送信を提供しており、私はなんとしてもこの環境を
継続すべきだと考えていました。
理想的には、送信したい文書、ユーザ名そして FAX 番号を Windows クライアントのアプリケーションから Linux サーバの faxspool に渡す何らかの方法が必要でした。 あらゆる Windows アプリケーションに FAX サービスを提供する伝統的な方法は、FAX モデムを "プリンタ" として設定するというものです。
最初は、mgetty と sendfax の組合せを FAX サーバとして使うようにインストールしました。
このようにした主な理由は、この組合せは RedHat 6 に付属しておりすぐに使える状態だったからです。
ところが運の悪いことに この組合せは Microsoft Word マクロを使って FAX を FAX サーバに送信するという用途には
適していないことがわかりました。
mgetty と sendfax の組合せを使える素晴らしい Windows クライアントはいくつかあったのですが、悲しいかなこれらは
全て、FAX を送信する度にユーザが毎回 FAX 番号などの入力をしなければならないものだったのです。
ユーザが Word のテンプレートに入力してボタンを押したらマクロがその文書の中から FAX 番号を読みとり、
VBA の Sendfax
コマンドを使って MS Fax 経由で FAX を送信するという当時の環境にマッチする解決方法が必要でした。
検討と調査を重ねた結果、私は WHFC(
http://www.transcom.de/whfc/) という Windows クライアントを持つ
HylaFAX (
http://www.hylafax.org) に目をつけました。
このクライアントは VBA マクロ経由での通信をサポートしており、まさに私が望む通りのものでした。
若干頭の痛いクライアントアクセスの問題はあったものの Hylafax は正常にインストールできました。
この問題は、クライアントの IP アドレスを /var/spool/fax/etc/hosts
だけでなく
/var/spool/fax/etc/hosts.hfaxd
にも正しく追加されていることを確認することで解決しました。
一旦設定してしまえば実用を開始するのに時間は全くかかりませんでした。
WHFC は非常に簡単にインストールでき、あっという間に設定できたのです。
すでに述べた通り、ユーザ達は MS Word97 でボタン一つで FAX 文書を送信するのに慣れていたので、新しいサーバでも この機能が使えるようにするのは重要な事でした。 WHFC は OLE 互換なので、FAX 送信に必要な情報を入力するために新しいポップアップボックスを出したりせずに FAX を送信できるようにするための新しいマクロを書く事が可能でした。 このマクロは二つの事をします - まず、現在の文書を印刷イメージとしてファイルに保存し、次に WHFC の SendFax OLE 機能 を使って印刷イメージファイルを HylaFAX に送信します。 WHFC のセットアップノートで推奨されていたので、プリンタドライバには Apple Laserwriter 16/600(ps) を使いました。
ここに、私達が使ったマクロのコーディングを書きます ...
Sub Spool_fax() ' Spool_fax マクロ ' マクロ作成日:09/08/00 作成者:Ryan Cartwright Dim givenfax, realnum As String Dim whfc As Object Dim OLE_Return As Long Dim Box_Return As Integer ' まずローカルファイルに文書を印刷します - Background プロパティが False でなければならない点に注意してください。 ' さもなければこの機能はファイルを完全に書き込む前に終了してしまい、HylaFAX は正しく文書を変換できません。 Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=False, PrintToFile:=True, _ OutputFileName:="c:\faxtemp\printout.ps", Append:=False ' テンプレート内で Autonew マクロにより FAX 番号等を質問されるようになっています。 ' FAX 番号のフィールド番号は 8 なので、ここの内容を取り込んでその前に 9 をくっつけます。 Set givenfax = ActiveDocument.Fields(8).Result realnum = "9" + givenfax ' OLE オブジェクトを作成し Sendfax() サブルーチンを呼び出します。 Set whfc = CreateObject("WHFC.OleSrv") OLE_Return = whfc.SendFax("c:\faxtemp\faxoutput.ps", realnum, False) ' 最後に、戻り値のテストを行ない、その内容にしたがって通知します。 If OLE_Return <= 0 Then Box_Return = MsgBox("Error sending file", 16, "FAX Not Spooled") Else Box_Return = MsgBox("Fax Job ID:" & OLE_Return & Chr(13) & "You will be notified by email if it was successfully sent", 0, "Fax spooled") End If Set whfc = Nothing End Sub