使用 mysql 在 postfix 中配置全能别名

roh*_*ohx 4 postfix-mta

似乎我的全能别名不起作用。当我使用

postmap -q test@example.org mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Run Code Online (Sandbox Code Playgroud)

没有输出。但是当我命令

 postmap -q jack@example.org mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Run Code Online (Sandbox Code Playgroud)

输出是

 john@example.org. 
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

配置查询是:

query= SELECT destination FROM virtual_aliases WHERE source='%s'
Run Code Online (Sandbox Code Playgroud)

表 virtual_aliases:

id  domain_id   source             destination
5   1           @example.org        john@example.org
7   1           john@example.org    john@example.org
8   1           jack@example.org    john@example.org
Run Code Online (Sandbox Code Playgroud)

表 virtual_domains:

id  name
1   example.org
Run Code Online (Sandbox Code Playgroud)

表 virtual_users:

id  domain_id   password    email
1   1           pwd         john@example.org
Run Code Online (Sandbox Code Playgroud)

cle*_*ent 5

您的mysql查询应该是

SELECT destination FROM virtual_aliases WHERE source='%s' 
UNION ALL  
SELECT destination FROM virtual_aliases WHERE source='@%d' 
AND NOT EXISTS (SELECT destination FROM virtual_aliases WHERE source='%s')
Run Code Online (Sandbox Code Playgroud)