Dovecot筛选-如何将部分消息作为变量检索

时间:2018-09-19 14:56:36

标签: dovecot sieve-language

我需要检索消息的某些部分,例如

Subject: Test message
Message-Id: <2788db2f-b5c3-4b8c-881e-362c3df4f915@server.local>
Mime-Version: 1.0
Content-Type: multipart/report; boundary="----=_Part_fba0c199dfcd4d60ae506b37a6320a84"; report-type=notification
To: adam@test.local
Date: Mon, 17 Sep 2018 16:21:45 -0400 (EDT)
From: postmaster@server.local


------=_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; eve@test.local
Original-Message-ID: <06dbfc12-57a5-49bd-84bd-a24bc3ba1e42@fake.cernerasp>

------=_Part_fba0c199dfcd4d60ae506b37a6320a84—

例如,我需要获取Final-Recipient: rfc822;Original-Message-ID:之后的内容并将其存储为变量

我试图做类似的事情

if body :raw :contains ["Original-Message-ID:"] {
  set "Original-Message-ID" "${0}";
}

但是设置为Original-Message-ID的变量不包含消息后的内容。

1 个答案:

答案 0 :(得分:0)

结果表明,身体测试绝对不能用于匹配变量:

https://tools.ietf.org/html/rfc5173#section-6

  

与“ body”一起使用的通配符表达式不受副作用   在[变量]中描述。也就是说,他们不得设置匹配变量   ($ {1},$ {2} ...)到对应于通配符的输入值   匹配模式中的序列。

MIME Sieve扩展名可能会提供所需的内容 https://tools.ietf.org/html/rfc5703pipe消息发送到脚本并在脚本中进行处理,这正是我的情况。