25 marzo 2021 Roberto Puzzanghera2 commenti
AGGIORNAMENTO del 15 luglio: aggiunte le note di installazione di Razor2
, Pyzor
e Spamcop
(grazie e Gabriel Torres per il prezioso contributo).
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.
spamassassin
alla versione 3.4.xEcco come procedere:
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 BSD::Resource cpan> quit sa-update
Inoltre è necessario apportare la seguente modifica alla tabella txrep
, poichè la colonna count
è stata rinominata (grazie a Tony Fung):
ALTER TABLE `txrep` CHANGE `count` `msgcount` INT(11) NOT NULL DEFAULT '0';
Ricordarsi di far ripartire i server
spamdctl start qmailctl start
Creare l'utente e il gruppo spamd
, preparare le cartelle:
mkdir -p /etc/mail/spamassassin /home/spamd groupadd spamd useradd -g spamd -d /home/spamd spamd chown -R spamd:spamd /home/spamd chgrp apache /var/log/spamassassin chmod g+w /var/log/spamassassin
E' necessario assegnare i privilegi +w
ad apache
nella cartella log se si deciderà di salvare qui i log file degli spam reports di del plugin markasjunj di Roundcube
, che viene lanciato da apache
.
Razor di Vipul è una rete distribuita, collaborativa, di rilevamento e filtraggio dello spam. Attraverso il contributo degli utenti, Razor crea un catalogo in costante aggiornamento di spam che viene consultato dai filtri antispam dei client di posta elettronica. Il rilevamento viene effettuato con firme statistiche e randomizzate che individuano in modo efficiente il contenuto di spam mutante. L'input dell'utente viene convalidato attraverso una valutazione della reputazione basata sul consenso sul report e la revoca delle asserzioni che a loro volta vengono utilizzate per calcolare i valori di fiducia associati alle singole firme.
Scaricare e installare razor-agent-sdk
e razor-agent
:
cd /usr/local/src wget https://downloads.sourceforge.net/project/razor/razor-agents-sdk/2.07/razor-agents-sdk-2.07.tar.bz2 wget https://downloads.sourceforge.net/project/razor/razor-agents/2.85/razor-agents-2.85.tar.bz2 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
Razor2
richiede che gli utenti che inviano i report siano registrati. Questo, come detto sopra, consente di assegnare attraverso il tempo una reputazione ai reporters, di modo che i loro report e le loro revoche abbiano un certo peso in accordo con il valore della loro reputazione.
Registrarsi e creare la cartella di configurazione:
mkdir -p /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
Settare i permessi
chgrp apache /etc/mail/spamassassin/.razor/identity-* chmod 640 /etc/mail/spamassassin/.razor/identity-* chmod 644 /etc/mail/spamassassin/.razor/razor-agent.log
E' necessario assegnare ad apache
i permessi di lettura al file identity
se si ha intenzione di eseguire i reports attraverso il plugin markasjunk
di RC.
Dire a Razor2
dove esso è installato aggiungendo le seguenti linee seguenti al file /etc/mail/spamassassin/.razor/razor-agent.conf
razorhome = /etc/mail/spamassassin/.razor/ logfile = /var/log/spamassassin/razor-agent.log
Abiliteremo Razor2
non appena spamassassin
sarà installato.
Pyzor è una rete collaborativa per il rilevamento e il blocco spam attraverso il digent (riassunti) dei messaggi. Usando un client Pyzor, viene generato un breve riassunto del messaggio, che si presume identifichi in modo univo il messaggio stesso.
E' possibile installare Pyzor via pip
o pip3
pip3 install pyzor
oppure, in alternativa, si possono scaricare e installare i sorgenti al solito modo
cd /usr/local/src
wget https://files.pythonhosted.org/packages/75/9d/e38a18d8c932f397537cda0d03a606314611fe1ebd8b24ed8fdd4df23191/pyzor-1.0.0.tar.gz
tar xzf pyzor-1.0.0.tar.gz
cd pyzor-1.0.0
chown -R root:root .
python setup.py build
python setup.py install
Creare la cartella pyzor
:
mkdir -p /etc/mail/spamassassin/.pyzor chown spamd:spamd /etc/mail/spamassassin/.pyzor
Abiliteremo pyzor
tra poco.
Spamcop è una nota blocking list che funziona anche come un sistema di segnalazione inviando informazioni di allerta ai provider internet responsabili di ospitare i servizi utilizzati dallo spammer (siti web e siti che possono inviare messaggi di posta). SpamCop utilizza le segnalazioni anche per generare la blocking list, che è libera..
Registrare un account qui. Nota: il filtro captcha non funziona sul mio browser chromium; tuttavia sono riuscito sono riuscito a vedere il filtro utilizzando firefox. Alla fine della procedura di registrazione si otterrà un indirizzo e-mail unico (del tipo submit.xxxxxxxxxxxxxxxxxxx@spam.spamcop.net) ch si dovrà passare a spamassassin
affinchè il programma invii le segnalazioni a spamcop
. Vedremo come fare la configurazione tra poco.
Infine installare spamassassin
via Cpan
perl -MCPAN -e shell o conf prerequisites_policy ask install Mail::SpamAssassin quit
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 BSD::Resource 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 i moduli spamassassin
e Razor2
da CPAN
force notest install Mail::SpamAssassin Mail::SpamAssassin::Plugin::Razor2
Ho dovuto dare un "force" all'installzione.. comunque funziona.
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
# 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
# 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
Abilitare Razor2
, Pyzor
e Spamcop
# Pyzor - perform Pyzor message checks. # loadplugin Mail::SpamAssassin::Plugin::Pyzor # Razor2 - perform Razor2 message checks. # loadplugin Mail::SpamAssassin::Plugin::Razor2 # SpamCop - perform SpamCop message reporting # loadplugin Mail::SpamAssassin::Plugin::SpamCop
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
Controllare che l'intestazione sia correttamente inserita:
echo -e "From: myself@mymailserver.net\nTo:myfriend@domain.net\nSubject: test\n\n" | spamc Received: from localhost by qmail.mymailserver.net with SpamAssassin (version 3.3.1); Tue, 30 Nov 2010 23:18:37 +0100 From: myself@mymailserver.net To: myfriend@domain.net Subject: test X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-04-18) on qmail.mymailserver.net X-Spam-Flag: YES X-Spam-Level: ***** X-Spam-Status: Yes, score=5.4 required=5.0 tests=BAYES_99,FREEMAIL_FROM, MISSING_DATE,MISSING_MID,NO_RECEIVED,NO_RELAYS,TVD_SPACE_RATIO, T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.3.1
Per testare il funzionamento del sistema di "addestramento" (learning) salvare un messaggio spam in formato non elaborato (raw per intenderci) nel file spam.txt e lanciare sa-learn
in questo modo (supponendo che postmaster@yourdomain.tld sia l'indirizzo email del destinatario)
sa-learn --debug --spam --username=postmaster@yourdomain.tld spam.txt
Per testare che le segnalazioni ai vari Razor, Pyzor e Spamcop funzionino invece utilizzare spamassassin
con l'opzione --report
in questo modo:
spamassassin --debug --nocreate-prefs --report < spam.txt
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.
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 # November 17, 2020: moved log file to /var/log/spamassassin/spamd.log 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/spamassassin/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
Per far sì che spamassassin
sia avviato al boot inserire lo startup script nel proprio rc.local
:
/usr/local/bin/spamdctl start &
Creare un file /etc/logrotate.d/spamd
come questo (slackware) per ruotare i log di spamd:
cat > /etc/logrotate.d/spamassassin/spamd /var/log/spamassassin/razor-agent.log << __EOF__ /var/log/spamd.log { rotate 5 daily missingok notifempty delaycompress postrotate [ -f '/var/run/spamd.pid' ] && (kill -HUP `cat /var/run/spamd.pid`) || exit 0 endscript } __EOF__
Running OpenBoardW
26 marzo 2021 15:51
Running OpenBoardW
26 marzo 2021 15:44
.qmail-defau .qmail-default
24 marzo 2021 12:08
.qmail-defau .qmail-default
24 marzo 2021 10:02
.qmail-defau .qmail-default
24 marzo 2021 08:46
.qmail-defau .qmail-default
24 marzo 2021 07:27
.qmail-defau .qmail-default
24 marzo 2021 06:00
.qmail-defau .qmail-default
23 marzo 2021 21:13
.qmail-defau .qmail-default
23 marzo 2021 20:52
delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/
23 marzo 2021 13:28
Tags
apache clamav dkim dovecot ezmlm fail2ban ftp guide hacks lamp letsencrypt linux linux-vserver lxc mariadb mediawiki mozilla mysql openboard owncloud patches php proftpd qmail qmailadmin rbl roundcube rsync sieve simscan slackware spamassassin spf ssh ssl tcprules tex ucspi-tcp vpopmail vqadmin
Commenti
Chiarimento configurazione
Webmaster 19 marzo 2021 07:54
Buongirono Roberto,
un chiarimento sulla configurazione di SA, all'inizio della pagina scrivi "Abilitare tutti i nuovi plugin dal file /etc/mail/spamassassin/v343.pre."
Nella lista dei files da modificare fai riferimento a v310.pre.
Grazie dell'attenzione
Gabriele
Rispondi | Permalink
Chiarimento configurazione
Roberto Puzzanghera Webmaster 19 marzo 2021 08:47
Ciao Gabriele,
in effetti quella frase su v343.pre è fuorviante (ora la levo). Come sai in questi file ci sono i plugin aggiunti nella rispettiva versione. Io cito solo v310.pre perchè contiene spamcop, razor, pyzor, che menziono esplicitamente nella guida. Negli altri file ci sono plugin addizionali che ognuno può decidere o meno di mettere dentro.
Rispondi | Permalink