
Postfix 内のすべてのメッセージを PostMarkApp.com に中継するには、次の基本設定から始めます。
#start postmarkapps settings
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:secret:secret (where "secret is your API key")
smtp_sasl_security_options = noanonymous
relayhost = [smtp.postmarkapp.com]:25
#end postmarkapp settings
これの問題は、たとえば何かがエラー メッセージを吐き出し始めると、それらはすべて PostMark を経由することになり、コストがかかることです。
回避する方法の 1 つは、特定のアドレスをrelayhost
設定しsender_dependent_relayhost_maps
て yourdomain.com にマップすることです。ただし、すべてのメッセージが同じユーザーから送信され、From ヘッダーが異なる Web アプリでは、この方法は機能しません。
sender_dependent_relayhost_maps
では、ユーザーだけではなく、From または Subject ヘッダーを調べて、 と同じ効果を実現するにはどうすればよいでしょうか?
答え1
Postfix 2.5 以降が必要です。
次にmain.cf
セットでsmtp_header_checks = pcre:/etc/postfix/dont_relay_this_header
。
/etc/postfix/dont_relay_this_header
書面で
/^Subject:.*viagra/ REJECT You are not allowed to send out advertisement
必要に応じてdont_relay_this_headerファイルの内容を変更します。詳細については、ヘッダーチェックマニュアル。
答え2
私は反対側から攻撃することでこれを解決しました。つまり、特定の受信者にリレーホスト経由でメールを送信しないようにしました。
編集/etc/postfix/main.cf
:
#start postmarkapps settings
transport_maps = hash:/etc/postfix/transport
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:secret:secret (where "secret is your API key")
smtp_sasl_security_options = noanonymous
relayhost =
#end postmarkapp settings
編集/etc/postfix/transport
:
[email protected] :
* smtp:[smtp.postmarkapp.com]:25
そして走りますpostmap /etc/postfix/transport
。
今ではすべてのエラーメッセージを[メールアドレス]PostMark 経由で送信されません。