Spam filter combined tests passing

This commit is contained in:
mdecimus
2023-10-20 19:18:18 +02:00
parent b5409a0b00
commit f9b37a3c99
25 changed files with 229 additions and 357 deletions

View File

@@ -19,6 +19,14 @@ secret = "changeme"
email = ["postmaster@%{DEFAULT_DOMAIN}%"]
member-of = ["superusers"]
[[directory."default".users]]
name = "john"
description = "John Doe"
secret = "12345"
email = ["john@%{DEFAULT_DOMAIN}%", "jdoe@%{DEFAULT_DOMAIN}%", "john.doe@%{DEFAULT_DOMAIN}%"]
email-list = ["info@%{DEFAULT_DOMAIN}%"]
member-of = ["sales"]
[[directory."default".users]]
name = "jane"
description = "Jane Doe"

View File

@@ -5,7 +5,7 @@
[remote."local"]
address = "127.0.0.1"
port = 11200
protocol = "local"
protocol = "lmtp"
concurrency = 10
timeout = "1m"

View File

@@ -7,6 +7,7 @@ from-name = "Automated Message"
from-addr = "no-reply@%{DEFAULT_DOMAIN}%"
return-path = ""
#hostname = "%{HOST}%"
no-capability-check = true
sign = ["rsa"]
[sieve.smtp.limits]

View File

@@ -28,6 +28,9 @@ query = ["DELETE FROM seen_ids WHERE ttl < CURRENT_TIMESTAMP",
"DELETE FROM reputation WHERE ttl < CURRENT_TIMESTAMP"]
frequency = "0 3 *"
[directory."spam"]
type = "memory"
[directory."spam".lookup."free-domains"]
type = "glob"
comment = '#'
@@ -80,33 +83,34 @@ type = "map"
values = "file://%{BASE_PATH}%/etc/spamfilter/maps/scores.map"
[sieve.smtp.scripts]
spam-filter = ["file://%{BASE_PATH}%/etc/spamfilter/scripts/config",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/prelude",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/from",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/recipient",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/subject",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/replyto",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/date",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/messageid",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/received",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/headers",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/bounce",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/html",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/mime",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/dmarc",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/ip",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/helo",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/replies_in",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/spamtrap",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/bayes_classify",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/url",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/rbl",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/pyzor",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/composites",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/scores",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/reputation",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/epilogue"]
spam-filter = ["file://%{BASE_PATH}%/etc/spamfilter/scripts/config.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/prelude.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/from.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/recipient.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/subject.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/replyto.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/date.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/messageid.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/received.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/headers.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/bounce.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/html.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/mime.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/dmarc.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/ip.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/helo.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/replies_in.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/spamtrap.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/bayes_classify.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/url.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/rbl.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/pyzor.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/composites.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/scores.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/reputation.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/epilogue.sieve"]
track-replies = "file://%{BASE_PATH}%/etc/spamfilter/scripts/replies_out.sieve"
track-replies = ["file://%{BASE_PATH}%/etc/spamfilter/scripts/config.sieve",
"file://%{BASE_PATH}%/etc/spamfilter/scripts/replies_out.sieve"]
greylist = "file://%{BASE_PATH}%/etc/spamfilter/scripts/greylist.sieve"

View File

@@ -52,7 +52,7 @@ if eval "env.dmarc.result == 'pass'" {
} else {
let "t.DMARC_POLICY_SOFTFAIL" "1";
}
} elsif eval "env.dmarc.result == ''" {
} else {
let "t.DMARC_NA" "1";
}

View File

@@ -7,13 +7,13 @@ if eval "AUTOLEARN_ENABLE && (score >= AUTOLEARN_SPAM_THRESHOLD || score <= AUTO
}
# Process score actions
if "SCORE_REJECT_THRESHOLD && score >= SCORE_REJECT_THRESHOLD" {
if eval "SCORE_REJECT_THRESHOLD && score >= SCORE_REJECT_THRESHOLD" {
reject "Your message has been rejected because it has an excessive spam score. If you feel this is an error, please contact the postmaster.";
stop;
} else if "SCORE_DISCARD_THRESHOLD && score >= SCORE_DISCARD_THRESHOLD" {
} elsif eval "SCORE_DISCARD_THRESHOLD && score >= SCORE_DISCARD_THRESHOLD" {
discard;
stop;
} else if "ADD_HEADER_SPAM" {
} elsif eval "ADD_HEADER_SPAM" {
let "spam_status" "";
if eval "score >= SCORE_SPAM_THRESHOLD" {
let "spam_status" "'Yes, score=' + score";

View File

@@ -46,7 +46,7 @@ if eval "!is_empty(rto_raw)" {
}
if eval "rto_addr == envelope.from" {
let "t.REPLYTO_ADDR_EQ_FROM" "1';
let "t.REPLYTO_ADDR_EQ_FROM" "1";
}
if eval "lookup('spam/free-domains', rto_domain_sld)" {

View File

@@ -5,7 +5,7 @@ let "spam_result" "";
while "i > 0" {
let "i" "i - 1";
let "tag" "tags[i]";
let "tag_score" "map('spam/scores', tag)";
let "tag_score" "lookup_map('spam/scores', tag)";
if eval "is_number(tag_score)" {
let "score" "score + tag_score";
@@ -16,11 +16,11 @@ while "i > 0" {
let "spam_result" "spam_result + tag + ' (' + tag_score + ')'";
}
}
} elsif eval "tag_score == 'reject' {
} elsif eval "tag_score == 'reject'" {
let "SCORE_REJECT_THRESHOLD" "1";
let "score" "2";
break;
} else if eval "tag_score == 'discard'" {
} elsif eval "tag_score == 'discard'" {
discard;
stop;
}