2010-02-13 (Sat) [長年日記]
_ MailmanにFML風のヘッダを追加する
まつもとさんの松江Ruby会議の講演に触発されて、ひさびさにRubyに関係ないコードをハックしてみた。
etchでFMLがなくなっているので、ruby-listなどをMailmanに移行しようと思っているのだが、Mailmanには一つ問題がある。 それは、Pythonで書かれていること…ではなくて、メールに追加されるヘッダフィールドがFMLと違うことだ。
Subjectについては、設定でFML風にできることが確認できたが、X-ML-NameとX-Mail-Countについてはどうやったら追加できるかわからなかった。 X-ML-Nameは「代りにList-Idを見てね」で許されるかもしれないが、X-Mail-Countは、なくなるとbladeなんかで困りそうである。 ruby-talkはSubjectに番号を入れてないので、Subjectから番号を取ることもできない。
そこで、コードを修正できるところがOSSのいいところである。
調べてみると、直接Mailman本体を修正しなくても、Handlersディレクトリ にスクリプトを置いて、設定ファイルを少し書き変えれば拡張できるようだ。
以下のようなファイル(FMLHeaders.py)をHandlersディレクトリに置いて
def process(mlist, msg, msgdata): msg['X-ML-Name'] = mlist.internal_name() msg['X-Mail-Count'] = "%d" % mlist.post_id
mm_cfg.pyに以下の一行を追加したら見事ヘッダフィールドが追加された。
GLOBAL_PIPELINE.insert(1, 'FMLHeaders')
PythonもMailmanもよくできてますね。