Import upstream v0.16.22, stripped
Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
require ["variables", "include", "vnd.stalwart.expressions", "reject"];
|
||||
|
||||
global "score";
|
||||
|
||||
# Create AWL table
|
||||
if eval "!query('sql', 'CREATE TABLE awl (score FLOAT, count INT, sender TEXT NOT NULL, ip TEXT NOT NULL, PRIMARY KEY (sender, ip))' , [])" {
|
||||
reject "create table query failed";
|
||||
stop;
|
||||
}
|
||||
|
||||
|
||||
set "score" "1.1";
|
||||
include "awl_include";
|
||||
if eval "score != 1.1" {
|
||||
reject "awl_include #1 set score to ${score}";
|
||||
stop;
|
||||
}
|
||||
|
||||
set "score" "2.2";
|
||||
include "awl_include";
|
||||
if eval "score != 1.6500000000000001" {
|
||||
reject "awl_include #2 set score to ${score}";
|
||||
stop;
|
||||
}
|
||||
|
||||
set "score" "9.3";
|
||||
include "awl_include";
|
||||
if eval "score != 5.4750000000000005" {
|
||||
reject "awl_include #3 set score to ${score}";
|
||||
stop;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
require ["variables", "include", "vnd.stalwart.expressions", "reject"];
|
||||
|
||||
global "score";
|
||||
set "awl_factor" "0.5";
|
||||
|
||||
let "result" "query('sql', 'SELECT score, count FROM awl WHERE sender = ? AND ip = ?', [env.from, env.remote_ip])";
|
||||
|
||||
let "awl_score" "result[0]";
|
||||
let "awl_count" "result[1]";
|
||||
|
||||
if eval "awl_count > 0" {
|
||||
if eval "!query('sql', 'UPDATE awl SET score = score + ?, count = count + 1 WHERE sender = ? AND ip = ?', [score, env.from, env.remote_ip])" {
|
||||
reject "update query failed";
|
||||
stop;
|
||||
}
|
||||
let "score" "score + ((awl_score / awl_count) - score) * awl_factor";
|
||||
} elsif eval "!query('sql', 'INSERT INTO awl (score, count, sender, ip) VALUES (?, 1, ?, ?)', [score, env.from, env.remote_ip])" {
|
||||
reject "insert query failed";
|
||||
stop;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
require ["variables", "spamtest", "spamtestplus", "reject"];
|
||||
|
||||
set "level" "none";
|
||||
set "percent" "none";
|
||||
|
||||
if spamtest :matches "*" {
|
||||
set "level" "${0}";
|
||||
}
|
||||
|
||||
if spamtest :percent :matches "*" {
|
||||
set "percent" "${0}";
|
||||
}
|
||||
|
||||
reject "spamtest=${level} percent=${percent} score=${env.spam.score} is_spam=${env.spam.is_spam}";
|
||||
@@ -0,0 +1,5 @@
|
||||
require ["variables", "reject"];
|
||||
|
||||
if string "${env.remote_ip}" "10.0.0.88" {
|
||||
reject "Your IP '${env.remote_ip}' is not welcomed here.";
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
require ["envelope", "reject", "variables", "replace", "mime", "foreverypart", "editheader", "extracttext", "enotify"];
|
||||
|
||||
if envelope :localpart :is "to" "thomas" {
|
||||
deleteheader "from";
|
||||
addheader "From" "[email protected]";
|
||||
redirect "[email protected]";
|
||||
discard;
|
||||
}
|
||||
|
||||
if envelope :localpart :is "to" "bob" {
|
||||
redirect "[email protected]";
|
||||
discard;
|
||||
}
|
||||
|
||||
if envelope :localpart :is "to" "bill" {
|
||||
reject "Bill cannot receive messages.";
|
||||
stop;
|
||||
}
|
||||
|
||||
if envelope :localpart :is "to" "jane" {
|
||||
set "counter" "a";
|
||||
foreverypart {
|
||||
if header :mime :contenttype "content-type" "text/html" {
|
||||
extracttext :upper "text_content";
|
||||
replace "${text_content}";
|
||||
}
|
||||
set :length "part_num" "${counter}";
|
||||
addheader :last "X-Part-Number" "${part_num}";
|
||||
set "counter" "${counter}a";
|
||||
}
|
||||
}
|
||||
|
||||
if envelope :domain :is "to" "foobar.net" {
|
||||
notify "mailto:[email protected][email protected]&subject=You%20have%20got%20mail";
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
require ["variables", "extlists", "reject"];
|
||||
|
||||
if eval "contains(['spammer.org', 'spammer.net'], env.helo_domain)" {
|
||||
reject "551 5.1.1 Your domain '${env.helo_domain}' has been blocklisted.";
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
require ["variables", "envelope", "reject", "vnd.stalwart.expressions"];
|
||||
|
||||
if envelope :localpart :is "from" "spammer" {
|
||||
reject "450 4.1.1 Invalid address";
|
||||
}
|
||||
|
||||
eval "query('sql', 'CREATE TABLE IF NOT EXISTS blocked_senders (addr TEXT PRIMARY KEY)', [])";
|
||||
eval "query('sql', 'INSERT OR IGNORE INTO blocked_senders (addr) VALUES (?)', '[email protected]')";
|
||||
|
||||
if eval "query('sql', 'SELECT 1 FROM blocked_senders WHERE addr=? LIMIT 1', [envelope.from])" {
|
||||
reject "Your address has been blocked.";
|
||||
}
|
||||
|
||||
if eval "!is_local_domain('foobar.org') || is_local_domain('other.org')" {
|
||||
let "reason" "'result: ' + is_local_domain('foobar.org') + ' ' + is_local_domain('other.org')";
|
||||
reject "is_local_domain function failed: ${reason}";
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
require ["variables", "envelope", "reject", "vnd.stalwart.expressions"];
|
||||
|
||||
if envelope :domain :is "to" "foobar.org" {
|
||||
eval "query('sql', 'CREATE TABLE IF NOT EXISTS greylist (addr TEXT PRIMARY KEY)', [])";
|
||||
|
||||
set "triplet" "${env.remote_ip}.${envelope.from}.${envelope.to}";
|
||||
|
||||
if eval "!query('sql', 'SELECT 1 FROM greylist WHERE addr=? LIMIT 1', [triplet])" {
|
||||
eval "query('sql', 'INSERT INTO greylist (addr) VALUES (?)', [triplet])";
|
||||
reject "422 4.2.2 You have been greylisted '${triplet}'.";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user