SpamAssassin

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 timer.

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 maximum size for scanning

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

Using a SQL database

SpamAssassin can load user preferences, Bayesian filter data and auto-whitelist from a SQL database. This is specially helpful for a virtual user mail setup, where users do not have a $HOME/.spamassassin directory with their SpamAssassin data.

MySQL

Install . Then, create the database:

$ mysql -u root -p
CREATE DATABASE <db_name>;
GRANT ALL ON <db_name>.* TO '<db_user>'@'localhost' IDENTIFIED BY '<password>';

Git-clone SpamAssassin's source. Under the directory you will find the required files to create the database tables. Note that has been replaced by in recent MySQL versions, so replace it accordingly in the used files if needed.

Create the tables for user preferences, Bayesian filter data and TxRep, respectively:

$ mysql -u root -p <db_name> < userpref_mysql.sql
$ mysql -u root -p <db_name> < bayes_mysql.sql
$ mysql -u root -p <db_name> < txrep_mysql.sql

TxRep is optional, skip it if you're not using it. In case you want to use it but haven't configured it yet, please refer to

Make sure to have the following in /etc/mail/spamassassin/local.cf:

## MySQL database setup
# User scores
user_scores_dsn             DBI:mysql:<db_name>:localhost
user_scores_sql_username    <db_user>
user_scores_sql_password    <password>

# Bayesian filter
bayes_store_module          Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn               DBI:mysql:<db_name>:localhost
bayes_sql_username          <db_user>
bayes_sql_password          <password>

# TxRep plugin
txrep_factory               Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn                DBI:mysql:<db_name>:localhost
user_awl_sql_username       <db_user>
user_awl_sql_password       <password>

Finally, restart spamassassin.service.

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 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 . Edit and update $CLAMD_SOCK to point to your Clamd socket location (default is ).

Finally, restart spamassassin.service.

Razor

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 :

razorhome = /etc/mail/spamassassin/razor/

Finally, restart spamassassin.service.

Tips and tricks

Maintaining TxRep SQL table

It is recommended to keep TxRep SQL table clear of stale data, for performance and storage reasons. Here is a sample query that can be run on a regular schedule:

DELETE FROM txrep WHERE last_hit <= (now() - INTERVAL 120 day);
gollark: And I can't rely on it existing for purposes.
gollark: For example, I cannot set up wildcard subdomains!
gollark: The fact is, having a bad free domain is reducing *many* opportunities for osmarks.tk development.
gollark: Anyway, I meant that I disliked it with a *value* of 22%, silly.
gollark: There will be a redirect.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.