Easy Spam Fighter

Credit to http://olicomber.co.uk/blog/b/Easy,_reliable_spam_fighting_with_Exim

this version has been modified for use with a DirectAdmin System.
It requires a minimum of exim.conf 4.3.x and exim.pl 20

It also requires exim be compiled with EXPERIMENTAL_SPF, which can be confirmed with:

CustomBuild 2.0 has been updated to add this to the Makefile at compile time if:
is set in the options.conf:
Recompile Exim


See this guide for automated CustomBuild 2.0 install:


See the forum for issues or questions:


The Easy Spam Fighter (simplied wording from "Easy, Reliable, Spam Fighting, with Exim") is a set of exim ACLs that do various checks, and any check that returns a result (possible spam) it then increases the score (saved and incremented in $acl_m_easy69) At the end of the DATA ACL, if the score is below the limit, run a basic smtp-time SpamAssassin call and add the "int_score to acl_m_easy69. (eg: 2.7 has int score of 27) If already above the limit, don't bother running SpamAssassin, as it will be spam already. This last skip will save CPU processing.

After all that, if the score is above a threshold, the message is rejected, at SMTP-time, and it never enters your queue. If it's below the threshold, multiple headers are added to explain each score.


-- variables.conf

If you want to customize the file, create your own file:
-- variables.conf.custom, and set only the values in this file as desired, and they'll override the defaults. You must use double == in this file, and issue ./build exim_conf to merge to the main conf.

-- check_mail.conf
Does the MX dns checks, SPF record checks, and reverse IP check.

-- check_rcpt.conf
Check on the RBLs and add score

-- check_message.conf
will run SpamAssassin if the score is low enough, but above that score, it doesn't bother.
If run, the int spam score is added.
After, the message is decided if it should be dropped.

-- /etc/virtual/esf_skip_senders
file to hold MAIL FROM addresses that ESF should skip checks for SPF, DKIM.
Uses wildlsearch, so can use *
Does not have to exist

-- /etc/virtual/esf_skip_recipients
file to hold RCPT TO addresses that ESF should skip checks for DKIM, RBL.
Uses wildlsearch, so can use *
Does not have to exist