后缀 – 混合virtual_aliases和virtual_mailboxes(catchall)

我运行与dovecot(2.2.5)和我两个域的后缀(2.9.6):

  1. example.com作为virtual_mailbox_domain
  2. example.org作为virtual_alias_domain

我想为未知的用户设置两个不同的通用规则,但是并不像预期的那样工作。

使用下面的configurationexample.com的catch-all规则适用于example.com和example.org地址(即所有未知的邮件都被传递到johndoe的catch_com邮箱,无论example.org或example.com地址如何)。 删除@ example.com规则会导致@ example.org规则正常工作(邮件传递到johndoe的catch_org邮箱)。

main.cf:

recipient_delimiter = + virtual_mailbox_domains = example.com virtual_mailbox_maps = hash:/opt/local/etc/postfix/virtual_mailbox virtual_alias_domains = example.org virtual_alias_maps = hash:/opt/local/etc/postfix/virtual_alias 

master.cf

 dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/opt/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m ${extension} 

virtual_mailbox:

 [email protected] example.com/johndoe 

virtual_alias:

 @example.org [email protected] @example.com [email protected] 

将虚拟邮箱规则添加到virtual_mailbox不起作用,因为我已经阅读了某处使用dovecot-lda导致虚拟邮箱中的所有规则被忽略。

这是来自postfix的预期行为。 虚拟别名将在任何其他别名之前被检查。 因此,example.com /opt/local/etc/postfix/virtual_alias将在/opt/local/etc/postfix/virtual_mailbox之前路由您的电子邮件。

在你的情况下johndoe+catch_org将recursion地映射到virtual_alias ,所以它会匹配johndoe+catch_com

如果您将catchall设置为同一个域中的另一个邮箱,则可以在virtual_mailbox_maps设置catchall。 将此行添加到/opt/local/etc/postfix/virtual_mailbox底部

 @example.com example.com/johndoe 

缺点是你不能区分example.com catchall或example.org catchall之间的电子邮件。 对于鸽舍,我无法证实这个计划是否有效。


另一个丑陋的解决scheme是将example.com的non-catchall帐户放在/opt/local/etc/postfix/virtual_alias 。 例如:

 # account with mailbox [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] # for example.org domain catch all [email protected] [email protected] @example.org [email protected] @example.com [email protected]