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_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
Run Code Online (Sandbox Code Playgroud)
然后在mailbox.cf中,定义查询
SELECT email from VIRTUALUSERTABLE WHERE email = %s
Run Code Online (Sandbox Code Playgroud)
就是这样。您需要查询,以便结果 = 键查找。发生这种情况时,postfix 不会将电子邮件别名给 catchall 用户。
参考:后缀教程
归档时间: |
|
查看次数: |
4371 次 |
最近记录: |