我已经配置了一个带有主域和几个虚拟域的 Postfix 服务器,并交叉检查了多个教程和有关虚拟主机的官方文档。Postfix 还设置为最终将所有邮件传递到 Dovecot,后者应处理 (Unix) 用户邮箱。换句话说,我需要 Postfix 做的就是在接收端进行地址重写。
据我所知,我的配置中的重要摘录如下(如果缺少任何重要内容,请提醒我,我会编辑问题):
/etc/postfix/main.cf
:
myhostname = mail.first_domain.tld
mydomain = first_domain.tld
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
virtual_alias_domains = second_domain.tld, third_domain.tld, ...
virtual_alias_maps = hash:/etc/postfix/virtual
local_transport = dovecot
mailbox_transport = dovecot
virtual_transport = dovecot
/etc/postfix/master.cf
:
# ...
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
# ...
/etc/postfix/virtual
:
postmaster@second_domain.tld postmaster
postmaster@third_domain.tld postmaster
# ...
/etc/aliases
:
postmaster@first_domain.tld postmaster
# ...
在我的用例中,我不需要区分本地和虚拟邮件传递。如果找到合适的规则,我只想重写地址。如果没有,就直接传递邮件。但是,虚拟主机文档非常清楚地说明了“切勿将虚拟别名域名列为我的目标域名!”
有没有办法只使用虚拟交付来完成所有事情?为了简化配置,完全放弃/etc/aliases
文件。理想情况下,我希望能够手动定义所有接收地址,并且不介意明确地写出它们。