使用 Postfix 通过多个 Google Apps 帐户进行中继

mat*_*tbd 4 postfix g-suite

我正在设置一个需要通过使用 Google Apps 的域上的两个不同电子邮件地址发送电子邮件的网络应用程序。我使用 Postfix 作为中继,因为我对它相当熟悉。

但是,我正在努力弄清楚如何在同一域上使用两个不同的电子邮件地址来实现这一点。我得到的印象是你需要在 /etc/postfix/sasl 中设置两个不同的密码文件,我已经完成了,然后将 smtp_sasl_password_maps 设置为 hash:/etc/postfix/sasl/passwd,但我'我不太确定两个不同文件所需的语法。我试过如下设置:

smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd, hash:/etc/postfix/sasl/passwd2
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。我也尝试将两者都放在一个文件中,但这也不起作用。无论我尝试哪种方法,它似乎只能选择一个地址。谷歌似乎对这个问题也不是很有帮助?

谁能看到我在这里误入歧途?

编辑:也许我不太清楚我要做什么。

example.com 的网络服务器安装了 Postfix,但 MX 记录指向 Google Apps。有两个电子邮件地址,noreply@example.com 和 support@example.com,它们都在 Google Apps 上。我想要做的是将 Postfix 配置为使用 Google Apps 作为这两个电子邮件地址的中继。

问题是我不知道如何为这两个帐户设置密码映射,因此我只能为一个帐户设置密码映射,而不能同时为两个帐户设置密码映射。

mgo*_*ven 7

您需要启用发件人相关身份验证,以便 Postfix 将根据正在传递的邮件的发件人选择适当的凭据。密码映射应该由发件人地址而不是中继主机作为密钥。

main.cf

smtp_sender_dependent_authentication = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password_maps
Run Code Online (Sandbox Code Playgroud)

sasl_password_maps

noreply@example.com noreply@example.com:password123
support@example.com support@example.com:password456
Run Code Online (Sandbox Code Playgroud)


小智 7

发件人相关身份验证可以提供帮助。官方文档中有很好的例子

Postfix 支持不同发件人地址的不同 ISP 帐户(版本 2.3 及更高版本)。当一个人将同一台机器用于工作和个人用途时,或者当具有不同 ISP 帐户的人共享同一个 Postfix 服务器时,这会很有用。

为了实现这一点,Postfix 支持每个发件人的 SASL 密码和每个发件人的中继主机。在下面的示例中,Postfix SMTP 客户端将在按目标搜索同一文件之前按发件人地址搜索 SASL 密码文件。同样,Postfix trivial-rewrite(8) 守护进程将搜索每个发件人的中继主机文件,并仅使用默认的中继主机设置作为最后的手段。

/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 = [mail.isp.example]
# Alternative form:
# relayhost = [mail.isp.example]:port
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/sasl_passwd:

# Per-sender authentication; see also /etc/postfix/sender_relay.
user1@example.com               username1:password1
user2@example.net               username2:password2
# Login information for the default relayhost.
[mail.isp.example]              username:password
# Alternative form:
# [mail.isp.example]:port username:password
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/sender_relay:

# Per-sender provider; see also /etc/postfix/sasl_passwd.
user1@example.com               [mail.example.com]:port
user2@example.net               [mail.example.net]
Run Code Online (Sandbox Code Playgroud)
  • 每当更改 sasl_passwd 表时,请执行命令“postmap /etc/postfix/sasl_passwd”。
  • 每当您更改 sender_relay 表时,请执行命令“postmap /etc/postfix/sender_relay”。