我有一个 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_maps
和virtual_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] |
+----+-----------+------------------------+-------------------------------+