This article covers a version of Ubuntu that is no longer supported. If you are currently operate a server running Ubuntu 12.04, we highly recommend upgrading or migrating to a supported version of Ubuntu:
Reason: Ubuntu 12.04 reached end of life (EOL) on April 28, 2017 and no longer receives security patches or updates. This guide is no longer maintained.
See Instead:
This guide might still be useful as a reference, but may not work on other Ubuntu releases. If available, we strongly recommend using a guide written for the version of Ubuntu you are using. You can use the search functionality at the top of the page to find a more recent version.
Spamassassin is a free and open-source mail filter written in Perl that is used to identify spam using a wide range of heuristic tests on mail headers and body text. It will save your mailbox from much unwanted spam emails.
Before installing Spamassassin, you need to install and setup a mail transfer agent such as Postfix on your virtual private server.
You can find instructions on that here
Use apt-get to install Spamassassin and spamc.
apt-get install spamassassin spamc
Once Spamassassin is installed, there are a few steps that has to be taken to make it fully functional.
To run Spamassassin you need to create a new user on your VPS.
First add the group spams:
groupadd spamd
then add the user spamd with the home directory /var/log/spamassassin:
useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
then create the directory /var/log/spamassassin:
mkdir /var/log/spamassassin
and change the ownership of the directory to spams:
chown spamd:spamd /var/log/spamassassin
Let's set up Spamassassin now.
Open the spamassassin config file using:
nano /etc/default/spamassassin
To enable Spamassassin find the line
ENABLED=0and change it to
ENABLED=1
To enable automatic rule updates in order to get the latest spam filtering rules find the line
CRON=0and change it to
CRON=1
Now create a variable named SAHOME with the Spamassassin home directory:
SAHOME="/var/log/spamassassin/"
Find and change the OPTIONS variable to
OPTIONS="--create-prefs --max-children 2 --username spamd \ -H ${SAHOME} -s ${SAHOME}spamd.log"
This specifies the username Spamassassin will run under as spamd, as well as add the home directory, create the log file, and limit the child processes that Spamassassin can run.
If you have a busy server, feel free to increase the max-children value.
Start the Spamassassin daemon by using the following code:
service spamassassin start
Now, let's config Postfix.
The emails still do not go through Spamassasin. To do that, open Postfix config file using:
nano /etc/postfix/master.cf
Find the the line
smtp inet n - - - - smtpd
and add the following
-o content_filter=spamassassin
Now, Postfix will pipe the mail through Spamassassin.
To setup after-queue content filter add the following line to the end of the file
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
For the changes to take effect restart postfix:
service postfix restart
Now postfix will use spamassassin as a spam filter.
To get the maximum use of Spamassassin you have to create rules.
Open the Spamassassin default rules file using:
nano /etc/spamassassin/local.cf
To activate a rules uncomment line remove the # symbol.
To add a spam header to spam mail uncomment or add the line:
rewrite_header Subject [***** SPAM _SCORE_ *****]
Spamassassin gives a score to each mail after running different tests on it. The following line will mark the mail as spam if the score is more than the value specified in the rule.
required_score 3.0
To use bayes theorem to check mails, uncomment or add the line:
use_bayes 1
To enable bayes auto learning, uncomment or add the line:
bayes_auto_learn 1
After adding the above details, save the file and restart spam assassin.
service spamassassin restart
To see if Spamassassin is working, you can check the spamassassin log file using:
nano /var/log/spamassassin/spamd.log
or send the email from an external server and check the mail headers.
Using Spamassassin, it is very easy to protect your mailbox from spammers. The best thing about Spamassassin is that we can create rules by ourselves and manage it. If you have a mail server, then you must also have Spamassassin!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
I have a question regarding the edit of the spamassassin file. When you add the variable OPTIONS with the following
OPTIONS=“–create-prefs --max-children 2 --username spamd
-H ${SAHOME} -s ${SAHOME}spamd.log”
Is that supposed to be all on one line? When I try putting it on two lines, the color coding for what is in quotes doesn’t recognize the line break.
@justin: It’s one line split into two lines. So <pre>OPTIONS=“–create-prefs --max-children 2 --username spamd \ -H ${SAHOME} -s ${SAHOME}spamd.log” </pre> and <pre>OPTIONS=“–create-prefs --max-children 2 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log” </pre> are the same.
Great tutorial… works fine !
Thanks for putting this up, worked great for me.
I want to use it! Great! Thanks!
Works great. Thanks
Hi,
Hello,
This tutorial work fine. But this simply appends a “SPAM” header. I need to filter to a folder. Any suggestions on how to do this?
@allendaw: See <a href=“http://wiki.apache.org/spamassassin/DeletingAllMailsMarkedSpam”>http://wiki.apache.org/spamassassin/DeletingAllMailsMarkedSpam</a>.
Thank you so much. So I coonfigured webmin and virtualmin, and Spamassassin was not working. did this tutorial, and now it works great! Thank you so much!