qmail+qmailadmin+ezmlm-idxでMLの件名にインデックスを付けたい

今まで何とも思っていなかったんだけど、急にインデックスを付けたいと思い立ったのでやってみる。

※既にqmail+qmailadmin+ezmlm(idxパッチ済)が稼働している前提と、MLはusers@example.jpと課程した内容となる。

qmailadminでのメーリングリスト追加画面にプレフィックスと返信先という項目があるので、それらは活用する。と言う事で、users/editorとusers/prefixとusers/headeraddはいじらず、qmailadminメーリングリスト画面で完結するようにする。

1. prefixを利用する場合、必ずSubjectの頭にprefixが来るように置き換える為のスクリプトを保存する

# vi /usr/local/bin/ezmlm-idxx
#!/bin/sh

path=$1

if [ -f "$path/prefix" ]; then
  prefix=`sed 's/\[\(.*\)#\]/\1/' $path/prefix`
  sed "s/^Subject: \(R[Ee]:\s*\?\)*\[${prefix}[0-9][0-9]*\] \(\(R[Ee]:\s*\?\)*\)\(.*\)$/Subject: \1\2\4/"
else
  cat
fi

exit 0
# chmod 755 /usr/local/bin/ezmlm-idxx

2. メーリングリスト追加時にusers/editorへ反映される様にtemplateを修正する

## ezmlmのソースディレクトリへ移動する
# vi ezmlmrc.template
## ezmlm-sendのラインを検索し移動
## |<#B#>/ezmlm-send '<#D#>'
## ↑を↓のように変更
<#B#>/ezmlm-idxx '<#D#>' <#B#>/ezmlm-send '<#D#>'
3. 再度makeしてインストール
# make
# make setup
4. qmailadminにてメーリングリストを追加 4-1. プレフィックスに例えば userML: # と入力 ※件名に[userML: 1]のように付加される 4-2. 返信先:このアドレスにmlのアドレス users@example.jp を入力 ※Reply-to: が付加される 5. メールを送って確認してみる。 5-1. [usersML: 1] テスト送信 のようになる。 6. 返信して確認してみる。 6-1. Re: [usersML: 1] テスト送信 の状態で返信する 6-2. [usersML: 2] Re: テスト送信 のように受信する ※注意:このやり方で長く運営しているわけではないので、置き換えスクリプトはもっと考えて見ても良いかもしれません。なるべく軽くと思ってperlとかrubyとか使わずに考えたものなので。