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/