Postfix virtual_alias 从 virutal_mailbox 窃取电子邮件

Postfix virtual_alias 从 virutal_mailbox 窃取电子邮件

我正在尝试设置一个“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

相关内容