Рецепт Procmail, соответствующий значению X-Spam-Status Spamassassin или X-Spam-Level - PullRequest
0 голосов
/ 14 апреля 2020

Рассмотрим следующие почтовые заголовки:

X-Spam-Level: ***
X-Spam-Status: Yes, score=3.7 required=3.0 tests= (remaining truncated for brevity)

Я просто хочу сопоставить заголовки

"X-Spam-Level: ***" (по крайней мере, с большим количеством "*", все в порядке )

или

"X-Spam-Status: Да, оценка = 3,7" (или более высокая оценка)

У меня есть это, что соответствует X-Spam- Заголовок уровня, но я вижу, что материал проскальзывает со счетом 3,7 или выше, заставляя меня поверить, что чередование пропускается:

:0 H
    * ^X-Spam-Status: Yes
    * ^(X-Spam-Level: \*\*\*\*)|(^X-Spam-Status: Yes, score=3\.[7-9])
    { 
        do stuff
}

Реализация регулярных выражений в Procmail не совсем такая же, как я Я привык и не могу заставить это работать, несмотря на сопоставление на таких сайтах, как regex101.com

У меня все в порядке с решением, равным 3,7 или выше, и удалением X-Spam-Level условие полностью.

Примечание: Мне известно, что минимальный счет, который я установил в Spamassassin, составляет 3,0, чтобы пометить его как спам, однако я доставляю вещи в почтовый ящик пользователя в диапазоне от 3 до 3,6 и переместить что-нибудь выше в почтовый ящик спама на сервере. В настоящее время он доставляется только в почтовый ящик для спама сервера, если он версии 4.1 или выше, что обозначено звездочками в X-Spam-Level.

1 Ответ

0 голосов
/ 15 апреля 2020

Я никогда не мог заставить это работать. Вместо этого я изменил конфигурацию Spamassassin local.cf, добавив строку заголовка:

add_header all Score _SCORE_

Это создаст новый почтовый заголовок X-Spam-Score: nn, где n - цифры.

В файле procmailr c я добавил эту строку вверху:

# Change this value to be whatever threshold
# you want
# Spam scored between 3 and 3.6 will be delivered.
# Spam scored over 3.6 won't.
SPAMTHRESHOLD=3.6

Позже в файле, после вызова спама c, я объявляю переменную для захвата оценки, а затем проверяю ее :

# Create SCORE variable which contains the header I created in Spamassassin
:0 # H flag is implicit
    * ^X-Spam-Score: \/.+
    { SCORE=$MATCH }

# Check for Spam-Status: Yes, and 
# $SCORE > $SPAMTHRESHOLD
:0 H
    * ^X-Spam-Status: Yes
    * $ -${SPAMTHRESHOLD}^0
    * $ ${SCORE}^0
    { 
        # do stuff. in this case move the mail to 
        # /var/mail/spam
        :0:spam.lock
        /var/mail/spam
}

...