![Postfix 虚拟邮箱,全部接收,根据收件人地址仅将其中一部分转发到另一台服务器](https://linux22.com/image/678067/Postfix%20%E8%99%9A%E6%8B%9F%E9%82%AE%E7%AE%B1%EF%BC%8C%E5%85%A8%E9%83%A8%E6%8E%A5%E6%94%B6%EF%BC%8C%E6%A0%B9%E6%8D%AE%E6%94%B6%E4%BB%B6%E4%BA%BA%E5%9C%B0%E5%9D%80%E4%BB%85%E5%B0%86%E5%85%B6%E4%B8%AD%E4%B8%80%E9%83%A8%E5%88%86%E8%BD%AC%E5%8F%91%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我使用 Postfix 作为主 MX 服务器,连接到互联网。在 LAN 上我有 MS Exchange,无法通过互联网访问。
Postfix 适用于虚拟邮箱,Dovecot 适用于 POP3/IMAP 等。我正在使用 catch-all virtual_alias_maps
- have @mydomain.cz
->[电子邮件保护]。
我想将特定收件人地址的邮件转发到 Exchange 服务器。通常使用 来完成transport_maps
,但当我使用 catch-all 虚拟别名时,邮件会发送到[电子邮件保护]并且未用 处理transport_maps
。
是否可以transport_maps
与 catch-all 一起使用virtual_alias_maps
?
Postfix 配置中有趣的部分:
transport_maps = mysql:/etc/postfix/mysql-virtual-transports.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:5000
MySQL .cf 文件:
query = SELECT password FROM virtual_users WHERE email='%u' LIMIT 1
query = SELECT destination FROM virtual_aliases WHERE source='%s'
query = SELECT 1 FROM virtual_domains WHERE name='%s'
query = SELECT 1 FROM virtual_users WHERE email='%s'
table = transport
select_field = transport
where_field = domain
additional_conditions = and active = '1'