From 7cf4d17063560538621c8d04d9fa33d5b1120733 Mon Sep 17 00:00:00 2001 From: Dinko Korunic Date: Fri, 14 Sep 2007 13:26:11 +0000 Subject: [PATCH] r1: [svn-inject] Installing original source of spamassassin-cn --- README.CARNet | 27 ++++ changelog.CARNet | 110 +++++++++++++ check_whitelist | 128 +++++++++++++++ debian/changelog | 110 +++++++++++++ debian/compat | 1 + debian/control | 22 +++ debian/cron.daily | 36 +++++ debian/cron.monthly | 9 ++ debian/dirs | 3 + debian/docs | 2 + debian/examples | 2 + debian/install | 4 + debian/postinst | 322 +++++++++++++++++++++++++++++++++++++ debian/postrm | 38 +++++ debian/rules | 74 +++++++++ etc-default-spamassassin-non-root | 26 +++ etc-default-spamassassin-root | 26 +++ local.cf | 91 +++++++++++ sa-keys.pgp | 106 ++++++++++++ sa-update.channels | 22 +++ spamassassin-cn | 8 + 21 files changed, 1167 insertions(+) create mode 100644 README.CARNet create mode 100644 changelog.CARNet create mode 100755 check_whitelist create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100755 debian/cron.daily create mode 100755 debian/cron.monthly create mode 100644 debian/dirs create mode 100644 debian/docs create mode 100644 debian/examples create mode 100644 debian/install create mode 100755 debian/postinst create mode 100755 debian/postrm create mode 100755 debian/rules create mode 100644 etc-default-spamassassin-non-root create mode 100644 etc-default-spamassassin-root create mode 100644 local.cf create mode 100644 sa-keys.pgp create mode 100644 sa-update.channels create mode 100644 spamassassin-cn diff --git a/README.CARNet b/README.CARNet new file mode 100644 index 0000000..244cc79 --- /dev/null +++ b/README.CARNet @@ -0,0 +1,27 @@ +spamassassin-cn +~~~~~~~~~~~~~~~ + +Ovo je dodatak na standardni SpamAssassin paket. Glavne razlike su u +mogucnosti upravljanja postavkama (Bayes klasifikator, Razor2, DCC, Pyzor) +u local.cf te potpuniji local.cf predlozak sa postavkama spremnim za +produkciju. Takodjer, koriste se popularna SARE pravila kroz sa-update +mehanizam (GPG potpisani updateovi), a i sam SpamAssassin se automatski +nadogradjuje kroz receni mehanizam. + +Logovi koji se generiraju kroz nadogradjivanje SpamAssassina se +standardno spremaju u /var/log/sa-update.log. Daljnje modifikacije pravila +koja se skidaju su moguca kroz datoteku +/etc/spamassassin/sa-update.channels. + +Standardno Pyzor i Bayes nisu ukljuceni iz sljedecih razloga: + * Pyzor posluzitelji uglavnom timeoutaju i time ne predstavljaju ozbiljan + izbor za klasifikaciju, + * Naivni Bayes klasifikator je inicijalno nauciti kroz uzorak od 1000 + spamova i 1000 hamova koristeci sa-learn. Nakon toga je isti takodjer + potrebno redovno trenirati na pogreskama, sto dakle ocekuje prilicnu + paznju od sistemaca. + +Takodjer se standardno ne omogucuje ni SpamAssassin daemon odnosno spamd, +buduci da je na instalacijama sa Amavis posluziteljem suvisan. + + -- Dinko Korunic Fri, 14 Sep 2007 15:23:37 +0200 diff --git a/changelog.CARNet b/changelog.CARNet new file mode 100644 index 0000000..1055b68 --- /dev/null +++ b/changelog.CARNet @@ -0,0 +1,110 @@ +spamassassin-cn (2:3.1.7-1) sarge; urgency=low + + * kompletan prelazak na sa-update odnosno nadogradnju kroz channels + mehanizam + * ovisnost o novom SpamAssassin paketu (>= 3.1.7) s obzirom na sa-update + mehanizam + + -- Dinko Korunic Fri, 14 Sep 2007 10:47:11 +0200 + +spamassassin-cn (2:3.0.3-5) sarge; urgency=low + + * dependancy na dcc-client (zbog use_dcc) + * automatsko ciscenje AWL iskljucivo ako postoji AWL + + -- Dinko Korunic Wed, 29 Nov 2006 18:59:56 +0100 + +spamassassin-cn (2:3.0.3-4) sarge; urgency=low + + * bugfix u detekciji postojecih vrijednosti u local.cf + * automatsko ciscenje AWL jednom mjesecno i odmah tijekom instalacije + * provjera/download/dogradnja SA pravila odmah tijekom instalacije + + -- Dinko Korunic Fri, 24 Nov 2006 13:42:43 +0100 + +spamassassin-cn (2:3.0.3-3) sarge; urgency=high + + * uveden RulesDuJour kao automatsko nadogradjivanje statickih uzoraka na + dnevnoj bazi: konfiguracija u /etc/default/rulesdujour + * cisci i detaljniji defaultni set konfiguracije u local.cf + * definiran set SARE pravila koji se koristi + * po defaultu se ne koristi Pyzor i DCC kao ni Bayes + * po defaultu ne dizemo spamd na sustavima sa amavisom + * debconf komunikacija s korisnikom oko DCC/Razor2/Pyzor/Bayes/spamd + * niz dodatnih poboljsanja u postinst skripti + * omogucen merge stare i nove konfiguracije u slucaju da je instaliran + dovoljno svjez SpamAssassin paket (>= 2:3.0.3-3) + + -- Dinko Korunic Wed, 15 Nov 2006 12:14:55 +0100 + +spamassassin-cn (2:3.0.3-2.1) sarge; urgency=low + + * spamd se od sad vrti pod ovlastima spamd:spamd + + -- Ivan 'ico' Rako Sat, 25 Mar 2006 18:22:32 +0100 + +spamassassin-cn (2:3.0.3-2) sarge; urgency=low + + * sigurnosno izdanje koje rjesava problem potencijalnog DoS napada putem + prevelikih zaglavlja (CAN-2005-1266) + + -- Ivan 'ico' Rako Fri, 1 Jul 2005 12:17:05 +0200 + +spamassassin-cn (2:3.0.2-1.3) sarge; urgency=low + + * provjera da li postoji .pyzor/servers + * ubijanje zaostalih 'pyzor check' procesa + + -- Ivan 'ico' Rako Mon, 25 Apr 2005 22:40:14 +0200 + +spamassassin-cn (2:3.0.2-1.2) sarge; urgency=low + + * ovisnost o cvs verziji pyzora koja ispravlja bug sa 'pyzor check' + + -- Ivan 'ico' Rako Mon, 18 Apr 2005 13:17:19 +0200 + +spamassassin-cn (2:3.0.2-1.1) sarge; urgency=low + + * koristenje funkcija iz carnet-tools-cn (>= 2.0) + * pokrece 'pyzor discover' za korisnika amavis (ako postoji) + + -- Ivan 'ico' Rako Sun, 3 Apr 2005 21:02:01 +0200 + +spamassassin-cn (2:3.0.2-1) sarge; urgency=low + + * novi upstream + * novi /etc/default/spamassassin + * rewrite_subject -> rewrite_header u local.cf + * potpuno novi postinst + + -- Ivan 'ico' Rako Tue, 18 Jan 2005 10:23:36 +0100 + +spamassassin-cn (2:2.64-1) sarge; urgency=low + + * dodan epoch zbog epocha na iso imageu + * maknuta ovisnost o razoru jer ga trenutno nema u testingu + * micanje /razor-agent.log-a u /tmp + + -- Ivan 'ico' Rako Sun, 5 Sep 2004 14:00:19 +0200 + +spamassassin-cn (2.63-2) sarge; urgency=low + + * /usr/local/doc -> /usr/share/doc + * kozmetika postinsta + + -- Ivan 'ico' Rako Thu, 24 Jun 2004 10:54:50 +0200 + +spamassassin-cn (2.63-1) sarge; urgency=low + + * nova upstream verzija + * hrpa ispravljenih sitnih bugova + * izmjena /etc/spamassassin/local.cf + + -- Ivan 'ico' Rako Fri, 12 Dec 2003 17:31:05 +0100 + +spamassassin-cn (2.61) sarge; urgency=low + + * nova upstream verzija + + -- Ivan 'ico' Rako Fri, 12 Dec 2003 17:31:05 +0100 + diff --git a/check_whitelist b/check_whitelist new file mode 100755 index 0000000..18a90a0 --- /dev/null +++ b/check_whitelist @@ -0,0 +1,128 @@ +#!/usr/bin/perl +# +# TODO: should this be made a top-level script, called "sa-awl"? + +sub usage { + die " +usage: check_whitelist [--clean] [--min n] [dbfile] +"; +} + +use strict; +use Fcntl; +use Getopt::Long; + +use vars qw( + $opt_clean $opt_min $opt_help + ); + +GetOptions( + 'clean' => \$opt_clean, + 'min:i' => \$opt_min, + 'help' => \$opt_help +) or usage(); +$opt_help and usage(); + +$opt_min ||= 2; + +BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File SDBM_File); } +use AnyDBM_File ; + +my $db; +if ($#ARGV == -1) { + $db = $ENV{HOME}."/.spamassassin/auto-whitelist"; +} else { + $db = $ARGV[0]; +} + +my %h; +if ($opt_clean) { + tie %h, "AnyDBM_File",$db, O_RDWR,0600 + or die "Cannot open r/w file $db: $!\n"; +} else { + tie %h, "AnyDBM_File",$db, O_RDONLY,0600 + or die "Cannot open file $db: $!\n"; +} + +my @k = grep(!/totscore$/,keys(%h)); +for my $key (@k) +{ + my $totscore = $h{"$key|totscore"}; + my $count = $h{$key}; + next unless defined($totscore); + + if ($opt_clean) { + if ($count >= $opt_min) { next; } + print "cleaning: "; + } + + printf "% 8.1f %15s -- %s\n", + $totscore/$count, (sprintf "(%.1f/%d)",$totscore,$count), + $key; + + if ($opt_clean) { + delete $h{"$key|totscore"}; + delete $h{$key}; + } +} +untie %h; + +=head1 NAME + +check_whitelist - examine and manipulate SpamAssassin's auto-whitelist db + +=head1 SYNOPSIS + +B [--clean] [--min n] [dbfile] + +=head1 DESCRIPTION + +Check or clean a SpamAssassin auto-whitelist (AWL) database file. + +The name of the file is specified after any options, as C. +The default is C<$HOME/.spamassassin/auto-whitelist>. + +=head1 OPTIONS + +=over 4 + +=item --clean + +Clean out infrequently-used AWL entries. The C<--min> switch can be +used to select the threshold at which entries are kept or deleted. + +=item --min n + +Select the threshold at which entries are kept or deleted when C<--clean> is +used. The default is C<2>, so entries that have only been seen once are +deleted. + +=back + +=head1 OUTPUT + +The output looks like this: + + AVG (TOTSCORE/COUNT) -- EMAIL|ip=IPBASE + +For example: + + 0.0 (0.0/7) -- dawson@example.com|ip=208.192 + 21.8 (43.7/2) -- mcdaniel_2s2000@example.com|ip=200.106 + +C is the average score; C is the total score of all mails seen +so far; C is the number of messages seen from that sender; C is +the sender's email address, and C is the B. + +B is a way to identify the sender's IP address they +frequently send from, in an approximate way, but remaining hard for spammers to +spoof. The algorithm is as follows: + + - take the last Received header that contains a public IP address -- namely + one which is not in private, unrouted IP space. + + - chop off the last two octets, assuming that the user may be in an ISP's + dynamic address pool. + +=cut + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1055b68 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,110 @@ +spamassassin-cn (2:3.1.7-1) sarge; urgency=low + + * kompletan prelazak na sa-update odnosno nadogradnju kroz channels + mehanizam + * ovisnost o novom SpamAssassin paketu (>= 3.1.7) s obzirom na sa-update + mehanizam + + -- Dinko Korunic Fri, 14 Sep 2007 10:47:11 +0200 + +spamassassin-cn (2:3.0.3-5) sarge; urgency=low + + * dependancy na dcc-client (zbog use_dcc) + * automatsko ciscenje AWL iskljucivo ako postoji AWL + + -- Dinko Korunic Wed, 29 Nov 2006 18:59:56 +0100 + +spamassassin-cn (2:3.0.3-4) sarge; urgency=low + + * bugfix u detekciji postojecih vrijednosti u local.cf + * automatsko ciscenje AWL jednom mjesecno i odmah tijekom instalacije + * provjera/download/dogradnja SA pravila odmah tijekom instalacije + + -- Dinko Korunic Fri, 24 Nov 2006 13:42:43 +0100 + +spamassassin-cn (2:3.0.3-3) sarge; urgency=high + + * uveden RulesDuJour kao automatsko nadogradjivanje statickih uzoraka na + dnevnoj bazi: konfiguracija u /etc/default/rulesdujour + * cisci i detaljniji defaultni set konfiguracije u local.cf + * definiran set SARE pravila koji se koristi + * po defaultu se ne koristi Pyzor i DCC kao ni Bayes + * po defaultu ne dizemo spamd na sustavima sa amavisom + * debconf komunikacija s korisnikom oko DCC/Razor2/Pyzor/Bayes/spamd + * niz dodatnih poboljsanja u postinst skripti + * omogucen merge stare i nove konfiguracije u slucaju da je instaliran + dovoljno svjez SpamAssassin paket (>= 2:3.0.3-3) + + -- Dinko Korunic Wed, 15 Nov 2006 12:14:55 +0100 + +spamassassin-cn (2:3.0.3-2.1) sarge; urgency=low + + * spamd se od sad vrti pod ovlastima spamd:spamd + + -- Ivan 'ico' Rako Sat, 25 Mar 2006 18:22:32 +0100 + +spamassassin-cn (2:3.0.3-2) sarge; urgency=low + + * sigurnosno izdanje koje rjesava problem potencijalnog DoS napada putem + prevelikih zaglavlja (CAN-2005-1266) + + -- Ivan 'ico' Rako Fri, 1 Jul 2005 12:17:05 +0200 + +spamassassin-cn (2:3.0.2-1.3) sarge; urgency=low + + * provjera da li postoji .pyzor/servers + * ubijanje zaostalih 'pyzor check' procesa + + -- Ivan 'ico' Rako Mon, 25 Apr 2005 22:40:14 +0200 + +spamassassin-cn (2:3.0.2-1.2) sarge; urgency=low + + * ovisnost o cvs verziji pyzora koja ispravlja bug sa 'pyzor check' + + -- Ivan 'ico' Rako Mon, 18 Apr 2005 13:17:19 +0200 + +spamassassin-cn (2:3.0.2-1.1) sarge; urgency=low + + * koristenje funkcija iz carnet-tools-cn (>= 2.0) + * pokrece 'pyzor discover' za korisnika amavis (ako postoji) + + -- Ivan 'ico' Rako Sun, 3 Apr 2005 21:02:01 +0200 + +spamassassin-cn (2:3.0.2-1) sarge; urgency=low + + * novi upstream + * novi /etc/default/spamassassin + * rewrite_subject -> rewrite_header u local.cf + * potpuno novi postinst + + -- Ivan 'ico' Rako Tue, 18 Jan 2005 10:23:36 +0100 + +spamassassin-cn (2:2.64-1) sarge; urgency=low + + * dodan epoch zbog epocha na iso imageu + * maknuta ovisnost o razoru jer ga trenutno nema u testingu + * micanje /razor-agent.log-a u /tmp + + -- Ivan 'ico' Rako Sun, 5 Sep 2004 14:00:19 +0200 + +spamassassin-cn (2.63-2) sarge; urgency=low + + * /usr/local/doc -> /usr/share/doc + * kozmetika postinsta + + -- Ivan 'ico' Rako Thu, 24 Jun 2004 10:54:50 +0200 + +spamassassin-cn (2.63-1) sarge; urgency=low + + * nova upstream verzija + * hrpa ispravljenih sitnih bugova + * izmjena /etc/spamassassin/local.cf + + -- Ivan 'ico' Rako Fri, 12 Dec 2003 17:31:05 +0100 + +spamassassin-cn (2.61) sarge; urgency=low + + * nova upstream verzija + + -- Ivan 'ico' Rako Fri, 12 Dec 2003 17:31:05 +0100 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..2ae5ae6 --- /dev/null +++ b/debian/control @@ -0,0 +1,22 @@ +Source: spamassassin-cn +Section: mail +Priority: optional +Maintainer: Dinko Korunic +Build-Depends: debhelper (>= 4) +Standards-Version: 3.7.2 + +Package: spamassassin-cn +Architecture: any +Depends: spamassassin (>= 3.1.7-1~bpo.1), razor (>= 2.670-1sarge2), libnet-dns-perl, carnet-tools-cn (>= 2.0), dcc-client (>= 1.2.74-2), gnupg (>= 1.4.1-1.sarge7) +Conflicts: pyzor (<< 1:0.4.0+cvs20030201-3) +Recommends: amavis +Description: Perl-based spam filter using text analysis + SpamAssassin is a very powerful and fully configurable spam filter + with numerous features including automatic white-listing, RBL + testing, Bayesian analysis, header and body text analysis. It is + designed to be called from a user's .procmail or .forward file, but + can also be integrated into a Mail Transport Agent (MTA). + . + This is a CARNet Debian customization package which enables sa-update, + and brings several useful SARE recipes, as well as more full-fledged + default configuration. diff --git a/debian/cron.daily b/debian/cron.daily new file mode 100755 index 0000000..5ec40d4 --- /dev/null +++ b/debian/cron.daily @@ -0,0 +1,36 @@ +#!/bin/sh +# Dinko Korunic + +exec 1>> /var/log/sa-update.log +exec 2>&1 + +# announce +echo "$(date +'%d-%m-%Y %T'): Fetching new SA rules..." + +# update SA from normal SA updates + SARE channels +if [ -e /etc/spamassassin/sa-update.channels ]; then + sa-update \ + --channelfile /etc/spamassassin/sa-update.channels \ + --gpgkey 856AA88A \ + --gpgkey 24F434CE \ + --gpgkey BDE9DC10 || \ + ( echo "$(date +'%d-%m-%Y %T'): No new rules. Exiting now."; exit ) +fi + +# restart of services +echo "$(date +'%d-%m-%Y %T'): Will restart services due to updated rules..." +if [ -x /usr/sbin/invoke-rc.d ]; then + [ -x /etc/init.d/spamassassin ] && \ + invoke-rc.d --quiet spamassassin restart + [ -x /etc/init.d/amavis ] && \ + invoke-rc.d --quiet amavis restart + [ -x /etc/init.d/postfix ] && \ + invoke-rc.d --quiet postfix restart +else + [ -x /etc/init.d/spamassassin ] && \ + /etc/init.d/spamassassin restart + [ -x /etc/init.d/amavis ] && \ + /etc/init.d/amavis restart + [ -x /etc/init.d/postfix ] && \ + /etc/init.d/postfix restart +fi diff --git a/debian/cron.monthly b/debian/cron.monthly new file mode 100755 index 0000000..268cacf --- /dev/null +++ b/debian/cron.monthly @@ -0,0 +1,9 @@ +#!/bin/sh +# Dinko Korunic + +# autoclean SA AWL +if getent passwd amavis >/dev/null 2>&1; then + if [ -s ~amavis/.spamassassin/auto-whitelist ]; then + su -c '/usr/bin/check_whitelist --clean' - amavis >/dev/null 2>&1 + fi +fi diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..14ad7d0 --- /dev/null +++ b/debian/dirs @@ -0,0 +1,3 @@ +etc/spamassassin +etc/cron.daily +etc/logrotate.d diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..ef5ce6c --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +changelog.CARNet +README.CARNet diff --git a/debian/examples b/debian/examples new file mode 100644 index 0000000..c91c604 --- /dev/null +++ b/debian/examples @@ -0,0 +1,2 @@ +etc-default-spamassassin-non-root +etc-default-spamassassin-root diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..d917ac6 --- /dev/null +++ b/debian/install @@ -0,0 +1,4 @@ +sa-update.channels etc/spamassassin +sa-keys.pgp etc/spamassassin +spamassassin-cn etc/logrotate.d +check_whitelist usr/bin diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 0000000..ee11369 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,322 @@ +#!/bin/sh +# postinst script for spamassassin-cn +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# + +case "$1" in + configure|reconfigure) + # continue below + ;; + + *) + exit 0 + ;; +esac + +# import CN-functions +. /usr/share/carnet-tools/functions.sh + +# load Debconf +. /usr/share/debconf/confmodule +db_version 2.0 + +umask 022 + +db_get spamassassin-cn/usebayes || true +use_bayes="$RET" + +db_get spamassassin-cn/userazor2 || true +use_razor2="$RET" + +db_get spamassassin-cn/usedcc || true +use_dcc="$RET" + +db_get spamassassin-cn/runservice || true +run_service="$RET" + +db_get spamassassin-cn/runasuser || true +run_as_user="$RET" + +db_stop || true + +# run spamd service as non-root +if [ "$run_as_user" = "non-root" ]; then + if ! grep -q '^OPTIONS=".*username=spamd"' \ + /etc/default/spamassassin; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d --quiet spamassassin stop + else + /etc/init.d/spamassassin stop + fi + rstart=yes + fi + + if ! getent group spamd >/dev/null 2>&1; then + echo "CN: Adding group spamd" + addgroup --system spamd >/dev/null 2>&1 + fi + if ! getent passwd spamd >/dev/null 2>&1; then + echo "CN: Adding user spamd" + adduser --system --no-create-home --home /etc/spamassassin \ + --gecos "SpamAssassin User" \ + --ingroup spamd --disabled-password spamd >/dev/null 2>&1 + fi + + if [ ! -d "/var/run/spamd" ]; then + mkdir /var/run/spamd + fi + + chown -R spamd:spamd /var/run/spamd/ + dpkg-statoverride --remove /var/run/spamd >/dev/null 2>&1 || true + dpkg-statoverride --update --add spamd spamd 755 /var/run/spamd \ + >/dev/null 2>&1 || true + +# nope, run spamd as root +elif [ "$run_as_user" = "root" ]; then + if grep -q '^OPTIONS=".*username=spamd"' \ + /etc/default/spamassassin; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d --quiet spamassassin stop + else + /etc/init.d/spamassassin stop + fi + restart=yes + fi + + if [ -d "/var/run/spamd" ]; then + rm -rf /var/run/spamd + fi + dpkg-statoverride --remove /var/run/spamd >/dev/null 2>&1 || true +fi + +examdir="/usr/share/doc/spamassassin-cn/examples" +confdir="/etc/spamassassin" + +# check and replace local.cf if needed +if [ -f $examdir/local.cf ]; then + # non-existant or zero + if [ ! -s $confdir/local.cf ]; then + rm -f $confdir/local.cf + fi + + # old enough + if [ -s $confdir/local.cf ] && + dpkg --compare-versions "$2" lt "2:3.0.3-3"; then + echo "CN: Backing up old version of $confdir/local.cf in /var/backups" + cp_backup_conffile $confdir/local.cf + rm -f $confdir/local.cf + fi + + # copy template + cp -f $examdir/local.cf $confdir/local.cf.$$ + + # merge both configurations + if [ -s $confdir/local.cf ]; then + #cat $confdir/local.cf > $confdir/local.cf.$$ + + # merge old and new in one conf, primarily respecting old + script=' + my %confhash = (); + my ($key, $value); + + # read template + open (NEW, "<", $ARGV[0]); + while () + { + chomp(); + if (/^(\S+)\s+(.+)$/o) + { + my ($key, $value) = ($1, $2); + $hash{$key} = $value; + } + } + close(NEW); + + # read old configuration + open (OLD, "<", $ARGV[1]); + while () + { + chomp(); + if (/^(\S+)\s+(.+)$/o) + { + my ($key, $value) = ($1, $2); + delete($hash{$key}) if exists($hash{$key}); + print $_, "\n"; + } + else + { + print $_, "\n"; + } + } + + # print missing configuration lines + for (keys %hash) + { + print $_, " ", $hash{$_}, "\n"; + } + close(OLD); + ' + perl -e "$script" $confdir/local.cf.$$ $confdir/local.cf > \ + $confdir/local.cf.$$.$$ && \ + mv -f $confdir/local.cf.$$.$$ $confdir/local.cf.$$ + + rm -f $confdir/local.cf.$$.$$ + fi + + # set bayes/razor2/dcc in local.cf.$$ + for i in bayes razor2 dcc; do + use_name="use_$i" + use_value=$(eval echo \$$use_name) + if [ "$use_value" = "true" ]; then + use_value=1 + else + use_value=0 + fi + cp_check_and_sed "^$use_name " \ + "s/^$use_name .*/$use_name $use_value/g" \ + $confdir/local.cf.$$ || true + done + + # different than template + if ! cmp -s $confdir/local.cf.$$ $confdir/local.cf; then + # backup if not zero size + if [ -s $confdir/local.cf ]; then + echo "CN: Backing up old version of $confdir/local.cf in /var/backups" + cp_backup_conffile $confdir/local.cf + fi + + echo "CN: Installing new version of $confdir/local.cf" + mv -f $confdir/local.cf.$$ $confdir/local.cf + + restart=yes + fi + + rm -f $confdir/local.cf.$$ +fi + +# check and replace /etc/default/spamasassin if needed +if [ "$run_service" = "true" -a \ + -f $examdir/etc-default-spamassassin-$run_as_user ]; then + if ! cmp -s $examdir/etc-default-spamassassin-$run_as_user \ + /etc/default/spamassassin; then + echo "CN: Backing up old version of /etc/default/spamassassin in /var/backups" + cp_backup_conffile /etc/default/spamassassin + + echo "CN: Installing new version of /etc/default/spamassassin" + cp -pf $examdir/etc-default-spamassassin-$run_as_user \ + /etc/default/spamassassin + + restart=yes + fi +fi + +# do we run spamd at all? +if [ "$run_service" = "true" ]; then + i_run_service=1 +else + i_run_service=0 +fi + +# enable or disable spamd in /etc/default/spamassassin +if [ -f "/etc/default/spamassassin" ]; then + cp_check_and_sed '^ENABLED=' \ + "s/^ENABLED=.*/ENABLED=$i_run_service/g" \ + /etc/default/spamassassin || true + if [ "$run_service" = "true" ]; then + echo "CN: Will start spamd by default" + else + echo "CN: Will not start spamd by default" + fi + restart=yes +fi + +# fix old /razor-agent.log bug +if [ -f "/razor-agent.log" ]; then + mv -f /razor-agent.log /tmp + echo "CN: Moving razor logs (razor-agent.log) to /tmp" +fi + +# fix razor agent position +if [ -f "/etc/razor/razor-agent.conf" ]; then + cp_check_and_sed '^.*logfile.*=' \ + "s,^.*logfile.*=.*,logfile=sys-syslog,g" \ + /etc/razor/razor-agent.conf || true + restart=yes +fi + +# cleanup the AWL +if getent passwd amavis >/dev/null 2>&1; then + if [ -s ~amavis/.spamassassin/auto-whitelist ]; then + echo "CN: Cleaning the Amavis auto-whitelist" + su -c '/usr/bin/check_whitelist --clean' - amavis >/dev/null 2>&1 + fi +fi + +# import SA keys +echo "CN: Importing SpamAssassin and SARE public PGP keys" +echo "$(date +'%d-%m-%Y %T'): Importing new SA keys..." >> \ + /var/log/sa-update.log +if [ ! -d /etc/spamassassin/sa-update-keys ]; then + mkdir -p /etc/spamassassin/sa-update-keys + touch /etc/spamassassin/sa-update-keys/pubring.gpg \ + /etc/spamassassin/sa-update-keys/secring.gpg + chmod -R go-rwx /etc/spamassassin/sa-update-keys +fi +sa-update --import /etc/spamassassin/sa-keys.pgp \ + >>/var/log/sa-update.log 2>&1 || true + +# clean old RulesDuJour rules +echo "CN: Cleaning old RulesDuJour and SARE rules..." +rm -rf /etc/spamassassin/*_sare_*.cf /etc/spamassassin/RulesDuJour +echo "CN: Please use /etc/spamassassin/sa-update.channels in future!" + +# get/update the rules +echo "CN: Downloading new SpamAssassin rules and updating in background" +echo "$(date +'%d-%m-%Y %T'): Fetching new SA rules..." >> \ + /var/log/sa-update.log +sa-update \ + --channelfile /etc/spamassassin/sa-update.channels \ + --gpgkey 856AA88A \ + --gpgkey 24F434CE \ + --gpgkey BDE9DC10 >>/var/log/sa-update.log 2>&1 || true +echo "CN: SpamAssassin updates are now logged at /var/log/sa-update.log" + +# restart the spamasassin +if [ "x$restart" = "xyes" ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + pkill -f /usr/sbin/spamd || true + invoke-rc.d --quiet spamassassin restart + else + /etc/init.d/spamassassin restart + fi +fi + +# restart the amavis +if [ "x$restart" = "xyes" -a -x /etc/init.d/amavis ]; then + if [ -x /usr/sbin/invoke-rc.d ]; then + invoke-rc.d --quiet amavis restart + else + /etc/init.d/amavis restart + fi +fi + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/postrm b/debian/postrm new file mode 100755 index 0000000..4df7675 --- /dev/null +++ b/debian/postrm @@ -0,0 +1,38 @@ +#!/bin/sh +# postrm script for bind9-cn +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' overwrit>r> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +case "$1" in + purge) + # continue below + ;; + + *) + exit 0 + ;; +esac + +# remove spamd run directory +dpkg-statoverride --remove /var/run/spamd >/dev/null 2>&1 || true + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..9256324 --- /dev/null +++ b/debian/rules @@ -0,0 +1,74 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# This file is public domain software, originally written by Joey Hess. +# +# This version is for packages that are architecture independent. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +build: build-stamp +build-stamp: + dh_testdir + + # Add here commands to compile the package. + #$(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + #-$(MAKE) clean + #-$(MAKE) distclean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/. + #$(MAKE) prefix=`pwd`/debian/`dh_listpackages`/usr install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installcatalogs +# dh_installpam +# dh_installmime +# dh_installinit + dh_installcron +# dh_installinfo +# dh_undocumented + dh_installman + dh_link + dh_compress + dh_fixperms +# dh_perl +# dh_python + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-dependent files here. +binary-arch: build install +# We have nothing to do by default. + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/etc-default-spamassassin-non-root b/etc-default-spamassassin-non-root new file mode 100644 index 0000000..13bda3b --- /dev/null +++ b/etc-default-spamassassin-non-root @@ -0,0 +1,26 @@ +# /etc/default/spamassassin +# Duncan Findlay + +# WARNING: please read README.spamd before using. +# There may be security risks. + +# Change to one to enable spamd +ENABLED=1 + +# Options +# See man spamd for possible options. The -d option is automatically added. + +# NOTE: version 3.0.x has switched to a "preforking" model, so you +# need to make sure --max-children is not set to anything higher than +# 5, unless you know what you're doing. + +OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username=spamd" + +# Pid file +# Where should spamd write its PID to file? If you use the -u or +# --username option above, this needs to be writable by that user. +# Otherwise, the init script will not be able to shut spamd down. +PIDFILE="/var/run/spamd/spamd.pid" + +# Set nice level of spamd +#NICE="--nicelevel 15" diff --git a/etc-default-spamassassin-root b/etc-default-spamassassin-root new file mode 100644 index 0000000..0c7267a --- /dev/null +++ b/etc-default-spamassassin-root @@ -0,0 +1,26 @@ +# /etc/default/spamassassin +# Duncan Findlay + +# WARNING: please read README.spamd before using. +# There may be security risks. + +# Change to one to enable spamd +ENABLED=1 + +# Options +# See man spamd for possible options. The -d option is automatically added. + +# NOTE: version 3.0.x has switched to a "preforking" model, so you +# need to make sure --max-children is not set to anything higher than +# 5, unless you know what you're doing. + +OPTIONS="--create-prefs --max-children 5 --helper-home-dir" + +# Pid file +# Where should spamd write its PID to file? If you use the -u or +# --username option above, this needs to be writable by that user. +# Otherwise, the init script will not be able to shut spamd down. +PIDFILE="/var/run/spamd.pid" + +# Set nice level of spamd +#NICE="--nicelevel 15" diff --git a/local.cf b/local.cf new file mode 100644 index 0000000..42d2d27 --- /dev/null +++ b/local.cf @@ -0,0 +1,91 @@ +# This is the right place to customize your installation of SpamAssassin. +# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be +# tweaked. +########################################################################### + +# Bayes database configuration +# By default no Bayes, since it requires much administrator intervention (ie. +# feeding hams and spams until mature, regular retraining, etc) +use_bayes 0 +use_bayes_rules 0 +bayes_auto_learn 0 +bayes_auto_learn_threshold_nonspam -0.001 +bayes_auto_learn_threshold_spam 10.0 +bayes_use_hapaxes 1 +bayes_use_chi2_combining 1 +bayes_auto_expire 1 +bayes_ignore_header ReSent-Date +bayes_ignore_header ReSent-From +bayes_ignore_header ReSent-Message-ID +bayes_ignore_header ReSent-Subject +bayes_ignore_header ReSent-To +bayes_ignore_header Resent-Date +bayes_ignore_header Resent-From +bayes_ignore_header Resent-Message-ID +bayes_ignore_header Resent-Subject +bayes_ignore_header Resent-To +bayes_ignore_header X-Received-From-IP +bayes_ignore_header X-Virus-Scanned +bayes_ignore_header X-Spam-Status +bayes_ignore_header X-Spam-Level +bayes_ignore_header X-Sender +bayes_ignore_header X-Mailer +bayes_ignore_header X-CRM114 +bayes_ignore_header X-SA-Exim +bayes_ignore_header X-PerlMX-Spam + +# Blackhole list options +skip_rbl_checks 0 +rbl_timeout 10 +dns_available yes + +# Vipul's Razor options +use_razor2 1 +razor_timeout 10 + +# Distributed Checksum Clearinghouse (DCC) options +use_dcc 1 +dcc_timeout 10 +dcc_timeout 10 +dcc_body_max 999999 +dcc_fuz1_max 999999 +dcc_fuz2_max 999999 + +# Pyzor options! +# We don't use it -- the project seems dead +use_pyzor 0 +pyzor_timeout 10 +pyzor_max 5 +pyzor_path /usr/bin/pyzor + +# Auto-whitelist to track long-term average score for sender +# AWL should be cleaned from time to time with check_whitelist program +use_auto_whitelist 1 + +# Break the X-Spam-Status header into multiple lines +fold_headers 1 + +# Encapsulate spam in an attachment +# We don't change e-mail except adding X-Spam headers +report_safe 0 + +# Mail using languages used in these country codes will not be marked +# as being possibly spam in a foreign language. +# - english, croatian, bosnian, finnish, german, slovenian +ok_languages en hr bs fi de sl + +# Privileged options +allow_user_rules 0 + +# Required score before a mail is considered spam +# The following option has no effect if Amavisd is used, edit only if +# standalone SA is used +#required_score 6.3 + +# Rewrite headers rules +# The following option has no effect if Amavisd is used, edit only if +# standalone SA is used +#rewrite_header subject [SPAM:_SCORE_] + +# Specific whitelisting +whitelist_from pomoc@iskon.hr diff --git a/sa-keys.pgp b/sa-keys.pgp new file mode 100644 index 0000000..2f690b7 --- /dev/null +++ b/sa-keys.pgp @@ -0,0 +1,106 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.0.10 + +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 +/vnTLxFoNsu4Ce42nAQ/A/jR +=SY0J +-----END PGP PUBLIC KEY BLOCK----- + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.0.10 + +mQGiBETpq0cRBAD4H/0KXKzr7rrTzOJGpLYm/qNW6GBC+Jqzn6fYSyE5XKFZpaY6SzIL51Bc +bhri7zzagMVWo7qNSGbhY6IG+drr99vURgDfxW4PC5DtqPsz/mU7RYIUnoaLL/p2XgceM6P/ +xxe/Gm/3CLgHvPvZkGw5y7scnNJLgYRxncX8eF5B3wCggB9ODKfecaYGz/8pp/3P+/NnS3UD ++wdRbxk8pA/vN3OnhLL1+7LK6upI0qJ+VHBeiK+vdVJ0DJ7VqMYKVCpvy39g1Hw1H45r6evZ +8F5B7sRRJO27MU8zq2yX+WOo9sWU0FULSLJDb3RL957Q1aXz9t1NTVmjpbRNikGQ8RYSAFIq +hRzasZGyHzQVM0Ylt4EIWcSk5BPKBACoROiRhXNmE4cTPNuAyMKigHYhncr7MofH8QkPqryS +yooBo6CnyZuiIlhHJrjTM2Wov8P6HiLBijquoZO//3eItevdy4iuth0M6q/r5gHU8jZ3YaF/ +wS6tdRwMKk8T7rMQvQ2/YmlfnZpJGz0UOuOQigdOwuF8qOiEdRsy04/zTbRfT3BlbmNvbXB1 +dGluZyBUZWNobm9sb2dpZXMgKEtleSB0byBzaWduIGFsbCBmaWxlcyBmcm9tIG9wZW5wcm90 +ZWN0LmNvbSkgPGVtYWlsQG9wZW5wcm90ZWN0LmNvbT6IXgQTEQIAHgUCROmrRwIbAwYLCQgH +AwIDFQIDAxYCAQIeAQIXgAAKCRAljNs6vencED6OAJwJxSxBE17IYlu6NUDH+cv9jXxFcACf +SH6QWe0MBuOpEYmJwfcNpVFguvU= +=vRh7 +-----END PGP PUBLIC KEY BLOCK----- + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.4 (GNU/Linux) + +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 +=eTcH +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sa-update.channels b/sa-update.channels new file mode 100644 index 0000000..41aa654 --- /dev/null +++ b/sa-update.channels @@ -0,0 +1,22 @@ +updates.spamassassin.org +saupdates.openprotect.com +70_sare_adult.cf.sare.sa-update.dostech.net +70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net +70_sare_evilnum0.cf.sare.sa-update.dostech.net +70_sare_evilnum1.cf.sare.sa-update.dostech.net +70_sare_genlsubj.cf.sare.sa-update.dostech.net +70_sare_header.cf.sare.sa-update.dostech.net +70_sare_html.cf.sare.sa-update.dostech.net +70_sare_obfu0.cf.sare.sa-update.dostech.net +70_sare_obfu1.cf.sare.sa-update.dostech.net +70_sare_oem.cf.sare.sa-update.dostech.net +70_sare_random.cf.sare.sa-update.dostech.net +70_sare_specific.cf.sare.sa-update.dostech.net +70_sare_spoof.cf.sare.sa-update.dostech.net +70_sare_stocks.cf.sare.sa-update.dostech.net +70_sare_unsub.cf.sare.sa-update.dostech.net +70_sare_uri0.cf.sare.sa-update.dostech.net +70_sare_uri1.cf.sare.sa-update.dostech.net +72_sare_bml_post25x.cf.sare.sa-update.dostech.net +72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net +99_sare_fraud_post25x.cf.sare.sa-update.dostech.net diff --git a/spamassassin-cn b/spamassassin-cn new file mode 100644 index 0000000..90b33cb --- /dev/null +++ b/spamassassin-cn @@ -0,0 +1,8 @@ +/var/log/sa-update.log { + weekly + missingok + rotate 12 + compress + delaycompress + create 640 root root +} -- 1.7.10.4