匹配 Spamassassin X-Spam-Status 分数或 X-Spam-Level 的 Procmail 配方
Procmail recipe to match Spamassassin X-Spam-Status score or X-Spam-Level
考虑这些邮件 headers:
X-Spam-Level: ***
X-Spam-Status: Yes, score=3.7 required=3.0 tests= (remaining truncated for brevity)
我只想匹配 headers
"X-Spam-Level: ***"(至少多一个“*”没问题)
或
"X-Spam-Status: Yes, score=3.7"(或更高分)
我有这个,它与 X-Spam-Level header 匹配,但我看到一些东西以 3.7 或更高的分数滑过,让我相信交替被跳过:
:0 H
* ^X-Spam-Status: Yes
* ^(X-Spam-Level: \*\*\*\*)|(^X-Spam-Status: Yes, score=3\.[7-9])
{
do stuff
}
尽管在 regex101.com
等网站上进行了匹配,但 Procmail 的正则表达式实现与我习惯的不太一样,无法正常工作
我完全同意只匹配 3.7 或更高分数并完全删除 X-Spam-Level 条件的解决方案。
注意:我知道我在 Spamassassin 中设置的最低分数是 3.0 以标记为垃圾邮件,但是,我将邮件发送到用户邮箱的分数在 3 到 3.6 之间并将更高级别的内容移至服务器垃圾邮件邮箱。目前,只有 4.1 或更高版本才会被传送到服务器的垃圾邮件邮箱,如 X-Spam-Level.
中的星号所示
我一直无法让它工作。相反,我修改了 Spamassassin local.cf 配置以添加 header 行:
add_header all Score _SCORE_
这会创建 X-Spam-Score 的新邮件 header:n.n 其中 n 是数字。
在 procmailrc 文件中,我将这一行添加到顶部:
# 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
在文件的后面,在调用 spamc 之后,我声明了一个变量来捕获分数然后对照它进行检查:
# 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
}
考虑这些邮件 headers:
X-Spam-Level: ***
X-Spam-Status: Yes, score=3.7 required=3.0 tests= (remaining truncated for brevity)
我只想匹配 headers
"X-Spam-Level: ***"(至少多一个“*”没问题)
或
"X-Spam-Status: Yes, score=3.7"(或更高分)
我有这个,它与 X-Spam-Level header 匹配,但我看到一些东西以 3.7 或更高的分数滑过,让我相信交替被跳过:
:0 H
* ^X-Spam-Status: Yes
* ^(X-Spam-Level: \*\*\*\*)|(^X-Spam-Status: Yes, score=3\.[7-9])
{
do stuff
}
尽管在 regex101.com
等网站上进行了匹配,但 Procmail 的正则表达式实现与我习惯的不太一样,无法正常工作我完全同意只匹配 3.7 或更高分数并完全删除 X-Spam-Level 条件的解决方案。
注意:我知道我在 Spamassassin 中设置的最低分数是 3.0 以标记为垃圾邮件,但是,我将邮件发送到用户邮箱的分数在 3 到 3.6 之间并将更高级别的内容移至服务器垃圾邮件邮箱。目前,只有 4.1 或更高版本才会被传送到服务器的垃圾邮件邮箱,如 X-Spam-Level.
中的星号所示我一直无法让它工作。相反,我修改了 Spamassassin local.cf 配置以添加 header 行:
add_header all Score _SCORE_
这会创建 X-Spam-Score 的新邮件 header:n.n 其中 n 是数字。
在 procmailrc 文件中,我将这一行添加到顶部:
# 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
在文件的后面,在调用 spamc 之后,我声明了一个变量来捕获分数然后对照它进行检查:
# 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
}