Problem: add a spam-filter to a basic exim4 installation (exim4-daemon-light).
Solution:
exim4-daemon-light
with exim4-daemon-heavy
,sa-exim
, greylistd
, spamassassin
and some extra packages, see belowI had a working exim4 installation that accepted mail from a trusted server that performed spam-filtering. That server was taken out of service and now the spam-filtering part have to be done on this server instead. First, install exim4-daemon-heavy
.
apt-get install exim4-daemon-heavy
This will automatically remove exim4-daemon-light
, which is good. I tested that the new server accepted mails and contiued to install greylistd
and sa-exim
.
apt-get install greylistd sa-exim greylistd-setup-exim4 add
sa-exim
pulls in spamc
but spamc
does not depend on spamassassin
, though, since one might want to run spamassassin
on only one server in a network and spamc
on several clients. Therefore, an explicit installation of spamassassin
is needed.
apt-get install spamassassin
Now, in order to enhance the performance of spamassassin, I followed the advice in /usr/share/doc/spamassassin/README.Debian.gz
and installed some packages to be able to use precompiled patterns:
apt-get install re2c libc6-dev gcc make
To get it all started configure /etc/default/spamassassin
and set
# Change to one to enable spamd #ENABLED=0 ENABLED=1 #CRON=0 CRON=1
and configure /etc/spamassassin/v320.pre
where the following line should be un-commented
loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody
Now, compile some patterns with sa-compile
:
# sa-compile [31687] info: generic: base extraction starting. this can take a while... [31687] info: generic: extracting from rules of type body_0 96% [========================================== ] 5.32 rules/sec 00m04s LEFT
On a computer as slow as mine, it will take a while...
When the compilation is done, start spamassassin.
/etc/init.d/spamassassin start Starting SpamAssassin Mail Filter Daemon: spamd.
One thing left to do, explicitly enable spamassassin in /etc/exim4/sa-exim.conf
.
The original:
#---------------------------------------------------------------------- # Remove or comment out the following line to enable sa-exim SAEximRunCond: 0 #----------------------------------------------------------------------
must read:
#---------------------------------------------------------------------- # Remove or comment out the following line to enable sa-exim # SAEximRunCond: 0 #----------------------------------------------------------------------
I had trouble getting sa-exim
to actually run spamassassin
on the message until I realised that I did not use split_config
. greylistd
added itself to the monolithic exim4.conf.template
so it worked, but sa-exim
only added a file /etc/exim4/conf.d/main/15_sa-exim_plugin_path
. So, I had to switch to
dc_use_split_config='true'
in /etc/exim4/update-exim4.conf.conf
to get sa-exim
to run spamassassin
.
In /etc/greylistd/whitelist-hosts
I put a pattern that matches mail sent from the domain of my employer
*bar.com
And in /etc/spamassassin/local.cf
I added a few lines with mail-addresses that I trust.
whitelist_from *@bar.com whitelist_from my@baz.com
Sticking with the default 5.0 for now.
greylisting relies on that the same IP will be used for successive attempts to deliver, googles mail service does not - always - work that way. A workaround is to whitelist *google.com
in /etc/greylistd/whitelist-hosts
.
Since my ISP blocks tcp/25 outgoing I had not the possibility to use the debated callout test. Here's a two articles on the subject: for and against.
To get SPF-testing to work, I did:
apt-get install libmail-spf-query-perl
And created a file /etc/exim4/conf.d/main/00_local_options
CHECK_RCPT_REVERSE_DNS = yes CHECK_RCPT_SPF = yes
update-exim4.conf invoke-rc.d exim4 restart