Postfix + mysql:virtual_users 与 virtual_aliases 中的 catch-all 相结合

Postfix + mysql:virtual_users 与 virtual_aliases 中的 catch-all 相结合

我有一个 Postfix(和 Dovecot)服务器正在运行,使用 MySQL 来定义域名、用户和别名。一切都运行良好,但现在我想向已经定义了一些用户的域添加一个 catch-all。我在 virtual_users 表中添加了用户,虽然我可以连接到它并用它发送电子邮件,但发送给它的所有电子邮件都被 catch-all 捕获。有办法解决这个问题吗?

相关配置文件及详细信息:

/etc/postfix/main.cf:

virtual_transport = lmtp:unix:private/dovecot-lmtp  
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf  
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf  
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf  
local_recipient_maps = $virtual_mailbox_maps  

mysql虚拟用户表:

+----+-----------+--------------+------------------------+  
| id | domain_id | password     | email                  |  
+----+-----------+--------------+------------------------+  
|  2 |         1 | passwordhash | [email protected] |  
+----+-----------+--------------+------------------------+  

mysql虚拟别名表:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  2 |         1 | @example.com           | [email protected]   |  
+----+-----------+------------------------+-------------------------------+  

答案1

默认情况下,后缀总是查找virtual_alias_maps 第一的。因此,它总是覆盖另一个映射中的另一个条目(例如:alias_mapsvirtual_mailbox_maps)。所以我们需要排除在中定义的电子邮件地址virtual_mailbox_maps

为了排除它,我们需要virtual_alias_maps在 main.cf 中创建新的 mysql 映射

virtual_alias_maps = mysql:/etc/postfix/mailbox.cf, mysql:/etc/postfix/mysql-virtual-alias-maps.cf

然后在 mailbox.cf 中定义查询

SELECT email from VIRTUALUSERTABLE WHERE email = %s

就是这样。您需要查询,因此结果 = 键查找。发生这种情况时,postfix 不会将电子邮件别名为 catchall 用户。

参考:postfix 教程

答案2

我在搜索我们系统中的类似问题时发现了这一点。添加 mailbox.cf 对我们来说不起作用,因为它会绕过对同一域的邮箱的任何转发。如果您需要使用 catchall 转发到同一域的邮箱,则需要将源地址和目标地址添加到虚拟别名表中。

例如,在上面的问题中,如果你转发[电子邮件保护][电子邮件保护][电子邮件保护]不会看到电子邮件。它只会到达[电子邮件保护]

“更具体的别名优先于一般的通用别名。” 请参阅:https://workaround.org/book/export/html/376

为同一域设置类似的额外转发,而不是添加 mailbox.cf:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  1 |         1 | [email protected] | [email protected]             |  
|  2 |         1 | [email protected] | [email protected]        |  
+----+-----------+------------------------+-------------------------------+  

相关内容