Postfix 通过 SES 中继除一个发送域/地址之外的所有邮件

Postfix 通过 SES 中继除一个发送域/地址之外的所有邮件

我认为这真的非常简单,但我不知道我需要做什么。我很少摆弄 Postfix(只是让它运行并完成它的工作),所以我不知道从哪里开始。

我们目前已将 postfix 配置为使用以下代码通过 SES 中继所有邮件。我们需要修改此配置,以便从我们的一个域 (domain.com) 发送的电子邮件不经过 SES。其他所有内容应继续通过 SES 连接流出。我假设这就像一行代码,但我的谷歌技能对我毫无帮助。

relayhost = email-smtp.us-east-1.amazonaws.com:25
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_destination_concurrency_limit = 450

更新我在 /etc/postfix 中创建了 sender_transport 文件。然后@domain.com smtp:我通过 postmap 运行该文件,并将其放置sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport在上述代码块上方,然后重新启动 postfix,但所有电子邮件仍然通过 SES 发出。

发送后记录

Oct 22 14:38:48 web postfix/smtp[19446]: 4B19D640002: to=<[email protected]>, relay=email-smtp.us-east-1.amazonaws.com[54.243.47.187]:25, delay=1.4, delays=0.01/0/0.92/0.44, dsn=2.0.0, status=sent (250 Ok 00000141e21b181f-ee6f7c4f-f0f5-4b0f-ba69-2db146a4f988-000000)
Oct 22 14:38:48 web postfix/qmgr[19435]: 4B19D640002: removed

我认为这个日志不是您要找的,但它是邮件发出时唯一记录的内容,而且这是我手动运行 /usr/sbin/postfix -v start 而不是使用 init 脚本时记录的。

答案1

您需要的参数是sender_dependent_default_transport_maps

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transports

上述文件应该包含类似以下内容:

@thatdomain.example.com    smtp:

别忘了后图文件。

参考:中继主机文档。

编辑:

我看到您还要求所有传出流量都使用 smtp 加密。
当中继主机不经常使用时,这将不起作用。

最好将 Amazon 作为例外(这在以后会很有意义)并将中继主机和 TLS 仅应用于该传输。

现在,只需设置

smtp_tls_security_level = may

测试它是否有效。

答案2

这是 5 年后的事了,但也许对偶然发现这篇文章的人仍然有帮助。你要找的是中继主机映射选项。通过此选项,您可以指定哪些域能够通过 SES 中继邮件,其余的将尝试使用本地递送。

在你的 /etc/postfix/主配置文件文件中指定以下内容以使用relayhost_map选项:

sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map
smtp_sender_dependent_authentication = yes
  • 删除或者注释掉以下行:中继主机 =

然后创建文件 /etc/postfix/中继主机映射并指定允许通过 SES 中继的每个域,例如:

@domain.com        smtp-server:port

最后更新你的 /etc/postfix/sasl 密码文件具有相同的结构并包含相同的域:

@domain.com        username:password

对文件进行哈希处理并重新启动 postfix:

postmap hash:/etc/postfix/relayhost_map
postmap hash:/etc/postfix/sasl_password
systemctl restart postfix

只需对需要通过 SES(或任何其他中继服务器)进行中继的每个域重复此操作,在 replyhost_map 和 sasl_password 文件中各自的行上。

相关内容