我在一台服务器上运行多个网站。我使用 sendgrid 发送电子邮件。
现在,我让 postfix 将所有发送的邮件中继到单个 sendgrid 帐户,并使用 smtp_sasl 进行身份验证。
我需要能够将每个域的电子邮件发送到不同的 sendgrid 帐户。因此,对于 domain1.com,我希望使用一个帐户中继到 sendgrid,而对于 domain2.com,我需要 postfix 使用不同的帐户进行身份验证。
答案1
遗憾的是,这个问题花了这么长时间才得到正确答案。而且遗憾的是,sendgrid 自己的文档没有处理这个问题。所需的指令在http://www.postfix.org/SASL_README.html#client_sasl_sender,我将在这里引用它,并进行一些 sendgrid 特定的修改:
/etc/postfix/main.cf:
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = my.default.relay.com
在 /etc/postfix/sasl_passwd 中:
# Per-sender authentication; see also /etc/postfix/sender_relay.
@domain1.example.com username1:password1
@domain2.example.com username2:password2
# Login information for the default relayhost.
[my.default.relay.com] username:password
# Alternative form:
# [mail.isp.example]:submission username:password
在/etc/postfix/sender_relay中:
# Per-sender provider; see also /etc/postfix/sasl_passwd.
@domain1.example.com [sendgrid.net]:submission
@domain2.example.com [sendgrid.net]:submission
不过这里有几点需要注意。
- 以上切换的是 SMTP 信封发件人地址,而不是 MIME 标头中的地址。
- 让 postfix 根据 MIME Header 检查向不同方向发送邮件比较困难。我确信这是可能的,但 postfix 不是为此设计的。
- DKIM 不关心 SMTP 信封发件人地址或 MIME 标头发件人地址是否与用于 DKIM 签名的域匹配。某些接收服务器的垃圾邮件策略可能关心这一点。(更多信息请点击此处)。
- 由于 1. 和 3.,您很可能根本不需要发送到单独的 sendgrid 子帐户。