その2の事情
Postfix の header_checks で From と Subject を同時に書き換えたい を実施すると「すべてのメールの From が変更されてえしまう」という問題が出てくる。
希望としては
Subject で振り分けて From を書き換えたい
というのが理想でした。
さて、どうやるか?
「postfix をマルチインスタンスで動かして Subject で振り分けて別インスタンスで書き換えれば良い」
という事がわかりました。
まずは「postfix をマルチインスタンスで動かす」はこちらのページをご参照ください。
postfixのマルチインスタンス設定を用いた複数サーバー運用
その後
プライマリ(port 25)の設定変更
header_checks = regexp:/etc/postfix/header_checks
# systemctl restart postfix
/^Subject: hogehoge-ML(.*)/ FILTER smtp:127.0.0.1:10025
セカンダリ(port 10025)の設定変更
smtp_header_checks = regexp:/etc/postfix/header_checks
# systemctl restart postfix
if /^(From: (.*))|^(Subject: hogehoge-ML(.*))/i
/^Subject: hogehoge-ML (.*)/ REPLACE Subject: [HOGE-ML] $1
/^From: (.*)/ REPLACE From: hoge-ml@examle.com
endif
こうやることで「 Subject: に hogehoge-ML と書かれていれば Subgect: [HOGE-ML] を追記し From: も hoge-ml@examle.com に書き換える」
というのが上手く動きます。
まとめ
マルチインスタンスで処理することで色々と柔軟に書き換えることが可能になります。
ポイントとしてはプライマリの header_checks を smtp_header_checks では無く header_checks で動かすことで FILTER
が動くようになります。(smtp_header_checks では動作しません。
参考サイト
postfixのマルチインスタンス設定を用いた複数サーバー運用
水銀室 Postfixをマルチインスタンスで起動する -CentOS最短構築支援-
Route mail in postfix to different relays based on subject