根据规则,使用 postfix 转发已转发的邮件

根据规则,使用 postfix 转发已转发的邮件

如果我希望规则所基于的地址不是收件人,如何让 postfix 将收到的电子邮件转发到一个或多个不同的本地别名?我想要操作的地址来自转发的邮件。

具体如下:
在外部帐户上:

  • 发往主账户的语音邮件将123+voicemail@externaldomain被递送至主 myname@externaldomain账户。(这将结合普通文本邮件和带有语音附件的邮件)
  • 所有邮件都转发到我的服务器使用tonline@mydomain

在本地 postfix 服务器上:

  • 现在我只想将最初发给的语音邮件转发给123+voicemail@externaldomain我的别名,voice@mydomainvoice@myotherdomain
    就是为什么我不能简单地使用 bcc_maps

  • virtual_alias_maps尝试过:

    • 使用virtual_alias_maps我可以重定向
      voice@mydomain to myvoice@mydomain, myvoice@myotherdomain
      ,但这也包括普通邮件。

    • 因此我尝试了类似的规则,
      123+voice@externaldomain voice@mydomain, voice@myotherdomain
      但是它没有触发。

我使用第一次尝试的规则最终收到的示例邮件:

Return-Path: <123@externaldomain>
X-Original-To: voice@mydomain
Delivered-To: myvoice@mydomain    
From: 456 <456@externaldomain>
To: 123+voice@externaldomain
Subject: Call from 456

答案1

由于您的决定完全取决于To标题,因此您可以添加header_checks

#/etc/postfix/main.cf
# ...
# ...
header_checks = regexp:/etc/postfix/header.re
# ...

#/etc/postfix/header.re
/^To:(.*)123+voice@externaldomain/        REDIRECT  [email protected]

答案2

我设法通过使用这样的筛选消息过滤器来解决这个问题:

require ["copy","fileinto","imap4flags"];
# rule:[VoiceMailForwarder]
if anyof (header :contains "to" "[email protected]", header 
:contains "to" "[email protected]")
{
    redirect :copy "[email protected]";
}

使用带有 managesieve 插件的 roundcube 可以轻松实现这一点。还为 thunderbird 提供了一个插件

相关内容