PDA

Bekijk Volledige Versie : HOWTO: SpamAssassin updaten



Randy
24/08/09, 06:49
Gaap, het is veel te vroeg. Nog lang geen 13.37 uur dus eigenlijk hoor ik in bed te liggen

Even een howto. Vannacht was ik bezig mijn post-da-script aan het aanpassen dat allerlei optimalisaties doet. Velen installeren SpamAssasin, maar doen er later niets mee. Niet dat dit heel heel actief product is. Spam filteren doen we immers grotendeels met RBL's of nog beter, we laten het doen door SpamExperts ofzo om te zorgen dat de zooi niet eens op je server komt.

Toch even een korte howto om de spamassassin regeld te updaten. Dit doe je met het commando sa-update, en je geeft daarbij de -D optie even mee om hem in debug-mode te draaien. Let daarbij even op de output. In een standaard DirectAdmin of UpdateScript installatie mis je namelijk nogal wat perl modules.



[root@dev04 ~]# sa-update -D
[28064] dbg: logger: adding facilities: all
[28064] dbg: logger: logging level is DBG
[28064] dbg: generic: SpamAssassin version 3.2.5
[28064] dbg: config: score set 0 chosen.
[28064] dbg: dns: is Net::DNS::Resolver available? yes
[28064] dbg: dns: Net::DNS version: 0.65
[28064] dbg: generic: sa-update version svn607589
[28064] dbg: generic: using update directory: /var/lib/spamassassin/3.002005
[28064] dbg: diag: perl platform: 5.008008 linux
[28064] dbg: diag: module installed: Digest::SHA1, version 2.12
[28064] dbg: diag: module installed: HTML::Parser, version 3.61
[28064] dbg: diag: module installed: Net::DNS, version 0.65
[28064] dbg: diag: module installed: MIME::Base64, version 3.07
[28064] dbg: diag: module installed: DB_File, version 1.814
[28064] dbg: diag: module installed: Net::SMTP, version 2.29
[28064] dbg: diag: module not installed: Mail::SPF ('require' failed)
[28064] dbg: diag: module not installed: Mail::SPF::Query ('require' failed)
[28064] dbg: diag: module not installed: IP::Country::Fast ('require' failed)
[28064] dbg: diag: module not installed: Razor2::Client::Agent ('require' failed)
[28064] dbg: diag: module not installed: Net::Ident ('require' failed)
[28064] dbg: diag: module installed: IO::Socket::INET6, version 2.56
[28064] dbg: diag: module installed: IO::Socket::SSL, version 1.26
[28064] dbg: diag: module installed: Compress::Zlib, version 2.02
[28064] dbg: diag: module installed: Time::HiRes, version 1.9715
[28064] dbg: diag: module not installed: Mail::DomainKeys ('require' failed)
[28064] dbg: diag: module not installed: Mail::DKIM ('require' failed)
[28064] dbg: diag: module installed: DBI, version 1.609
[28064] dbg: diag: module installed: Getopt::Long, version 2.35
[28064] dbg: diag: module installed: LWP::UserAgent, version 2.033
[28064] dbg: diag: module installed: HTTP::Date, version 1.47
[28064] dbg: diag: module installed: Archive::Tar, version 1.40
[28064] dbg: diag: module installed: IO::Zlib, version 1.10
[28064] dbg: diag: module not installed: Encode::Detect ('require' failed)
[28064] dbg: gpg: Searching for 'gpg'
[28064] dbg: util: current PATH is: /sbin:/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[28064] dbg: util: executable for gpg was found at /usr/bin/gpg
[28064] dbg: gpg: found /usr/bin/gpg
[28064] dbg: gpg: release trusted key id list: 5E541DC959CB8BAC7C78DFDC4056A61A5244EC45 26C900A46DD40CD5AD24F6D7DEE01987265FA05B 0C2B1D7175B852C64B3CDC716C55397824F434CE
[28064] dbg: channel: attempting channel updates.spamassassin.org
[28064] dbg: channel: update directory /var/lib/spamassassin/3.002005/updates_spamassassin_org
[28064] dbg: channel: channel cf file /var/lib/spamassassin/3.002005/updates_spamassassin_org.cf
[28064] dbg: channel: channel pre file /var/lib/spamassassin/3.002005/updates_spamassassin_org.pre
[28064] dbg: channel: metadata version = 795855
[28064] dbg: dns: 5.2.3.updates.spamassassin.org => 795855, parsed as 795855
[28064] dbg: channel: current version is 795855, new version is 795855, skipping channel
[28064] dbg: diag: updates complete, exiting with code 1


Zoals je ziet, mis je nog wat Perl modules. Deze kun je zowel met cpan (De Perl package manager) als yum, je systeem package manager installeren. Ik doe de laatste omdat binaries snel zijn en ik ongeduldig. En omdat jullie lui zijn, copy/paste onderstaande regel in je Shell (CentOS 4 en 5)


yum -y install perl-Mail-SPF perl-SPF-Query perl-Razor* perl-Net-Ident perl-IO-Socket* perl-Mail-DKIM perl-Mail-DomainKeys perl-Archive-Tar perl-IO-Zlib perl-Encode-Detect perl-libwww-perl perl-IP-Country perl-DBI perl-Mail-SPF-Query

Run nu "sa-update -D" nog een keer en je ziet als het goed is geen errors meer. Vervolgend kill je alle processen met "killall spamd" en start je SpamAssassin opnieuw met "/usr/bin/spamd -d -c -m 5".

Nu gaan we de regels niet steeds opnieuw updaten. Niet dat er bijster veel updates zijn, maar vooruit, een stukje automatisering:

nano /root/update-sa.sh


#!/bin/sh
sa-update -D --channel updates.spamassassin.org
killall spamd
/usr/bin/spamd -d -c -m 5

chmod +x /root/update-sa.sh

Maak even een cron aan die hem eens per week runt:
nano /etc/crontab


# Spamassassin regels updaten
0 0 * * 0 root /root/update-sa.sh >> /dev/null 2>&1


Eventueel kun je nog extra channels in je SA configuratie zetten.

onder voorbehoud van typo's. Het is al laat enzeaux... Doe dit alleen als je bekend bent in de shell. Geen n00bs dus. Die moeten beheer gewoon uitbesteden of een managed server nemen. Ook niet bellen voor support, ik stuur Domenico op je af. En geloof me, die heeft honger na een lang weekend Lowlands. :-)

marsipulami
24/08/09, 10:27
aah deze howto zocht ik een jaar geleden ;)..... maar afijn toch bedankt voor het delen, altijd handig.

Herbert
24/08/09, 11:05
Randy dit gaat niet goed met CentOS 5.3



yum -y install perl-Mail-SPF perl-SPF-Query perl-Razor* perl-Net-Ident perl-IO-Socket* perl-Mail-DKIM perl-Mail-DomainKeys perl-Archive-Tar perl-IO-Zlib perl-Encode-Detect perl-libwww-perl perl-IP-Country perl-DBI perl-Mail-SPF-Query

<knip>

Setting up Install Process
Parsing package install arguments
No package perl-Mail-SPF available.
No package perl-SPF-Query available.
filelists.xml.gz | 2.2 MB 00:00
No package perl-Razor* available.
No package perl-Net-Ident available.
Package perl-IO-Socket-SSL-1.01-1.fc6.noarch already installed and latest version
Package perl-IO-Socket-INET6-2.51-2.fc6.noarch already installed and latest version
No package perl-Mail-DKIM available.
No package perl-Mail-DomainKeys available.
Package perl-Archive-Tar-1.30-1.fc6.noarch already installed and latest version
Package perl-IO-Zlib-1.04-4.2.1.noarch already installed and latest version
No package perl-Encode-Detect available.
Package perl-libwww-perl-5.805-1.1.1.noarch already installed and latest versionNo package perl-IP-Country available.
Package perl-DBI-1.52-2.el5.i386 already installed and latest version
No package perl-Mail-SPF-Query available.
Nothing to do

Welke mirror gebruik je?

Randy
24/08/09, 12:10
RPMFORGE (Dennis, doe eens mirror maken...)
# RHEL5 / CentOS-5
- i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
- x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

# RHEL4 / CentOS-4
- i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
- x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm

wget de juiste RPM en dan "rpm -Uhv rpmforge-xxx.rpm"
Draai nu eerst "yum update" en daarna de regel nog een keer.

Herbert
24/08/09, 13:24
Bedankt Randy voor de goede uitleg!
Het werkt nu 100%

QBell
24/08/09, 14:55
En als je dan helemaal goed wil zitten, dan installeer je ook nog de plugin rule2xsbody.



cpan install Mail::SpamAssassin::Plugin::Rule2XSBody


Ook moet je re2c installeren


yun install re2c


Nu kan je na iedere sa-update, "sa-compile" draaien.
Deze tool precompiled alle configs waardoor spamassassin minder cpu en geheugen gaat gebruiken.

Aan niemand verder vertellen hé ;)

Oliver
24/08/09, 16:03
Waarom sa-update met -D draaien als je toch alle output naar /dev/null leidt?

marsipulami
24/08/09, 16:19
Waarom sa-update met -D draaien als je toch alle output naar /dev/null leidt?

Moet niet, maar dan zie je wat er gebeurd

pierce
24/08/09, 16:26
Waarom sa-update met -D draaien als je toch alle output naar /dev/null leidt?

Om te kunnen zien welke perl modules niet geinstalleerd zijn ;)

Oliver
24/08/09, 17:04
Om te kunnen zien welke perl modules niet geinstalleerd zijn ;)

Ik bedoel uiteraard in zijn crontab-scriptje.

The-BosS
24/08/09, 17:08
Toffe howto, ik doe dit ook maar op een iets andere manier. Maar dat maakt niet veel uit zolang het resultaat maar hetzelfde is.

chielsen
24/08/09, 18:49
Ah bedankt. Ik kwam erachter dat ik op mijn "nieuwe" VPS helemaal nog geen Spamassasin heb. ZIt ik al maanden met spam te klooien :)

Serveo
24/08/09, 23:30
Netjes, werkt ook met debian. Heb alleen de Perl modules geïnstalleerd met CPAN.