ルールはマクロのみにすることしました。こんな感じ。
<filters> <filterSet name="test"> <filter folder="ml/.*" match="@GreaterThan(@Size(),10240)"> <action name="download"> <param name="line">1000</param> </action> </filter> <filter folder="Inbox" match="@True()"> <action name="download"> <param name="type" value="textOnly"/> </action> </filter> </filterSet> </filters>
そもそもなぜマクロで書ける筈なのにマクロ以外のルールも用意したかというと、マクロを評価するためにはメッセージ本体が必要で、サイズなどメッセージ本体を必要としないルールに関しては、メッセージをダウンロードするのはもったいないので別のルールを用意しようという話だったのです。しかし、マクロの中からメッセージが必要なときにロードする部分をフックして、そのタイミングでサーバからメッセージを取得するようにしました。なので、メッセージ本体が必要のないマクロに関してはメッセージはダウンロードしなくても良くなったので、マクロ以外のルールは廃止にしました。