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 ステートメントを解釈しているコンピュータの結果を示します。ここにエラーが表示されないようにしてください。出力は入力と一致しているように見えなければなりません。たとえば、ダンプには、フィルタファイル内の行 redirect "usr3@sesta.com"; とよく似た redirect, usr3@sesta.com という語が表示されます。
このように一致するテキストが表示されない場合は調べてみる必要があります。表示された場合、これらもスクリプトのデバッグとはあまり関係がありません。
3) 出力の一番下の行に、Filter result: ステートメントが表示されます。前述したように、次の 2 とおりの結果が考えられます。
Sieve Result: [] または Sieve Result: [ action]
action は、Sieve スクリプトによって実行されるアクションです。結果が空白になる場合もあるので注意してください。たとえば、破棄フィルタの場合、そのフィルタが常に、テストの対象となるすべての .msg ファイルを破棄しているのではないことをテストする必要があります。角括弧の間に何らかのアクションが含まれる場合、次のようになります。
Filter result: [ fileinto "QMSG" keep]
これは、rfc2822.msg ファイルのテキストがフィルタ条件に一致していることを示しています。この例では、フィルタはメールを QMSG フォルダにファイリングして、コピーを受信箱に保存します。この場合、結果として実行されるアクションは、fileinto および keep です。
フィルタをテストする際には、両方の結果について、各種の .msg ファイルをテストする必要があります。常に、使用するフィルタに一致するメッセージがフィルタ処理されていること、また、一致させたくないメッセージがフィルタ処理されていないことをテストする必要があります。
ワイルドカードとの照合の場合は、:contains テストではなく :matches テストを行う必要があることを理解しておいてください。たとえば、from=*@sesta.com と一致さる場合は :matches を使用してください。そうしないと、テストの条件が満たされないためテストは失敗します。