[2007-07-31-1] で話題にした重複メールの件。

To: [email protected]
Cc: 加入しているメーリングリスト

という宛先でメールが来ると、同じメールが 2 通来てしまう。
procmail 付属の formail をうまくを使えば、スマートに削除できることが分かった。
以下は ~/.procmailrc の該当の設定。

PATH=$PATH:/usr/local/bin
MAILDIR=$HOME/Mail.local
DELETEDIR=$HOME/.trash/Mail/delete

:0
* ? formail -D 8192 msgid.cache
* ? touch $DELETEDIR/.mew-mtime
$DELETEDIR/.

formail が Message-ID を msgid.cache というファイルに 8192byte 蓄え、重複メールかの判断をしている。

そう判断されたメールは $DELETEDIR に振り分けられる。msgid.cache は $MAILDIR に作られる。どちらのディレクトリともメールサーバから見える場所を指定すること。$HOME が無難。ディレクトリはあらかじめ掘っておき、適切なパーミッション(2700等)をかけておくこと。

.mew-mtime を touch しているのは、Mew から $DELETEDIR を見たときにスキャンが走るようにするため。