![Dovecot Sieve:将消息的一部分存储为变量](https://linux22.com/image/727425/Dovecot%20Sieve%EF%BC%9A%E5%B0%86%E6%B6%88%E6%81%AF%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E5%AD%98%E5%82%A8%E4%B8%BA%E5%8F%98%E9%87%8F.png)
我需要检索消息的某些部分,如下所示
Subject: Test message
Message-Id: <[email protected]>
Mime-Version: 1.0
Content-Type: multipart/report; boundary="----=_Part_fba0c199dfcd4d60ae506b37a6320a84"; report-type=notification
To: [email protected]
Date: Mon, 17 Sep 2018 16:21:45 -0400 (EDT)
From: [email protected]
------=_Part_fba0c199dfcd4d60ae506b37a6320a84
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
BTW, this is the correct notification ... it should be "failed" not "failure".
------=_Part_fba0c199dfcd4d60ae506b37a6320a84
Content-Type: message/notification
Content-Transfer-Encoding: 7bit
Final-Recipient: rfc822; [email protected]
Original-Message-ID: <[email protected]>
------=_Part_fba0c199dfcd4d60ae506b37a6320a84—
例如我需要抓住之后的内容Final-Recipient: rfc822;
并将Original-Message-ID:
它们存储为变量
我曾尝试过做类似的事情
if body :raw :contains ["Original-Message-ID:"] {
set "Original-Message-ID" "${0}";
}
但变量设置为Original-Message-ID
不包含消息中其后面的内容。
答案1
结果表明,body 测试肯定不适用于匹配变量:
https://www.rfc-editor.org/rfc/rfc5173#section-6
与“主体”一起使用的通配符表达式不受 [变量] 中描述的副作用的影响。也就是说,它们不得将匹配变量 (${1}、${2}...) 设置为与匹配模式中的通配符序列相对应的输入值。
MIME Sieve 扩展可能会提供所需的功能
https://www.rfc-editor.org/rfc/rfc5703或者pipe
将消息发送到脚本并在那里进行处理,这是我在我的案例中所做的。