SpamAssassin

From ArchWiki

SpamAssassin is a mail filter to identify spam.

Installation

Install the spamassassin package.

Create a spamassassin directory in /etc/mail and change the owner and group:

# mkdir /etc/mail/spamassassin/sa-update-keys
# chown spamd:spamd /etc/mail/spamassassin/sa-update-keys
# chmod 700 /etc/mail/spamassassin/sa-update-keys

Next start/enable spamassassin.service.

Usage

Go over /etc/mail/spamassassin/local.cf and configure it to your needs.

Updating rules

Update the SpamAssassin matching patterns and compile them:

# sudo -u spamd sa-update && sudo -u spamd sa-compile

You will want to run this periodically, the best way to do so is by setting up a Systemd/Timers.

Create the following service, which will run these commands:

/etc/systemd/system/spamassassin-update.service
[Unit]
Description=spamassassin housekeeping stuff
After=network.target

[Service]
User=spamd
Group=spamd
Type=oneshot

ExecStart=/usr/bin/vendor_perl/sa-update
SuccessExitStatus=1
ExecStart=/usr/bin/vendor_perl/sa-compile
ExecStart=!/usr/bin/systemctl -q --no-block try-restart spamassassin.service

# uncomment the following ExecStart line to train SA's bayes filter
# and specify the path to the mailbox that contains spam email(s)
#ExecStart=/usr/bin/vendor_perl/sa-learn --spam <path_to_your_spam_mailbox>

Then create the timer, which will execute the previous service daily:

/etc/systemd/system/spamassassin-update.timer
[Unit]
Description=spamassassin house keeping

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Now you can start and enable spamassassin-update.timer.

Set max size for scanning

The default max size for scanning is 500 KB (see man spamc). You can modify it: create the spamc configuration file. For example :

/etc/mail/spamassassin/spamc.conf
# spamc global configuration file

# max message size for scanning = 1Mo
-s 1000000

Plugins

ClamAV

Install and setup clamd as described in ClamAV.

Follow one of the above instructions to call SpamAssassin from within your mail system.

Install the perl-cpanplus-dist-arch package. Then install the ClamAV perl library as follows:

# /usr/bin/vendor_perl/cpanp -i File::Scan::ClamAV

Add the 2 files from https://wiki.apache.org/spamassassin/ClamAVPlugin into /etc/mail/spamassassin/. Edit /etc/mail/spamassassin/clamav.pm and update $CLAMD_SOCK to point to your Clamd socket location (default is /run/clamav/clamd.ctl).

Finally, restart spamassassin.service.

Razor

Note: The last version was released 2008.[1]

Vipul's Razor is a distributed, collaborative, spam detection and filtering network.

Make sure you have installed SpamAssassin first, then:

Install the razor package.

Register with Razor.

# mkdir /etc/mail/spamassassin/razor
# chown spamd:spamd /etc/mail/spamassassin/razor
# sudo -u spamd -s
$ cd /etc/mail/spamassassin/razor
$ razor-admin -home=/etc/mail/spamassassin/razor -register
$ razor-admin -home=/etc/mail/spamassassin/razor -create
$ razor-admin -home=/etc/mail/spamassassin/razor -discover

To tell SpamAssassin about Razor, add the following line to /etc/mail/spamassassin/local.cf:

razor_config /etc/mail/spamassassin/razor/razor-agent.conf

To tell Razor about itself, add the following line to /etc/mail/spamassassin/razor/razor-agent.conf:

razorhome = /etc/mail/spamassassin/razor/

Finally, restart spamassassin.service.