フィルタリングルール

2024年4月11日

ID 171652

フィルタリングルールは、フィードユーティリティが元のフィードファイルのフィルタリングに使用する基準です。

フィルタリングルールは、Filters 要素でフィードごとに指定します。各フィルタリングルールは Field 要素で設定します:フィールド名は name 要素で、フィルタリング基準は value 属性で指定します。フィールドには、そのフィールドに関連したフィルタリングルールを 1 つだけ指定できます。2 つの Field パラメータを 1 つのフィールドに指定することはできません。

メールタイプのフィードは、メールの件名とメールの送信者によってフィルタリングされます。下の「メールタイプのフィードのフィルタリング」セクションを参照してください。

次に、フィードのフィルタリングルールの例を示します。これらのルールでは、4 または 5 に相当する popularity フィールド、および .ru または .com を含んだ mask フィールドのあるレコードしか出力フィードに含められないことを指定します。

<Feed>

...

<Filters>

<Field name="popularity" value="4;5"/>

<Field name="mask" value=".ru;.com"/>

</Filters>

...

<Feed>

フィードユーティリティは、「value」属性の先頭または末尾のスペース記号、またはタブ記号を無視します。

出力ファイルには、指定したすべての基準に一致するレコードのみが含まれています。フィールドのフィルタリング基準が指定されていても、そのフィールドがレコードにない場合、フィードユーティリティはこのレコードを出力ファイルに含めません。

数値のフィルタリング基準の定義

数値は整数です。10 進値はサポート対象外です。

数値フィールドのフィルタリング基準を次のように定義できます:

  • value="*"

    フィールドにはどのような値も指定できます。

    たとえば、<Field name="type" value="*"/> は、type フィールドにどのような値でも指定できることを意味します。

  • value="%value%"

    真数値です。フィールドは %value% と同じである必要があります。

    たとえば、<Field name="popularity" value="1"/> の場合、popularity フィールドは 1 と同じである必要があります。

  • value="%value1%;%value2%"

    複数の数値の 1 つです。フィールドには、指定の数値(%value1% または %value2%)の 1 つを指定できます。

    「;」を区切り号として使用すると、追加の値を指定できます。

    たとえば、<Field name="popularity" value="1;3"/> の場合、popularity フィールドは 1 または 3 である必要がありますが、2 にすることはできません。

  • value="[%value1%;%value2%]"

    数値の範囲です。

    フィールドには、指定範囲 %value1%%value2% の値の 1 つを指定できます。

    たとえば、<Field name="popularity" value="[1;3]"/> の場合、popularity フィールドには 2 を含む 1 から 3 の値を指定できます。

  • value="[%value1%;*]" または value="[*;%value1%]"

    数値のオープン範囲です。範囲と同じですが、アスタリスク(*)は、範囲が無制限であることを指定しています。

    たとえば、<Field name="popularity" value="[2;*]"/> の場合、popularity フィールドの値を 2 以上にする必要があります。

文字列のフィルタリング基準の定義

文字列フィールドのフィルタリング基準を次のように定義できます:

  • value="*"

    フィールドにはどのような値も指定できます。

    たとえば、<Field name="mask" value="*"/> は、mask フィールドにどのような値でも指定できることを意味します。

  • value="%string%"

    フィールドには、指定の文字列を含める必要があります。

    たとえば、<Field name="geo" value="ru"/> の場合、geo フィールドの値に「ru」を含める必要があります。

  • value="%string1%;%string2%"

    指定の文字列を 1 つ以上含みます。

    たとえば、<Field name="geo" value="ru;us"/> の場合、geo フィールドの値には「ru」「us」、または「ru」「us」の両方を含める必要があります。

日付のフィルタリング基準の定義

フィードの日付値はパターン「DD.MM.YYYY」(例:「26.04.2014」)、パターン「YYYY-MM-DD」(例:「2014-04-26」)、またはパターン「MM/DD/YYYY」(例:「04/26/2014」)のいずれかでフォーマットします。

日付のフィールドのフィルタリング基準を次のように定義できます:

  • value="*"

    フィールドにはどのような値も指定できます。

    たとえば、<Field name="last_seen" value="*"/> は、last_seen フィールドにどのような値でも指定できることを意味します。

  • value="%date%"

    フィールドには、指定の日付を含める必要があります。

    たとえば、<Field name="first_seen" value="14.10.2015"/> の場合、first_seen フィールドの値は、2015 年 10 月 14 日 である必要があります。

  • value="[%date1%;%date2%]"

    フィールドには、指定範囲内の日付を含める必要があります。

    たとえば、<Field name="first_seen" value="[01.02.2013;01.02.2015]"/> の場合、first_seen フィールドの値は 2013 年 2 月 1 日から 2015 年 2 月 1 日の間の日付である必要があります。

  • value="[%date1%;*]" または value="[*;%date1%]"

    日付のオープン範囲です。日付の範囲と同じです。つまり、value="[%date1%;%date2%]" となります。ただし、アスタリスク(*)は範囲が無限であることを指定しています。

    たとえば、<Field name="first_seen" value="[*;10.12.2015]"/> の場合、first_seen フィールドの値は 2015 年 12 月 10 日以前である必要があります。

フィールドのないレコードの除外

元のフィードファイルには、余分なフィールドがあることや、一部のフィールドがないことがあります。余分なフィールドがあるレコードの場合、フィードユーティリティは、指定のフィードのフィードルールRequiredFields 要素で指定されたフィールドのみを含めます。一部のフィールドがないレコードの場合、フィードユーティリティは、RequiredFields 要素で指定されたフィールドが 1 つ以上あれば、そのようなレコードを出力に含めます。RequiredFields 要素で指定された一部のフィールドが元のフィードのレコードにない場合、処理済みのフィードのレコードにそれらのフィールドは含まれません。

フィールドが欠落しているレコードを出力から除外する場合は、すべての必須フィールドでフィルタリングルールを作成する必要があります。

次の例のフィードユーティリティは、popularity フィールドか mask フィールド、または popularity フィールドと mask フィールドの両方があるレコードを含めます。

<RequiredFields>popularity;mask</RequiredFields>

popularitymask の両方があるレコードのみを含める場合は、両方のフィールドのフィルタリングルールを作成します。フィールド値の基準を指定することも、アスタリスク(*)を使用して任意の値を指定することもできます。

次の例では、両方のフィールド(maskpopularity)があるレコードのみが、生成されるフィードに含まれます。

<Filters>

<Field name="popularity" value="*"/>

<Field name="mask" value="*"/>

</Filters>

<RequiredFields>popularity;mask</RequiredFields>

厳密な基準を同じように指定することができます。次の例では、5 の値を持つ popularity フィールドと任意の値を持つ mask フィールドのみを含めるようにフィードユーティリティに指示しています。

<Filters>

<Field name="popularity" value="5"/>

<Field name="mask" value="*"/>

</Filters>

<RequiredFields>popularity;mask</RequiredFields>

メールタイプのフィードのフィルタリング

設定情報ファイル kl_feed_util の[MailboxConnection/Filters]要素でフィルタリングルールを 1 つ以上指定します。この要素は任意です。

フィルタリングルール 1 つ以上を追加する場合は、[MailboxConnection/Filters/Filter]要素で次の属性を指定します:

  • field

    subject 値(メールメッセージの件名)と from 値(メールメッセージの送信者)のいずれかまたは両方を指定します。

    メールサーバーは、次の 2 つのバリアントで[From]フィールドを保存します: sender@mail.ru または sender<sender@mail.ru>。Filter 要素の condition 属性に match がある場合は、 値は sender@mail.ru 値([From]フィールド に sender@mail.ru がある場合)または括弧内の値([From]フィールドに sender<sender@mail.ru> がある場合)と比較されます。

  • Condition

    次のフィルター条件値を設定します:

    • contains(メールメッセージの値には、このフィールドの値が含まれる必要があります)
    • not_contains (メールメッセージの値には、このフィールドの値が含まれていない必要があります)

      not_contains フィルターは、contains フィルターよりも優先されます。

      比較される値では、大文字小文字が区別されます。

    • match(メールメッセージの値は、このフィールドの値と等しい必要があります)
    • not_match (メールメッセージの値は、このフィールドの値と等しくない必要があります)

次に、メールタイプのフィードのフィルタリングルールの例を示します:

<Filters>

<Filter field="from" condition="not_match">techsupport@ya.ru</Filter>

<Filter field="subject" condition="contains">Best IoCs ever</Filter>

</Filters>

この記事はお役に立ちましたか?
改善できる点がありましたらお聞かせください。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。