如何让 Postfix 将邮件发送到不同的中继主机?

如何让 Postfix 将邮件发送到不同的中继主机?

我在一台服务器上运行多个网站。我使用 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

不过这里有几点需要注意。

  1. 以上切换的是 SMTP 信封发件人地址,而不是 MIME 标头中的地址。
  2. 让 postfix 根据 MIME Header 检查向不同方向发送邮件比较困难。我确信这是可能的,但 postfix 不是为此设计的。
  3. DKIM 不关心 SMTP 信封发件人地址或 MIME 标头发件人地址是否与用于 DKIM 签名的域匹配。某些接收服务器的垃圾邮件策略可能关心这一点。(更多信息请点击此处)。
  4. 由于 1. 和 3.,您很可能根本不需要发送到单独的 sendgrid 子帐户。

答案2

相关内容