我目前已配置了 postfix,以便所有用户都通过本地机器进行中继,但以下情况除外:一个用户通过 gmail 进行中继。为此,我添加了以下配置:
/etc/postfix/main.cf
# default options to allow relay via gmail
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_sasl_security_options = noanonymous
# map the relayhosts according to user
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps
# keep a list of user and passwords
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
/etc/postfix/relayhost_maps
user-one@localhost [smtp.gmail.com]:587
在 /etc/postfix/sasl_passwd 文件中
[smtp.gmail.com]:587 [email protected]:user-one-pass-at-google
我知道我可以使用 smtp_sasl_password_maps 将多个用户映射到多个密码,但这意味着所有中继都将由 gmail 完成,而我特别希望所有中继都由本地主机完成,但某些用户除外。
现在我想让 user-two@localhost (等) 通过 google 进行中继,并使用各自的密码。这可能吗?
答案1
设置参数smtp_sender_dependent_authentication到是的. 然后您可以使用发件人地址作为 的查找键smtp_sasl_password_maps
。
实际上,您需要做的只是将密钥更改为sasl_passwd
基于用户。根据您的示例,只需将两个用户添加到文件relayhost_maps
并更改以下文件:
在 /etc/postfix/sasl_passwd 文件中
user-one@localhost [email protected]:user-one-pass-at-google
user-two@localhost [email protected]:user-two-pass-at-google