在 Postfix 中哪里设置 catch-all 地址(虚拟邮箱受影响)

在 Postfix 中哪里设置 catch-all 地址(虚拟邮箱受影响)

我成功配置了 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

相关内容