Installazione e configurazione di Spamassassin

3 maggio 2015 Roberto Puzzanghera0 commenti

SpamAssassin is a mature, widely-deployed open source project that serves as a mail filter to identify Spam. SpamAssassin uses a variety of mechanisms including header and text analysis, Bayesian filtering, DNS blocklists, and collaborative filtering databases. SpamAssassin runs on a server, and filters spam before it reaches your mailbox.

Aggiornamento di spamassassain alla versione 3.4.1

Lo scorso 30 aprile 2015 è stato annunciato il rilascio della versione 3.4.1. Il plugin TxRep plugin è ora incluso anche se disabilitato per default perchè prima va disabilitato AWL.

Ecco come ho proceduto:

qmailctl stop
spamdctl stop
perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> force notest install Geo::IP IO::Socket::IP Net::Patricia NetAddr::IP
cpan> force notest install Mail::SpamAssassin Mail::SpamAssassin::Plugin::Razor2
cpan> quit
sa-update

Poi ho abilitato tutti i nuovi plugin dal file /etc/mail/spamassassin/v341.pre e disabilitato Mail::SpamAssassin::Plugin::AWL da v310.pre. Infine ho inserito queste due opzioni nel local.cf:

use_txrep 1
txrep_factory Mail::SpamAssassin::SQLBasedAddrList

Ricordarsi di far ripartire i server

spamdctl start
qmailctl start

Installazione

perl -MCPAN -e shell
o conf prerequisites_policy ask
install Mail::SpamAssassin
quit

Per gli utenti Slackware

  • REQUIRED module missing: HTML::Parser
  • REQUIRED module missing: Net::DNS
  • REQUIRED module missing: NetAddr::IP
  • optional module missing: Digest::SHA1
  • optional module missing: Mail::SPF
  • optional module missing: Razor2
  • optional module missing: IO::Socket::INET6
  • optional module missing: IO::Socket::SSL
  • optional module missing: Mail::DKIM
  • optional module missing: LWP::UserAgent
  • optional module missing: HTTP::Date
  • optional module missing: Encode::Detect
  • optional module missing: Geo::IP
  • optional module missing: IO::Socket::IP
  • optional module missing: Net::Patricia

Questi moduli mancano e devono essere installati con CPAN. Alcuni di essi hanno a loro volta delle dipendenze...

Alla fine questi sono i moduli che ho installato, nel seguente ordine (rispondere yes se vengono trovate delle dipendenze, installare il tutto in questo ordine)

perl -MCPAN -e shell
o conf prerequisites_policy ask

force notest install Socket6 IO::Socket IO::Socket::INET6 LWP install MD5 CPAN::DistnameInfo Mail::DKIM

Installare i prerequisiti di Net::DNS:

force notest install Test::More MIME::Base64 Digest::MD5 Digest::HMAC_MD5 Net::IP

Continuare installando (sempre da CPAN):

force notest install Net::Ping Net::DNS Time::HiRes Digest::SHA1 Getopt::Long Digest::Nilsimsa URI::Escape HTML::Parser HTTP::Date IO::Zlib Archive::Tar Mail::SPF
force notest install Mail::SPF::Query Net::Ident IO::Socket::SSL Mail::DomainKeys Mail::DKIM LWP::UserAgent HTTP::Date Encode::Detect

Ora scaricare e installare (in questo ordine) razor-agent-sdk e razor-agent (scaricare l'ultima versione da qui):

tar xjf razor-agents-sdk-2.07.tar.bz2
cd razor-agents-sdk-2.07
chown -R root.root .
perl Makefile.PL
make
make install

cd ..
tar xjf razor-agents-2.85.tar.bz2
cd razor-agents-2.85
chown -R root.root .
perl Makefile.PL
make
make install

perl -MCPAN -e shell
o conf prerequisites_policy ask

Installare ora questi moduli

force notest install Storable DB_File Net::SMTP IP::Country::Fast BerkeleyDB
force notest install Geo::IP IO::Socket::IP Net::Patricia

Infine, se tutto è ok installare Spamassassin e Razor  da CPAN

force notest install Mail::SpamAssassin Mail::SpamAssassin::Plugin::Razor2

Ho dovuto dare un "force" all'installzione.. comunque funziona.

Configurazione

Creare l'utente e il gruppo spamd:

groupadd spamd
useradd -g spamd -d /home/spamd spamd
chown -R spamd.spamd /home/spamd

I file di configurazione sono in /etc/mail/spamassassin

# cd /etc/mail/spamassassin
# ls
init.pre  local.cf  v310.pre  v312.pre  v320.pre  v330.pre

local.cf

# Add *****SPAM***** to the Subject header of spam e-mails
# rewrite_header Subject *****SPAM*****
# put here your subnet
trusted_networks 10.0.0.
# Set the threshold at which a message is considered spam (default: 5.0)
required_score 5.0
use_bayes 1
bayes_auto_learn 1
use_txrep 1
txrep_factory Mail::SpamAssassin::SQLBasedAddrList

init.pre

# RelayCountry - add metadata for Bayes learning, marking the countries
# a message was relayed through
#
# Note: This requires the IP::Country::Fast Perl module
#
loadplugin Mail::SpamAssassin::Plugin::RelayCountry

# URIDNSBL - look up URLs found in the message against several DNS
# blocklists.
#
loadplugin Mail::SpamAssassin::Plugin::URIDNSBL

# Hashcash - perform hashcash verification.
#
loadplugin Mail::SpamAssassin::Plugin::Hashcash

# SPF - perform SPF verification.
#
loadplugin Mail::SpamAssassin::Plugin::SPF

Test

Lanciare questo test di debug dalla linea di comando. Se non si ottengono errori tutto è pronto per lanciare il daemone.

sudo -u spamd -H spamassassin -D --lint

sa-update

sa-update aggiorna le regole (richiede gpg 1.4). Prima di avviare spamassassin per la prima volta è necessario scaricare le regole:

sa-update

Aggiungere poi al crontab questa riga per aggiornare le regole quotidianamente

# spamassassin update
30 3 * * * /usr/bin/sa-update --nogpg -v &

L'ozione -v produrrà un avviso email nella casella postmaster.

Avvio di spamassassin

Scaricare lo startup script. E' necessario sostituire l'IP del tuo firewall e metterlo in /usr/local/bin/spamdctl o /etc/rc.d/rc.spamd e renderlo eseguibile. Controllare che il path dove è stato installato spamd coincida con quello indicato nello script seguente.

#!/bin/sh

# Spamd init script
# August, 2th 2003
# Martin Ostlund, nomicon
# Modified slightly by Troy Belding for Qmailrocks - February 23, 2004
# Modified by Roberto Puzzanghera - September 02, 2014

DAEMON=/usr/local/bin/spamd
NAME=spamd
SNAME=spamdctl
DESC="SpamAssassin Mail Filter Daemon"
PIDFILE="/var/run/$NAME.pid"
PNAME="spamd"

DOPTIONS="-x -u spamd -A 127.0.0.1,[firewall-IP] -s /var/log/spamd.log -H /home/spamd -d --pidfile=$PIDFILE"

KILL="/bin/kill"
KILLALL="/bin/killall"
# Defaults - don''t touch, edit /etc/mail/spamassassin/local.cf
ENABLED=0
OPTIONS=""

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON $OPTIONS $DOPTIONS

echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
$KILL -9 `cat $PIDFILE`
/bin/rm $PIDFILE
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
$0 stop
$0 start

echo "$NAME."
;;
*)
ME=/usr/local/bin/$SNAME
echo "Usage: $ME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0

Controlliamo che spamd sia in esecuzione:

# spamdctl start
# ps axfu|grep spamd
root      1859  0.1  3.4 139360 61044 ?        Ss   19:00   0:01 /usr/bin/spamd -x -u spamd -A 127.0.0.1,[firewall-IP] -H /home/spamd -d --pidfile=/var/run/spamd.pid
spamd     1860  0.0  3.2 139360 58984 ?        S    19:00   0:00  \_ spamd child
spamd     1861  0.0  3.2 139360 58984 ?        S    19:00   0:00  \_ spamd child

Digitare spamd -c per vedere come deve essere usato spamd. Vedere anche http://spamassassin.apache.org/full/3.4.x/doc/spamd.html

Avviare spamassassin al boot

Per far sì che spamassassin sia avviato al boot inserire lo startup script nel proprio rc.local:

/usr/local/bin/spamdctl start &

logrotate

Creare un file /etc/logrotate.d/spamd come questo (slackware) per ruotare i log di spamd:

/var/log/spamd.log {
rotate 5
daily
missingok
notifempty
delaycompress
postrotate
   /usr/local/bin/spamdctl restart
endscript
}

Aggiungi un commento