Postfix + mysql:virtual_users 与 virtual_aliases 中的一个包罗万象结合

can*_*fee 6 mysql postfix dovecot

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

相关配置文件及详情:

/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  
Run Code Online (Sandbox Code Playgroud)

mysql虚拟用户表:

+----+-----------+--------------+------------------------+  
| id | domain_id | password     | email                  |  
+----+-----------+--------------+------------------------+  
|  2 |         1 | passwordhash | postmaster@example.com |  
+----+-----------+--------------+------------------------+  
Run Code Online (Sandbox Code Playgroud)

mysql 虚拟别名表:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  2 |         1 | @example.com           | catch-all@other.example.net   |  
+----+-----------+------------------------+-------------------------------+  
Run Code Online (Sandbox Code Playgroud)

mas*_*oeh 11

默认情况下,postfix 总是在virtual_alias_maps first 中查找。因此,它总是覆盖另一个映射中的另一个条目(例如: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
Run Code Online (Sandbox Code Playgroud)

然后在mailbox.cf中,定义查询

SELECT email from VIRTUALUSERTABLE WHERE email = %s
Run Code Online (Sandbox Code Playgroud)

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

参考:后缀教程

  • 谢谢!它现在工作得很好。出于某种原因,我在搜索时从未找到该页面... (3认同)
  • 对于这艘船上的人,该教程(当前)可以在 [将 Postfix 连接到数据库](https://workaround.org/ispmail/wheezy/connecting-postfix-to-the-database) 中找到 (2认同)