usr - みる会図書館


検索対象: UNIX MAGAZINE 2002年12月号
17件見つかりました。

1. UNIX MAGAZINE 2002年12月号

特集・ So ね′ is 9 /usr/proc/bin にどんなコマンドが置かれているかは、 man proc" とすれば分かります。たとえば ptree コマ ンドを実行すると、プロセスの一覧をそれぞれの親子関係 が分かるように表示してくれます。 takasago$ ptree /usr/lib/sysevent/syseventd 49 /usr/lib/picl/picld 57 /usr/sbin/rpcbind 105 /usr/sbin/inetd —s 128 258 rpc. metad 149 150 161 166 179 185 197 204 211 217 /usr/lib/nfs/lockd /usr/lib/nfs/statd /usr/sbin/syslogd /usr/sbin/cron /usr/sbin/nscd /usr/lib/print/printd /usr/lib/utmpd /usr/sbin/vold /usr/lib/locale/j a/wnn/dpkeyserv /usr/lib/locale/j a/wnn/j server 218 /usr/lib/locale/j a/wnn/j server-m /usr/lib/sendmail —Ac —q15m 220 /usr/lib/sendmail -bd —q15m 221 /usr/lib/im/htt —port 9010 -syslog 225 —message—locale C 227 htt_server —port 9010 —syslog —m essage—locale C /usr/sbin/mdmonitord 251 takasago$ pldd コマンドでは、指定したプロセスにどんなダイナ ミックリンク・ライプラリがリンクされているかカ吩かり /usr/lib/libmp. so. 2 /usr/lib/libc . so . 1 /usr/lib/libdl . so . 1 /usr/lib/libnsl . so . 1 /usr/lib/libsocket . so . 1 /usr/lib/libcurses . so. 1 23401 : bash takasago$ pldd 23401 ます。 /usr/ccs/bin には、 make や ld など、ソフトウェアの takasago$ JP . eucJP . so . 2 /usr/lib/locale/j a-JP. eucJP/meth0ds /usr/lib/locale/ja/ja ・ so ・ 2 /usr/p1atform/sun4u/1ib/1ibc—psr. so . 1 ion に含まれる GCC を使う必要があります ( バージョン も無料でがん・ばる方針なら、 Solaris Software Compan- ことに Solaris 9 ではコンパイラは男 ! 涜なので、あくまで コンパイルに必要なコマンドがあります。ただし、残念な 32 は 2.95.3 です ) 。また、フリー・ソフトウェアをコンパ イルするときは、 GNU の gmake を使わなければならな い場合もあります (gmake は /opt/sfw/bin に置かれて います ) 。 もう 1 つ、ソフトウェアのインストールや設定をすると きに便利な sudo というツールを紹介しておきましよう。 sudo (/opt/sfw/bin にあります ) は、あるコマンドを 指定したユーザーの権限で実行できるというものです。そ のとき、指定したユーザーのパスワードではなく、 sudo を実行したユーサーのパスワードを入力します。たとえ ば、次のように使います。 takasago$ id uid=1000(ss) gid=1000(ss) takasago$ sud0 ーⅡて 00t vi /etc/vfstab password: ユーサー ss の / ヾスワードを入力 ⅵ /etc/vfstab を root 権限で実行 t akas ago $ Sudo これは、 root 権限でⅵを起動し、さきほど出てきた /etc/vfstab ファイルを編集しています。ご覧のように 入力するパスワードは root のものではなく、 sudo を実行 するユーサー ( この例では (s) のものです。 -u オプショ ンで実行するユーザーを指定しないときは、 root 権限で の実行と同し懣未になるので、上の例は次のようにしても 同しです。 takasago$ sud0 vi /etc/vfstab t akas ago$ 自分のパスワードを入力すれば、誰でも root 権限でコ マンドを実行できるわけではありません。誰かま行できる かは /opt/sfw/etc/sudoers ファイルで指定します ( 図 2 ) 。 ます、 User_A1ias ADM I N SS , miki では、 ADMIN " という別名を定義しています。 は、 ss と miki というューザーを含めています。 UNIX MAGAZINE 2002.12

2. UNIX MAGAZINE 2002年12月号

ー横着 ] プログラー メールボックスの形式 ニング⑩ UNIX で使われているメールポックスを大きく分けると、 mbox 、 MH 、 MaiIdir の 3 つの形式がある。現在のところ、 scmail はこのうちの MH 形式のみに対応している。それぞれ の形式について簡単に説明する。 mbox 形式 mbox は、 UNIX の伝糸勺なメールポックスの形式である。 複数のメールを 1 つのファイルに連結して十褓内し、、 From から始まる行をメールの区切りとして扱う。 /var/spool/ mail や /var/mail などのディレクトリに格納されるメール ポックスは、この形式である。 mbox 形式のメールポックスでは、、 From " から始まる行 をメールの区切りとして扱うので、メール本文に含まれる行頭 の、 From " は通常、〉 From " に書き換えられる。、〉 From から始まる行があった場合はそのまま残るので、本文中の行頭 にある、 From " と、〉 From " は区別がつかなくなる。 本文の行頭の、 From " が、〉 From " に書き換えられて困る 場面はめったにないだろうが、勝手に書き換えられてもとに戻 らないという信様は気持ちカいにの問題を鮹共するために、 、〉 From " を、〉〉 From " に書き換える mboxrd 形式がある )。 mbox 形式は仕様か厳密に決まっているわけではなく、本 文行頭の From を〉 From に書き換える代わりに、ヘッダの Content-Length: 行に含まれる本文の長さ情報にもとづいて メールを区分けするシステムもある。この辺の事情については、 ネノ琪月の Netscape Mail の開発者である Jamie Zawinski 氏 の文書 i に詳しい。 MH 形式 MH 形式は、 MHII という歴史ある UNIX 用メールシステ % cp /usr/local/share/scmail/scmailrc. sample=> 標準の ~/. scmailrc では、図 1 のように設定されてい る。 MH の標準的な設定、すなわち MH のメールポッ クスが ~ / Mail で、受信用のフォルダ ( 受信箱 ) が inbox (-/Mail/inbox) であれば、とくに変更する必要はない。 scmail-deliver の使い方 前述のとおり、 scmail-deliver はメールを受信した時 点で自重耐辰分けするツールである。 scmail-deliver 用の 振分け規則は、 ~/. scmailrc-deliver ファイルで定義す る。 /usr/local/share/scmail ディレクトリにあるサン フ。ルファイルを次のようにコピーして使えばいい。 % cp /usr/local/share/scmail/scmailrc-deliver=> ・ sample ~/. scmailrc-deliver UNIX MAGAZINE 2002.12 ムのメールポックス形式で、 MH 以外の多くのメールシステ ムでも使われている。 MH 形式のメールポックスでは、 1 通のメールを 1 つのファ イルとしてフォルダに↑褓内する。、フォルダ " とは、メールを 内するディレクトリのことである。通常、受信したメールは &/MaiI ( 自分のホーム・ディレクトリの下の Mail ディレク トリ ) というメールポックスの下の inbox フォルダにオ褓内さ ・・のように数字の れる。オ絲タされたメールには、 1 、 2 、 3 、 ファイル名が付けられる。 MH 形式では 1 メール = 1 ファイルなので、メールを 1 通 ごとにコピーまたは削除する場合も、 cp や rm コマンドで簡 単にできる。これは MH 形式の大きな利点である。 mbox 形 式では複数のメールが 1 つのファイルに連結されているため、 こうはいかない。 Maildir 形式 MaiIdir 形式は、 qmaillii というメールサーノヾー・ソフト ウェアのメールポックス形式である。 qmail では、受信した メーノレを各ューサーのホーム・ディレクトリの下のメールポッ クス C/Maildir など ) にオ褓内する。このとき、メールを安全 にオ褓内するために tmp 、 new 、 cur という 3 つのサプディレ クトリを利用する。この安全対策のイ督はみを除けば、 MH 形式 と同しく 1 メール = 1 ファイルでメールをフォルダにオ褓内す る形式である。 SendmaiI や Postfix などのメールサーバーを利用して いる場合は、 ~/. forward ファイルに次のような設定を加 えるとメール受信時に scmail-deliver による自重耐辰分け がおこなえるようになる。 ー /usr/local/bin/scmail—deliver fetchmai16 を用いて POP サーバーからメールを受信 しているのなら、 ~/. fetchmailrc の mda の部分に / usr / local/bin/scmail-deliver を指定する。 P011 pop3. example ・ org i http://www.jwz.org/doc/content-length.html ii http://www.ics.uci.edu/-mh/ iii ・ - http://qmail.org/ Ⅱ 0 mimedecode mda "/usr/local/bin/scmail—deliver" user satoru protocol apop keep # メールをサーパーに残す 6 http://www.tuxedo.org/-esr/fetchmail/ 147

3. UNIX MAGAZINE 2002年12月号

特集・ So ね′ is9 図 1 logging を有効にするための言聢 (/etc/vfstab) takasago$ cat /etc/vfstab #device #tO mount fd /proc mount po int /dev/fd /proc FS type fd proc SWap tmpfs uf s ufs fsck pass 1 1 mount mount at bOOt options to fsck /dev/dsk/cOtOd0sO /dev/rdsk/cOtOdOsO / /dev/rdsk/cOtOdOs1 /dev/dsk/cOtOdOs1 swap /dev/dsk/cOtOdOs3 takasago$ /var /tmp Ⅱ 0 Ⅱ 0 Ⅱ 0 yes Ⅱ 0 1 ogg ing 1 ogg ing /opt は、当り前ですが、アプリケーションを追加する と容量か増えます。 / usr にしても、フリー・ソフトウェア は /usr/local に置かれることが多いので、ここも増えて /var にはログファイルか置かれるの いきます。さらに、 で、これも増えます。つまり、 /opt と /usr 、そして /var の 3 つのパーティションは容量か変化するということで す。この 3 つに必要な容量の刻ヒを予測して、最商なパー ティションを設定しなければなりません。 「そんなん、やってられへん」 solaris が出たころは、私もルートとスワップ、 /usr 、 /opt 、 / var の 5 つのノヾーティションにしていました。し かし、 /opt に入れるものか変化したり、 /usr/opt を使 うソフトウェアが登場したりして、どうにも予測がつきま せんでした。そこで、あるときからルートと / var 、スワッ フ。の 3 つのパーティション構成にしてしまいました。 「ルート、壊れたら困るやろ ? 」 SoIstice DiskSuite というソフトウェアを使うと、ファ イルシステムのマウント・オプションとして、、 logging が 利用できるようになります (Solaris7 からは、 OS の機能 として組み込まれています ) 。これは、ファイルのタイム スタンプなど、ファイルシステムの、メタデータ " と呼ば れる部分を、ディスク上の専用の領域に期書込みすると いうものです。これを使うと、いきなり電源を切っても、 そのファイルシステムに対して fsck を実行せずに起動す ることができます。 logging を有効にするには、 /etc/vfstab に図 1 の ように書いておきます。右端の、、 mount options" とある UNIX MAGAZINE 2002.12 フィールドです。 のほかに、次のようなディレクトリを設定しています。 オ剽純勺な /usr/bin や /usr/openwin/bin 、 /usr/sbin GNU grep などがあります。私は、 PATH 環竟変数には、 かせないツールとしては ncftp や wget 、それに gtar や アが入っています。たとえば、大物としては Samba 、欠 います。これ以外に、 /usr/sfw にも大切なソフトウェ の CD に入っていたソフトウェアがインストールされて ます、 /opt/sfw には SoIaris Software Companion ウェアが使えるかを調べてみましよう。 ソフトウェアの設定にとりかかる前に、どんなソフト 物前の準備 けるだけで終ってしまいそうなので、次の話題に移りまし した。このままだと、パーティションに関する蘊蓄を傾 ッじ、 田わす、パーティションについて熱く語ってしまいま 残りがルートという、いたって適当な分け方てす。 IOGB 以のものであればスワップと /var が 1 ~ 2GB 、 成です。これらの大きさはディスク容量にもよりますが、 たのカゞルートと /var 、スワップの 3 つのノヾーティション構 そんなわけで、管理者の手間カヾ咸るようにと思って考え してパーティションの設定を考えなくてもよくなります。 これを使えば、かならずしも障害から守ることを前提と /usr/ccs/bin ・ /usr/proc/bin ・ /opt/sfw/bin 、 /usr/sfw/bin 31

4. UNIX MAGAZINE 2002年12月号

特集・ SO ね′ is9 図 10 /etc/rc3. d/S90samba takasago$ cat /etc/rc3. d/S90samba # ! /sbin/sh # Copyright (c) 2001 by Sun Microsystems , lnc # A11 rights reserved. #ident "@(#)samba case $ 1 ” in start) 01 / 09 / 24 SMI " [ -f /etc/sfw/smb . conf ] Ⅱ exit 0 /usr/sfw/sbin/smbd —D /usr/sfw/sbin/nmbd. -D stop) pkill smbd pkill nmbd echo "Usage : exit 1 $ 0 { start ー stop } " esac exit 0 t akas ago $ par S e returns : $ # esmtp $ , ・ jp ・ $ : ss く〇〇 〇〇 CO となり、外部のメールサーバーに ESMTP というプロ トコルで配送されているのが分かります。これ以外にも、 いくつかのメールアドレスを指定してチェックしてみま しよう。納得できたら、この sendmail. cf ファイルを /etc/mail ディレクトリにコピーし、 sendmail を再起動 します。 takasago$ sudo cp ・ /sendmail. cf /etc/mail Password : takasago$ sud0 /etc/rc2. d/S88sendmai1 restart Password : takasago$ 次は、 Windows マシンのファイルサーバー機能を提供 する samba の設定です。 Samba も Apache と同しく、 インストールはされていますが、サーピスを提供するデー モンは起動されていない状態です。ます、デーモンを起動 する rc ファイルがあるかどうかを、 Apache のときと同 しようにして調べてみましよう。 takasago$ grep —i1 samba /etc/rc*/S* CO Samba UNIX MAGAZINE 2002.12 /etc/rc3. d/S90samba takasago$ このファイルの内容は、図 10 のようになっています。 バージョンを石忍すると、 2.2.2 が入っているようです。 takasago$ /usr/sfw/sbin/smbd ¯V Version 2 . 2 . 2 takasago$ /usr/sfw/sbin/nmbd -V Version 2 . 2 . 2 takasago$ Samba のデーモンである smbd と nmbd を起動する には、 /etc/sfw/smb. conf という設疋ファイルが必要な ことが分かります。 /etc/sfw ディレクトリの下を見ると、 smb. conf-example というサンフ。ルファイルがあります。 takasago$ ls /etc/sfw/ smb. conf—example private takasago$ Apache のときと同じように、これをもとに言聢するこ ともできましたが、別のサイトで FreeBSD 4.5 をサー バーとして Samba を使っていたので、その設定ファイ ル ( 図 11 ) をもとにすることにしました。 Samba の設定には、 UNIX の知識というより、かな り謎の Windows ネットワークの知識が必要なのですが、 用語などに劇染みがないせいか、ちょっと大変でした。 41

5. UNIX MAGAZINE 2002年12月号

特集・ SO ね′ is 9 に公式サイト 2 て市薩忍すると、最啼万版は 8.12.6 というバー ジョンのようです。いくつかの不具合の修正が中心なよう なので、 sendmail についても付属のものをそのまま使う ことにします。 sendmail の設疋には、あまり馴染みのない m4 とい う言語を使うのですが、こオ功ゞなかなかの難闕です。ただ し、 CF3 というツールを使うと、かなり簡単に設定できま す。これ以外に、 sendmail に標準で付属している cf と いうツールでも設定できます。今回は、 cf のはうを使って みました。 成正ファイルは、 Solaris 9 では /usr/lib/mail に置 かれています。ここには、いくつかの杉と解説 (/usr/ lib/maiI/README) があります。 SENDMAIL CONFIGURATION FILES This document describes the sendmail configuration files. lt explains how to create a sendmail.cf file for use with sendmail. lt also describes how t0 set options for sendmail which are explained ⅲ the Sendmail ln- stallation and Operation guide (doc/op/op ・ me). もちろん、これを読めばよいのですが、それなりの分量 があって気軽に目を通すというわけにはいきません。そこ で、芻旧杉をもとにした最低限の設定を紹介しておきましょ 芻旧杉となるファイルは、 /usr/lib/mail/cf ディレクト takasago$ ls /usr/lib/mail/cf リにある刻長子が、、 *. mc " のファイルです。 Makefi1e main . Cf . mc submit . cf takasago$ submit . mc subsidiary. cf subsidiary. mc いくつかの *. mc ファイルのうち、 main. mc を使いま す。これは、そのサイトで外部とやりとりをするメールサ ーバーの成疋です。 subsidiary. mc は部門のメールサーバ ー向けで、 main. mc などをもとに設定されたメールサー バーに処理を任てしまうような設定になっています。 main. mc は、次のようになっています。 takasago$ cat main. mc divert(—l) 2 http://www.sendmail.org/ 3 ftp://ftp.kyoto.wide.ad.jp/pub/mail/CF/ 38 # Copyright (c) 1983 Eric P. Allman divert ( 0 ) d Ⅱ 1 VERSIONID( '@(#)main.mc 1 . 5 (Sun) 08 / 10 / 00 ' ) OSTYPE( Cs01aris8' )dnl DOMAIN( csolaris-generic' )dnl MAILER( ( 10Ca1 ' )dnl MAILER( ( smtp ' )dnl takasago$ divert(—l) から divert(())dnl までの部分はコメン トで、それ以外の部分が実際の設定です。私は、これを sendmail.mc というファイルにコピーしてから次のよう に変更しました。 takasago$ cat sendmail . mc divert ( 0 ) dnl VERSIONID( '@(#)main.mc 1 . 5 (Sun) 08 / 10 / 00 ' ) OSTYPE( ( s01aris8' )dnl DOMAIN ( ( solaris—generic ' )dnl MAILER( ( 10Ca1 ' )dnl MAILER( ' smtp' )dnl Dwmai1 Dm 〇〇 . co ・ jp define( ' confDOMAIN—NAME' , ( $w. $m' )dnl ( Os ' ) dnl define ( ' confTO—IDENT , MASQUERADE_AS ( ( $m' ) dnl FEATURE( 'masquerade-envelope ) )dnl define ( ( confPRIVACY-FLAGS ' goaway' ) dnl に / ロ + , ) 面 1 define ( ( confOPERATORS ' FEATURE ( cnouucp' , ( rej ect ' ) dn1 変更したところを簡単に角見しましよう。 Dwmai1 Dm 〇〇 ・ CO ・ JP define ( ( confDOMAIN-NAME ' Dwmail" ではこのメールサーバーのホスト名を mail とし、、、 Dm 〇〇 . c 。 . jp でこのサーバーのドメイン名 を、、〇〇 . c 。 . jp ' に、そして最後の行で、このサーバーの FQDN (FulIy QuaIified Domain Name) を mail. 〇〇・ c 。 . jp と設定しています。このようにしているのは、 外部に対して内部のホスト名を教えないためです。 1 つは 安全のためと、もう 1 つは内音財冓成の変更にともなってそ のホスト名を変えるとき、なにかと面倒だからです。 define ( ( confTO—IDENT , 'Os')dn1 IDENT による認証を無効にしています。これは、そも そも IDENT 認証を有効にしていないサーバーが多いか らです。有効でなけれはタイムアウトを待っことになり、 メールの送信に時間がかかってしまいます。 MASQUERADE_AS ( ' $m ' ) dnl UNIX MAGAZINE 2002.12

6. UNIX MAGAZINE 2002年12月号

特集・ SO ね′ is9 図 8 sendmail. cf ファイルの作成 takasago$ make sendmail. cf test ! —f sendmail. cf Ⅱ /usr/bin/mv sendmail. cf sendmail. cf. prev /usr/ccs/bin/m4 .. /m4/cf . m4 sendmail . mc > sendmail. cf t akas ago $ 図 9 sendmail.cf ファイルのテスト takasago$ /usr/lib/sendmail —bt -f . /sendmail . cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter く ruleset> く address> > 3 , 0 ss canonify input : SS Canonify2 input : SS Canonify2 returns : SS canonify returns : SS input : SS Parse0 input : SS Parse0 returns : SS ParseLoca1 input : SS ParseLoca1 returns : SS Parse1 input : SS $ # 10Ca1 $ : Parse1 returns : S S 10Ca1 $ : returns : parse S S > 3 , 0 ss@〇〇 ・ co ・ JP canonify @ 〇〇 ss lnput : Canonify2 〇〇 input : く ss CO Canonify2 〇〇 く SS returns : CO canonify 〇〇 く returns : SS CO @ 〇〇 く lnput : SS parse CO Parse0 input : 〇〇 く s s CO ParseO @ 〇〇 く returns : S S CO ParseLoca1 く〇〇 input : ss C 0 ParseLoca1 @ 〇〇 く returns : ss CO Parse1 input : 〇〇 く SS CO Mai1erTOTrip1e input : く > ss Mai1erTOTrip1e 〇〇 SS く returns : $ # esmtp $@ Parse1 returns : $ # esmtp $ returns: parse CO 〇〇 〇〇 0 0 8 〇〇 〇〇〇 . JP . co . JP CO さて、これで sendmail. mc ファイルができました。 す。、、 3 , 0 " は、 sendmail の酉当尠レールのうち、最初に適 れをもとに sendmail.cf ファイルを作るには、図 8 のよ 用されるものの番号です。このルールにメールアドレスを うにします。 ・与えれは、どのように配送されるかが分かります。ます、 ss というローカルなユーサーがどのように酉当されるかを rn4 で sendmail. mc が処理され、 sendmail. cf ファ 調べてみましよう。 イルか生成されているのが分かります。次に、この send- returns : $ # 10Ca1 $ : ss mail.cf ファイルのテストをしてみましよう ( 図 9 ) 。 parse 、、 1 。 ca にという文字列があることから、最後にちゃんとロ 最初の一 bt オプションで sendmail をテストモードて動 ーカルにされているのがなんとなく分かります。 かし、次の -f オプションの引数に設定ファイルの send- 今度は、、、 3 , 0 ss@〇〇.co.jp' と外部のメールアドレス mail.cf を指定しています。 を与・えてみると、 プロンプト、、 > " に対して、、、 3 , 0 ss " と入力していま 40 UNIX MAGAZINE 2002.12

7. UNIX MAGAZINE 2002年12月号

特集・ SoIa ′ is 9 図 3 /etc/rc3. d/S50apache ( 先頭部分 ) # ! /sbin/sh # Copyright 2002 Sun Microsystems, lnc . A11 rights reserved. 02 / 01 / 30 SMI" TOMCAT_CF=/var/apache/tomcat/conf/server. xm1 PIDFILE=/var/run/httpd.pid CONF_FILE=/etc/apache/httpd.conf APACHE_HOME=/usr/apache #ident "@(#)apache.sh 1 . 2 # Use subject tO license terms . if [ ! -f ${CONF-FILE} ] ; exit 0 f i を設置するときに Dynamic DNS のサービスを使うよ うにしていたので、メールサーバーも外部から参照できま Apache then Jun 25 2002 09 : 37 : 00 Server built : Server version: Apache/1.3.26 (Unix) takasago$ /usr/apache/bin/httpd —v ションを指定すると表示されます。 回はこれを使いました。バージョンは、 httpd に -v オプ Apache は Solaris 9 に標準で含まれているので、今 takas ago $ 36 1 http://www.apache ・ org/ S50apache であることが分かります。 ると、 Apache を起動する rc ファイルは /etc/rc3. d/ か、 rc ファイルを見てみましよう。次のようにして調べ ある httpd は起動されていません。どうなっているの ていますが、標準的な状態では Web サーバーの本体で Apache は、たしかに Solaris 9 にインストールされ てみることにしました。 ていません。判断に悩みましたが、今回は 1.3.26 を使っ Sun のセキュリティに関する情報には、まだこの件は載っ に取り消される可能生もある」と書かれています。また、 つか施されているが、この修正はレビュー中であり将来的 ていました。説明を読むと、「脆弱性に対する修正がいく ト 1 を覗いたところ、バージョン 1.3.27 がリリースされ 1.3.26 のようです。 10 月初めに Apache の公式サイ takasago$ grep -il apache /etc/rc*/S* /etc/rc3. d/S50apache takasago$ このファイルの地可、」近を眺めてみましよう ( 図 3 ) 。 最初の if 文で、 /etc/apache/httpd.conf という設 定ファイルがないと httpd を起動する処理に移らないこ とが分かります。 /etc/apache の下を見ると、たしかに httpd.conf ファイルがありません。 takasago$ ls /etc/apache/ README . S01aris access . conf httpd. conf—example t akas ago $ Jserv. properties 」 serv. conf magl C mime . types srm . conf tomcat . conf zone . properties httpd.conf の代わりに、 httpd.conf-example という サンプルファイルがあります。すこしてみると、とり あえすはそのまま使えそうです。これを httpd.conf とい う名則でコピーし、 apachectl コマンドでこのファイルを チェックしてみました。 takasago$ /usr/apache/bin/apachectl configtest Syntax OK takasago$ 当り前かもしれませんが、とくに間題はなさそうです。 勇気を出して、、 /etc/rc3. d/S50apache start" を実行し てみると、ちゃんと、、 httpd starting. " というメッセー ジか表示さ httpd か起動されました。 takasago$ sud0 /etc/rc3. d/S50apache start Password : httpd starting ・ takasago$ UNIX MAGAZINE 2002 ユ 2

8. UNIX MAGAZINE 2002年12月号

インターフェイスの街角 図 2 頻度ファイル (freqfile) rrvq: inf0 : turn over ( pos = 180 ) mkw: time = 0 .006 mkw : rnum=4 mkw : tota1—eIem—num=22 mkw: time = 0.022785 , ht ー usagé = 0.001465 , num 1word=0 , rehash=l nhts=8192 mkw の引数の、、 testdata" は WAM を識別するハ ンドル名で、 ci. conf という定義ファイルで指定します。 ci. conf では、検索されるデータ集合ごとに各種の属性を 定義します。 mkw で生成した WAM のバイナリファイ ルは、 dataroot として定義したディレクトリに格納され ます。 % cat /usr/local/geta/etc/ci . conf handle : unix. magazine . testdata short—name : testdata dataroot : /usr/local/geta/data/testdata/ Jma:p: Japanese. sh % ls /usr/local/geta/data/testdata/ CW . C CW . て . C . r 2 る 3 す連事索書関術索書 ~ れでの関記検文れに技検文れ " 9 -1 -1 -1 一 1 -1 1 @ -1 1 1 つみ @ ・各単語の各文書における出現頻度を言 t 算して WAM にオ巒内 2. 検四理鹸索実御寺の処明 ・検索文字列の形態素角財斤をおこなって単語に分割 ・ tf ・ idf のような重みづけをおこないつつ、検索対象の 全文書と検索文字列との単言韶 ) マッチングを実行し、 スコアの高いものから順に表示する 全文書の形態素角財斤をおこなって WAM を生成する処 WAM が生成されたかどうかは、 dumpwam コマンド 理にはある程度の時間がかかりますが、 GETA を使うと て市忍できます。 WAM データに対する計算が高速におこなえるので、ハ % dumpwam testdata cw-col ードディスク上の文書の検索程度なら処理は一 -- 引舜で終了し nrsyms = 12 です ます。 の 関連 事前里 記事 文書 事前処理では、文書に含まれる単言韶 ) 出現頻度を表現す 検索 る WAM を作成します。文書名と単語の出現頻度を言当 に関する 技術 したテキストファイルをもとに、バイナリファイルで表現 経済 される WAM を生成します。 入力 さきはどの例であれば、文書ごとの単言韶 ) 出現頻度を表 文字 現する図 2 のようなテキストファイルを用意します。 このテキストデータに対して GETA?S ッケージに含ま 図 2 のような頻度ファイルは、形態素角斤プログラム れる mkw コマンドを実行すると、以下のようなメッセー を用いて作成します。 ジが表示さ WAM を表現するバイナリファイルが生 この種のプログラムとしては、奈良先端科判支術大完 成されます。 大学の松本研究室で開発された「茶筌」 5 か有名ですが、同 % mkw testdata freqfile 研究室の工藤拓さんがアルゴリズムを改良し、さらに回 ocf : info: asc : Cfreqfi1e] 速化した「 MeCab 」 6 を公開しています。 mkw : counting number 0f keys in freqfiles : cnrr : inf0 : f=OxO , *s=0 , p=0x0 5 http://chasen.aist-nara ・ ac ・ jp/ * 8192 / 6 lt—level: 0 6 http://cl.aist-nara ・ ac ・ jp/-taku-ku/software/mecab/ ht-level : 0 , usage = 0.000000 197 UNIX MAGAZINE 2002.12

9. UNIX MAGAZINE 2002年12月号

0 図 3 日本語テキストを単語単位に分割 % cat textl 文書検索関連の記事です % mecab textl 文書 検索 関連 の 記事 です EOS 名詞 , 一般 , * , * , * , * , 文書 , プンショ , プンショ 名詞 , サ変接続 , * , * , * , * , 検索 , ケンサク , ケンサク 名詞 , サ変接続 , * , * , * , * , 関連 , カンレン , カンレン 助詞 , 連体化 , * , * , * , * , の , / , ノ 名詞 , 一般 , * , * , * , * , 記事 , キジ , キジ 助動詞 , * , * , * , 特殊・デス , 基本形 , です , テス , デス 図 4 頻度ファイル生成スクリプト (makefreqfile) mecab ー cat $f ー echo "@$f" do while read f # ! /bin/sh grep sort umq done —v 'AEOS$' ー 形態素角斤のためのプログラムは、 ci. conf でオ旨定して おきます。さきはど例に挙げた ci. conf では、形態素角財斤 に下記の japanese. sh というスクリプトを使うと定義し てあります。 % cat /usr/local/geta/data/testdata/j apanese. sh # ! /bin/sh /usr/local/bin/mecab ー perl -pe "s/\\s . * $ / / " ハンドル名を指定して WAM をオープンしたあと、 wstem() 関数て験索文字列を形態素角斤して単語に分割 し、 wsh() 関数で検索対象の文書と上交します。ここでは 第 5 引数に WT-TF を指定しているので、文書と検索文 に共通に出現する単語の頻度 (tf) だけを考慮した検孛結 果か得られます。 textl を検索文字列として search-tf を実行すると、以 下のような結果になります。 cat textl 1 .000000 2 0 .666667 3 0 .666667 1 ー . /search—tf testdata 3 . /textl . /text2 . /text3 MeCab を使うと、日本語テキストを図 3 のような単語 単位に簡単に分割できます。図 4 のようなスクリプトでこ れを処理すると、頻度ファイルが生成されます。 % find -print ー grep "text . $$" ー \ . /makefreqfile > freqfile 検索里 作成した WAM を使い、 tf ・ idf などによる検索処理が できます。 GETA では連想検索ライプラリ libae を利用すること により、 tf ・ idf などの孑票を使って文書の類似度を計算 させることができます。 検索文字列を指定し、それに近い文書をリストアップし たいときは、以下のような処理をおこないます。 1. 指定された検索文字列を形態素角財斤 2. tf ・ idf など窈票にもとづいて各文書との距離を計算 3. 結果をスコア順に表示 孑票として、 tf ・ idf ではなく tf のみを使って検索する プロ名ラムの例を図 5 に示します。 198 textl と text3 、 textl と text4 は 6 個の単語のうち 度か引算されます。実行結果は、以下のようになります。 ム search-tfidf では、 tf ・ idf を基準としてファイルの類似 図 5 の WT-TF を WT-TFIDF に変更したプログラ まっています。 textl と内容が近いにもかかわらす、ランク外になってし め、類似度が 0.666 になっています。 text2 は、実際には 4 個の共通単語 ( 関連、の、記事、です ) を含んでいるた cat textl 0 .422837 4 0 .415888 2 0 . 191788 1 ー . /search—tfidf testdata 3 . /textl . /text4 . /text2 、、関連 " や、、の " などの単語は多くの文書に含まれるので UNIX MAGAZINE 2002.12 孑票をユーサーが自由に再定義できます。 る計算孑票ですが、 GETA では類イ以度を言 fr 算するための WT-TF や WT-TFIDF は GETA で定義されてい の類似度カ吠きくなっています。 みに含ま tf 値も idf 値も大きいため、 textl と text2 idf 値が小さくなりますが、、、検索 " は textl と text2 の

10. UNIX MAGAZINE 2002年12月号

様着 ] プログラミ / グ⑩ 図 1 ~ / . scmailrc ー * ー scheme ー * ー "&/Mai1" : mailbox : inbox ~/. scmail-log" : log—file : smtp—host " 10Ca1 ost " inbox/99 ー > mI/ming/42 2002 ー 09 ー 26T12 : 49 : 31 : 2002 ー 09 ー 26T12 : 49 : 31 : 2002 ー 09 ー 26T12 : 49 : 31 : 2002 ー 09 ー 26T12 : 49 : 31 : 2002 ー 09 ー 26T12 : 49 : 31 : % tail ー 5 ~/. scmail-log ・ scmail-log 図 2 ~ / refile: refile: refile: refile: refile: メールポックスのディレクトリ 受信用のフォルダ ログファイル メール転送に使う SMTP サーパー inbox/99 土Ⅱ box / 98 inbox/93 ー > m1/ming/42 ー > m1/Iinux—zaurus/219 inbox/96 ー > ml/komatsu—proj ect/26 inbox/94 ー > m1/1inux—zaurus/218 ー > m1/enkai@cob01er/57 メール受信時の振分けは、設定を間違えるとメールを失 scmail-refile はコマンドラインで次のように実行する。 sample ~/. scmailrc—refile % cp /usr/local/share/scmail/scmailrc-refile. => う。振分け規則の書き方は、あとで詳しく説明する。 トリにあるサンプルファイルを次のようにコピーして使 ァイルで定義する。 /usr/local/share/scmail ディレク scmail-refile 用の振分け規則は ~/. scmailrc-refile フ という理由から scmail-refile を使っている。 るのを避けたい ・メーラーを変更したときに自重丿賑分けの規則を再定義す ・メール受イ訓の自服分けと共通の書式で規則を書きた んどのメーラーに備わっているが、私は、 なかを自重加勺に振り分けるツールである。この機能はほと scmail-refile は、メールを読み終えたあとで受信箱の scmail-refile の使い方 ストをおこなっている。 るメール受信を、、メールをサーバーに残す " 設定にしてテ 因でメールを失ったことはないが、念のために POP によ ってしまう危険性がある。いままで、 scmail-deliver が原 % scmail—refile 図 3 S 式列 子 文字列 シンポノレ ドット対 空リスト リスト 123 ' abc ” f00 ( 1 ・ 2 ) ( 1 2 3 ) 己は ( 1 . ( 2 . ( 3 . ( ) ) ) ) に等しい refile : refile : refile : refile : refile : 148 inbox/93 ー > mI/enkai@c0b01er/57 inbox/94 ー > m1/1inux—zaurus/218 inbox/96 ー > ml/komatsu—proj ect/26 inbox/98 ー > mI/Iinux—zaurus/219 夫行結果の最初の行は、 inbox の 93 番のメールが ml/ enkai@coboler というフォルダに 57 番のメールとして 振り分けられたという意味である。 ~/. scmail-log には、 同様のレポートか該拊きで言求される ( 図 2 ) 。 scma ⅱの振分け規則 scmail の振分け規則は、次の 2 つのガ去で定義する。 ・通常の振分け規則は簡単な S 式当する。 複雑な振分け規則は Scheme プログラムとして記述す る。 S 式とは ? 振分け規則の書き方を説明する前に、 S 式について簡 単に紹介しておく。 S 式 (Symbolic Expression) とは、 Lisp て扱う式のことである。 S 式の定義は、 ・アトムは S 式である ・ x と y が S 式ならドット対 (x . y) も S 式である というものであるが、これだけではさつばり分からないの で、図 3 に例を挙げる。これらはすべて S 式である。 UNIX MAGAZINE 2002 ユ 2