$ {extension}在Postfix中的全部别名后清空

我想要一个设置,其中像[email protected]这样的电子邮件将邮件redirect到foo文件夹。 我已经configuration并testing了鸽舍。 它被master.cf中的这一行用postfix调用:

dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -n -m ${extension} 

我希望${extension}展开为'foo',但它总是空的。

我已经添加

 recipient_delimiter = + 

到我的main.cf。

我怎样才能使它工作?

我有一个全面的别名,将@ example.comredirect到[email protected]。 看来这个扩展是空的,因为这个。 因此,问题就变成了: 我可以使用[email protected][email protected],而不显式定义random或ext部分吗?

您将需要使用正则expression式图来运作。

这里是Wietse在这个问题上的一个post的片段。

您可以使用正则表格而不是固定string映射,并执行任意地址转换:

 /\+([^+]+)@example\.com$/ localuser2+$1localhost 

您可以在regex101中获得regexscheme的解释 。 简而言之,方括号()将捕获扩展名并将其传递给您的别名。

我有一个类似的设置使用Postfix和CourierIMAP。 你可以尝试使用procmail来处理这个问题。 我设置了一个通配符,以便所有邮件都发送给一个用户,然后使用procmail规则将电子邮件根据发送到的地址过滤到各个文件夹中。

例如,这会将电子邮件过滤到adsense或google @ domain.com到Google文件夹中:

 :0 * ^(To|CC|BCC).*(adsense|google)\@domain\.com .Google/ 

为了扩大你的目的,你可以使用更高级的规则,像这样:

 :0 * ^(To|CC|BCC).*user\+\/.*\@domain\.com .`echo $MATCH | sed 's/\@.*//'`/ 

但是,请注意该文件夹将区分大小写,您需要确保该文件夹已被创build。 你可以得到更高级的,只是脚本来创build文件夹,如果有必要,它们还不存在。