procmailで件名を変更してGmailに転送

昔使ってはいたものの、結局使わなくなったprocmailでのメールの転送設定を今日久しぶりに復活させた。その際に、送られてきたメールの件名を変更してからGmailに転送するようにしたのでそのメモ。
まずprocmailを使うために.forwardを以下のように変更。これは昔と同じ設定だった。

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #ACCOUNT_NAME"
\LOCAL_MAIL_ADDRESS

ACCOUNT_NAMEはこの設定をおいてあるマシンでの自分のアカウント名。LOCAL_MAIL_ADDRESSはこのマシンでのメールアドレス。ループを防ぐために頭に「\」が必要。
問題の.procmailrcは以下のように書いた。

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin
MAILDIR=~/Maildir
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/lockmail

SUBJECT=`formail -c -xSubject:`

:0
| formail -i "Subject: [lab_mail] $SUBJECT" | sendmail ACCOUNT@gmail.com

他にもいくつか設定は書いたけど、gmailへの転送に関してはこの部分。procmailの場合、「|」を使うと外部コマンドを呼び出せるんだけど、そこで呼び出している外部コマンドでformailで件名を変更し、その出力をパイプでsendmailに送っている。この設定だと、自分に送られてきたメールのヘッダに「lab_mail」を追加してgmailに転送している。
昔もこの設定をしたかったんだけど結局分からなくて、procmailの使用をやめたんだよね。呼び出せる外部コマンドでパイプを使うとは当時は思いつかなかった。
参考文献