2007/05/08(火)fml + mhonarc による公開メーリングリストの構築
某所においてもともとfml4を使っていたのですが、www公開(html化)の際のデータが中途半端だったためfml8に移行しました。そこそこ綺麗に表示されたのですが、単一表示の状態から現在スレッドを辿ってメール表示することができないため、mhonarc に入れ替えました。その作業記録です。
MHonARC
MHonARCはメールをhtml化するプログラムです。ダウンロードはこの辺。FreeBSDのportsならば www/mhonarc にあります。fml のメールデータをhtml化する場合は例えば次のように行います。
mhonarc -add /var/spool/ml/xxx/spool -outdir /www/xxx
メールをhtml化した際のデータは DB ファイルに保管されていますので、すべて再生成したいときは次のようにします。
$ rm -f /www/xxx/*.html /www/xxx/.mhonarc.db
rcfile
MHonARCの設定ファイルをrcfileと言います。mhonarc は実行時に引数としてパラメーターを渡す方法とrcfileに書く方法、環境変数の3種類で動作指定ができます。ここでは rcfile を利用することにしました。
UTF8を使用することにしますので、サンプルである examples/utf-8.mrc をコピーします。公開アーカイブを置く /www/xxx にコピーしてしまいましょう。MHonArc Reference Manual から rcfileの設定項目 を参照して設定を書き換えます。
設定ポリシーとしては
- メールアドレスは秘匿する(SPAM対策)
- 余計なヘッダを出力しない
です。
<NoPrintXComments> <SpamMode> <IDXSIZE> 100 </IDXSIZE> <MultiPG> <NoMailTo> <Reverse> <Modtime> <EXCS> To Subject List- Reply-to In-reply-to References Domainkey-signature Dkim-signature </EXCS> <LiTemplate> <li><strong>$SUBJECT$</strong>, <em>$FROMNAME$</em></li> </LiTemplate>
の設定項目を追加しました。
- NoPrintXComments …… X-XXXX という形式でヘッダを出力する機能をオフにする
- SpamMode …… Spam対策用のメールアドレス秘匿機能を on にする
- IDXSIZE …… 100件ごとに index ファイルを分ける
- NoMailTo …… MailTo をリンクしない
- Reverse …… 逆順でソートする(新しいメールをページ先頭に)
- EXCS …… 出力しないヘッダを指定する(先頭一致)
- LiTemplate …… メール一覧ページで、1メール=1行で表示するための設定
mhonarc の自動更新設定
aliases ファイルを用いて mhonarc を自動的に更新します。
/var/spool/ml/xxx/mhonarc.include
"| /var/spool/ml/xxx/mhonarc.sh"
/var/spool/ml/xxx/mhonarc.sh
#!/bin/sh
/usr/local/bin/mhonarc \
-rcfile /www/xxx/utf-8.mrc \
-outdir /www/xxx \
-add /var/spool/ml/xxx/spool
というファイルをまず用意します。sh ファイルには実行権限を付けておきましょう。
メーラーの aliases に次の1行を追加します(メーラーにより場所が変わります)。
mhonarc-xxx: :include:/var/spool/ml/xxx/mhonarc.include
sendmail ならば newaliases コマンドが必要でしょう。aliases ファイルから直接コマンドを実行しないのは、include ファイルを一度経由させることで、includeしたファイルの所有者権限でコマンドを実行できるからです。
ここまでの設定で、mhonarc-xxx@domain.nameにメールが届くたびにメーリングリストの公開wwwが更新されます。ですから、メーリングリストの受信者として mhonarc-xxx@domain.name を登録すれば設定完了です。
fmlならば /var/spool/ml/xxx/actives が受信者のリストですので、次のようにしましょう。
$ makefml add2actives ml-name mhonarc-xxx@domain.name
fml8メモ(無関係)
fml8の設定メモです。特に関係はありません。
article_subject_tag = [$ml_name %05d] article_header_rewrite_rules += rewrite_article_subject_tag article_header_rewrite_rules += rewrite_reply_to_enforce_article_post_address use_html_archive = no html_archive_dir = /xxxx/$ml_name/