PHP + PostFix +亚马逊SES +多域(传输)

时间:2013-06-20 20:07:52

标签: amazon postfix-mta amazon-ses

我决定在这里发布此内容,而不是在服务器故障上发布,因为社区很小,我的问题中有近80%没有答案......

所以我有3个域名的服务器:x.com,y.com和z.com。 x.com内部转发,y.com内部转发,z.com应该通过亚马逊SES转发。

现在,x和y.com在内部正确发送邮件,但我需要z.com通过SES进行转发。

所以,我的配置到目前为止在main.cf:

sender_dependent_relayhost_maps = hash:/ etc / postfix / sender_transport domainz_sasl_auth_enable =是 domainz_sasl_security_options = noanonymous domainz_sasl_password_maps = hash:/ etc / postfix / sas2_passwd domainz_use_tls =是的 domainz_tls_security_level =加密 domainz_tls_note_starttls_offer =是的 domainz_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

在我的master.cf中,我在默认的smtp上面添加了一个unix通道:

domainz unix - - n - 1 smtp smtp inet n - n - - smtpd

在我的sender_transport中我有

@ domainZ.com domainz: 1.我在哪里输入“email-smtp.us-east-1.amazonaws.com”的ses smtp。我假设我们需要点击“domainz:”,这样我们就可以将正确的sasl数据传递给它。 2.请记住,这是从服务器发出的邮件,而不是邮件,这就是为什么我没有设置transport_map。 这是我从@domainz推送邮件时遇到的错误: “status = bounced(找不到主机或域名。名称的服务名称错误= domainz type = AAAA:找不到主机)”;所以在我们甚至可以到达亚马逊的SES主机之前,我在运输层面遇到一个我似乎无法弄清楚的问题。

谢谢, 麦克

1 个答案:

答案 0 :(得分:1)

经过将近24小时的努力解决这个问题,我终于明白了。我希望这可以帮助任何人使用同样的方法,而不必经历我刚刚经历的痛苦!

所以在上面的例子中,域x + y通过虚拟别名进行中继。对于z,我们必须使用传输,在这种情况下它是sender_dependent_relayhost_maps传输,所以我可以抓住发送者并通过亚马逊SES转发它们。

在main.cf中,无论smtp/unix-socket如何,我们都会直接使用SES标准:

smtp_sasl_auth_enable=yes
smtp_sasl_security_options=noanonymous
smtp_sasl_password_maps=hash:/etc/postfix/sas
smtp_use_tls=yes
smtp_tls_security_level=encrypt
smtp_tls_note_starttls_offer=yes
smtp_tls_CAfile=/etc/ssl/certs/ca-bundle.crt

sender_dependent_relayhost_maps我们使用:

@domainz.com   [email-smtp.us-east-1.amazonaws.com]:25

smtp_sasl_password_maps文件存储匹配中继的用户:密钥。

就是这样!