付与したヘッダをPostfixでチェックする¶
Rspamdのadd_headerで付与したメールをPostfixでそのまま判定する場合、
header_checksでは判定が出来ない。これは次のような判定順であるため。
smtpd(smtp_milter) → cleanup(header_checks→non_smtp_milter) → incoming
rspamdはnon_smtp_milterなので、rspamdで付与したヘッダを判定するためには
non_smtp_milterのあとにheader_checksを行う必要があるが、この順番は変更できない。
メールボックスがルのであればprocmailなどで読めば良いが、メーリングリストや
転送用エイリアスなどはメールボックスがないのでこの方法では対応が出来ない。
出来ればメールサーバのキュー内で対応したい。
設定¶
milterの結果のチェックを想定した「milter_header_checks」が別途存在するので、
これを設定することでrspamdが付与したヘッダを直後にチェックすることができる。
ここでは例としてスパム判定されたメールをrejectせず、かつ配送もせず、人の目で
検査するためのアドレスに転送する設定を行います。rspamdはデフォルトではスパム
判定された際に「X-Spam: Yes」というヘッダを付与するので、これを検査します。
- 下記の設定を追加します
# vi /etc/postfix/main.cf ---------------------------------------- milter_header_checks = regexp:/etc/postfix/milter_checks
- テーブルファイルを作成します
# vi /etc/postfix/milter_checks ---------------------------------------- /^X-Spam:\sYes/ REDIRECT 転送先メールアドレス
- そのほかにreject、discard、holdなどがありますが、それらはrspamd側でも設定可能です。
あくまでrspamd側を変えずに動作を変更するか、rspamdでは簡単には対応出来ないredirectなど
を設定する際に本設定を使うと良いかと思われます。
- そのほかにreject、discard、holdなどがありますが、それらはrspamd側でも設定可能です。
- サービスを再起動して適用します
# systemctl restart postfix
以降テーブルのみを変更する場合はpostfixは再起動しなくても良いですが、子プロセス
が再起動する際に新しいテーブルが読まれるので、即時反映したい際は再起動します。
以上でスパム判定されたヘッダが付与されたメールが別のアドレスに転送されます。