我正在 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)
用户文件仅位于短域名下:/etc/dovecot/mydomain.com/users.
该mail_location参数还使用%d:
mail_location = maildir:/var/vmail/%Ld/%Ln/Maildir
Run Code Online (Sandbox Code Playgroud)问题:有没有办法将长域名映射到短域名,并且只针对这对特定的域名?我希望这两个域的所有邮件都发送到较短的邮箱mydomain.com:
/var/vmail/mydomain.com/user1/Maildir
/var/vmail/mydomain.com/user2/Maildir
/var/vmail/mydomain.com/user3/Maildir
Run Code Online (Sandbox Code Playgroud)
应该在 Postfix 还是在 Dovecot 中完成?
我知道我可以创建软/硬链接来确保两个目录都存在,但我不喜欢这个解决方案(绝对!)。
一般来说,解决这个问题的正确方法是什么?我是邮件服务器方面的新手。
谢谢
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |