Skip to content
Simple library for spam filtering of emails, newsgroup messages, blog comments and similar.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This library currently provides only very simple means to filter spam messages. It was broken out to a separate project so that it can be shared between different projects:

Example usage

ìmport antispam.antispam;
import : parseJsonString;
import std.algorithm.comparison : among;

void main()
	auto config = parseJsonString(
			{"filter": "bayes"},
			{"filter": "blacklist",
				"settings": {
					"ips": ["", ""]

	auto antispam = new AntispamState;

	AntispamMessage msg;
	msg.headers["Subject"] = "8uy CH34P V14GR4!!11";
	msg.message = cast(const(ubyte)[])"Just look here: http://bestdrugdealz.c0m";
	msg.peerAddress = ["123.52.433.1", "vps12315.some.provider.n3t"];

		(status) {
			if (status.among(SpamAction.revoke, SpamAction.block))
				throw new Exception("Your message has been rejected!");
			// otherwise store message...
		(async_status) {
			if (async_status.among!(SpamAction.revoke, SpamAction.block)) {
				// Flag or delete the stored message.

			// It could also theoretically happen here that async_status is amnesty
			// or pass, so that a message that was already rejected in the first
			// phase would be accepted in retrospective. You'll have to decides on
			// a per-application basis if it makes sense to support this case, or
			// if immediate rejections always have precedence.
You can’t perform that action at this time.