Мы настроили exim для использования Amazon SES для маршрутизации всех ваших электронных писем, но мы обнаружили, что если мы используем пересылку электронной почты, созданную cPanel, Amazon не будет правильно маршрутизировать эти электронные письма, потому что они поступают из поля «От», неизвестного Amazon.
Следовательно, как мы можем настроить exim для обхода маршрута Amazon, если поле From находится из нелокального домена?
Я получаю следующую ошибку:
2014-06-11 21:50:21 1Wuu9k-00073D-Gn ** XXX R = send_via_ses T = ses_smtp: ошибка SMTP от удаленного почтового сервера после окончания данных: host ses-smtp-us-west-2-prod-14896 026.us-west-2.elb.amazonaws.com [54.213.254.236]: 554 Сообщение отклонено: адрес электронной почты не подтвержден.
После нескольких исследовательских вопросов мы пришли к выводу, что проблема в том, что вам нужно определить, когда отправитель сообщения не является локальным, и направить его по-другому. Итак, сначала я бы обнаружил нелокальных отправителей, добавив в RCPT acl:
warn condition = ${if forany{+local_domains}{eq{$item}{$sender_address_domain}}}
set acl_m_use_ses=1
Программа просматривает все домены в списке + local_domains и сравнивает каждый из них с $ sender_address_domain. Переменная устанавливается только в том случае, если домен отправителя находится в этом списке. Затем в вашем маршрутизаторе вы добавляете требование, чтобы переменная была установлена в 1:
condition = ${if eq{$acl_m_use_ses}{1} {yes}{no}}
Тогда исходящее сообщение пропустит этот маршрутизатор, если у отправителя конверта MAIL FROM нет домена, который распознается exim как локальный. Для электронных писем, которые пропускают этот маршрутизатор, у вас должен быть следующий маршрутизатор, который либо попытается отправить электронное письмо напрямую, используя SMTP, либо через другой смарт-хост, для которого не требуется совпадение домена.