完整的 imsimta test -exp 命令如下:
# imsimta test -exp -mm -block -input=temp.filter -message=rfc2822.msg
下面是一个输出示例:
# imsimta test -exp -mm -block -input tmp.filter -message=rfc2822.msg Expression: if header :contains ["to"] ["pamw"] (1) Expression: { Expression: redirect "usr3@sesta.com"; Expression: keep; Expression: } Expression: Expression: Dump: header:2000114;0 3 1 :contains 1 "to" 1 "pamw" if 8 ; Dump: redirect:2000121;0 1 1 "usr3@sesta.com" ; keep:2000117;0 (2) Dump: 0 Result: 0 Filter result: [ redirect "usr3@sesta.com" keep ] (3) |
1) Expression: 输出行显示正在从 tmp.filter 文本文件中读取并解析的过滤器。这些在调试脚本中不是特别有用。
2) Dump: 输出行是计算机解释 Sieve 语句的结果。不应看到有任何错误,并且输出看起来应与输入相匹配。例如 Dump 显示了文字 redirect, usr3@sesta.com,这与过滤器文件中的行 redirect "usr3@sesta.com"; 类似。
如果未显示此匹配文本,则应当引起注意,否则,它们在调试脚本时也不是特别有用。
3) 在输出的底部,您将看到 Filter result: 语句。如前面所述,可能有两种结果:
Sieve Result: [] 或:Sieve Result: [action]
其中 action 是 Sieve 脚本执行的操作。请注意,有时预期的结果为空。例如,对于 discard 过滤器,您应当测试该过滤器并不总是放弃测试的每个 .msg 文件。如果在方括号间存在某个操作,例如:
Filter result: [fileinto "QMSG" keep]
这表明 rfc2822.msg 文件中的文本与过滤器条件匹配。在此特定示例中,过滤器将把邮件归档到 QMSG 文件夹中,并在收件箱中保存一份副本。本示例中的结果操作是 fileinto 和 keep。
测试过滤器时,应当测试两种结果的各个 .msg 文件。应始终测试是否已过滤匹配过滤器的邮件,并测试是否未过滤不想匹配的邮件。
请记住,对于通配符匹配,您必须使用 :matches 测试而不是使用 :contains。例如,如果要匹配 from=*@sesta.com,则必须使用 :matches,否则测试会由于不满足测试条件而失败。