From と Subject を同時に書き換えしたい場合
時と場合によって From を書き換えたい
メーリングリストのようにSubject に追記したい
という場合があるかと思います。
これは smtp_header_checkes を追加して
/etc/postfix/main.cf
smtp_header_checks = regexp:/etc/postfix/header_checks
を追記した後
systemctl restart postfix
を実行した後
/etc/postfix/header_checks
if /^Subject: hogehoge-ML(.*)/i
/^Subject: hogehoge-ML(.*)/ REPLACE Subject: [HOGE-ML+] $1
endif
上記を記述する事で Subject: に hogehoge-ML test と書かれていたら Subject: [HOGE-ML] test
と書き換える。
と言う定義を行うことが出来る。
ただ、ここで注意しなくてはいけないのが
/etc/postfix/header_checks
if /^Subject: hogehoge-ML(.*)/i
/^Subject: hogehoge-ML (.*)/ REPLACE Subject: [HOGE-ML] $1
/^From: (.*)/ REPLACE From: hoge-ml@examle.com
endif
と記述しても From:
の書き換えは行われない。
これは初めの if /^Subject: hogehoge-ML(.*)/i
によりメールファイルが Subject: hogehoge-ML(.*)
で regrep されてしまっているから From の判定が出来ないことになるからである。
もし、両方を書き換えしたい場合は以下のように定義することで同時に書き換えが可能である。
/etc/postfix/header_checks
if /^(From: (.*))|^(Subject: hogehoge-ML(.*))/i
/^Subject: hogehoge-ML (.*)/ REPLACE Subject: [HOGE-ML] $1
/^From: (.*)/ REPLACE From: hoge-ml@examle.com
endif
そう、 regrep の際に From,Subject の2つの内容が入っていれば問題なく書き換えが可能になる
実行テスト
# cat test_header_hogehoge.txt
Subject: hogehoge-ML test
From: a@example.com
To: hoge@example.com
# postmap -hmq - regexp:/etc/postfix/header_checks < ./test_header_hogehoge.txt
Subject: hogehoge-ML test REPLACE Subject: [HOGE-ML] test
From: a@example.com REPLACE From: hoge-ml@examle.com