トップ «前の日記(2010-01-20 (Wed)) 最新 次の日記(2010-03-16 (Tue))» 編集   RSS 1.0 FEED  

Journal InTime


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もよくできてますね。

Tags: Python