后缀别名 – 捕获全部不按预期工作

我有一个与我的后缀configuration问题。 我想为一个域设置一个全面的电子邮件地址。 我有我的虚拟邮箱和别名保存在postgresql数据库中。 在文件vdomains.cf,vmailbox.cf和valias.cf中定义的查询分别是:

query = SELECT 1 FROM domains WHERE domain = '%s' query = SELECT CONCAT(domains.domain, '/', mailboxes.address, '/') AS maildir FROM mailboxes LEFT JOIN domains ON mailboxes.domain = domains.id WHERE mailbox='%s' query = SELECT dst FROM virtual_aliases WHERE src = '%s' 

这些文件通过这个块链接到main.cf

 virtual_mailbox_domains = pgsql:/etc/postfix/vdomains.cf virtual_alias_maps = pgsql:/etc/postfix/valias.cf virtual_mailbox_base = /srv/mail virtual_mailbox_maps = pgsql:/etc/postfix/vmailbox.cf virtual_uid_maps = pgsql:/etc/postfix/vuidmaps.cf virtual_gid_maps = pgsql:/etc/postfix/vdomainmaps.cf virtual_transport = lmtp:unix:private/dovecot-lmtp 

这对已知的收件人和服务器拒绝所有未知收件人完美的作品。 如果我在别名表中定义一个地址映射到邮箱表中的另一个现有地址,别名也起作用。

问题是,别名表在邮箱表之前得到解决,这就造成了一个很大的问题,当我想要这样一个全电子邮件的别名:

 src dst @domain.com [email protected] 

在实际的邮箱之前,这个问题就得到了解决,因此所有的电子邮件,包括现有用户的电子邮件,都被转发到[email protected]地址。

根据在这里堆栈或其他网站的几个答案,这个设置应该工作,可能会为一些人,所以我相信我做错了什么。

最后一件事 – 我的设置是Debian Jessie和Postfix 2.11.3。

任何帮助非常感谢,提前感谢

我终于find了一个解决scheme。 这可能不是最好的,但我无法find更正确的,已阅读所有相关的后缀文档和许多其他职位。 这个问题没有得到回答是另一个表明“正确”的解决scheme可能不存在。

我的解决方法非常简单。 我发现如果你在虚拟别名表中指定所有现有的地址,像这样:

 [email protected] [email protected] [email protected] [email protected] 

(基本上是相同的来源和目的地)

它按照原意按预期工作。 (这是我在另一个关于同一主题的问题中find的build议)。 那么,将这些信息放到virtual_aliases表中显然是错误的(重复信息,…),所以我想出了一个更优雅的解决scheme:

 CREATE OR REPLACE VIEW v_virtual_aliases AS SELECT mailboxes.mailbox AS src, mailboxes.mailbox AS dst FROM mailboxes UNION ALL SELECT virtual_aliases.src, virtual_aliases.dst FROM virtual_aliases; 

它所做的只是使用virtual_aliases表中的所有信息与实际邮箱表中的所有现有邮箱结合创build一个视图。 这样,没有数据重复和别名按预期工作 – 只适用于邮箱表中没有条目的地址。 给定这个查询,即使对于大型数据库,性能也不应该成为问题。

然后我相应地更新了valias.cf文件:

 query = SELECT dst FROM virtual_aliases WHERE src = '%s' 

现在一切都如预期的原始问题。