SpamAssassin Under Exim 4.x
You will need:
Exim 4 (obviously!) from www.exim.org. I assume you have a working installation
of Exim and that you're happy messing with
exim.conf
Spamassassin from spamassassin.org (2.60 or later essential if it's to be of any use)
Download & install the latest version of SA. See
http://eu.spamassassin.org/full/2.6x/dist/INSTALL
Start the SA spam daemon, spamd (this is more efficient than
invoking Perl each time mail is delivered). You will want to add something to your startup
files to invoke spamd if/when your box restarts.
Edit your Exim configuration as follows:
Add this to somewhere in your routers section (doesn't matter where)
# SpamAssassin
spamcheck:
driver = pipe
command = /usr/exim4/bin/exim -oMr spam-scanned -bS
use_bsmtp = true
transport_filter = /usr/local/bin/spamc
home_directory = "/tmp"
current_directory = "/tmp"
# must use a privileged user to set $received_protocol on the
way back in!
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
Add this to the top of the directors section:
# SpamAssassin
spamcheck_router:
no_verify
check_local_user
# When to scan a message :
# - it isn't already flagged as spam
# - it isn't already scanned
condition = "${if and { {!def:h_X-Spam-Flag:} {!eq
{$received_protocol}{spam-scanned}}} {1}{0}}"
driver = accept
transport = spamcheck
Filtering Mail
All mail will now have a X-Spam-Status header attached to each
email, allowing you to filter the spam either client side (e.g.
in Outlook) or using Exim's own inbuilt filters. I use
Courier IMAP and in combination with a personal
.forward
file on the server, spam is simply dropped in my "Spam" folder.
# Exim filter <==DO NOT REMOVE!!
if error_message then finish endif
if
$h_X-Spam-Status: contains "Yes"
or
"${if def:h_X-Spam-Flag {def}{undef}}" is "def"
then
save $home/Maildir/.Spam/
finish
endif
“Operator! Give me the number for 911! - Homer Simpson. ”