MHonArc メール書庫管理
since Mar. 6 2004

概要

電子メールをアーカイブして Web で閲覧できるようにするソフトに MHonArc がある.バージョン 2.6 から Unicode 対応がなされ多言語メールも扱うことができるようになっている.

 

インストール

MHonArc においてメールを UTF-8 でアーカイブするためには Perl 5.8 以降が必要となる.Perl 5.8.0,MHonArc 2.6.8 は FreeBSD の ports に含まれている.Perl はバージョンアップを行うと,すでに組み込まれているライブラリを参照できなくなるなどの不具合が起る可能性があるので注意がいる.use.perl コマンドを必ず実行する.インストールしたら,"perl -version" によってバージョンを確認する.

# cd /usr/ports/lang/perl5.8
# make install
# use.perl port
# rehash
# perl -version

This is perl, v5.8.0 built for i386-freebsd

Copyright 1987-2002, Larry Wall
...
# cd /usr/ports/www/mhonarc
# make install
	

 

MHonArc 設定

MHonArc はリソースファイルの記述に従って Web ページを生成する.表示すべき項目や,コード変換の指定,ページのスタイルなどを定義する.詳細は,/usr/local/share/doc/MHonArc/index.html から閲覧できるマニュアルを参照いただきたい.参考までに私の利用しているリソースファイルを設置しておく.

ロシア語を含む多言語テキスト・メールを UTF-8 でエンコードして管理したい場合は,以下のように指定する.

<!-- 文字コード設定 MHonArc 2.6 -->
<TextEncode>
utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm
</TextEncode>

<-- With data translated to UTF-8 -->
<CharsetConverters override>
default; mhonarc::htmlize
</CharsetConverters>

<-- Need to also register UTF-8-aware text clipping function -->
<TextClipFunc>
MHonArc::UTF8::clip; MHonArc/UTF8.pm
</TextClipFunc>

<DefCharset>
utf-8
</DefCharset>

	

 

メール書庫の利用

Mew でメールを読み書きしていると想定して,書庫の作成について述べる.Mew ではホーム・ディレクトリ下の ~/Mail/inbox などにメール・テキストが格納されている.リソースファイルを ~/etc/mhonarcrc として ~/public_html 下に書庫を作成するには以下のようにコマンドを実行する.作成対象のメール・テキスト・ディレクトリは複数指定でき,省略した場合は標準入力をメール・テキストとみなす.

% mhonarc ~/Mail/inbox ~/Mail/friends \ 
  -rcfile ~/etc/mhonarcrc -umask 022 \
  -outdir ~/public_html -add
	

作成した書庫からメッセージを削除したい場合は,-rmm オプションで削除したいメッセージ番号を指定する.メッセージ番号は MHonArc が作成した "msgNNNNN.html" の "NNNNN" の番号を指す.複数指定でき,連番ならハイフンで連結して間を省略できる.

% cd ~/public_html
% mhonarc -rmm 22-28 44 51
	

私のリソースファイルによって生成した MHonArc の一覧とメール画面例を以下に示す.サブジェクト,本文ともに複数の言語が混在していてもよい.

MHonArc 一覧画面

MHonArc 一覧画面

 

MHonArc メール画面

MHonArc メール表示

 

セキュリティ上の注意事項

Web 書庫としてメールを管理すると,インターネットのどこからでもメールを閲覧できるようになる.ということは誰でもアドレスが分かればアクセスできるということで,これではまずい.もし公開 Web サーバでメール書庫を運用するのであれば,セキュリティへの配慮が必須である.

Web サーバとして Apache を利用していることを前提に,ユーザ ID とパスワードでメール書庫アクセス許可ユーザを認証することを考える.Apache では通常 .htaccess ファイルでディレクトリ・アクセスを制限できる.アクセスを制限したいディレクトリ(~/public_html)に以下のような .htaccess ファイルを作成する.

AuthType Basic
AuthUserFile /home/username/.htpasswd
AuthGroupFile /dev/null
AuthName username
require valid-user
	

次に上記指定に従い,/home/username/.htpasswd ファイルにパスワードを設定する.このファイルは Web コンテンツのスコープ範囲外に作成すること.

% cd ~
% htpasswd -c .htpasswd username 
New password: xxxxxx
Re-type new password: xxxxxx 
Adding password for user username
%
	

 

Procmail の活用

メールを受信するつど,書庫に登録したくなる.Procmail を利用し,メールが配送された時点で MHonArc を実行することにより,これが可能となる.Procmail は Sendmail MTA (Mail Transfer Agent) の転送機構を利用してメッセージを受信し,指定したプログラムを実行する古典的なソフトウェアである.

まず,Procmail 3.22 をインストールする.

# cd /usr/ports/mail/procmail
# make install
	

次に ~/.forward ファイルに以下のような記述を行う."username" はユーザ環境に合わせて変更いただきたい.それ以外は1行でそのとおりに記述する("→" は折り返しを示すためなので入力は不要).\username, は Procmail に渡す以外に,メールボックスにも残しておきたい場合に必要である.

\username,"|IFS=' ' && p=/usr/local/bin/procmail && →
test -f $p && exec $p -Yf- || exit 75 #username"
	

~/.procmailrc に Procmail のレシピを記述する.例を以下に示す.本来なら,未承諾広告などのジャンク・メールをブロックするレシピも組み込みたいところである.詳細は Procmail のマニュアルかインターネット・リソースを参照いただきたい.Sendmail も同様である.

PATH=/bin:/sbin:/usr/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail
DEFAULT=/var/mail/username
LOGFILE=$HOME/etc/procmail.log
MHONARC=/usr/local/bin/mhonarc
RC=$HOME/etc/mhonarcrc
:0 c
inbox/.

:0:
| $MHONARC -rcfile $RC -umask 022 -outdir $HOME/public_html -add
	

~/.forward~/.procmailrc ファイルは他人が読み書きできないようにパーミション設定をしておく.

% chmod 600 .forward .procmailrc