我正在 RHEL7 上使用 Postfix+Dovecot 设置邮件服务器。虽然不是必需的,但我想设置它以便邮件服务器能够托管多个域。
出现的问题是我有两个完全同义的域名:在过去的某个时候,引入了一个替代名称来节省用户的几次按键操作。以一个域名存在的所有电子邮件也以另一个域名存在。我希望将发送到这两个域的电子邮件发送到同一个邮箱。我想避免将地址硬重写为一个拼写:如果用户从包含长域名的地址发送电子邮件,则该电子邮件在发送时应显示为这样,较短的电子邮件地址也是如此。
Postfix 配置为将邮件中继到这两个域
# in /etc/postfix/main.cf
relay_domains = hash:/etc/postfix/relay_domains
# in /etc/postfix/relay_domains
my-long-named-domain.com lmtp:unix:private/lmtp-dovecot
mydomain.com lmtp:unix:private/lmtp-dovecot
Run Code Online (Sandbox Code Playgroud)Postfix 通过 Dovecot SASL 将身份验证外包给 Dovecot
身份验证和邮件传递适用于短登录,user@mydomain.com而长登录失败并user@my-long-named-domain.com抛出消息User does not exist。我猜这是因为路径,这在 3 和 4 中进行了解释。
Dovecot 对userdband使用 passwd-file 机制passdb,其中%d在文件路径中用于区分域。
# in /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%n /etc/dovecot/%d/users
}
userdb {
driver = passwd-file
args = username_format=%n /etc/dovecot/%d/users
default_fields = uid=vmail gid=vmail
}
Run Code Online (Sandbox Code Playgroud)
用户文件仅位于短域名下: …