フィルタリングルールは、フィードユーティリティが元のフィードファイルのフィルタリングに使用する基準です。
フィルタリングルールは、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 フィールドにどのような値でも指定できることを意味します。
%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> |
popularity と mask の両方があるレコードのみを含める場合は、両方のフィールドのフィルタリングルールを作成します。フィールド値の基準を指定することも、アスタリスク(*)を使用して任意の値を指定することもできます。
次の例では、両方のフィールド(mask と popularity)があるレコードのみが、生成されるフィードに含まれます。
<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]要素で次の属性を指定します:
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> がある場合)と比較されます。
次のフィルター条件値を設定します:
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> |