Mac OS X Server構築記録(1999年8月)

新居雅行(msyk@locus.co.jp



1999/8/31 2ボタンマウスうまく行かず

昨日、秋葉原に行きました。理由ってのが、実は、メインに使っているPower Macintosh 7600/200のマウスがどうも動きがおかしくなったためです。掃除をして、ボールをきれいにすればするほど、動きが悪く、引っかかるのです。で、いまさらという感じで、ADBマウスを買いに行きました。マック専門店では売っては入ますが、在庫の8割くらいはもうADBなんですね。円形マウスが今ひとつと思われる人も多いのか、USBならけっこう売っていたりします。

それで、パーツ屋さんをのぞくと、DOS/Vマシン用のUSBマウスはいちばんやすいので、\980から売っています。それで、少し高い\1280のボンダイブール風スケルトンマウスを買って、Mac OS X Server機に付けることにしました(Power Macintosh G3/300です)。

電源はそのままにまずは付け替えました。いきなりちゃんと動くので安心。それで、左ボタンでのクリックもOKですが、右ボタンクリックは×です。それで、私は左利きなので、左右のボタンを入れ替えたいのですが、アップルメニューの「ユーザの初期設定」から「マウス」を選ぶと、マウスボタンの左右入れ替えや、右ボタンの機能をアクティブにする設定があります。これだと思って設定を変えたのですが、何も変化なし、再起動までしても、変化がありません。再起動すると、左右のボタンを入れ替える設定は元に戻っています。

それで、MacOS8toXメーリングリストでたずねてみると、中村さんという方より、パッチがあるもののうまく動かないことを教えていただきました。パッチは、Omni社のもののようです。やはりというか、やっぱりうまく行きません。変化なしです。

それで、左側のボタンをともかくクリックして使うしかないのですが、2ボタンマウスには対応していないのでしょうか。設定まであるのだから、何かやりようはあるのじゃないかと期待するのですが、分からない状態のままです。

1999/8/28 OpenBaseを買った

Mac OS X Serverで使えるデータベースエンジンのOpenBaseを買いました。とは言ってもアカデミック版です。まだ、アカウントは届いていません。アカデミックというのは、学校関係者ということではなく、OpenBaseを使ってWebObjectsなどを勉強するという位置付けのネーミングのようです。

OpenBaseのホームページには記載されていませんが、ダウンロードしたものをインストールするときに、アカウントの入力が出てきます。アカウントを入れないと、30日期限の評価版として機能するようになっています。

仕事がすごくヘビーになってきているので、ページの更新はあまりできそうになりません。仕事ではFreeBSDベースの開発をしています。PostgreSQLとPHP3で作っています。PostgreSQLは、ストアドファンクションでちょっとはまりました。PHP3は、思っていたよりも原始的CGIに近いですね。やっぱり、サーバーサイドスクリプトとかを使いたいのdすが、残念ながらコストをかけられないので、フリー素材でやっているのです。余裕ができたら、WebObjects/OpenBaseで、自分用の住所録とか作ってみようと思っています。きっと、こっちのほうが快適な開発環境なんだろうなぁ〜。

1999/8/25 NetInfoのディレクトリを利用したメーリングリスト

仕事で必要になった、固定メンバーのメーリングリストを、sendmailのエイリアスの機能だけで構築してみました。それも、/etc/aliasesファイルではなく、NetInfoに登録してみました。

rootでログインしているときに、アップルメニューの「サーバの管理」からNetInfoManagerを起動します。NetInfoが管理するディレクトリのルートにaliasesという項目があり、それをクリックすると、aliasesに含まれる内容がさらに一覧されます。その段階で、左上のフォルダが光っているアイコンをクリックすると、エントリーが1つ作成されます。まず、nameプロパティしかありませんが、aliasesエントリーでは、nameプロパティは、メーリングリストのメールアドレスになります。valueを編集状態にして、メールアドレスをキータイプします。

そして、ウインドウの下半分にある、作ったエントリーのプロパティ一覧でどれでもいいのでプロパティを選択します。そして、DirectroyメニューのNew Propertyを選択して、新しいプロパティを作成します。さらに、DirectoryメニューのNew Valueを選択して、値を与えます。新しいプロパティの名前は、membersにします。そのmembersの値として、転送するメールアドレスをカンマで区切って入力します。

これで、エイリアスを使った簡易メーリングリストがきちんと作成できました。

1999/8/24 100BASE-TXを稼動

うちにあるiMac、Power Macintosh G3は最初から100BASE-Tが利用できます。Windowsマシンも、ネットワークカードを入れる必要があったのですが、秋葉原のパーツ屋で1980円で100BASEのカードがあって、100BASE-Tが3台になりました。せっかくなので、マルチスピードのハブを買って、100BASE-Tでの通信ができるようにしました。

お決まりのベンチマークですが、NetBootの時間を計ってみました。何回かやってみると微妙に違うので、絶対的な時間を細かく評価はできないでしょうけど、次の表のように、明らかに効果が出ています。表は電源をオンにした時間を0としています。

場面 10BASE-T 100BASE-T
最初に小さなマックマークが出る 00:25 00:22
起動開始(デスクトップが変わり棒グラフが出てくる) 00:38 00:30
ログイン画面が出てくる 01:40 01:00
ログイン作業を手作業で10秒かかるとして 01:50 01:10
起動完了 02:20 01:26

NetBootクライアントが1台だけの環境なんで、参考程度にしかならないとは思いますが、実際の起動が約1分から30秒へと大きく短縮していますね。うちでは、デジカメで撮影した写真やムービーをWebサーバーで参照できるようにしてあるのですが、ムービーの開始までの時間が目に見えて早くなっています。やっぱりそれなりに快適ですね。

ちなみに、買ったハブは、コレガの8ポートデュアルスピード(つまり、10BASE-Tと100BASE-Tの両方OKのやつ)で、秋葉原のラオックスネットワーク館で10800円でした。100BASEのみでスタックできないタイプだと、8000円くらいからあります。もちろん、10BASEはもっと安いですけど、100BASEも十分に手が出る値段になっていますね。

1999/8/21 CFをまとめておこう、マシン名を含まないメールアドレスを受け付ける方法も分かった

兵藤さんが、CFのMac OS X Server向け設定ファイルを作られたのですが、それで作ったsendmail.cfに入れ替えて運用し始めました。とりあえず問題はありません。兵藤さんありがとうございます。

それで、以前にmotoさんから教えてもらった、CFの*.defファイルの作るポイントをまとめておきました。どういう設定を加えればいいかということを分かりやすく教えていただきました。

*.defファイル内での設定 意味
CF_TYPE=R8V8 sendmailのバージョンが8.9.1なので、このような指定になる。
OS_TYPE=osxs もちろん、兵藤さんの作られたosxsファイルを参照するようにします。osxsファイルはMaster/OSTYPEディレクトリに入れておきます
MX_SENDMAIL=yes
MY_DOMAIN=msyk.locus.co.jp
MY_NAME=lui
OFFICIAL_NAME='$w.$m'
普通はMX版のsendmailを使っている?
ドメイン名とマシン名をここで与えていますが、一般にはこれらの情報は自動的に取得されるようです
DIRECT_DELIVER_DOMAINS=all Mac OS X Serverからすべて送付するのでこれにする。=より後にドメイン名を書くとそのドメインだけ直送になり、他のドメインは別に指定したリレーサーバーに送ってそちらから送付するようになる
FROM_ADDRESS='$m'
RECEIPIENT_GENERIC=yes
ローカルから送信の場合にFromのアドレスを、msyk@msyk.locus.co.jpとする。To, Ccも同様
LOCAL_USERS='root nobody fml' Fromのアドレスにホスト名までを含めるユーザーを列挙しておきます
ACCEPT_ADDRS='$m' ホスト名のない、ドメイン名だけのメールアドレスも取得する
BITNET=no bitnetはデフォルトのリレーに任せる
RES_NUMERIC=no IPアドレスの表記をシンボルへの変換をしない
DELIVER_NUMERIC=strip IPアドレスを含む送信先メールアドレスでは、IPアドレスを削る
COPY_ERRORS_TO=postmaster エラーはpostmaster宛に送る
MAIL_RELAY_RESTRICTION=yes
LOCAL_HOST_IPADDR=202.230.43
LOCAL_HOST_DOMAIN=msyk.locus.co.jp
PRIVACY_FLAG='goaway'
メール送信に利用できるクライアントを制限します。内の会社のIPアドレスか、あるいはうちのドメインに所属するものに制限します
goawayというのはSMTPサーバーとクライアントのやり取りで、HELOを要求するなどのオプション

ドメイン名やマシン名は一般には記述しないでもいいということになっています。しかしながら、うちでの何かの事情でうまく取得できていないよいうなので、記述しました。これを記述しないと、msyk@msyk.locus.co.jpのようなアドレスが自分宛であることが判断できなかったという次第です。ところが、これは誤解であることが分かりました。

この設定は、ACCEPT_ADDRSが含まれているかどうかということのようです。マシン名を含むアドレス、msyk@lui.msyk.locus.co.jpは常に受け取ります。しかし、ACCEPT_ADDRSの設定がないと、msyk@msyk.locus.co.jpでの受け取りができないわけです。ACCEPT_ADDRSの有無によるsendmail.cfの違いは単純ではなく、メールアドレスの解釈を定義するルールセットの部分で、微妙に違いがあるようです。このルールセットの記述を理解できるほどではないので分からないのですが、Mac OS X Serverに最初から含まれているsendmail.cfは、ACCEPT_ADDRS='$m'に対応する設定がなされていないのではないかと思うのですが、どうでしょうか。

1999/8/20 PostgresSQLに挑戦したけど出直し…

仕事でPostgresSQLを使った開発を行うので、手元でどんな様子か見られるのもいいかなと思って、思い切ってMac OS X Serverにインストールができるかをやってみました。ローカスから出している書籍を見ながらと思って、ダウンロードをしてみました。いきなり、最初のconfigrationではねられてしまいました。ホストが特定できないということだそうです。自分でコンフィギャしてメイクしてねということだそうです。対応OSの情報でも、Mac OS X Serverについてはまだ何も書かれていませんね(Mac OSでの動作状況はあったけど)。というわけで、そこで力尽きました。

1999/8/19 84秒

AppleShareのWebブラウザでの管理で、サーバーの負荷をグラフで表示するパートがあります。そこでは、84秒間隔で使用履歴が表示されています。で、ふと、Mac Fan Internet 99/9 p122を見ていると、「インターネットタイム」というのが掲載されていました。それは、1日を1000分割した時間を単位とした86.4秒を1ビートカウントする時刻で、「@500」のように書くということです。MITメディアラボのネグロポンテ氏の考案だとか。

ふと思って、1日を1024(210)で割ってみました。60×60×24÷1024=84.375。もしかして、AppleShare管理のページの84秒間隔ってこれのことなんでしょうか? だけどちょっとあまりが大きいな。ちなみに、60×60×24÷84=1028.57...です。

1999/8/19 Apacheのディレクトリ設定

/Local/Library/WebServer/Configration/apache.confに定義された<Directroy>〜</Directroy>の定義のうち、OptionsとAllowOverrideの設定をまとめてみました。こうなっています。

Directroy Options AllowOverride
/ FollowSymLinks None
/Local/Library/WebServer/Documents Indexes
FollowSymLinks
None
/System/Library/Apache/Icons Indexes
MultiView
None
/Local/Library/WebServer/CGI-Executables None None

おや?CGI-Executablesでも、OptionsはNoneなんですね。ExecCGIという指定をしなくても、ちゃんとカウンターとかのCGIが動いていのですが…。と思って、apache.confをいろいろ見ていると、ScriptAliasという定義で、/cgi-bin/をCGI-Executablesにアサインしているため、このディレクトリではサーバー上でアプリケーションを動かすことができるという設定になっているということのようですね。

1999/8/18 情報いろいろ

また、仕事が忙しくなってきました…。まとめるべき内容はあるのですが、ちょっと後ですね。

株式会社パワーからMac OS X Serverでも稼動するRAIDの「Powerful RAID U2シリーズ」がリリースされたようです。pressnetでリリースが回りました。Ultra2 SCSIで、RAID0だと、45〜180GBの容量で使えるようです。ホームページを見る限りでは、Mac OS X Serverで使えるということ以上の情報、たとえば、対応SCSIカードあるいは対応可能な機種などについては、何も情報がありませんね。

Darwin 0.3のバイナリがリリースされたそうです。一番最近のMac OS X Serverに対応したアップデートということは、Update 1.0-2に対応していることだと思われます。リリース内容を示すページには全然アクセスできませんね。また、Darwin 0.3 SDKもCDとしてリリースされたのですが、これはADC会員向けということだそうです。ADC会員には送られてくるのだろうか? 一連のソースコードが含まれているということですが、OpenPlayというネットワークゲーム用のツールキットというのがちょっと興味がありますね。うー、Webサーバーよ、応答してちょうだい!

1999/8/15 Apacheの再起動と、confファイルのチェック

ほとんどメモですね(笑)

apachectlは、/usr/sbinにあるのですが、パスが通っているので、単に「apachectl」とタイプすることで、コマンドを呼び出すことができます。引数なしでこのコマンドを呼び出すと、簡単なヘルプが出てきます。しかし、Apacheという名前のキータイプがなんか引っかってすぐ間違えてしまう…。

1999/8/15 Mac OSでのロックがかかったファイルは消せない?

NT Serverにある大量のデジカメ写真ファイルが、なぜかロックがかかっていたのです。それを、Mac OS X Serverの公開しているHFS+のフォルダにコピーしましたが、もちろん、コピー後もロックがかかっています。困った。そのうち、ある程度のものは、自動的に作成可能なファイルなので、いったんは削除しようとしました。しかしながら、Mac OSでロックがかかったファイルは、Terminalでrmコマンドを入れても、Workspace Managerで削除をしても消すことができません。消し方は分からなかったので、結局、クライアントのMac OS側からの操作で、手作業でロックを解除しました。

実は以前も、NetBootをインストールしなおすとき、既存のNetBoot関連のファイルがMac OSのロックがかかっており消えなくて困ったという経験がありました。そのときは、CD-ROMで起動して、マウントしたハードディスクの中のファイルのロックを解除したという方法を使いました。

Mac OSでロックされたファイルの削除、あるいはロックの解除などの方法は、ともかく分かりません。

1999/8/15 Webで公開するディレクトリ名はpublic_htmlでなく「Web Documents」

ApacheによるWebサーバーで、ユーザーのホームディレクトリにある一定の名前のディレクトリを、http://アドレス/~ユーザー名 の形式で公開しますが、一般にはpublic_htmlという名前がよく利用されています。しかしながら、Mac OS X Serverの既定値では、「Web Documents」という名前が使われています。apache.confでそのように定義されています(UserDir)。しかし、ファイル名にスペースがあると、Terminal作業が面倒になりがちですよねぇ。

実はデジカメのファイルの整理に、以前より、自分で構築したWebベースのシステムを使っていますが、それをNT ServerからMac OS X Serverに移し変えを始めています。個人的というか、うちの家族だけが参照できればいいので、特定のアカウントを作って、「~アカウント名」で参照できるようにしようとしました。いろいろ苦戦をしましたが、まだ問題点を整理されていません。apache.confの設定などもからむので、この顛末はまた改めて書きます。

1999/8/14 Mac OS X Server用のスクリプト言語F-Script

オープンソースでフリーのF-Scriptというスクリプト言語システムが登場したようです。

1999/8/12 バックアップを真剣に考えないと…

せめて、Webページのファイルと、メーリングリストの設定やログをバックアップするくらいはしないといけないので、どうするかを考えました。一般にはバックアップはボリュームの全体や大半をバックアップするわけで、大容量の記憶装置を必要とするわけですが、Mac OS X Serverは接続できるものがどれくらいあるのか? 磁気テープのバックアップ装置も大分と安くなっているそうなんですけど、SCSIというハードルが1つあり、さらにその磁気テープドライブのドライバがあるかどうかという問題もあるみたいです。このあたりはそのうち解決しないといけないですね。

それで、現状では、数十メガ程度の最低限のバックアップでOKなんで、次のような方針でいくことにしました。まず、cpコマンドで保存したいディレクトリをまるごと、HFS+ボリュームの公開ディレクトリの中の特定のフォルダにコピーします。-Rでディレクトリをまるごとコピーします。そして、コピー先をMac OSのクライアントでコピーをして、そちらのハードディスクに残しておいたり、CD-Rに焼くついでにいっしょに焼くなどするという方法です。もちろん手作業がですが、最初の保存したいディレクトリをコピーするのは、スクリプトを組んでダブルクリックでできるようにしておけば、それほど面倒ではありません。バックアップしたいディレクトリが増えれば、cpコマンドを増やせばいいわけです。そのスクリプトを、~AdministratorのApplicationディレクトリに入れておきました。

当面はこの方法でまめにバックアップを取るしかないという感じです。

1999/8/11 メーリングリストのReply-Toを指摘される

ASUG-MLで、田中さんより「Reply-To」ヘッダが送信者によってつけられたものがそのまま流れている点を指摘していただきました。従来のAutoShareを使っていた時代から、Reply-Toは、メーリングリストへの投稿アドレスで通してきたのですが、改めて調べてみると、fmlは「Reply-Toはそのまま」というのが基本ポリシーとなっているようです。

で、fmlのリファレンスを見ると、config.phの最後に「$Envelope{'fh:reply-to:'} = $MAIL_LIST;」という行を入れればいいということだったので、そのとおりして、Reply-Toは投稿アドレスに強制的に書き直すようにしました。ちなみに、config.phの最後は「1;」だけの行になっていますが、その行の前に追加してとりあえず動いています。

オープンなメーリングリストのMacJava-MLと、MacOS8toX-MLについても、同様に設定を変えておきました。

1999/8/11 オリジナルのsendmail.cfを使ったときのメール送信

sendmailを使ったメール送信ですが、オリジナルのsendmail.cfを使った場合、初期状態では、サーバー機からのメール送信しか受け付けません。しかしながら、オリジナルのsendmail.cfには「Fw/etc/sendmail.cf」という設定がありますし、/etcディレクトリにはsendmail.cwという空のファイルがあります。このファイルの中に、メール送信を可能にするクライアントを含むドメイン名を書き込んでおきます。複数のドメインを書くときは、改行で区切ります。これによって、クライアントから送られてきたメールを、転送することができるようになります。兵藤さんに指摘していただきました。

1999/8/9 Sambaで日本語ファイル名はやはりだめ

Windowsから、Sambaで公開したディレクトリを参照できるのですが、ファイル名の扱いの違いによって、日本語のファイル名がサーバー上では化けてしまうという問題があります。もちろん、Sambaでは、サーバーでのさまざまな文字コードに対応してはいるのですが、残念ながら、Mac OS X ServerのUTF-8には対応していません。そのまま使うと、ハードディスクにある日本語のファイル名のファイルをSambaで公開しているフォルダにコピーすると、コピー先では、アルファベットは保持されますが、2バイトコードの部分が全然違う文字に化けてしまい、参照できなくもなります。

日本語の文字コードに対応するには、/usr/local/samba/lib/samba.confファイルに以下の記述を[global]セクションに追加します。

client code page = 932
codingsysytem = SJIS

前者は日本語を使うという宣言で、後者は受け取ったシフトJISコードのファイル名などを、何のコードに変換するかを指定するという設定です。SJISだとそのままシフトJISコードでファイル名を扱うということを意味しています。追加後、kill -HUP process_IDのコマンドで、smbd、nbmdのデーモンを再起動します。

codingsystemに対する設定としては、他に、EUC、HEXも試してみましたが、SJIS、つまり変換なしでそのまま利用するというのがいちばん結果は良かったです。SJISだと、いちおう、Windows側にある日本語のファイル名のものをサーバー側にコピーしても、Windowsクライアントから見る限りは日本語でとりあえず見えています。ただし、すべての文字でチェックしたわけではありません。しかしながら、時間が経過すると、文字化けで出て来るなど、結果的には使えないという具合です。ファイルを作った瞬間だけ、正しいファイル名で見えているというような具合です。

これが、EUCやHEXだと、日本語を含むファイル名に含むファイルをローカルからサーバーにコピーしたとしても、最初から文字化けやあるいは見えなくなるという現象に出くわしてしまいます。

したがって、とりあえず、SJISの状態が比較的まともなので、この設定で使うことにしましたが、日本語のファイル名が使えない点では変わりありません。ということで、基本的な設定は試してみたけど、やはりUTF-8対応されていないので、結果はだめだったということです。

1999/8/8 遅ればせながら、Mac OS X Server Update 1.0-2

マルチカントリー版をダウンロードして、インストールしてみました。Apache 1.3.6へのアップデートや、安定性の向上などがポイントだそうですが、しかしダウンロードファイルが8.7MBとけっこう大きいですね。変更点なんかは、MacWeek.comの記事(日本語)が適度にまとまっているというところでしょうか。いずれにしても、CGIで高い負荷をかけたときに落ちると指摘されていた点を修正したかったのでしょうね。

Mac OS X ServerのOmniWebでダウンロードすれば、OpenUpで自動的に解凍されます。そして出来上がったpkgファイルをダブルクリックし、ダイアログボックスでインストールボタンをクリックすれば後はOKのようです。ちゃんと日本語が言語として選択されています。ログを見れば、Apacheの再起動までも自動的にやっていますね。それでも、ダウンロード方法を示したTILでは再起動をしろとなっているので、再起動をしておきます。再起動したら、モニタの解像度がVGAに落ちてしまっていました。

1999/8/8 メーリングリストの参加者をカウントするCGI

というものを作ってみました。たとえば、MacOS8toXメーリングリストの参加人数を求めることができます。要は、fmlの各メーリングリストごとのディレクトリにあるmembersファイルの行数を求めていますが、#で始まるものはコメントや退会者なので、それをカウントしないようにしているという具合です。

そこで、pealのCGIを作って、/Local/Library/WebServer/CGI-Executablesディレクトリに、入れてありますので、したがって、上記のリンクのようなURLで呼び出せるというわけです。Apacheの初期設定そのままでCGIを動かす方法ですね。

ただ、membersファイルのアクセス権が、所有者にだけ読み書きできるようになっていたので、CGIで人数を求めたいメーリングリストのmembersファイルだけ、読み込みのアクセス権を全員に対しても設定しました。

1999/8/8 送信用のSMTPサーバーにならないを問題解決

sendmailでは、スパム対策も含めて、クライアントから送られてきたメールを何でも送信するようにはなっていないとのことです。それで、CFなどで特に設定をしなければ、ローカル、すなわちサーバー機自身から送ったメールしか送信しない設定になっています。

そこで、sendmail.cfだと、

C{LocalIP}XXX.XXX.XXX
C{LocalDom}locus.co.jp

のような定義によって、指定したIPアドレスに含まれるかあるいは指定したドメインからのメールの送信も行えるようになります。

sendmail.defレベルの記述としては、

MAIL_RELAY_RESTRICTION=yes
LOCAL_HOST_IPADDR=XXX.XXX.XXX
LOCAL_HOST_DOMAIN=locus.co.jp

に相当するもののようです。(この記述方法は、Shin Motomiyaさんに教えていただいたことの一部から引用しました。教えていただいた内容はいずれ、また、まとめるつもりです)

これで、サーバーを移行したときの大きな問題の2つがクリアされたので、普通にメールサーバーとして使えるようになったというわけです。

それで、Mac OS X Serverに標準で組み込まれているsendmail.cfを見たのですが、C{LocalIP}のような記述が見当たりません。Cで始まる記述はあるのですが、私のレベルでは解読不可能です。ただ、サーバーを移行したときに、メール送信に使えなかったことから、標準のsendmail.cfは、サーバー機からのメール送信にしかできない設定になっていたのではないかと思われます。

1999/8/8 兵藤さんのページ

兵藤さんがMac OS X Serverに関する情報提供のページをひらいておられます。このページを見てのコメントも含まれているので、有用な情報もあります。一読をお勧めします。

1999/8/6 CFのostypeを認識しない理由が判明

CFでOS_TYPE=XXXXの指定をしても、指定がないような警告が出ていた理由がわかりました。実は、CFをMac OSでダウンロードして、StuffIt Expanderで解凍してそれをそのまま転送して使っていたのです。おそらく、どこかのシンボリックリンクがはずれていたのではないかと思います。

Mac OS X ServerでOpen Upを使って解凍した結果、os typeが指定されていないという警告は出なくなりました。

うーん、基本的なことということになるのかな…。Open Upで解凍したディレクトリを別のディレクトリにコピーして実行しようとしたのですが、シンボリックリンク関連の警告が出て、上書きすると、やっぱりos typeが指定されていないよな警告が出てきます。Mac OSのように気楽にフォルダを移動するようなことは、考えてからやらないといけないようです。

1999/8/6 CFによるsendmail.cf作成でいろいろ教えていただきました

ここ数日、仕事の追い込み状態で、サーバー側については進展がありませんでした…。

このページでCFを使って悪戦苦闘しているところを御覧なられた方々から、いろいろな情報をいただきました。Shin Motomiyaさんからはsendmail.defの作成方法を丁寧に解説いただきました。ありがとうございます。参考にして再度挑戦し、ポイントをこのページで紹介したいと思います。

また、兵藤さんからもいろいろ教えていただきましたが、MacOS8toXのメーリングリストで、兵藤さんよりCFのMac OS X Server向けostypeファイルを作成するというお申し出があり、私を含めてもう1人の方も含めて、使いたいというリクエストが出てきました。CFにはOSごとの設定ファイルが用意されているのですが、Mac OS X Serverはありません。これを機会に、CFに追加されるといいですね!

1999/8/2 CFで生成したsendmail.cfを使うことに

うちのサブネットだけのDNSをMac OS X Serverでとりあえず立ち上げたのですが、うちのサブネットくらいの規模で独立したサブネットが必要ではないといえば、確かにそうなので、親ネットワーク側のDNSにこちらで使っているサーバーの設定をとりあえず入れてもらって、DNSの運用はこちら側ではとりあえず中止しました。

これでうまくいくと非常にありがたいのだけども、どうやらDNSを切り替えた結果、とうとう全然メールのやり取りができなくなってしまった。マシン名つきのメールアドレスで送付したメールも、localとは認識しなくなってしまいました。ちょっとパニックになりそうになったけど、ここで、これまでにCFで作ったsendmail.cfに思い切って差し替えてみました。既存の/etc/sendmai.cfはsendmail.cf.originalと名前を変え、CFで作ったsendmail.cfにをコピーしてきました。

これだと、マシン名付きのメールアドレスでも、ドメイン名だけのメールアドレスでも、アドレス自体の認識はテストモードでチェック済みです。ところが、/var/log/mail.logを見ていると、Operating System Errorが出る。どうやら、ローカル宛のメールで、/bin/mailというプロセスを立ち上げて、実際のメール処理をしているというところまで分かったので、CFで作ったsendmail.cfの該当個所を、オリジナルのsendmail.cfと比べてみました。すると、次のような違いがあることが分かりました。

そこで、CFが生成したsendmail.cfの該当する部分をコメントにし、代わりに対応する設定をオリジナルのsendmail.cfから持ってきて見ると、きちんと到達したメールを配信しました。これで、ドメイン名だけのメールアドレスできちんと受けるようになったというわけです。

たぶん、このあたりは、CFを作るときにうまく行ってない個所があるからだと思います。実は、OS_TYPEの記述ができなかったということがあります。defファイルのひな型であるsendmail-v8.defにはなぜかOS_TYPEの項目がありません。そこで、独自に記述して、bsd4.4を指定したのですが、それでもos typeが指定されていないというエラーが出てきました。Master/OSTYPEにあるbsd4.4というファイルを見れば、ローカルに配信する場合のプロセスの指定などがあるので、そうした指定が正しく設定されていないのだと思います。OS_TYPEが指定できない理由はこれから調べないといけない。

また、オリジナルのsendmail.cfとCFが生成したものは微妙な違いがあちこちにあるのですが、とりあえず、ある程度使ってみたところでは、メーリングリストやメールの受け取りには問題がありません。ただし、メールの送信サーバーに使えないという問題はまだ残っています。

ちょっと強引な方法だけど、状況としては進歩したと言えるのかもしれない。でも、不安は残したままではあります。メーリングリストの設定をまたいじらないといけないのと、投稿アドレスについてのアナウンスをしないといけないですね。

1999/8/1 sendmailの問題を本格的に追及したが…

Mac OS X Serverのアカウントに対して、アカウント@サーバー名.ドメイン名の形式ならメールは到達するのですが、アカウント@ドメイン名の形式ならユーザーが見つからないと言ってエラーを戻す件について、ちょっとまじめに調べました。というか、少し前からやっているのですが、詳しい人に聞いたら、CFを使って設定やり直せば、ということだったので、まずはCFですね。

sendmailの設定は、Mac OS X Serverでは/etc/sendmail.cfというファイルで定義しますが、このsendmail.cfはよくある設定ファイルに比べて、よりアセンブラ的というか、独自の書式が記号の応酬のような感じで、なかなか難解です。しかしながら、CFというツールを使えば、普通のコンフィグレーションファイルにあるような「キーワード=値」みたいな記述で定義を書くことができ、それをsendmail.cfに翻訳してくれるというわけです。

CFは、ftp://ftp.kyoto.wide.ad.jp/pub/mail/CF/ でダウンロードできます。Ver.3.5、3.6、3.7があるのですが、3.7はさらにノーマル、pl1、pl2の3つのバージョンがあり、3.7pl2向けには2つのパッチファイルがあります。いちおう、3.7のいちばん新しいpl2と2つのパッチをダウンロードしました。CFを使えるようにするまでの基本的な使い方は、http://qubeley.ipc.kobe-u.ac.jp/Computers/SPAM/Mail/make_cf3.7pl2.html を見ながらやりました(ここからも必要なファイルはダウンロードできます)。ここでの説明とおりにできました。makeとかを使うので、WebObjects CD-ROMの内容をインストールする必要があるでしょう。

CFには、INTRO.jpnという基本的な事項をまとめたマニュアルがあります。意味がわからない個所もありますが、いちおう読みました。それで、これだけだと手におえないことは明らかなので参考書を探しました。秀和システムの「sendmail Manual & Reference」という本を見ると、CFの設定の仕方がありました。そこでは、sendmailを使ってsendmail.cfファイルがちゃんと機能するかをチェックするやり方が書いてありました。そこで、今使っているsendmail.cfをチェックしたわけです。

/usr/sbin/sendmail -C/etc/sendmail.cf -bt

で起動して、「/parse メールアドレス」とキー入力すれば、いいわけです。で、Mac OS X Serverには、msykというアカウントがあります。ドメインはmsyk.locus.co.jpでサーバー名はluiです、チェック結果は以下のとおりです。

となってしまいます。前者はOKですが、後者もmailer localになってもらわないといけません。したがって、マシン名を含まないメールアドレスに対して送付しても、Mac OS X Serverのsendmailは自分宛とは思わず、さりとて「msyk.locus.co.jp」というホストがないという解釈でエラーを出すのだと思います。

さて、CFを使ってあれやこれやと設定を作ってみたのですが、その結果、だいたいめぼしがつきました。もちろん、sendmail-v8.defというファイルをひな型にして作業をしましたが、その中で、次の設定を加えればいいことが分かりました。

この設定を入れておけば、

となるのです。

おそらくですが、まず、1つにDNSが正しく機能していないために、ドメイン名などの自動的に取得される情報が正しく得られないということが考えられます。上記のように、ドメイン名、マシン名を含むドメイン名を与えることで、こちらが意図する情報をsendmailに与えることができるようになったのではないかと考えるところです。

生成したsendmail.cfに置き換えるのか、DNSの設定を再度見直すのか、ここは考えどころです。もう少し検討したいと思います。CFで作るsendmail.cfと、Mac OS X Serverの最初から含まれているsendmail.cfとがどの程度違い、その違いがどう影響するのかは分からないところです。できれば、最初から組み込まれているsendmail.cfを使いつづけたいとも考えるところですが、どうしたらいいかは思案中です。