我正在 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
Postfix 通过 Dovecot SASL 将身份验证外包给 Dovecot
身份验证和邮件传递适用于短登录
[email protected]
,而长登录会失败[email protected]
并抛出一条消息User does not exist
。我猜这是因为路径而发生的,这在 3 和 4 中进行了解释。Dovecot 使用 passwd-file 机制来表示
userdb
和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 }
用户文件仅位于短域名下:
/etc/dovecot/mydomain.com/users
。该
mail_location
参数还使用%d
:mail_location = maildir:/var/vmail/%Ld/%Ln/Maildir
问题:有没有办法将长域名映射到短域名,并且只针对这一对特定域名执行此操作?我希望这两个域名的所有邮件都发送到短域名的邮箱mydomain.com
:
/var/vmail/mydomain.com/user1/Maildir
/var/vmail/mydomain.com/user2/Maildir
/var/vmail/mydomain.com/user3/Maildir
应该在 Postfix 还是 Dovecot 中完成?
我知道我可以创建软/硬链接来确保两个目录都存在,但我不喜欢这个解决方案(绝对!)。
一般来说,解决这个问题的正确方法是什么?我对邮件服务器还不太熟悉。
谢谢
答案1
除了使用之外,relay_domains
您还可以使用virtual_alias_domains
&virtual_alias_maps
将长格式指向短格式:
@my-long-named-domain.com @mydomain.com
你可以阅读虚拟(5)以获取更多信息,或者有大量关于在 Postfix 中使用虚拟别名的细节的操作指南。
如果虚拟(5)对于第一道菜来说太密集,这里有一个切中要点的内容:https://www.mind-it.info/2013/10/23/setting-virtual-alias-domains-correctly-postfix/