r1: [svn-inject] Installing original source of spamassassin-cn
authorDinko Korunic <Dinko.Korunic@CARNet.hr>
Fri, 14 Sep 2007 13:26:11 +0000 (13:26 +0000)
committerDinko Korunic <Dinko.Korunic@CARNet.hr>
Fri, 14 Sep 2007 13:26:11 +0000 (13:26 +0000)
21 files changed:
README.CARNet [new file with mode: 0644]
changelog.CARNet [new file with mode: 0644]
check_whitelist [new file with mode: 0755]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/cron.daily [new file with mode: 0755]
debian/cron.monthly [new file with mode: 0755]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/examples [new file with mode: 0644]
debian/install [new file with mode: 0644]
debian/postinst [new file with mode: 0755]
debian/postrm [new file with mode: 0755]
debian/rules [new file with mode: 0755]
etc-default-spamassassin-non-root [new file with mode: 0644]
etc-default-spamassassin-root [new file with mode: 0644]
local.cf [new file with mode: 0644]
sa-keys.pgp [new file with mode: 0644]
sa-update.channels [new file with mode: 0644]
spamassassin-cn [new file with mode: 0644]

diff --git a/README.CARNet b/README.CARNet
new file mode 100644 (file)
index 0000000..244cc79
--- /dev/null
@@ -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 <kreator@carnet.hr>  Fri, 14 Sep 2007 15:23:37 +0200
diff --git a/changelog.CARNet b/changelog.CARNet
new file mode 100644 (file)
index 0000000..1055b68
--- /dev/null
@@ -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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  Fri, 12 Dec 2003 17:31:05 +0100
+
+spamassassin-cn (2.61) sarge; urgency=low
+
+  * nova upstream verzija
+
+ -- Ivan 'ico' Rako <irako@srce.hr>  Fri, 12 Dec 2003 17:31:05 +0100
+
diff --git a/check_whitelist b/check_whitelist
new file mode 100755 (executable)
index 0000000..18a90a0
--- /dev/null
@@ -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<check_whitelist> [--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<dbfile>.
+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<AVG> is the average score;  C<TOTSCORE> is the total score of all mails seen
+so far;  C<COUNT> is the number of messages seen from that sender;  C<EMAIL> is
+the sender's email address, and C<IPBASE> is the B<AWL base IP address>.
+
+B<AWL base IP address> 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 (file)
index 0000000..1055b68
--- /dev/null
@@ -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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <kreator@carnet.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  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 <irako@srce.hr>  Fri, 12 Dec 2003 17:31:05 +0100
+
+spamassassin-cn (2.61) sarge; urgency=low
+
+  * nova upstream verzija
+
+ -- Ivan 'ico' Rako <irako@srce.hr>  Fri, 12 Dec 2003 17:31:05 +0100
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b8626c4
--- /dev/null
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..2ae5ae6
--- /dev/null
@@ -0,0 +1,22 @@
+Source: spamassassin-cn
+Section: mail
+Priority: optional
+Maintainer: Dinko Korunic <kreator@carnet.hr>
+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 (executable)
index 0000000..5ec40d4
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Dinko Korunic <kreator@carnet.hr>
+
+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 (executable)
index 0000000..268cacf
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Dinko Korunic <kreator@carnet.hr>
+
+# 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 (file)
index 0000000..14ad7d0
--- /dev/null
@@ -0,0 +1,3 @@
+etc/spamassassin
+etc/cron.daily
+etc/logrotate.d
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..ef5ce6c
--- /dev/null
@@ -0,0 +1,2 @@
+changelog.CARNet
+README.CARNet
diff --git a/debian/examples b/debian/examples
new file mode 100644 (file)
index 0000000..c91c604
--- /dev/null
@@ -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 (file)
index 0000000..d917ac6
--- /dev/null
@@ -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 (executable)
index 0000000..ee11369
--- /dev/null
@@ -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:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# 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 (<NEW>)
+        {
+          chomp();
+          if (/^(\S+)\s+(.+)$/o)
+          {
+            my ($key, $value) = ($1, $2);
+            $hash{$key} = $value;
+          }
+        }
+        close(NEW);
+
+        # read old configuration
+        open (OLD, "<", $ARGV[1]);
+        while (<OLD>)
+        {
+          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 (executable)
index 0000000..4df7675
--- /dev/null
@@ -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:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# 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 (executable)
index 0000000..9256324
--- /dev/null
@@ -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/<packagename>.
+       #$(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 (file)
index 0000000..13bda3b
--- /dev/null
@@ -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 (file)
index 0000000..0c7267a
--- /dev/null
@@ -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 (file)
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 (file)
index 0000000..2f690b7
--- /dev/null
@@ -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 (file)
index 0000000..41aa654
--- /dev/null
@@ -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 (file)
index 0000000..90b33cb
--- /dev/null
@@ -0,0 +1,8 @@
+/var/log/sa-update.log {
+     weekly
+     missingok
+     rotate 12
+     compress
+     delaycompress
+     create 640 root root
+}