Configuring Spamassassin Ubuntu Gutsy

From Scalix Wiki
Jump to: navigation, search

Important Note

Please note that these manual installation instructions should only be used on Ubuntu distributions, such as Ubuntu Gutsy Gibbon 7.10 server, the distribution the document was written for. If you install Scalix on an unsupported platform, this invalidates your ability to receive Scalix support. Thank you for your understanding and compliance.

This document might be inaccurate and under construction. Do not trust this document.


Configuring Spamassassin on Ubuntu 7.10 Server (Gutsy Gibbon)

As Ubuntu 7.10 is an unsupported platform there is currently no manual describing the configuration of spamassassin (an advanced spam filtering solution) to be used with Scalix. As I managed to get Scalix it up and running and I already documented and shared this with the community (here), I thought it would be useful to share my experiences regarding the spamassassin configuration as well.

So below you'll find a how-to that describes the configuration of spamassassin to be used with Scalix on a Ubuntu 7.10 server.

Spamassassin is a computer program released under the Apache License 2.0 used for e-mail spam filtering based on content-matching rules, which also supports DNS-based, checksum-based and statistical filtering, supported by external programs and online databases.

I used several sources of information on the web. I listed the ones I can remember at the end of the document under Sources.


Applicable Environments

These Installation instructions have been tested with

  • Scalix CE 11.3.0
  • Ubuntu 7.10 Server (Gutsy Gibbon)

They might not apply unmodified to any other version of Scalix or Ubuntu.


Install the spamassassin software

Spamassassin is Open Source Software available on the internet here. Under Ubuntu we have a package available that can be installed directly with apt-get. So install the spamassassin package:

sudo apt-get install spamassassin spamass-milter


Configure spamassassin

Configure Scalix

Scalix can now be configured to filter mail through spamassassin (using sendmail). You can achieve this by adding one line to the /var/opt/scalix/<instance>/s/sys/smtpd.cfg configuration file. Please add this line:

SMTPFILTER=TRUE

above the line:

RELAY accept 127.0.0.1

Configure sendmail

To make sendmail use spamassassin to filter all mail passing by, another file needs to be added to the /etc/mail/sendmail.mc. Add this line at the end of the file:

INPUT_MAIL_FILTER(`spamassassin',`S=local:/var/run/spamass/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl

Now use the M4 macro processor to translate the /etc/mail/sendmail.mc file into a format sendmail understands (/etc/mail/sendmail.cf). This can be taken out by:

sudo bash -c "cd /etc/mail/ && m4 sendmail.mc > sendmail.cf"

Configure spamassassin

To make spamassassin run in daemon mode, you'll have to edit the configuration files: /etc/default/spamassassin and /etc/default/spamass-milter.

In the file /etc/default/spamassassin you have to change the line ENABLED=0 into ENABLED=1. After that the file should look like this:

# /etc/default/spamassassin
# Duncan Findlay

# WARNING: please read README.spamd before using.
# There may be security risks.

# Change to one to enable spamd
ENABLED=1

# Options
# See man spamd for possible options. The -d option is automatically added.

# SpamAssassin uses a preforking model, so be careful! You need to
# make sure --max-children is not set to anything higher than 5,
# unless you know what you're doing.

OPTIONS="--create-prefs --max-children 5 --helper-home-dir"

# Pid file
# Where should spamd write its PID to file? If you use the -u or
# --username option above, this needs to be writable by that user.
# Otherwise, the init script will not be able to shut spamd down.
PIDFILE="/var/run/spamd.pid"

# Set nice level of spamd
#NICE="--nicelevel 15"

# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=0

In the file /etc/default/spamass-milter you have to change the line OPTIONS="-u spamass-milter -i 127.0.0.1" into OPTIONS="-u spamass-milter". After that the file should look like this:

# spamass-milt startup defaults

# OPTIONS are passed directly to spamass-milter.
# man spamass-milter for details

# Default, use the nobody user as the default user, ignore messages
# from localhost
OPTIONS="-u spamass-milter"

# Reject emails with spamassassin scores > 15.
#OPTIONS="-r 15"

# Do not modify Subject:, Content-Type: or body.
#OPTIONS="-m"

######################################
# If /usr/sbin/postfix is executable, the following are set by
# default. You can override them by uncommenting and changing them
# here.
######################################
# SOCKET="/var/spool/postfix/spamass/spamass.sock"
# SOCKETOWNER="postfix:postfix"
# SOCKETMODE="0660"
######################################


Start spamassassin and restart sendmail and Scalix smtp services

First let's start the spamassassin services, do so using the following commands:

sudo /etc/init.d/spamassassin start
sudo /etc/init.d/spamass-milter start

Next, let's restart the sendmail daemon:

sudo /etc/init.d/sendmail restart

And last but not least, restart the Scalix smtp service. To do this, you'll first have to stop the Scalix smtpd via this command:

sudo /opt/scalix/bin/omoff -w -d 0 smtpd

After the service has been stopped successfully, you can start it again by invoking:

sudo /opt/scalix/bin/omon smtpd


Check the spamassassin configuration

Next, to check the configuration, have a look at the log file /var/log/mail.log. You can check it by using:

tail -400 /var/log/mail.log

If the spamassassin configuration is working correctly this type of output should appear in the mail.log file:

Feb  3 19:26:40 shrek2 spamd[26614]: prefork: child states: II
Feb  3 19:26:41 shrek2 spamd[26618]: spamd: connection from localhost [127.0.0.1] at port 34577
Feb  3 19:26:41 shrek2 spamd[26618]: spamd: still running as root: user not specified with -u, not found, or set to root, falling back to nobody
Feb  3 19:26:41 shrek2 spamd[26618]: spamd: processing message <4IX408EJXVWDA658@igsnow.com> for max.wiertz:65534
Feb  3 19:26:52 shrek2 spamd[26618]: spamd: identified spam (15.5/5.0) for max.wiertz:65534 in 10.2 seconds, 1908 bytes.
Feb  3 19:26:52 shrek2 spamd[26618]: spamd: result: Y 15 - RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E4_51_100,RAZOR2_CHECK,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_PBL,RCVD_IN_SORBS_DUL,RCVD_IN_XBL,RDNS_NONE,SUSPICIOUS_RECIPS,URIBL_SBL scantime=10.2,size=1908,user=max.wiertz,uid=65534,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=34577,mid=<4IX408EJXVWDA658@igsnow.com>,autolearn=failed

If there's something wrong, have a look at the exact error message and fix the problem. If everything is all right, then you're done: congratulations!


Sources


The author

The origin for this document was written by Max Wiertz. As a Scalix newbie, I invested a lot of work in getting Scalix together with spamassassin to work for me on Ubuntu. I felt like sharing this with all of you, so you can probably take advantage of it.

If you have any questions, remarks, comments or suggestions regarding this document, do not hesitate to contact me by e-mail: mailto:max_DOT_wiertz_AT_gmail_DOT_com.