1

ここで同様の質問を読みましたが、すべての正規表現が等しく作成されていないため、問題の解決策を見つけることができませんでした.

私は、受信者の電子メール ユーザー名がメッセージの本文に含まれているかどうかを通知する SpamAssassin のルールに取り組んでいます。たとえば、に送信された電子メールは、メッセージの本文にtestuser@somedomain.com含まれています。Regex-101testuserで正規表現を作成してテストし、期待どおりに一致させることができましたが、ルールを作成して SpamAssassin でテストすると機能しません。

式は次のとおりです。

/To:\s([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i

すべきことはTo:ヘッダーの電子メール アドレス(または形式に一致するメッセージの本文の任意の場所) と一致することですTo: user@somedomain.com。前述のように、式は Regex-101 で期待どおりに一致しますが、SpamAssassin でルールを作成すると、 、一致しません。

先頭を削除すると一致しますが、ヘッダーTo:\s内の電子メールの一致のみに関心があります。To:私は式のこれらのさまざまな突然変異を試しました:

/To:\s([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i
/To: ([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i
/To:[\s]{0,2}([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i
/:\s([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i

/\s([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i

前のルールはどれも一致しませんが、次のルールは一致します。

/([a-z0-9][-a-z0-9]{1,19})\@somedomain\.com[a-z0-9\s=;:\/\.-]*\1\b/i

テストに使用するテキストは次のとおりです。

Subject: Test spam mail (GTUBE) private jet rental
Message-ID: <GTUBE1.1010101@example.net>
Date: Wed, 23 Jul 2003 23:30:00 +0200
From: Sender <sender@live.com>
To: recipient@somedomain.com
Precedence: junk
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
recipient
This is the GTUBE, the
    Generic
    Test for
    Unsolicited
    Bulk
    Email

....で一致する必要To: recipient@somedomain.comがありますが、式からrecipientを削除した場合にのみ一致させることができTo:\sます。完全な式は Regex-101 でテストされるため、SpamAssassin に固有のもののようですが、よくわかりません。

編集

これは、ユーザー名の末尾にダッシュを許可せず、途中で許可する式の更新バージョンです。

/\bTo:\s([a-z0-9][-a-z0-9]{0,18}[a-z0-9])\@somedomain\.com[a-z0-9\s=;:\/\.-]*\b\1\b/i
4

1 に答える 1

2

チャットで @sln の助けを借りて、期待どおり完全なルールに一致する次の式を思いつきました。

/To:\s+([a-z0-9][-a-z0-9]{1,18}[a-z0-9])\@somedomain\.com[\S\s]*?\1\b/i

これは に一致するTo: username@somedomain.com ... usernameため、ほとんどの場合、メッセージの本文に受信者のユーザー名が含まれるすべての電子メール メッセージに一致するはずです。私たちの場合、受信するスパム電子メールの多くには、次のようなユーザー名が含まれています。

Greetings username!  Blah Blah Blah spam message.

最終的に修正されたのは、[a-z0-9\s=;:\/\.-]*次の電子メールアドレスを[\S\s]*?

于 2015-07-07T23:33:57.973 に答える