図 9 always-direct 吏用例 ( 2 ) acI local—external dstdomain other—campus . daigaku ・ ac ・ JP 連載コミュニケーション用サーパーのインストールと運用 ー① 表 1 ACL の頁 ( 抜枠 ) ・ ac ・」 P 説明 srcdornmn dstdomain t ime proto src dst 孑売元ホストの IP アドレスを基準に判定をおこなう URI の最初の部分 ( スキーム名 ) をもとに判定をおこなう そのときの曜日と日リをもとに判定をおこなう 要求された URI の文字列中に含まれるドメイン名部分を利用して判定をおこなう こなう ( 毎回 DNS 参照が発生することに注 接続元ホストの IP アドレスを逆引きして得られたドメイン名を利用して判定をお た IP アドレスを利用して判定をおこなう ( 毎回 DNS 参照が忖す - ることに注意 ) 要求された URI の文字列中に含まれるドメイン名から DNS を正引きして得られ 、文字列 " 部分の記述例 123.45.0.0 / 255.255.0.0 135.79.0.0 / 255.255.0.0 daigaku. ac. JP yoso ・ ac ・ JP ac. JP ascii. co. jp edu 8 : 00 ー 23 : 00 HTTP FTP acI local—servers dstdomain daigaku always—direct deny local—external always—direct a110W local—servers 図 10 never-direct 吏用例 acl local—servers dstdomain daigaku ・ ac ・ JP acl a11 src 0 . 0 . 0 . 0 / 0 . 0 . 0 . 0 never_direct deny local—servers never_direct a110W a11 UNIX MAGAZINE 1999.3 フォーマンスか落ちます。 Squid の運用を始めて、、遅 多い場合には、この数値を増やしておかないとかなりパ ロセスを起動しますが、接続してくるクライアント数が えるようになっています。デフォルトでは 5 個の子プ 同時に起動することで、並列的に DNS 検索がおこな から子プロセスとして起動されるのですが、これを複数 用のプログラムを独自にもっています。これは Squid Squid は DNS を頻繁に参照するので、 DNS 問・を専 ・ dns-children squid. conf ファイルで性能のチューニングかできます。 運用するホスト自身のスペックがあまり高くない場合、 対象とするクライアントの数が多かったり、 Squid を 性能のチューニンク 用されます。 定をおこなう場合は、 always-direct のほうかイ憂う朝勺に適 ちなみに、 always-direct と never-direct を混ぜた指 指定は中立に戻す効果しかもちません。 always-direct deny" についても同様です。、 deny" の never-direct allow と もっと考えればよいでしよう。 allow で、 never-direct deny は中立に戻す効果のみを い " と感したら、ますこの直を増やしてみるといいで しよう。 ・ maxlmum—object—size Squid は、ある程隻以上のサイズのデータはキャッシュ しません。そのぶんを、小さいデータをたくさんキャッ シュするのに回したほうが、全体として効率がいいから です。デフォルトでは 4MB ( 4 , 096KB ) 以下のものを キャッシュしますが、ディスクが少ないならこの数値 も小さくしたはうがいいでしよう。 ・ cache-swap-high 、 cache-swap 」 ow Squid は、各ディレクトリ内のキャッシュデータの総 量が cache-dir で指定した限界容量に近づくまではど んどんデータを溜めていきますが、 cache-swap-high て指定した率まて理まるとファイルを消し始め、 cache w 叩」。 w で指定した率になるまでディスクを空けま す。これは、、消すときにはまとめて消したほうが、こま ごまと消したり書いたりを繰り返すより効率がいい " か らです。標準ではそれぞれ 95 % 、 90 % になっています が、限界容量が小さくてディスクか遅い場合は、この 2 つの数値をもうすこし離す ( たとえば、 95 % と 85 % に する ) といいでしよう。 ホストの起重加叔こ自重加勺に Squid か起動されるように するには、 /etc/rc. local (BSD 系の (S) か /etc/init. d/* など (SystemV 系の (S) に書き加える必要があり Squid の起動と再起動 31
連載 / IJN Ⅸの玉手箱ー⑨ 図 11 インストール直後の /etc/fstab 列 # Device /dev/wdOs2b /dev/wdOs2a /dev/wdOs2e proc /dev/wcdOc Mountpoint none /usr /proc /cdrom FStype SWap uf s uf s procfs Cd9660 Options SW ro , noauto Dump 0 1 2 0 0 Pass# 0 1 2 0 0 ます。 fsck は UFS ( FFS ) のファイルシステムをチェック するためのコマンドなので、 UFS 以外のファイルシステ ムに対しては、 0 " を指定し、 fsck を実行しないように指 示する必要があります。 fsck を実行するファイルシステ ムに対しては、 1 以上の数値を指定します。この場合、同 じ数値を指定されたファイルシステムか馥数あると、 fsck か 1 司時に実行されます。ただし、同一のハードディスクに あるパーティション群に対して fsck を同時に実行しても あまり意味がありません。 山も匠のハードディスクはそれなりに高速ですし、マシン を正しくシャットダウンすれば、次回の起重加叔こはファイ ルシステムに間題がないと判断して fsck はスキップされ るので、あとで追加した (UFS の ) ファイルシステムに 1 を指定しておけばいいで ついては、このフィールドに しよう。 fsck の詳細については、オンライン・マニュア ル fsck(8) などを参照してください。 OS をインストールした変の状態では、インストール 時にセットアップしたハードディスクのパーティション ( スワップ領域を含む ) に対するエントリと、インストー ル時に CD-ROM を用いた場合は CD-ROM ドライプに 対応するエントリか設定されているはずです ( 図 11 ) 。さ らに、 FreeBSD や BSD/OS ではプロセス・ファイルシ ステムも有効になっています。 これに対し、増設したハードディスクや Windows 95 のファイルシステム、 MFS などを自重加勺にマウントする よう設定したければ、 /etc/fstab に以下のような行を追 加します。 /dev/wdlc /proj ect ufs rw 0 1 /dev/wdOs1 /msdos msdos rw , —u=null , -g=user 0 0 /dev/wdOs2b /tmp mfs rw , ー s = 65536 0 0 /etc/fstab にファイルシステムを登録しておくと、自 重加勺にマウントされるだけではありません。手動でマウン トする際も、 mount コマンドの引数にマウントボイント UNIX MAGAZINE 1999.3 だけを指定すれば、 /etc/fstab を検索して対応するエン トリに対するマウント処理をおこないます。したがって、 mount コマンドに対するオプション指定などを省略でき るといったメリットもあります。 なお、 mount コマンドに一 a オプションを付けて実行す ると、 /etc/fstab に登録されているすべてのファイルシ ステムをマウントします (noauto オプションを指定した ものを除きます ) 。この際、 -t オプションでファイルシス テムの不頁を与える 14 ことにより、指定された不種頁のファ イルシステムだけをマウントしようとします。たとえば、 mount -a -t ufs" を実行すると、 /etc/fstab のエント リのうち UFS のファイルシステムだけをマウントしま す。シングルューザー・モードでマシンを起動した際、起 重加寺にマウントされているのはルート ・ノヾーティションた、 けなので、必要に応して上記のように実行すれば、その他 の (UFS の ) パーティションをまとめてマウントするこ とができます。 ☆ 次回は、ネットワーク上でファイルを共有するための NFS や、オートマウントに関する話題をとりあげる予定 [ 赭文献 ] [ 1 ] 浜田直樹「 FreeBSD ノート ハードディスク」、 UNIX MAGAZINE 、 1997 年 5 月号 [ 2 ] 齊藤日己「 BSD をハックする一ファイルシステム ( 1 ) ~ ( 2 ) 」、 UNIX MAGAZINE 、 1998 年 3 月号、 5 月号 [ 3 ] 浜田直樹「 FreeBSD ノートーファイルシステム ( 前編・ : 後編 ) 」、 UNIX MAGAZINE 、 1997 年 12 月号 ~ 1998 年 1 月号 14 複数の不頁を指定する場合はカンマて区切って並べ手職頁を表す名前の : 頁に、 no " を付ける ( たとえßnoufs) と、その不軽頁のファイルシス テムをドトすることを未します。 135
表 3 smap の′くラメータ属性 パラメータ属性 groupid gro 社加 d userid userid smapd か 1 司時に fork(2) する sendmail のムをた数を言殳定 スプール・ディレクトリをチェックする日判の間隔を設定 smap 用のスプール・ディレクトリを設定 プログラムをユーサー ID userid の権限でま行 プログラムをグループ ID gr 。叩記の権限で実行 醪医できなかったメールをするメールアドレスを設定 正常に醪逶できなかったメールを保存しておくディレクトリを設定 sendmail への / ヾス名 説明 メール受信者数の最大値を設定 受信を許可する電子メールの最大バイト数を言置 接続切断までのアイドル間を設定 sm 叩用のスプール・ディレクトリを設定 プログラムをユーサー ID userid の権限で実行 プログラムをグループ ID gro 記刎限で実行 説明 maxchildren children wakeup S econds directory 市 7 、 ec 07 userid usertd groupid gro 社〃を d badadmin user baddir 市几 ct0T ・リ sendmail ro 、佖 m パラメータ属性 表 4 smapd の / ヾラメータ属性 maxreclp 77 ~ 佖れ社 7 〃 maxbytes 64 s timeout seconds directory 市 7 ℃ cto 型 一方、 smapd は受信した電子メールをこのスプール・ maxbyt es 位は秒で、デフォルトは 7 , 200 秒です。 timeout は、この時間を設定するためのものです。 一定時間続くと、 smap は自重加勺に接続を切断します。 SMTP コマンドを受信しない状態 ( アイドル状態 ) が timeout ディレクトリから探し出し、外部に再送信します。 単 れば、とくに指定する必要はないでしよう。 ファイアウォール・ホストに十分なディスク容量があ 552 T00 much data た場合は、メール送信側に次のエラーを返します。 ここで指定する値よりも大きい電子メールか送られてき 行もカウントされます。 ()R 十 LF でも ) 1 バイトとして数えます。もちろん、空 ヘッダと本文を合計したバイト数です。ただし、改行は 指定します。この、、電子メールのバイト数 " とは、メール smap が受信を許可する電子メールの最大バイト数を 40 を指定します。 1 回の SMTP 接続で許可する、、 RCPT TO" の最大数 maxrecnp デフォルトは無制限です。 パラメータ属性の名前や、プログラム中の変数の名前を UNIX MAGAZINE 1999.3 デフォルトは無制限です。 ます。 グリストのメールが正しく酉当逶できなくなる可能性があり る場合は、このパラメータ属生の制限によって、メーリン よう。ファイアウォール内部でメーリングリストを運営す このパラメータ属生も、とくに指定する必要はないでし の間違いではないかと思います。 if (maxrecip > 0 & & + + currecip > maxrecip) { は、 if (maxrecip > 0 & & currecip + + > maxrecip) { 369 行目の、 間違っているような気がします。おそらく、 smap. c の うですか " と引きさがるしかありません。しかし、何かが これらの一 - 漣のイ乍は、イ策だといわオ ttL ば、、はあ、そ 550 t00 many recipients メール送信側に次のエラーを返します。 で、、 RCPT TO" を 3 回実行できます。 4 回実行すると、 と指定した場合には、 1 回の SMTP セッションのなか smap : maxrecip 2 つまり、 た新直よりも 1 つだけ多い、、 RCPT TO" を許可します。 みるかぎりでは、、最大数 " ですが、実際にはここで指定し
ー① 連載 / コミュニケーション用サーパーのインストールと運用 図 7 neighbor-type-domain 吏用例 cache—peer parent proxy. daigaku ・ ac. jp 3128 3130 neighbor—type-domain proxy. daigaku. ac ・ JP sibling neighbor-type-domam こういうときはこ 則述の cache-peer-domain では のド幇妾サーバーをまったく使わない " という成疋ができま した。 neighbor-type-domain では、、ふだんは parent として使っているが、ある場合だけは sibling として使 う " 、あるいは逆に、、 sibling に指定したサーバーを一部 だけ parent 扱いにする " という成疋ができます。 たとえば、図 7 のように書けば、基本的にはすべて proxy ・ daigaku ・ ac. jp を経由してもらってくるけれども、 *. daigaku ・ ac. jp については proxy. daigaku. ac. jp にあ るかないかを石忍して、なけれは自分で陬りにいく " とい always-direct 、 never direct う乍をすることになります。 30 ACL は次のようにして指定します。 とに判定をおこなうことができます。 ドレスや、要求が出された日該リなどのさまざまな要素をも とする以外にも、要求をしてきた接続元のホストの IP ア するのです。 ACL 名を使う場合は、 URI のみを判定基準 名 " を付けておき、他の設定項目ではこれを利用して設定 す。そこで、複数のドメイン名をひとまとめにして、、 ACL 各設定項目ごとにドメイン名を列挙するのは大変な作業で ろなドメイン名について同し設定をおこないたい場合に、 trol List) という樹冓があります。 URI に含まれるいろい この柔軟さを支える要素として、 ACL (Access Con- domain と inside-firewall は廃止されました ) 。 never-direct という設定項目か準備されました (local- 2. x ではさらに柔軟な機能をもった always-direct と inside-firewall という設定項目を用いましたが、 Squid- このような場合、 Squid-1. x 系では local-domain と 自研則の観点て特徴を記したいことがあります。 無理なので、かならす謝妾サーバーに頼る " などのように、 合や、、自分はファイアウォール内にいるため自力で ( 色対 接サーバーのどれにも頼らす自力で陬りにいく " という場 るという発想のものでしたが、逆に、、こういうときは、隣 こまでの設定は、謝妾サーバーの個別ク寺徴を記す . daigaku ・ ac ・コ p 図 8 always-direct 吏用例 ( 1 ) acI local—servers dstdomain daigaku ・ ac ・ JP always—direct a110W local—servers acl ACL 名種類文字列 最初の、、 acl" は、この行が ACL の定義であることを示 し、、、 ACL 名 " で指定したものカ銘前となります。、、種 類 " には表 1 に示すようなさまざまなものカ甘旨定でき、種 類ごとに、、文字列 " の部分の書き方が異なります。 設定項目には、この ACL 定義の行を書いたうえでその 名前を利用するものと、そうでないものとがあります。「と りあえす動かしてみる」の節で埆早説した http-access ( ア クセス許可に関する設定 ) は ACL 名を使う代表的なもの の 1 つです。ここて埆早説する always-direct と never- direct も ACL 名を利用するタイプです。 always-direct では、ド爾妾サーバーに頼らすかならす自 力でもとのサーバーに取りにいく場合の条件を指定できま す。たとえば、図 8 のように設定すれば、他の謝妾サー ーを parent や sibling に孑旨定していても丿ぐ学内につい ては自力て取りにいきます。 daigaku. ac. jp ドメインには other-campus. daigaku ・ ac ・ jp という、、飛び地 " があり、そこだけは隣接サーバ ーのキャッシュを使いたいなら、図 9 のようにします。 deny" を使って、部分的に always-direct の指定を無 効にしています。 always-direct 行か馥数ある場合はさき に一致したほうが優先されますから、言己の順番に注意し てください。 never-direct を使うと、前述の例とは逆に、、かならす 隣接サーバーを使いたい " という条件をできます。 れは、たとえばファイアウォールの内側にいる場合などに 有効です ( 図 10 ) 。 こで注意してほしいのは、 always-direct allow と、、 never-direct deny" は等価ではないという点です。 ます、 always-direct も never-direct も指定がない場合 には、 Squid は、、隣接サーバーを利用するかもしれない し、自力で取りにいくかもしれない " という中立の重川乍を します。これを強制的に自力にさせるのが always-direct ノヾ UNIX MAGAZINE 1999.3
連載 UNIX Communication Notes ・ー0 各ファイルの属性を石忍するには、 ls コマンドを使う。 通常、 ls コマンドは、指定したディレクトリ ( 省田はカ レント・ディレクトリ ) に置かれているファイルの一覧を 表示させるために使う。ご存しのように、 ー 1 オプション を付けて実行するとファイルの属性を含む田表示か得ら れる。 ls の利用力 1 去については、マニュアルページを参照 してはしい。 umask ューサーが使用しているシェルでの umask の設定もフ ァイルのモード設定に大きな景を与えるので、各ューサ ーに正しく設定しているかを石薩忍してもらう必がある。 umask は、ファイルやディレクトリを生成するときに、 ファイル属性のモードの設定に一定の制限を設けるために ある。プログラムを実行した結果、なんらかのファイルが 生成されるとしよう。このプログラムでのファイル生成の モードを M とすると、生成されるファイルのモード rn は、 umask の各ビットを反転させたものと M との論理 和になる。たとえば、通常のファイル生成ではモードとし て 666 か設定される。しかし、 umask を 022 に設定し ておくと、生成されるファイルは 644 になる ( 所有者は 読み書きが可能、同しグループに属するユーザーとその他 のユーサーは読出しが可育 umask の疋は、 umask コマンドを以下のように実 行すれ ( 忍できる。 % umask 022 通常、 umask は各ユーサーのシェル起重加の成疋ファ イル (. 1 。 g ⅲ、・ cshrc 、 . profile など ) で指定する。これ らのファイルに、以下のように言当しておけばよい。 umask 022 ューザーごとではなく、システム全体に共通の umask を設定することもできる。多くの UNIX には、ユーザー がログインする際のデフォルトの設定を言当しているファ イルがある。たとえば、 BSD/OS 3. x では /etc/login. conf が、 SVR4 では /etc/defaults/login などがそうで ある。これらのファイルに、標準の umask を言当してお けばよい。当方去は OS ごとに違うので、システムのマ ニュアルで市忍してほしい。 UNIX MAGAZINE 1999.3 どのような値を設定すればよいかは、システムの利用環 境によって異なる。しかし、誰でも書き込めるファイル やディレクトリの作成を防ぐには各ューサーの umask を 022 に設定するとよい。事実、多くのシステムではデフォ ルトの umask を 022 にしているようだ。より厳しく設 定するのなら、 umask を 027 、あるいは 077 に設定して もよい。 ファイル検査 ファイル検査は、ファイル管理のなかでもっとも厄介 な問題である。ポイントは、次の 2 つである。 ・ファイルシステム全体で、問題のありそうなファイルを 自寉に発見する。 ・特定のファイルについて、意図しない更新やファイル属 性の変更がおこなわれていないかを調べる。 この作業には知恵と工夫が必要である。 ファイルの発見 間題のありそうなファイルは、 find コマンドでみつけ ることが多い。 find は、指定したディレクトリを項点とす るディレクトリ・ツリーを降下しながら再帰的にファイル を検索し、指定した条件に合致したものを表示する。 たとえば、図 2-a では、 /home 以下にある誰でも書き 込めるディレクトリを発見することができる。図 2 ー b で は、 Set UID ビットか、定されているファイルをみつけ ることができる。このように、 find はあるディレクトリ以 下の、指定した条件に合うファイルを効率的に探す場合に 便利である。 システム管理者は、 find の利用方法に習熟しておくべ きである。 find を使えば、ファイルシステムの構造に従っ て、牛に -- - ・致するファイルの有無を自重加勺にチェックし てくれる。侵入者が隠しディレクトリを作成してファイル を隠している場合も、容易に発見できる。ディレクトリご とに ls コマンドでファイルを探すより、明らかに効率が よく、しかも漏れがない。 ノート 6 隠しディレクトリにも各種あるが、代閹均なのは、 ( 1 ) ドット (. ) から始まるディレクトリ 17
連載 IJN Ⅸの玉手箱ー⑨ して MFS を使うのはあまりお勧めできません。 MFS を利用するには、 mount コマンドの一 t オプシ ョンの値に、、 mfs" を指定します。実際には mount-mfs コマンドか呼び出されますが、オンライン・マニュアル mount-mfs(8) を見ると分かるように -s オフションで ファイルシステムの大きさをセクタ単位 ( 1 セクタ = 512 バイト ) て指定できます。 したがって、大きさが 32MB の MFS を /tmp にマ ウントするには、以下のように実行します。テンヾイスファ イル名には、スワッフ。領域のパーティション ( ここでは /dev/wd0s2b) を指定します。 bash# mount —t mfs ー 0 ー s = 65536 /dev/wd0s2b /tmp bash# ■ MFS は指定された大きさのファイルシステムを物理メ モリに作成します。メモリが足りなくなった場合は、ファ イルシステムの内容をスワップ領域に待避させて空きメモ リを石呆します。だからといって大きなサイズの MFS を 作ってファイルをたくさん置くと、メモリか不足したとき にスワップ領域へのアクセスが頻発するため、はどはどに しておいたほうがいいでしよう。 Solaris では、類似の仕組みとして tmpfs カ甘是供され ています。 MFS は上記のように手動でマウントすることができま すが、とくに /tmp に適用する場合には注意が必要です。 /tmp には、アプリケーションなどが一畤ファイルを作成 することがあります。システムの運用中に MFS をマウン トすると、もともと / tmp の下にあったファイルは隠れて アクセスできなくなってしまいます。そのため、次節で紹 介する /etc/fstab に登録し、システムの起重加寺にマウン トするのか鼾羅です。 /etc/fstab こまでは、ファイルシステムを手重丿マウントする方 法を紹介しました。頻繁に利用するファイルシステムの場 合、あらかしめ設定ファイルに登録しておくと、 OS の起 重加こ自重加勺にマウントすることができます。 FreeBSD や BSD/OS だけでなく、多くの UNIX で はマウントの設定に /etc/fstab ファイルを用います。 1 行に 1 つのファイルシステムを言当し、各行は以下のよう 134 に 6 つのフィールドから構成されます 13 。各フィールド はスペースまたはタブで区切ります。また、、、 # " て始ま る行はコメントとみなされます。 device rno 社れたれ t 匆〃 e 0 0 れ s dump 〃 s de ce にはファイルシステムのデノヾイスファイル名、 m 。。 t にはマウントボイントをいすれも絶対パス で指定します。 t e にはファイルシステムの種類を指定 しますが、 UFS の場合も省略してはいけません。 叩 0 れ s フィールドにはマウント時のオプションを指定 します。このフィールドには rn 。 unt コマンドの一。オプ ションの値と同し形式で指定しますが、 /etc/fstab ファ イルに固有のキーワードとして、以下のようなものがあり ます。 デバイスがスワップ或の場合に指定するオプションで す。スワッフ。領域の場合、マウントボイントとファイ ルシステムの不頁にはいすれも、、 sw 叩 - を指定します。 BSD/OS でもファイルシステムの種類は swap です が、マウントボイントには、、 n 。 ne " を指定します。 ・ rVV ro 読み書き可能 ( あるいは読出し専用 ) であることを意味 します。 ・ noautO このオプションを指定したファイルシステムは、 OS の 起重加芋に自動的にマウントされません。 CD-ROM の ように、つねにメディアが入っているとはかぎらない デバイスに対して指定しておきます。 d 社 m. フィールドには、 dump コマンドを使ってファ イルシステムのバックアップをとる場合の頻度を指定し ます。バックアップをとる必要がなけれは、 0 " を指定し ます。ファイルシステムのバックアップについては機会 があれは齠介するつもりですが、興未のある方はオンライ ン・マニュアル dump(8) などを参照してください。 最後の佖 ss フィールドには、ファイルシステムの整合 性をチェックする fsck コマンドを実行する順番を指定し 13 Solaris 2. x では、 device 、 device-to-fsck 、 mo 社れ t ー〃 0 をれれ t リ〃 e 、佖 ss 、 ~ 0 社れに t ー 600t 、 0 〃 0 れ s というフィーノレドになっ ています。また、設定ファイルは /etc/vfstab てす。言田については man vfstab を参照してください。 UNIX MAGAZINE 1999.3
アノ maxchildren ォー ) の り sendmail sendmail へのフル / ヾスを故正します。 かならすしも sendmail である必要はありませんが、そ のプログラムが sendmail と同じ形式のオプションを理解 できる必要があります。 デフォルト値は /usr/lib/sendmail です。 FreeBSD や BSD/OS では、 sendmail はこれ以外のディレクト リに置かれるので、このパラメータ属生を次のように設定 する必要があります。 smapd : sendmail /usr/sbin/sendmail baddir 処理中に次の状況になった場合、 smapd はメールの配 送を中止します。 ・ smap 用のメールスプールにあるメールファイルのフ ォーマットが異常である。 ・ smapd か起動した sendmail がエラーを返した ( 終了 時のステータスコードが、、正常終了 " ではなかった ) 。 通常、 smapd は酉当を中止したメールをメールスフ。ー ルから削除します。ところが、このパラメータ属生を指定 すると、酉逶を中止したメールをディレクトリ市 7 ℃ ct 。 に保存し、そのあとでメールをスプールから削除します。 ただし、ここて指定するディレクトリ市 rec ん型は、パ ラメータ属性 directory で指定したディレクトリと同じ ファイルシステム上になけれはなりません。 これも、とくに指定する必要はないでしよう。 badadmin パラメータ属性 badadmin を設定しておくと、上記の ようにメールの酉占を中止した場合に、 smapd は酉占医を 中止したメールデータを、にします。 baddir と badadmin は同時に言殳定できます。 とくに指定する必要はないと思いますが、次のように wakeup smapd : badadmin root root を指定してもよいでしよう。 UNIX MAGAZINE 1999.3 デフォルトは 30 秒ごとです。 を秒数で指定します。 smapd がスプール・ディレクトリをスキャンする間隔 smapd か 1 司時に起動できる子プロセス (sendmail) の 最大数を指定します。 smapd は、スプール・ディレクトリ内に一印ファイル をみつけると自分の分身を作り (fork(2)) 、そのときに生 成された子プロセスが sendmail を実行 (execv(3)) しま す。そして、自分自身は子プロセスの終了を待たすに処理 を続けます。 つまり、 smapd は同時に複数のメールを処理しようと するので、その数に制限を設けておかないと、ファイア ウォール・ホストが sendmail のプロセスで 1 益れてしまう おそれがあります。そこで、 smapd は内部に変数をもち、 現在の子プロセス数を管理します。そして、その数か制限 値に達したときは、既存の子プロセスカ鮗了するまて新た な子プロセスの生成を待ちます。 デフォルトは 6 です。 コマンドの書式 smap の書式を次に示します。 smap [ —daemon ] -daemon オプションを指定して起動すると、 smap は 25 番ポートを受け付けるデーモンプロセスとして重川乍し ます。ポート番号は、コマンド行では変更できません。変 更したいときは、ソースファイルを編集し、再コンパイル とインストールが必要です。 smapd の書式を次に示します。 smapd [ —d ] smapd にオプションを指定せすに起動すると、デーモ ンモードになります。一方、 -d オプションを指定して起 動するとデバッグモードて川乍し、テンヾッグ用メッセージ を標準ェラー出力 (stderr) に出力します。 ☆ 41 れ s を 0 れ s , RFC1869 , Nov. 1995 A. Stefferud and Dave Crocker, SMTP Service 月ェ - [ 1 ] John KIensin, Ned Freed, MarshalI T. Rose, Einar [ 赭文献 ] ( しらさき・ひろお ) と、 sendmail.cf を作成する作業をおこないます。 次回は、 third-party-relay 対策のパッチを当てる作業
連載 コミュニケ ーション用サーパーのインストールと運用 とりあえず動かしてみる UNIX MAGAZINE 1999.3 できます。プロキシー・サーバーを用いていないサイト 3130 と指定すると ICP カリ用さ効率的な転送が . ac. jp カ鰾準的な設定の Squid ならは、 7 ではなく tocol) を使わないことを意味します。 proxy. daigaku 最後の、、 7 " は、彳あする ICP (lnternet Cache Pro- cache-peer proxy ・ daigaku ・ ac ・ JP parent 3128 7 します ) を、以下のように指定してください。 daigaku ・ ac. jp とします ) とポート番号 ( 仮に 3128 と ーを用いているならはそのホスト名 ( 仮に proxy ・ りあえず、ふだん Web プラウサでプロキシー・サー こではと 細かいことはあとで詳しく解説しますが、 に孑旨定する項目です (Squid-1 の cache-host に対応 ) 。 近くですでにプロキシー・サーバーを運用している場合 ・ cache—peer ださい。 る際に指定するポート番号がこれです。憶えておいてく せんが、 Squid に接続するよう Web プラウサで設定す デフォルトでは 3128 です。とくに変更の必要はありま Squid が HTTP 接続要求を待ち受けるポート番号で、 ・ http-port 説します。 設定しましよう。 squid. conf 中に書かれている順序で解 ます、 Squid を起動させるのに最低限必要な部分だけを り、何も指定しない ) と、デフォルト値カ俐用されます。 は、この行をコメントアウトされたままにしておく ( つま り、 # でコメントアウトされています。はとんどの項目で た、各項目にはデフォルトの値を記した行か準備されてお あるので、これを読みながら設定することかできます。ま squid. conf ファイルには各設定項目ごとにコメントが ます。 どこを自分で書き直したのかをあとか鰤忍するのに使え default は、書き換えずにそのまま残しておきましよう。 が参照するのは squid. conf のはうだけです。 squid. conf. の 2 つのファイルはまったく同し内容で、実際に Squid に squid. conf と squid. conf. default が作られます。 Squid をインストールすると、 /usr/local/squid/etc ー① なら、旨定のままでかまいません。 Squid がキャッシュ用に使うメモリの量です。ただし、 Squid はこれ以外にも多くのメモリを利用します。目 安として、実装メモリのうち Squid が使用可能な量の 1 / 3 程度をここに指定するといいようです。デフォルト は、、 8 MB" です。 ・ cache—dir Squid か取ってきたファイルをキャッシュするための ディレクトリと、そのディレクトリ中にどれだけの容 量を呆するかを、組にして指定します。具一勺には、 ディレクトリ名のほかに次の 3 つの直を列挙します。 ーそのディレクトリ内で市呆する容量 ()B 単位 ) ー指定されたディレクトリに作るサプディレクトリの 個数 Squid はディレクトリを分割して管理します。通常 はデフォルト値の 16 を指定すればよいでしよう。 ー上記のサプディレクトリをさらにうリする個数 通常はデフォルト値の 256 でよいでしよう。 たとえは、 100MB なら次のように指定します。 cache—dir /usr/local/squid/cache 100 16 256 cache-dir 行を複数書くと、複数のディスクをキャッ シュ用に使うことができます。 Squid-1 では cache-dir と cache-swap で場所と容量を設定していましたが、 Squid-2 では 1 つの項目になったので注意してくだ ・ ftp-user Squid が FTP サイトにログインする際に名乗るメー ルアドレスです。 Squid 用の alias を準備してそのア ドレスを書くといいでしよう。 ・ acl 、 http-access Squid に対する接続を許可するホストを設定します。と りあえす、次のようにしてアクセスを許可するネット ワークの IP アドレスとネットマスクを指定しますに こでいうネットマスクは、実際のネットワークのネット マスクと一致している必はありません。たんに IP ア ドレスの範用を指定するものだと思ってください ) 。 たとえは、 http—access deny a11 25
連載 / IJN Ⅸの玉手箱ー⑨ 図 10 mount コマンドの実彳デ列 bash# mkdir /project bash# mount /dev/wdlc /project bash# df /proj ect Fi1esystem 1024 ー blocks Used 1 Avai1 Capacity 0 % 2234724 /dev/wdlc bash# ■ 2429048 Mounted on /project 表 2 mount コマンドて寸諚できるおもなファイルシステム ファイルシステムをマウントして使えるようになります。 ま行では、ハードディスク以外のデバイスも含めたマウン ト設定について説明します。 なお、 FreeBSD の sysinstall を用いてノヾーティショ ン設定をおこなう ( 図 3 の、、 Label " メニュー ) と、ディ スクラベルを書き込んだあとで newfs を自第勺に実行し、 言置したパーティションの初期化も同時におこなうことか できます。 sysintall のノヾーティション設定では c ノヾー ティションを指定することはできませんが、代わりにパー ティションを 1 つだけ作成し、そのパーティションのサイ ズをスライス本と同じ容量に設定すれは、手動で newfs ファイルシステムのマウント を実行する手間が省けます。 UNIX MAGAZINE 1999.3 イルシステムと切に指定するキーワードとの対応を表 はいくつもの不軽頁がありますが、これまでに紹介したファ 指定します。 FreeBSD て利用できるファイルシステムに -t オプションでは、ファイルシステムの不頁をに す。なるべ <* 寸パスてオ旨定したほうがいいでしよう。 前のディレクトリがあった場合に間違える可能がありま マウントボイントは相対パスでも指定できますが、同し名 テムをマウントする場所 ( ディレクトリ ) を指定します。 mo 社れた〃 ( マウントボイント ) には、ファイルシス デバイスファイルを糸寸パスで指定します。 device には、マウントするファイルシステムに対応する mount [—t type] [ ー 0 0 を t 〃 s ] device mo 社れた 0 朝 窈青報が表示されます。 定しなければ、現在マウントされているファイルシステム ウントする場合の書式は以下のとおりです。引数を何も指 すが、 1 つのローカルテンヾイス上のファイルシステムをマ mount コマンドを用います。何通りかの使い方がありま ファイルツリーのある部分にマウントするには、 (/sbin/) ローカルなデバイス上に構築されたファイルシステムを type ufs msdOS Cd9660 mfs ファイノレシステム UFS (FFS) MSDOSFS IS09660 MFS 2 に示します。 -t オプションを省略すると、 UFS (FFS) として扱われます。 ファイルシステムの種類として UFS 以外を指定した 場合、実際には mount-type という名則のコマンドが実 行されます ( サポートしているファイルシステムに違い はありますが、 BSD/OS 、 SoIaris 2. x も似たような構 成になっています ) 。これらのコマンドは m 。 u Ⅱ t と同し /sbin ディレクトリにあり、たとえ XMSDOSFS であれ ば mount-msdos 、 IS09660 であれは mount-cd9660 のように、各ファイルシステム専用のマウントコマンドが 実行されます。 ー。オプションにはマウント時のオプション成疋を指定 します。 rnount コマンド自体がもっているオプションだ けでなく、ファイルシステムごとのマウントコマンドに特 有のオプションを与えることもできます。複数のオプショ ンを指定する場合は、カンマで区切って並べます。 mount コマンド自体がもっているオプションのうち、 おもなものを以下に挙げます。 マウントしようとするファイルシステム上のバイナリフ ァイルを実行できないようにします。 ・ nosuid マウントしようとするファイルシステムのファイルに対 し、 SetUID および SetGID ピットを無効にします。 ・ rdonly mount コマンドの一 r オプションと同し意味で、ファイ ルシステムを読出し専用 (read-only) でマウントしま す。指定しなけれは読み書き可能てマウントします。 131
Daemons & Dragons— 0 表 1 設定命 acl include key logging opt ions server zone 表 2 おもなオプション アクセス制御リスト ゾーンの定義 リモートサーバーの持生 一般的なオプション メッセージログの制御 認証とアクセス許可用の鍵 他のファイルの取込み d irectory pid-file notify recurslon forwarders ゾーンファイルが置かれているディレクトリ デーモンのプロセス ID を言当求するファイルのパス すべてのゾーンに DNS の変麪凾知を使うかどうか 再帰的な問合せを許すかどうか 管理権限のない (nonauthoritative) 問合迂を転送するサー also—notify { 192.168.55.10 ・ notify yes; file "f00. db" type master ; zone f00. in { リスト 1 ゾーンの設定例 ノ、 /etc/named. conf を使う。 UNIX MAGAZINE 1999.3 問合ぜ (query) およひ転送 (transfer) の 3 種類のアク 令のなかで指定する。制御できるのは、更新 (update) 、 ゾーンに対してアクセス制限を設ける場合は zone 命 キャッシュを有効にするために使われる。 ターサーバーが列挙されている。最後のゾーン定義は、 スレープとして定義された baz.com には 2 つのマス ーを追加する指定であることに注目してはしい。また、 通知を使い、通知を受け取るサーバーにステルスサーバ スト 1 に示す。 f00.com というゾーンは、 DNS の変更 の命令を中括弧で囲んで指定する。ゾーンの設定例をリ ( ⅲあるいは hs ) を与・える。さらにそのあとには、 名を引用符で囲んで指定し、そのあとにデータのクラス 同義である。 zone というキーワードのあとにはゾーン れかを指定する。 hint は、従来の書式の cache 命令と ゾーンを宣言する際には、 master 、 slave 、 hint のいす zöne 命令は新たなゾーンを定義するときに使用する。 示す。 って指定する。使用できるおもなオプションを表 2 に ーワードのあとに、命令のリストを中括弧 ( { } ) でくく 関する項目を指定するために用いる。 options というキ ていないことである。 options 命令は、サーバー全体に 注意してほしいのは、 key 命令の関数はまだ実装され 命令を表 1 に示す。 まる行をコメントとみなす ) で記述できる。使用可能な 行をコメントとみなす ) 、あるいはシェル形式 ( # で始 C 言語形式 ( / * と * / を使う ) や C + + 形式 ( / / で始まる の区切りにセミコロン ( ; ) を使用できる。コメントは、 したり、括弧を使ってデータをグループ化したり、命令 る。書式は自由形式で、コメントを 3 種類の方法で記述 高くなり、 BIND8 がもつ多くの機能を簡単に記述でき 1 行に 1 っすっ指定した。新たな書式ではより自由度が 従来の書式では、ゾーンやオプションに関する記述を zone . in { type slave ; file "baz . db . bak" ・ masters { 192.168.10.1 ; in { type hint; file . ・ Z one 192.168.25.5 ; } ; セスである。これらのアクセス制御は、 options 命令で 指定することもできる。 配布されている BIND8 のパッケージには、 named. boot ファイルを新しい書式に変換するための PerI スク リプトが付属する。このスクリプトはほとんどの場合う まく動作するが、生成された結果を過信することなく、 きちんとチェックしておく必要がある。 ログシステムの改善 BIND8 のログシステムは、 logging 命令で設定をお こなう。キーワードに続き、一連の命令を中括弧で括っ て指定する。ログシステムは高い柔軟性をもち、サー ーがイベントを記録する形式を細かく制御できる。 ログシステムはチャネルを使ってメッセージを送る。 いくっかのチャネルカ材票準で用意されているが、設定フ ァイルて新たに定義することも可能である。チャネルと は、ログの出力先 ( ファイルや sysl 。 g 、あるいは UNIX の /dev/null のようなデバイス ) を意味する。あるチャ ネルは、与・えられた優先度レベル (severity level) に 95