最近、職場でメール本文にマルウェアと思われるコンテンツを含むメールが届き始めました。次のように、正規表現を使用して長い文字列にリストされている単語以外の文字のみを一致させるprocmailレシピを作成しようとしています。
/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#Afe0:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#Jenny:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#preston:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#Afectarac:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#FORTHCO:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#backgrounds:/]\/[%}(-:{{[%+\!(?|}[[+{>-|*;\]}>?]}?(>:-\-/[\[%-=\//>[??+]}}(:)/|{/#legumes
スペースがないことに注意してください。これは小さな例です。一部のメールの行の長さは20,000文字を超えています。これにより、スパムフィルタリングがめちゃくちゃになり、スペース区切りなしで単語ではなく文字の長い行を一致させる方法があることを願っています。これまで、以下のいくつかのバリエーション/彫刻/組み合わせを試みましたが、部分的な成功だけを収めました。多くの偽の肯定を捉えずにこれを行う方法を見つけるのに苦労しています。
:0
* B ?? ^.*(!@#$%^&*()[]{})+ && ! </([a-z|A-Z])/>
$DEFAULT/MalSpam/
私は一致する正規表現を作成し、1行あたりの総文字数が特定の数(500など)を超える場合は、別の電子メールで送信するために他のルールと組み合わせることができると思いました。まだこの部分を把握していません...過去に私が使用した他の正規表現には、単語ではなく文字にのみ一致する\ Wフラグがありました。 procmailに該当するものはありますか?どうすればいいですか?
ベストアンサー1
最後の質問については\W
必要ありません。逆の操作を実行できます\w
。たとえば、これが単語文字[a-zA-Z0-9_]
(例えば、Vimの定義\w
)であると思われる場合を使用します[^a-zA-Z0-9_]
。