我成功配置了 Postfix 以将消息传递到虚拟邮箱。
我可以在 /etc/postfix/virtual 中设置别名和管道,并在 /etc/postfix/virtual_mailbox 文件中设置邮箱。
但是,每当我设置一个 catch-all 域并指向远程电子邮件地址时,它都会覆盖在 postfix 中设置的所有其他虚拟邮箱和虚拟别名。当启用虚拟邮箱时,如何设置到远程电子邮件地址的 catch-all 转发?
我这样设置了 catch-all:
@mydomain.com [email protected]
感谢您的帮助!
答案1
catchall 应该在virtual_alias_maps
文件中(在你的情况下/etc/postfix/virtual
)并且不是在virtual_mailbox
文件中。
看一看这里,在页面上搜索Mail forwarding domains
,你会找到这个例子:
1 /etc/postfix/main.cf:
2 virtual_alias_domains = example.com ...other hosted domains...
3 virtual_alias_maps = hash:/etc/postfix/virtual
4
5 /etc/postfix/virtual:
6 [email protected] postmaster
7 [email protected] joe@somewhere
8 [email protected] jane@somewhere-else
9 # Uncomment entry below to implement a catch-all address
10 # @example.com jim@yet-another-site
11 ...virtual aliases for more domains...
答案2
对我们来说,最简单的解决方案是为 virtual_alias_maps 提供三个条目,它们按顺序执行,直到第一个匹配例如。
/etc/postfix/main.cf:
virtual_alias_maps =
hash:/etc/postfix/virtual,
proxy:ldap:/etc/postfix/ldap/virtual_mail_exist_maps.cf,
hash:/etc/postfix/virtual_after_ldap
第一个条目是“经典”的本地文件虚拟,如果您需要这样的东西,它可以从.com转发到.net域,例如。
/etc/postfix/virtual:
@mydomain.com @mydomain.net
第二个条目是数据库,sql 或 ldap 或其他任何内容。当帐户匹配时,postfix 会提供正是查询的邮件并在此处退出 - 成功将邮件转发给或多或少自身(postfix 逻辑:))
/etc/postfix/ldap/virtual_mail_exist_maps.cf
server_host = x
server_port = x
...
result_format = %s
第三个条目是另一个简单的本地文件。Postfix 仅在数据库查找不成功时才会在此处进行查找,您可以在此处放置您的万能地址
/etc/postfix/virtual_after_ldap
@mydomain.net postmaster