我正在尝试设置一个“catchall”地址。在我的 virtual_mailbox 表中,我设置了以下电子邮件:
select * from virtual_users;
id | domain_id | password | email
----+-----------+----------------------------------------------
3 | 1 | ***************** | [email protected]
4 | 1 | ***************** | [email protected]
这本身就很好用。当我尝试为 catchall 添加虚拟别名时:
select * from virtual_aliases;
id | domain_id | source | destination
----+-----------+-------------------+---------------------------
1 | 1 | @domain.com | [email protected]
一旦我添加了虚拟别名,所有电子邮件都会被发送到[电子邮件保护]。
我需要做些什么来改变优先级?
这是我在 postfix 日志中得到的内容:
Oct 20 23:24:26 localhost postfix/qmgr[8002]: C23A711DF9: from=<[email protected]>, size=1712, nrcpt=1 (queue active)
Oct 20 23:24:26 localhost postfix/lmtp[8148]: C23A711DF9: to=<[email protected]>, orig_to=<[email protected]>, relay=domain.com[private/dovecot-lmtp], delay=0.42, delays=0.4/0.01/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 <[email protected]> 8V9DA4q6ZFLVHwAA0J78UA Saved)
Oct 20 23:24:26 localhost postfix/qmgr[8002]: C23A711DF9: removed
答案1
我在这里找到了解决方案(特别是在“黑魔法”部分:https://workaround.org/book/export/html/58
本质上,别名始终优先于邮箱。因此,要实现此功能,还需要将实际电子邮件地址添加到别名中。我们不必复制数据,而是可以创建 email2email 映射并将其添加到别名映射中。对于 PostgreSQL,/etc/postfix/main.cf 将包含以下内容:
# /etc/postfix/main.cf
virtual_alias_maps = pgsql:/etc/postfix/pgsql-virtual-alias-maps.cf,pgsql:/etc/postfix/pgsql-email2email.cf
注意:有两个不同的 virtual_alias 映射
然后 pgsql:/etc/postfix/pgsql-email2email.cf 看起来像这样:
user = mailuser
password = mailuserpass
dbname = mailserver
query = SELECT email FROM virtual_users WHERE email='%s';
注意:这与 virtual_mailboxes_map 配置相同,只是我们选择的是“email”而不是 1