Exim:基于收件人的转发

时间:2011-11-09 11:37:33

标签: email filter exim bcc exim4

目前我正按以下方式通过.forward过滤收到的邮件:

if $header_to: matches "(office|info)@domain.com" then
    save Maildir/.office/
endif
if $header_to: matches "whatever@domain.com" then
    save Maildir/.whatever/
endif

所以我有一个邮件帐户,它接收不同地址的邮件。基本上我希望他们根据发送邮件的地址登陆不同的子目录。

这适用于收件人位于to - 标头中的邮件,但如果收件人位于bcc中则无效。

当收到与bcc - 标头一起发送的邮件时,只有envelope-to - 标题与邮件发送到的实际地址相匹配,并在Received中提及-header

Envelope-to: office@domain.com

Received: from mail.other.domain ([1.1.1.1])
    by mail.domain.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
    (Exim 4.71)
    (envelope-from <sender@other.domain>)
    id 1RO5xc-0001TF-Qj
    for office@domain.com; Wed, 09 Nov 2011 12:04:57 +0100
...
To: can_be_anything@whatever.com

我已经尝试过:

if $header_envelope-to: matches ...

但是这不起作用,即使与To一起发送邮件,也不会过滤邮件 - 标题(看起来像Envelope-To - 标头在前向文件中不可用)。我应该尝试解析(多个)Received - 标题吗?

如何根据真实的收件人地址将邮件移动到收件人的子目录中?

2 个答案:

答案 0 :(得分:1)

看起来我终于找到了答案。

if $original_local_part matches "office|info" then
    save Maildir/.office/
endif

这只会检查local_part,但是afaik也可以通过$original_domain扩展为使用域名(请参阅the doc

答案 1 :(得分:0)

变量$recipients包含所有(toccbcc)收件人。你试过吗?