2006年9月9日土曜日

メール環境改革 - メーリングリストのアーカイブ

前回の予告どおり、メーリングリストのアーカイブを Web ブラウザで閲覧可能にしましょう。
ezmlm には過去メールをWebブラウザで閲覧する ezmlm-cgi がありますので、まずこれを試してみます。
以下を実行します。

# ebuild /usr/portage/net-mail/ezmlm-idx-mysql/ezmlm-idx-mysql-0.40-r2.ebuild unpack
# cd /var/tmp/portage/ezmlm-idx-mysql-0.40-r2/work/ezmlm-0.53/
# make
# cp ezmlm-cgi /var/www/localhost/htdocs/cgi-bin
# cp ezcgirc /etc/ezmlm
# ln -s /etc/ezmlm/ezcgirc /var/www/localhost/htdocs/cgi-bin/.ezcgirc

ここで前回設定した、admin@<sub domain name> メーリングリストの過去メールを閲覧するには

# echo '3;200;/var/vpopmail/domains/<sub domain name>/admin;admin@<sub domain name>;[Home]=http://<web server name or IP address>;iso-2022-jp' > /etc/ezmlm/ezcgirc
# chmod 755 /var/vpopmail/domains/<sub domain name>
# chmod 755 /var/vpopmail/domains/<sub domain name>/admin
# cd /var/vpopmail/domains/<sub domain name>/admin
# chmod 755 archive
# chmod 755 archive/0
# chmod 755 archive/authors
# chmod 755 archive/subjects
# chmod 755 archive/threads

を実行した上で、"http://<web server name or IP address>/cgi-bin/ezmlm-cgi?3" を開けばよい。
ただし、archive の下にはメール100件毎に新しいディレクトリが作られるので、
その度にパーミッションの設定をしなければならないことと、
セキュリティや機能や十分でないので、これは使わないことにしました。

というわけで、mhonarc + namazu でアーカイブの Web 閲覧と検索の機能を構築することにします。
以下を実行します。

# emerge net-mail/mhonarc
# emerge app-i18n/kakasi
# emerge app-text/namazu
# emerge app-i18n/nkf
# emerge app-text/chasen
# emerge net-mail/mhonarc
# cd /etc/namazu
# cp namazurc-sample namazurc
# echo -e 'Index\t/var/www/localhost/htdoc/ml/search' >> namazurc
# echo -e 'Replace\t/var/www/localhost/htdocs/\thttp://<web server name or IP address>/' >> namazurc
# echo -e 'Lang\tja' >> namazurc
# echo '$NKF = "/usr/bin/nkf";' >> mknmzrc
# mkdir /var/www/localhost/htdocs/ml
# cp /usr/libexec/namazu.cgi /var/www/localhost/htdocs/ml/
# cd /var/www/localhost/htdocs/ml/
# echo 'Options +ExecCGI' > .htaccess
# echo 'AddDefaultCharset EUC-JP' >> .htaccess
# echo 'AddDefaultCharset ISO-2022-JP' > mail/.htaccess
# mkdir /etc/mhonarc/
# vi /etc/mhonarc/rc
↓ 以下をファイルの内容とする
<CHARSETCONVERTERS>
plain; iso_2022_jp::str2html; iso2022jp.pl
iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl
</CHARSETCONVERTERS>

<DEFCHARSET>
iso-2022-jp
</DEFCHARSET>

<DECODEHEADS>
<NOMAILTO>

<TEXTCLIPFUNC>
iso_2022_jp::clip; iso2022jp.pl
</TEXTCLIPFUNC>

<VARREGEX>
\$([^33\$]*)\$(?![^33]*33\()
</VARREGEX>
# vi /usr/local/bin/mlarc2html
↓ 以下をファイルの内容とする
#!/bin/bash
#
# convert ezmlm mailing list archives to html
#
# 2004.12.26 ttanimu
#

index=/var/www/localhost/htdocs/ml/index.html

rm -f $index
touch $index
chmod 644 $index
echo '<html><head><title>mailing list archives</title></head><body><h1>mailing list archives</h1><ul>' > $index

for name in `ls -1 /var/vpopmail/domains/<sub domain name> | sed -e '/postmaster/d' -e '/vpasswd/d' -e '/vpasswd.cdb/d'` ; do
echo '<li><a href="./mail/'$name'/maillist.html">'$name'@<sub domain name></a></li>' >> $index
mkdir -p /var/www/localhost/htdocs/ml/mail/$name
if [ -a /var/www/localhost/htdocs/ml/mail/$name/maillist.html ] ; then
add=-add;
fi
mhonarc $add -reverse -treverse -multipg -modtime -idxsize 20 -rcfile /etc/mhonarc/rc -outdir /var/www/localhost/htdocs/ml/mail/$name /var/vpopmail/domains/<sub domain name>/$name/
archive/[0-9]*/[0-9]*
done

echo '</ul><hr><ul><li><a href="./namazu.cgi">search</a></li></ul></body></html>' >> $index

mkdir -p /var/www/localhost/htdocs/ml/search
env LC_ALL=ja_JP.eucJP mknmz -k -O /var/www/localhost/htdocs/ml/search /var/www/localhost/htdocs/ml/mail
# chmod 755 /usr/local/bin/mlarc2html
# mlarc2html

これで、Web ブラウザで http://<web server name or IP address>/ml を開けばメーリングリストの閲覧と検索ができます。
ただし、これは mlarc2html を実行した瞬間のスナップショットであので、
常に最新の状態になるよう定期的に mlarc2html を実行する必要があります。
この作業を自動的に行うため以下を実行します。
なお、これは毎日6:00,12:00,17:00に更新を行う場合の設定です。

# echo '0 6,12,17 * * * /usr/local/bin/mlarc2html' >> /etc/crontab
# /etc/init.d/vixie-cron restart

これだと誰でも閲覧できセキュリティ面で問題があるのでパスワードでユーザ認証をかけます。
以下を実行します。

# cd /var/www/localhost/htdocs/ml
# vi .htaccess
↓以下を最後に追加
AuthUserFile /var/www/localhost/htdocs/ml/.htpasswd
AuthGroupFile /dev/null
AuthName "mailing list archives"
AuthType Basic
require valid-user

パスワードの設定は以下を実行する。

# htpasswd2 -c .htpasswd <ユーザ名> <パスワード>

ただし、-c オプションは初回のみ必要で、.htpasswd ファイルがすでに存在するなら

# htpasswd2 .htpasswd <ユーザ名> <パスワード>

としなければなりません。


長かったですが、ここまで複数回にわたって書いてきたことが、
かなり昔に設定した部分です。
次回からはつい最近設定した SMTP-SSL や サブミッションポート、
fetchmail や procmail について書いていきたいと思います。

0 件のコメント:

コメントを投稿