header_checks の実施ポイントの制御
Postfix でコンテンツフィルタの結果によって header_checks 機能を使おうと思ってハマったので、メモです。
構成は ↓ な感じで、特に凝ったことはしてません。
submission(587/tcp) -> content_filter(8025/tcp) -> smtpd(8026/tcp)
この状態で content_filter で append したヘッダ(X-SpamState)の値に応じて別アドレスへ転送したいので
- > smtpd(8026/tcp)
この位置でだけ header_checks 機能を on にしょうと思いました。が、main.cf に普通に
header_checks = regexp:/etc/postfix/header_checks
を入れると、content_filter の前にも header_checks が掛かってしまいます。これでは
- content_filter の前
- smtpd の前
の 2回、header_checks が掛かってしまいます。そこで master.cf の各サービスで
-o header_checks=
として off に出来ないかと思ったのですがダメでした orz。ググってみたところ Postfix-jp ML の以下のアーカイブを発見。
- [postfix-jp: 1019] Re: 特定のsmtpd経由の場合、header_checksを無効にするには
- [postfix-jp: 1020] Re: 特定のsmtpd経由の場合、header_checksを無効にするには
ということで
- cleanup の機能なので smtp にいくら -o header_checks= としてもダメ
- header_check を off にした cleanup(ex. cleanup2) を作って、それを -o cleanup_service_name=cleanup2 として指定する
ことで期待通りの動きになったようです。
でももう少しスッキリ設定できないもんかなぁ… と。いや、きっと出来ると思いますが、とりあえず現時点での回避策(?)を忘れないうちにメモっておくことにします。続きはまたそのうち。これはきっと milter-manager を使えという神のお告げに違いない(^^;。やっぱり milter に切り替えた方が色々柔軟にできるんだろうなぁ… 来月の勉強会で色々教わったら、今後は milter 信者になろうかな。