options = {
	filters = ["spf", "dkim", "regexp"]
	url_tld = "{= env.TESTDIR =}/../lua/unit/test_tld.dat"
	pidfile = "{= env.TMPDIR =}/rspamd.pid"
	dns {
		retransmits = 10;
		timeout = 2s;
		fake_records = [{
			name = "example.net";
			type = txt;
			replies = ["v=spf1 -all"];
		}]
	}
}

logging = {
	type = "file",
	level = "debug"
	filename = "{= env.TMPDIR =}/rspamd.log"
}

metric = {
	name = "default",
	actions = {
		reject = 100500,
	}
	unknown_weight = 1
}

worker {
	type = normal
	bind_socket = "{= env.LOCAL_ADDR =}:{= env.PORT_NORMAL =}"
	count = 1
	keypair {
		pubkey = "{= env.KEY_PUB1 =}";
		privkey = "{= env.KEY_PVT1 =}";
	}
	task_timeout = 60s;
}

worker {
	type = controller
	bind_socket = "{= env.LOCAL_ADDR =}:{= env.PORT_CONTROLLER =}"
	count = 1
	keypair {
		pubkey = "{= env.KEY_PUB1 =}";
		privkey = "{= env.KEY_PVT1 =}";
	}
	secure_ip = ["127.0.0.1", "::1"];
	stats_path = "{= env.TMPDIR =}/stats.ucl";
}

# Multi-class Bayes classifier configuration
classifier {
	languages_enabled = true;
	tokenizer {
		name = "osb";
		hash = {= env.STATS_HASH =};
		key = {= env.STATS_KEY =};
	}
	backend = "{= env.STATS_BACKEND =}";

	# Multi-class statfiles
	statfile {
		class = "spam";
		symbol = BAYES_SPAM;
		server = {= env.REDIS_SERVER =}
	}
	statfile {
		class = "ham";
		symbol = BAYES_HAM;
		server = {= env.REDIS_SERVER =}
	}
	statfile {
		class = "newsletter";
		symbol = BAYES_NEWSLETTER;
		server = {= env.REDIS_SERVER =}
	}

	# Backend class labels for Redis
	class_labels = {
		"spam" = "S";
		"ham" = "H";
		"newsletter" = "N";
	}

	cache {
		server = {= env.REDIS_SERVER =}
	}

	# Multi-class autolearn configuration
	autolearn = {
		classes = {
			spam = {
				threshold = 15.0;
				verdict_mapping = { spam = true };
			};
			ham = {
				threshold = -5.0;
				verdict_mapping = { ham = true };
			};
			newsletter = {
				symbols = ["NEWSLETTER_HEADER", "BULK_MAIL", "UNSUBSCRIBE_LINK"];
				threshold = 8.0;
			};
		};

		check_balance = true;
		max_class_ratio = 0.6;
		skip_threshold = 0.95;
	}

	min_learns = 1;
	min_tokens = 1;
	min_token_hits = 1;
	min_prob_strength = 0.05;

	{% if env.STATS_PER_USER ~= '' %}
	per_user = <<EOD
return function(task)
  return task:get_principal_recipient()
end
EOD;
	{% endif %}
}

lua = "{= env.TESTDIR =}/lua/test_coverage.lua";

settings {}
