Spamassassin on CentOS 6
Installation
Firstly you need to update your OS distribution to latest version:
yum update -y
Install Spamassassin:
yum install spamassassin
Configuration
Open spamassassin configuration file:
nano /etc/mail/spamassassin/local.cf
Uncomment or add the following lines:
required_hits 5.0 report_safe 0 required_score 5 rewrite_header Subject [SPAM]
Add user and group for spamassassin and change owner of log directory:
groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd chown spamd:spamd /var/log/spamassassin
Integration to Postfix
Open postfix master.cf file:
nano /etc/postfix/master.cf
We should now change the master.cf file to look as follows:
# ==================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ==================================================================== smtp inet n - n - - smtpd -o content_filter=spamassassin
At the bottom of this file we should add the following line:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Before starting the spamassassin service use this command:
sa-update && /etc/init.d/spamassassin reload
Now you can to start spamassassin:
/etc/init.d/postfix reload /etc/init.d/spamassassin reload
Testing
Create an email from any address and service outside of your domain, e.g. Yahoo or Gmail. Address the email to an email address on the newly-configured mail server, then within the subject line we can use the following test string:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
If you will see [SPAM] in the subject line, Spamassassin work correctly.
Discard spam
If you see that only a real spam is being marked as spam, you can configure postfix to discard that mails and forget about spam.
Open the file /etc/postfix/main.cf and add this line (if it is not already present):
header_checks = regexp:/etc/postfix/header_checks
Open the file /etc/postfix/header_checks and add this line (if it is not already present):
/^X-Spam-Flag:.YES/ DISCARD spam
Restart postfix
service postfix restart
Example to add whitelisting rules. Simply add these lines to local.cf {usually located in /etc/mail/spamassassin}
Whitelist everyone at domain.com [all messages from this domain will be accepted]:
whitelist_from *@domain.com
Whitelist all emails sent from specified IP address:
header ALLOWN4H Received=~ /\[191.101.250.60\]/ score ALLOWN4H -9 describe ALLOWN4H Allows relays from 191.101.250.60