Spam filter combined tests passing
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[remote."local"]
|
||||
address = "127.0.0.1"
|
||||
port = 11200
|
||||
protocol = "local"
|
||||
protocol = "lmtp"
|
||||
concurrency = 10
|
||||
timeout = "1m"
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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)" {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user