« 前のページ | Home |     [etc ]

2005.10.17

MHonARcの長い行への対応

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

namazuによる複数区分の検索の設定

筆者は自宅のサーバで複数のメーリングシステムを運用しているが、メンバーも異なり、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

crontabのメール通知の文字扱いについて

サーバで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ファイルが作られないので要注意です。

« Previous