2005.10.17
MHonArcでメールで送られてきた文をhtml化するとき、メールでは適当な長さで改行が入ることを想定して<pre>文</pre>のように変換される。
ところが、ごく希に非常に長い行が送られてくることがあり、はなはだ都合が悪い。
特にWebメールで起こりやすいが、メーラーによっても生じることがある。
そこで、 mhtxtplain.plの255行目あたりを以下のように修正した。
1行をコメントアウトし、赤字部分を追加した。
# $$data = '<pre>' . $$data . '</pre>';
$$data =~ s/n/<br>n/g;
$$data = '<p>' . $$data . '</p>';
要するに改行コードを<br>に変え、改めて<p>, </p>で挟んだだけである。
2005.10.02
筆者は自宅のサーバで複数のメーリングシステムを運用しているが、メンバーも異なり、MLグループ間での関連も無いことから、MLで蓄積されたメールアーカイブも、2つのグループ間で完全に独立して検索する必要があり、namazuを使ってその構築を行った。
namazuはpackageが用意されているので簡単に入れられる。
FreeBSDでは/usr/local/etc/namazuに設定ファイルのsampleのmknmzrc-sampleとnamazurc-sampleが入っているので、これらをmknmzrcとnamazurcとしてコピーし、編集する。
# cd /usr/local/etc/namazu
# cp mknmzrc-sample mknmzrc
# cp namazurc-sample namazurc
(1) mknmzrcの編集
mknmzrcの編集は以下の2つの#を取って行を有効にするだけでよい。
# $KAKASI = “module_kakasi”;
# $WAKATI = $KAKASI;
(2) namazurcの編集
Indexファイルを入れるフォルダを作る必要があるので、
# mkdir index
# mkdir index/abc
# mkdir index/xyz
abcとxyzは、2つの別々のindexファイルを作るための準備である。
そして、namazurcを編集
# vi namazurc
として、編集するが、編集は以下の3行のみでよい。
Index /usr/local/etc/namazu/index
Replace /web/data/ http://自分のサーバのURL/
Lang ja
(3) cronで実行の準備
今後cronで自動的にindexファイルを更新させるため以下のような内容のファイルをnamazuindexのファイル名で作り、/usr/local/binに入れて実行権限を与えておく。
#!/bin/sh
export LANG=ja
/usr/local/bin/mknmz -O /usr/local/etc/namazu/index/abc
/web/data/ml/abc
/usr/local/bin/mknmz -O /usr/local/etc/namazu/index/xyz
/web/data/xyz/ml
/web/data/ml/abcと/web/data/xyz/mlはそれぞれのメーリングリストのメール保存アーカイブの場所である。
これで、namazuindexをroot権限で実行すれば、/usr/local/etc/namazu/index/abcと・・・index/xyzにindexファイルが作られる。
(4) webページからの検索
/usr/local/libexecにあるnamazu.cgiをcgi-binディレクトリーにコピーし実行権限を与えておく。
これで全ての準備が整ったので、Webページで検索のためのformを作るが、以下のような内容とする。
<form METHOD="GET" action=/cgi-bin/namazu.cgi>
<strong>検索:</strong>
<input size=40 value="" name=key>
<input type=submit value=Search! name=submit>
<input type=hidden value="abc" name="idxname">
<a href="/cgi-bin/namazu.cgi?idxname=abc">検索方法</a>
xyzの検索のページは当然ながら上記のabcaをxyzとすればよい。
あとは、cronでの自動実行のため以下の内容をcrontabに追加する。 この例では毎夜の夜中の2時の実行であるが、後ろに
| /usr/local/bin/nkf -j が付いているのは、実行結果のログをメールで受け取ったときにメーラーで読むためjisコードでログするためである。
0 2 * * * /usr/local/bin/namazuindex | /usr/local/bin/nkf -j
2005.01.09
サーバでMLなどを運用すると、namazuを入れて記事の検索をするようにすることが良くある。
それで、真夜中の適当な時間にIndexファイルを更新するようcronを設定することとなるが、実行結果はrootのメールとなり一般的には管理者に伝えられる。
ところが、namazuの実行結果の出力文字コードはEUCにしていることが多く、メールでは日本語文字が化けてしまう。
メーラーでEUCコードを指定して変換して読むこととなるが、大したことでないとは言いながら、毎日となると案外めんどうです。
そこで、crontab に以下のようにjis変換を付けておくと便利である。
0 2 * * * /usr/local/bin/namazuindex | /usr/local/bin/nkf -j
ちなみに、namazuindexは
#!/bin/sh
export LANG=ja
/usr/local/bin/mknmz -O /hogehoge/index/abcd /MLdirectory/abcd
/usr/local/bin/mknmz -O /hogehoge/xyz /Mldirectory/xyz
などとしておく。 特にLANG=Jaを入れておかないと日本語のindexファイルが作られないので要注意です。