2

procmail を使用して、"To" フィールドに私の名前 ("John Doe") が含まれていない受信メールを "Junk" フォルダに移動したいと考えています。

ただし、オンライン テスト アプリで正規表現を徹底的にテストして、正規表現が本来あるべきものと一致することを確認したにもかかわらず、次のルールは効果がないようです。

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

参考までに、私の procmail ルール ファイル全体は次のとおりです。

# Filter mail using SpamAssassin
:0fw: spamassassin.lock
* < 256000
| /usr/bin/spamassassin

# Filter spam based on "Spam-Level"
:0:
* ^X-Spam-Level: \*\*
.Junk/

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

ルールが機能しないのはなぜですか?

ご協力ありがとうございます。

4

1 に答える 1

4

Perl の先読みは Procmail の正規表現レパートリーの一部ではないためです。

代わりにこれを試してください。

:0
* ! ^To:.*John[  ]+Doe
.Junk/

[ ] 内の空白は、スペースとタブにする必要があります。\sPerlism もサポートされていません。

メール アドレスをフィルタリング基準として使用し、Cc: などをカバーする特別なマクロを使用する方がよいかもしれません^TO_。もちろん、アカウントに対して Bcc: を処理することはできません。

于 2012-07-27T14:43:57.090 に答える