Met de standaard instellingen werkt SpamAssassin ook al aardig, maar er kan nog veel aan verbeterd worden om SpamAssassin optimaliseren. In deze tutorial wordt uitgelegd hoe je een cronjob kunt instellen die de spamfilters regelmatig bijwerkt en hoe je SpamAssassin kunt trainen wat wel en wat geen spam is. Daarnaast wordt uitgelegd hoe je een antivirus programma zoals ClamAV je e-mailberichten kunt laten scannen.

Benodigdheden:

  • DirectAdmin (laatste versie) installatie met CustomBuild 2.0 of hoger
  • Deze tutorial is geschreven voor CentOS 7 in combinatie met DirectAdmin
  • SSH (root) toegang

Indien je dit wilt laten doen is dit natuurlijk ook mogelijk, neem dan contact met ons op.

Let op: Maak altijd een snapshot en/of backup van je systeem voordat je de software gaat upgraden! Zo kun je altijd terugvallen op een werkende configuratie mocht er iets fout gaan.

Tutorial voor het laatst bijgewerkt op 26 maart 2018.


Stap 1 – Spam tools installeren

Met de laatste versies van DirectAdmin zijn er naast SpamAssassin nieuwe tools beschikbaar om spam tegen te gaan. Dit zijn de tools Easy Spam Fighter en Blockcracking. Om deze tools samen met SpamAssassin te installeren gebruiken we het handige tooltje CustomBuild wat bij iedere DirectAdmin installatie zit. Voer de volgende commando’s uit in SSH als root om deze tools te installeren:

cd /usr/local/directadmin/custombuild
./build update
./build set spamassassin yes
./build set easy_spam_fighter yes
./build set blockcracking yes
./build set exim yes
./build set eximconf yes
./build set eximconf_release 4.5
./build update

./build exim
./build spamassassin
./build exim_conf

Na het compileren van de exim_conf zie je nu als het goed is een melding dat easy spam fighter en blockcracking geïnstalleerd zijn.

Meer informatie over Easy Spam Fighter vind je hier en meer informatie over Blockcracking vind je hier.


Stap 2 – IMAP folders aanmaken

De eerste stap is het aanmaken van twee nieuwe IMAP folders waarin je de spamberichten kunt plaatsen. In de INBOX map maak je twee nieuwe folders (dit kan met een webmail client zoals roundcube of je desktop mail client).

  • spamtraining-true
  • spamtraining-false

In de map spamtraining-true plaats je alle berichten die in je inbox gekomen zijn maar wat wel spam is. In de map spamtraining-false plaats je berichten die gekenmerkt zijn als spam maar geen spamberichten zijn. De namen kun je naar eigen wens aanpassen, maar let dan wel op bij de volgende stap om de namen daar ook te veranderen.


Stap 3 – Cronjob script

Log nu in via SSH in je server. Om het cronjob script aan te maken kan dit via root maar aangeraden wordt om in te loggen als de gebruiker in DirectAdmin waar je net de twee nieuwe spamtraining folders hebt aangemaakt. De rechten van het bestand staan dan namelijk direct goed. Grote kans dat je SSH nog moet aanzetten in DirectAdmin voor de gebruiker. Dit kan als je als reseller of admin inlogt in DirectAdmin en de gebruiker wijzigt en het vinkje aanzet voor SSH. Log nu in SSH in met de DirectAdmin gebruiker.

Zodra je bent ingelogd in SSH voer de volgende commando’s uit:

cd /home/USERNAME/.spamassassin
nano teach.sh

Kopieer nu in het teach.sh bestand het onderstaande script. Let hier wel op de volgende punten:

  • Verander regel 3 en 11,12 om de waardes naar eigen wens aan te passen.
  • De berichten kunnen automatisch verwijderd worden na elke scan, pas hiervoor de variable DELETE_TEACH_DATA=0 aan naar =1.
#!/bin/sh

DA_USER=USERNAME
DA_HOME=/home/${DA_USER}

#set this to 1 if you want the spam be removed after the run
DELETE_TEACH_DATA=0

learn_Maildir()
{
 FILESPAM=${1}/.INBOX.spamtraining-true
 FILEHAM=${1}/.INBOX.spamtraining-false

 if [ -e ${FILESPAM}/new ] || [ -e ${FILESPAM}/cur ]; then
 echo "learning spam via ${FILESPAM}...";
 sa-learn --no-sync --spam ${FILESPAM}/{cur,new}
 fi

 if [ -e ${FILEHAM}/new ] || [ -e ${FILEHAM}/cur ]; then
 echo "";
 echo "learning ham via $FILEHAM...";
 sa-learn --no-sync --ham ${FILEHAM}/{cur,new}
 fi

 if [ "$DELETE_TEACH_DATA" -eq 1 ]; then
 rm -f ${FILESPAM}/new/* ${FILESPAM}/cur/*
 rm -f ${FILEHAM}/new/* ${FILEHAM}/cur/*
 fi
}

if [ -e $DA_HOME/Maildir ]; then
 learn_Maildir $DA_HOME/Maildir
fi

for d in `ls $DA_HOME/imap`; do
{
 DOMAIN_DIR=${DA_HOME}/imap/${d}
 if [ -h $DOMAIN_DIR ]; then
 continue;
 fi

 for maildir in `ls -d ${DOMAIN_DIR}/*/Maildir 2>/dev/null`; do
 {
 learn_Maildir ${maildir}
 };
 done;
};
done;

echo "";
echo "syncing...";
sa-learn --sync

echo "";
echo "current status:"
sa-learn --dump magic

exit 0;

Pas nu de rechten aan van het bestand:

chmod 700 teach.sh

Test dit script nu als volgt met het commando:

sh teach.sh

Als alles nu goed gaat kun je zien hoeveel berichten en woorden er geanalyseerd worden.

Indien je foutmeldingen krijgt over het wegschrijven van bayes-data, controleer dan of je de volgende perl module geïnstalleerd hebt als root:

yum install perl-DB_File

Indien je andere foutmeldingen krijgt pas dan het cronjob script aan in het volgende:

sa-learn -D --sync

Dit is de debug modus. Zoek nu naar de foutmeldingen. Meestal gaat het om perl modules die niet zijn geïnstalleerd. Deze kun je installeren zoals bovenstaand commando.


Stap 4 – Cronjob instellen

Ga nu naar de cronjob pagina in DirectAdmin voor de gebruiker en maak een nieuwe cronjob aan met het volgende commando (pas USERNAME aan naar je DirectAdmin gebruiker):

 /home/USERNAME/.spamassassin/teach.sh

Bij minute vul je 30 in en bij hour 1. De rest blijven sterretjes. De cronjob wordt nu elke nacht om half twee gedraaid en de spamberichten worden nu geanalyseerd en verwerkt. Natuurlijk kun je deze cronjob laten draaien op je eigen gewenste tijdstip of meerdere keren per dag.

Als je bij de vorige stap hebt ingesteld dat berichten automatisch worden verwijderd gebeurd dat bij deze cronjob.


Stap 5 – SpamAssassin filters updaten

De spamfilters van SpamAssassin worden regelmatig bijgewerkt. Het is daarom aan te raden om regelmatig het volgende commando uit te voeren in SSH als root:

sa-update

/*
of de debugmodus:
*/

sa-update -D

Hiermee worden de spamfilters geüpdatet. Na het updaten van de spamfilters is het altijd noodzakelijk om SpamAssassin te herstarten:

service spamassassin restart

Nu heeft SpamAssassin de nieuwste spamfilters. Dit kan verder altijd handmatig gebeuren, maar het is handig om hiervoor een cronjob in te stellen zodat dit altijd automatisch gaat. Doe hiervoor het volgende:

cd /root

nano spamassassin-update-rules.sh

Plak hierin het volgende:

#!/bin/sh
sa-update
systemctl restart  spamassassin.service

Sla dit bestand op met CTRL-X. Verander dan de permissies om het uitvoerbaar te maken:

chmod +x spamassassin-update-rules.sh

Nu als laatste moeten we de crontab nog instellen zodat het script automatisch uitgevoerd gaat worden:

crontab -e

Druk nu op i om de INSERT modus aan te zetten en plak hierin nu het volgende:

#SpamAssassin update rules
0 2 * * * /root/spamassassin-update-rules.sh >> /dev/null 2>&1

Belangrijk is een nieuwe regel op het laatst. Druk nu op escape en type :wq om het bestand op te slaan.

Dit script wordt nu elke nacht om 2 uur ’s nachts uitgevoerd. Dit kun je naar wens veranderen.


Stap 6 – DirectAdmin spam instellingen

In DirectAdmin kun je ook instellingen aanpassen voor SpamAssassin. Log hiervoor in met je gebruikersnaam of admin account en ga naar de SpamAssassin instellingen.

SpamAssassin in DirectAdmin
SpamAssassin in DirectAdmin

Op deze pagina kun je zien of SpamAssassin is geactiveerd. Indien dit nog niet het geval is klik dan op Enable.

SpamAssassin instellingen
Waar moet de SPAM heen?

Hier kun je instellen waar de SPAM naar toe gaat als het ontvangen wordt:

  • Naar je inbox, wat natuurlijk niet gewenst is
  • Naar de spam folder in het algemene IMAP account
  • Naar de spam folder (onder de INBOX folder) van de gebruiker(emailadres)
  • De spam direct verwijderen zonder controle

SpamAssassin score
Aan welke score moeten de berichten voldoen om als spam gekenmerkt te worden?

Elk e-mailbericht krijgt een score. Hier kun je instellen welke score e-mailberichten moeten hebben voordat ze gezien worden als spam bericht. Standaard staat deze optie op Low (5.0) en dat is ook algemeen aan te raden. Een lagere score blokkeert meer spam, maar is het mogelijk dat sommige legitieme berichten in de spam folder terecht komen. Je kunt ook zelf een score getal instellen.


Verwijder hoge score spam
Moeten spam berichten met een hoge score direct verwijdert worden?

Hier kun je instellen of spam berichten met een hoge score direct verwijdert worden.


Onderwerp van het spambericht aanpassen
Onderwerp van het spam bericht aanpassen?

Dit is aan te raden om aan te zetten zodat je meteen kunt zien aan een bericht of het SPAM is of niet. Het onderwerp van het e-mailbericht word verandert naar *****SPAM***** + originele onderwerp.


Veiligheidsinstellingen spamberichten
Veiligheidsinstellingen spamberichten

Het is aan te raden om deze optie aan te zetten naar “Use text-only attachments”. Hiermee worden potentieel gevaarlijke berichten gefilterd en worden gevaarlijke bijlagen verwijdert.

Dit is een lijst met veelgebruikte spam domein extensies:

*@*.ar
*@*.bg
*@*.bid
*@*.biz
*@*.br
*@*.camera
*@*.cc
*@*.click
*@*.club
*@*.co
*@*.computer
*@*.cricket
*@*.date
*@*.es
*@*.faith
*@*.global
*@*.guru
*@*.help
*@*.in
*@*.info
*@*.link
*@*.media
*@*.news
*@*.ninja
*@*.nyc
*@*.org
*@*.party
*@*.photography
*@*.pt
*@*.pw
*@*.racing
*@*.review
*@*.rocks
*@*.ru
*@*.science
*@*.solutions
*@*.space
*@*.tech
*@*.today
*@*.tr
*@*.uno
*@*.vn
*@*.website
*@*.win
*@*.work
*@*.xyz

Bekijk welke extensies je wel nodig hebt en haal ze eruit. Deze lijst kun je plaatsen in het vak Email Blacklist. Zodra alle instellingen naar wens zijn klik dan op Save.

Klik hier voor een tutorial om deze Spam TLDs te blokkeren voor het gehele systeem door gebruik te maken van /etc/virtual/blacklist_domains.


Stap 7 – Controleren op ontbrekende modules

SpamAssassin maakt gebruik van een groot aantal modules. Meestal bij nieuwe installaties zijn de meeste modules nog niet geïnstalleerd. Om dit te controleren voer je het volgende commando uit:

sa-update -D

Je zit nu in de debug modus. Zoek naar het stuk waarin deze tekst veel staat:

module not installed:
of
module installed:

Als daar ontbrekende modules staan kun je deze als volgt installeren:

yum install perl-Razor-Agent
yum install perl-Net-DNS-Nameserver
yum install perl-Net-CIDR*

Als je alle ontbrekende modules geïnstalleerd hebt installeer dan SpamAssassin opnieuw:

cd /usr/local/directadmin/custombuild
./build update
./build exim
./build spamassassin
./build exim_conf

Stap 8 – Extra: Antivirus (ClamAV) installeren

Naast SpamAssassin is het ook handig om een antivirus elke e-mailbericht te scannen. Dit kan met de software ClamAV. Hoe je dit kunt doen staat uitgelegd in een aparte tutorial.


Stap 9 – Controle van het spamfilter

Methode 1:

Nadat je alle stappen hebt doorlopen is het handig om nog even te controleren of SpamAssassin daadwerkelijk draait en goed is ingesteld. Als eerste controleren of de tools zijn geïnstalleerd via CustomBuild. Voer de volgende commando’s uit in SSH als root:

cd /usr/local/directadmin/custombuild
./build update
./build versions

Nu zie je een lijst met alle geïnstalleerde software. Exim_conf moet op versie 4.3 staan. Ook moet je kunnen zien dat SpamAssassin geïnstalleerd is met de laatste versie met daarbij Easy Spam Fighter en Blockcracking. Is dit niet het geval, voer dan de stappen in Stap 1 uit.

Methode 2:

Om te zien of SpamAssassin actief is op de server voer het volgende commando uit in SSH als root:

ps ax | grep spamd

Het resultaat moet ongeveer het volgende zijn:

21276 pts/0 S+ 0:00 grep spamd
27565 ? Ss 0:03 /usr/bin/spamd -d -c -m 15
27577 ? S 0:00 spamd child
27578 ? S 0:00 spamd child

Methode 3:

Daarnaast is nog te controleren of emailberichten daadwerkelijk gescand worden door het spamfilter. Stuur een mail naar jezelf en open de headers van het mailbericht. In sommige clients is dit de optie “Toon origineel” of “Toon headers”. In de headers moet je iets in de richting zien van het volgende:

X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on
	vps.testdomein.nl
X-Spam-Level: *
X-Spam-Status: No, score=1.1 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
	HTML_MESSAGE,MIME_HTML_ONLY autolearn=no autolearn_force=no version=3.4.1

Als je dit ziet dan worden de e-mailberichten goed gescand. In de headers is te zien wat voor score het emailbericht heeft gekregen en aan welke eisen het emailbericht heeft voldaan.

Methode 4:

Om te kijken of de SpamAssassin daemon correct actief is, voer het volgende commando uit:

systemctl status spamassassin.service

Je ziet nu alle informatie over de SpamAssassin service, en of deze correct actief is.


Dat is alles! Als je nu een spam bericht in je inbox krijgt verplaats ze dan telkens naar de spamtraining-true map. Geef het een tijdje en de spamberichten moeten (veel) minder worden.

Heb je nog vragen over deze tutorial of heb je help nodig? Neem dan contact met ons op!