
Начнем со следующей базовой конфигурации для ретрансляции всех сообщений 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 и будут стоить денег.
Один из способов обойти relayhost
это настроить sender_dependent_relayhost_maps
и сопоставить определенные адреса с yourdomain.com. Но это не работает в веб-приложениях, где все сообщения отправляются одним и тем же пользователем, но с разными заголовками From.
Как же мне добиться того же эффекта, sender_dependent_relayhost_maps
но при этом смотреть на заголовки «От» и «Тема», а не только на имя пользователя?
решение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 по своему усмотрению. Более подробная информация доступна вheader_checksруководство.
решение2
Я решил эту проблему, атаковав с другой стороны, т. е. не отправляя почту определенному получателю через relayhost.
Редактировать /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
.
Теперь я просто отправляю все свои сообщения об ошибках на[email protected]и они не отправляются через почтовый штемпель.