我们设置exim使用亚马逊SES路由所有的电子邮件,但我们发现,如果我们使用由cPanel创build的电子邮件forwader,亚马逊没有正确路由这些电子邮件,因为它来自亚马逊未知的发件人字段。
因此,如果From字段来自非本地域,我们如何设置exim来绕开Amazon路由?
我得到的错误是:
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信息被拒绝:电子邮件地址未被validation。
经过一些探索性的问题,我们得出结论,问题是你需要检测一个消息发送者是不是本地的,并以不同的路由。 首先,我会通过添加到RCPT acl来检测非本地发件人:
warn condition = ${if forany{+local_domains}{eq{$item}{$sender_address_domain}}} set acl_m_use_ses=1
方法循环遍历+ local_domains列表中的所有域,并将每个域与$ sender_address_domain进行比较。 如果发件人域位于该列表中,则该variables仅被设置。 然后在你的路由器中,添加variables必须设置为1的要求:
condition = ${if eq{$acl_m_use_ses}{1} {yes}{no}}
然后,如果MAIL FROM信封发件人没有被exim识别为本地域的域,则出站邮件将跳过该路由器。 对于跳过此路由器的电子邮件,您必须有一个后续路由器,它将尝试使用SMTP直接发送电子邮件,或通过不需要域匹配的其他智能主机。