目前我正按以下方式通过.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
- 标题吗?
如何根据真实的收件人地址将邮件移动到收件人的子目录中?
答案 0 :(得分:1)
看起来我终于找到了答案。
if $original_local_part matches "office|info" then
save Maildir/.office/
endif
这只会检查local_part,但是afaik也可以通过$original_domain
扩展为使用域名(请参阅the doc)
答案 1 :(得分:0)
变量$recipients
包含所有(to
,cc
和bcc
)收件人。你试过吗?