我要做的是为少数几个用户返回邮箱位置,并为其他所有人捕获所有邮箱位置。在postfix中,您可以使用
形式的查询传递它SELECT mailbox FROM virtual_mailboxes WHERE email = '%s'
它将用它正在寻找的电子邮件用户替换%s。我有一个表包含一组需要自己的邮箱(root,support,postmaster)的用户,我希望能够创建一个返回已配置邮箱或'all /'的查询。例如,如果用户名是“support”,那么我希望它为用户名“support”提取邮箱列。如果用户名是'anybody',它与表中的行不匹配,我希望它返回'all /'。
Here is the query I came up with.
SELECT
CASE
WHEN v2.username IS NOT NULL THEN v2.mailbox
ELSE 'all/'
END AS mailbox2
FROM virtual_mailboxes v1
LEFT JOIN virtual_mailboxes v2 ON v2.username = SUBSTRING_INDEX('support@gmail.com', '@', 1)
LIMIT 1
它有效,但我觉得这样做是非常错误的,如果有更好的方法,我很好奇。
另外一件事,postfix只会替换第一次出现的%s。谢谢你的帮助。
答案 0 :(得分:1)
SELECT coalesce(
(SELECT mailbox FROM virtual_mailboxes WHERE email = '%s'),
'all/'
);