サーバー構築日記へ

ezmlm-cgiの導入


 ezmlmとezmlm-idxでMLを作成しましたが、過去ログの参照はできるものの少々不便です。
 egroupsのようにwebサイト上から過去ログを確認できると楽だな、と思いませんか?
 それを実現してくれるのがこのツールです。

 私はegroupsの広告欄が異常に増えた上に、配信状況が悪化したことから自作MLに移ろうとするだけに、egroups並とは言わないまでも、少しでもそれに近い機能が欲しいなと思って導入しました。

 ※追記
 現在は使用していません。MHonArcのほうが使い勝手いいので(汗)



・設定の前準備

 まず最初につまづくのがこれがどこにあるのか?ということでした。
 私はどこかで配られているのだと思ってかなり探してしまいました(苦笑)
 これはezmlmのmake時にezmlmディレクトリの中に作成されています。
$ cd /tmp/ezmlm-0.53
$ ls | grep ezmlm-cgi

 これを/var/www/cgi-binにコピーします。.0などは必要ありません。
 permission次第ですがルート権限が必要かもしれません。
# cp ezmlm-cgi /var/www/cgi-bin

 またこのツールのコンフィグファイルがezcgircですのでこれもコピー。
 この際に「.ezcgirc」としてコピーしてください。
# cp ezcgirc /var/www/cgi-bin/.ezcgirc


・ezmlm-cgiの設定

 例としてサーバ名等を次のものとします。各自で読み替えて設定してください。
 サーバ:www.example.com
 ユーザ:kira
 ML名:kira-test@example.com
 MLのディレクトリ:/home/kira/ML/test

 まず、現在のMLの管理ディレクトリのarchiveを変換する。
$ cd /usr/local/bin/ezmlm/
$ ./ezmlm-idx /home/kira/ML/test
$ ./ezmlm-archive -c /home/kira/ML/test


 次に届いたメールを自動的にリスト化するように設定する。
$ ./ezmlm-make -+i /home/kira/ML/test
(この処理に関しては/home/kira/ML/test/editorに下記の物を付け加えても良い。どちらも同じ事となる)
 | /usr/local/ezmlm/ezmlm-archive /home/kira/ML/test || exit 0

 .ezcgircに次の行を加える。この時はルート権限が必要。
4;503;/home/kira/ML/test;kira-test@example.com;[Home]=http://www.example.com/kira

4ログ番号。使用されてない番号を使う。
503ユーザID(/etc/passwdをみればわかる)
/home/kira/ML/test管理ディレクトリ
kira-test@example.comMLアドレス
[Home]=http://www.example.com/kiraホームURL

 さて、これで下記のURLにアクセスすると表示ができると思います。
http://www.example.com/cgi-bin/ezmlm-cgi?4


・細かい設定(表示できない場合など)

 これだけでは表示できない場合もあると思います。
 特にルート権限で作ったMLの場合は多分これだけでは表示できないと思います。

 これのほとんどはPermissionの問題です。

/var/ezmlm/test管理ディレクトリ
test@example.comMLアドレス

# chmod 755 /var/ezmlm/test
# chmod 755 /var/ezmlm/test/archive
# chmod 755 /var/ezmlm/test/archive/0
# chmod 755 /var/ezmlm/test/archive/authors
# chmod 755 /var/ezmlm/test/archive/subjects
# chmod 755 /var/ezmlm/test/archive/threads

 あまりおすすめできません(苦笑)でもこうでもしないとpermission deniedではじかれます。
 何がはじかれているのかは/etc/httpd/logs/error_logあたりを確認してください。
 やはりルート権限で作ったMLでも/homeの下に管理ディレクトリ置くべきかなあ。
 ちなみにルートのMLの場合、ユーザIDは0です。


 また、ezmlm-cgiで表示したページが文字化けすることがあります。

 とりあえずこのときは.ezcgircに書き込んだ記述をこのようにします。
 (kira-test@example.comの場合)
 (test@example.comの場合は、/home/kira/ML/testの部分を/var/ezmlm/testに変更)
4;503;/home/kira/ML/test;kira-test@example.com;[Home]=http://www.example.com/kira;iso-2022-jp

 最後のiso-2022-jpによって表示がiso-2022-jpで行われるようになります。
 それに加えて
 (kira-test@example.comの場合)
 (test@example.comの場合は、/home/kira/ML/testの部分を/var/ezmlm/testに変更)
# cd /home/kira/ML/test
# touch charset
# vi charset


 として、charsetの中身を「Shift_JIS」などに設定します。
 私のサーバではなぜか表示がiso-2022-jpでcharsetがShift_JISの時にまともに表示されるようになりました。それぞれのサーバ・環境毎に違うと思いますので、いろいろと試してみてください。

 .ezcgircのオプションは他にもいくつかあります。
 例えば、;kira-test@example.comを;-kira-test@example.comとすると、ezmlm-cgiで記事を表示する際に投稿者のアドレスが非表示にされます。
 自分で署名欄にアドレスを書いていたらそれは表示されるのであまり意味はないかもしれませんが、公開MLの場合は少しは使えるオプションかもしれません。
 他のオプションについては.ezcgircを読んでみてください。


・非公開MLについて

 私が運営しているMLではログを非公開にすることにしています。
 しかし、ezmlm-cgiを使うと公開されてしまいます。ezmlm-cgiのアドレスがわかれば表示することが可能になるためです。
 色々方法はあるかと思いますが、私はcgi-binディレクトリ自体を非公開とすることにしました。
 掲示板を置いたりする場合はcgi-binよりも下のディレクトリにezmlm-cgiを置いたり、別のアクセス制限方法を使うなどの処置が考えられますが、まあその辺はそれぞれの環境に合わせてください。

 私は.htaccess、.htpasswdを用いました。
 これに関してはこちらで。



※参考サイト
 ezmlm-cgiの使い方 : 福岡大学経済学部のサイト。
 GeocrawlerのML : MLのアーカイブです。英語・・・。
 ezmlm Mailing list : ezmlmのMLのアーカイブです。