- from PLD
authorMarcin Krol <hawk@tld-linux.org>
Sun, 19 Jul 2015 12:43:46 +0000 (12:43 +0000)
committerMarcin Krol <hawk@tld-linux.org>
Sun, 19 Jul 2015 12:43:46 +0000 (12:43 +0000)
dspam-apache.conf [new file with mode: 0644]
dspam-autotools.patch [new file with mode: 0644]
dspam-config.patch [new file with mode: 0644]
dspam-httpd.conf [new file with mode: 0644]
dspam-single-char-usernames.patch [new file with mode: 0644]
dspam-speedup.patch [new file with mode: 0644]
dspam-webui.patch [new file with mode: 0644]
dspam.init [new file with mode: 0644]
dspam.spec [new file with mode: 0644]
dspam.tmpfiles [new file with mode: 0644]

diff --git a/dspam-apache.conf b/dspam-apache.conf
new file mode 100644 (file)
index 0000000..5faaa0f
--- /dev/null
@@ -0,0 +1,17 @@
+# $Id$
+Alias /dspam/htdocs /usr/share/dspam/htdocs
+Alias /dspam /usr/share/dspam/cgi
+
+<Directory /usr/share/dspam/htdocs>
+       Allow from all
+</Directory>
+
+<Directory /usr/share/dspam/cgi>
+       Options +ExecCGI
+       DirectoryIndex dspam.cgi
+       AuthType Basic
+       AuthName "dspam"
+       AuthUserFile /etc/webapps/dspam/htpasswd
+       Require valid-user
+       Allow from all
+</Directory>
diff --git a/dspam-autotools.patch b/dspam-autotools.patch
new file mode 100644 (file)
index 0000000..17c683c
--- /dev/null
@@ -0,0 +1,12 @@
+--- dspam-3.8.0/configure.ac~  2007-03-18 17:41:00.000000000 +0100
++++ dspam-3.8.0/configure.ac   2009-03-06 20:44:45.000000000 +0100
+@@ -25,6 +25,9 @@
+ AC_PROG_LIBTOOL
+ AC_PROG_MAKE_SET
++dnl when using libtool 2.x create libtool early, because it's used in configure
++m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
++
+ AC_C_INLINE
+ AC_DEFINE_UNQUOTED(CONFIGURE_ARGS, ["$CONFIGURE_ARGS"],
diff --git a/dspam-config.patch b/dspam-config.patch
new file mode 100644 (file)
index 0000000..9aa726c
--- /dev/null
@@ -0,0 +1,45 @@
+--- dspam-3.9.0/src/dspam.conf.in~     2010-01-11 22:21:58.000000000 +0100
++++ dspam-3.9.0/src/dspam.conf.in      2010-04-27 00:48:15.000000000 +0200
+@@ -43,7 +43,7 @@
+ # Other popular configurations:
+ #TrustedDeliveryAgent "/usr/cyrus/bin/deliver"        # Cyrus
+ #TrustedDeliveryAgent "/bin/maildrop"         # Maildrop
+-#TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned" # Exim
++#TrustedDeliveryAgent "/usr/bin/exim -oMr spam-scanned" # Exim
+ #
+ TrustedDeliveryAgent "@delivery_agent@"
+@@ -130,6 +130,7 @@
+ Trust root
+ Trust dspam
+ Trust apache
++Trust http
+ Trust mail
+ Trust mailnull 
+ Trust smmsp
+@@ -778,7 +779,7 @@
+ #ServerHost           127.0.0.1
+ #ServerPort           24
+ #ServerQueueSize      32
+-#ServerPID            /var/run/dspam.pid
++ServerPID             /var/run/dspam/dspam.pid
+ #
+ # ServerMode specifies the type of LMTP server to start. This can be one of:
+@@ -814,14 +815,14 @@
+ # you are running the client and server on the same machine, as it eliminates
+ # much of the bandwidth overhead.
+ #
+-#ServerDomainSocketPath       "/tmp/dspam.sock"
++ServerDomainSocketPath        "/var/run/dspam/dspam.sock"
+ #
+ # Client Mode: If you are running DSPAM in client/server mode, uncomment and
+ # set these variables. A ClientHost beginning with a / will be treated as
+ # a domain socket.
+ #
+-#ClientHost   /tmp/dspam.sock
++#ClientHost   /var/run/dspam/dspam.sock
+ #ClientIdent  "secret@Relay1"
+ #
+ #ClientHost   127.0.0.1
diff --git a/dspam-httpd.conf b/dspam-httpd.conf
new file mode 100644 (file)
index 0000000..44fbb49
--- /dev/null
@@ -0,0 +1,17 @@
+# $Id$
+Alias /dspam/htdocs /usr/share/dspam/htdocs
+Alias /dspam /usr/share/dspam/cgi
+
+<Directory /usr/share/dspam/htdocs>
+       Require all granted
+</Directory>
+
+<Directory /usr/share/dspam/cgi>
+       Options +ExecCGI
+       DirectoryIndex dspam.cgi
+       AuthType Basic
+       AuthName "dspam"
+       AuthUserFile /etc/webapps/dspam/htpasswd
+       Require valid-user
+       Require all granted
+</Directory>
diff --git a/dspam-single-char-usernames.patch b/dspam-single-char-usernames.patch
new file mode 100644 (file)
index 0000000..9bc51ba
--- /dev/null
@@ -0,0 +1,22 @@
+--- dspam-3.8.0/webui/cgi-bin/dspam.cgi~       2010-04-26 00:01:00.000000000 +0200
++++ dspam-3.8.0/webui/cgi-bin/dspam.cgi        2010-04-26 00:01:47.000000000 +0200
+@@ -1552,7 +1552,7 @@
+       $PATH = "$CONFIG{'DSPAM_HOME'}/data/" . substr($USER, 0, 1) .
+         "/". substr($USER, 1, 1) . "/$USER/$USER";
+     } else {
+-      $PATH = "$CONFIG{'DSPAM_HOME'}/data/$USER/$USER";
++      $PATH = "$CONFIG{'DSPAM_HOME'}/data/$USER/$USER/$USER";
+     }
+     return $PATH;
+   }
+--- dspam-3.8.0/webui/cgi-bin/admin.cgi~       2010-04-26 00:01:00.000000000 +0200
++++ dspam-3.8.0/webui/cgi-bin/admin.cgi        2010-04-26 00:02:09.000000000 +0200
+@@ -683,7 +683,7 @@
+       $USER = "$CONFIG{'DSPAM_HOME'}/data/" . substr($UN, 0, 1) .
+       "/". substr($UN, 1, 1) . "/$UN/$UN";
+     } else {
+-      $USER = "$CONFIG{'DSPAM_HOME'}/data/$UN/$UN";
++      $USER = "$CONFIG{'DSPAM_HOME'}/data/$UN/$UN/$UN";
+     }
+   }
diff --git a/dspam-speedup.patch b/dspam-speedup.patch
new file mode 100644 (file)
index 0000000..ef3c0be
--- /dev/null
@@ -0,0 +1,36 @@
+--- dspam-3.6.5/src/tools/dspam_clean.c~       2006-01-22 00:56:31.000000000 +0200
++++ dspam-3.6.5/src/tools/dspam_clean.c        2006-05-08 00:46:32.113812576 +0300
+@@ -306,6 +306,7 @@
+   struct nt *del;
+   struct nt_node *node;
+   int delta;
++  time_t t = time(NULL);
+   del = nt_create(NT_CHAR);
+   if (del == NULL)
+@@ -322,7 +323,7 @@
+     printf ("Signature: %s\n    Created: %s\n", ss->signature,
+             ctime (&ss->created_on));
+ #endif
+-    delta = (((time (NULL) - ss->created_on) / 60) / 60) / 24;
++    delta = (((t - ss->created_on) / 60) / 60) / 24;
+     if (age == 0 || delta > age)
+     {
+ #ifdef DEBUG
+@@ -350,6 +351,7 @@
+   struct _ds_spam_stat s;
+   ds_diction_t del;
+   int delta;
++  time_t t = time(NULL);
+ #ifdef DEBUG
+   printf("Processing probabilities; age: %d\n", age);
+@@ -366,7 +368,7 @@
+     s.probability = 0.00000;
+     _ds_calc_stat(CTX, NULL, &s, DTT_DEFAULT, NULL);
+     if (s.probability >= 0.3500 && s.probability <= 0.6500) {
+-      delta = (((time (NULL) - sr->last_hit) / 60) / 60) / 24;
++      delta = (((t - sr->last_hit) / 60) / 60) / 24;
+       if (age == 0 || delta > age)
+         ds_diction_touch(del, sr->token, "", 0);
+     }
diff --git a/dspam-webui.patch b/dspam-webui.patch
new file mode 100644 (file)
index 0000000..a88d150
--- /dev/null
@@ -0,0 +1,230 @@
+--- dspam-3.6.5/webui/cgi-bin/Makefile.am      2006-05-07 16:07:10.368456730 +0300
++++ dspam-3.6.5/webui/cgi-bin/Makefile.am      2006-05-07 16:23:40.160557961 +0300
+@@ -1,17 +1,21 @@
+ # $Id$
+ #
+-bin_SCRIPTS = configure_pl
+-CLEANFILES = configure.pl
+-
+-EXTRA_DIST =            \
++bindir = $(pkgdatadir)/cgi
++bin_SCRIPTS = \
+       dspam.cgi       \
+       graph.cgi       \
++      admin.cgi       \
++      admingraph.cgi
++CLEANFILES = configure.pl
++
++webappdir = /etc/webapps/$(PACKAGE_NAME)
++webapp_DATA = configure.pl \
+       default.prefs   \
++      admins
++
++EXTRA_DIST =            \
+       rgb.txt         \
+-      admin.cgi       \
+-      admingraph.cgi  \
+-      admins          \
+       configure.pl.in
+ SUBDIRS = templates
+@@ -22,5 +26,5 @@
+       -e 's,@bindir\@,$(bindir),g'
+-configure_pl: configure.pl.in Makefile
++configure.pl: configure.pl.in Makefile
+       ${sed_substitute_variables} < $(srcdir)/configure.pl.in > configure.pl
+--- dspam-3.6.5/webui/cgi-bin/templates/Makefile.am    2006-02-13 18:16:57.000000000 +0200
++++ dspam-3.6.5.config/webui/cgi-bin/templates/Makefile.am     2006-05-07 15:24:39.881592142 +0300
+@@ -1,6 +1,7 @@
+ # $Id$
+-EXTRA_DIST =            \
++templatesdir = $(pkgdatadir)/cgi/templates
++templates_DATA =            \
+         nav_alerts.html \
+         nav_error.html \
+         nav_performance.html \
+--- dspam-3.6.5/webui/htdocs/Makefile.am       2005-07-02 06:59:52.000000000 +0300
++++ dspam-3.6.5.config/webui/htdocs/Makefile.am        2006-05-07 15:25:19.162469057 +0300
+@@ -2,7 +2,8 @@
+ # webui/htdocs/Makefile.am
+ #
+-EXTRA_DIST =          \
++htdocsdir = $(pkgdatadir)/htdocs
++htdocs_DATA =            \
+       base.css        \
+       dspam-logo-small.gif
+--- dspam-3.9.0/webui/cgi-bin/graph.cgi~       2010-01-11 22:21:58.000000000 +0100
++++ dspam-3.9.0/webui/cgi-bin/graph.cgi        2010-04-27 00:17:05.000000000 +0200
+@@ -25,7 +25,7 @@
+ use vars qw { %CONFIG %FORM %LANG @spam_day @nonspam_day @period @data };
+ # Read configuration parameters common to all CGI scripts
+-require "configure.pl";
++require "/etc/webapps/dspam/configure.pl";
+ #
+ # Read language file
+@@ -40,7 +40,7 @@
+ %FORM = &ReadParse();
+-GD::Graph::colour::read_rgb("rgb.txt"); 
++GD::Graph::colour::read_rgb("/usr/X11R6/lib/X11/rgb.txt"); 
+ do {
+   my($spam, $nonspam, $period) = split(/\_/, $FORM{'data'});
+--- dspam-3.9.0/webui/cgi-bin/admingraph.cgi~  2010-01-11 22:21:58.000000000 +0100
++++ dspam-3.9.0/webui/cgi-bin/admingraph.cgi   2010-04-27 00:20:27.000000000 +0200
+@@ -24,7 +24,7 @@
+ use vars qw { %CONFIG %FORM %LANG @spam @nonspam @period @data @inoc @sm @fp @wh @corpus @virus @black @block };
+ # Read configuration parameters common to all CGI scripts
+-require "configure.pl";
++require "/etc/webapps/dspam/configure.pl";
+ #
+ # Read language file
+@@ -39,7 +39,7 @@
+ %FORM = &ReadParse();
+-GD::Graph::colour::read_rgb("rgb.txt"); 
++GD::Graph::colour::read_rgb("/usr/X11R6/lib/X11/rgb.txt"); 
+ do {
+   my($spam, $nonspam, $sm, $fp, $inoc, $wh, $corpus, $virus, $black, $block, $period) = split(/\_/, $FORM{'data'});
+--- dspam-3.8.0/webui/cgi-bin/dspam.cgi.orig   2006-06-01 21:14:14.000000000 +0200
++++ dspam-3.8.0/webui/cgi-bin/dspam.cgi        2009-12-08 00:41:41.991051714 +0100
+@@ -25,7 +25,7 @@
+ require "ctime.pl";
+ # Read configuration parameters common to all CGI scripts
+-require "configure.pl";
++require "/etc/webapps/dspam/configure.pl";
+ if($CONFIG{"DATE_FORMAT"}) {
+   use POSIX qw(strftime);
+@@ -67,7 +67,7 @@
+ $CONFIG{'ADMIN'} = 0;
+ if ($ENV{'REMOTE_USER'} ne "") {
+-  open(FILE, "<./admins");
++  open(FILE, "</etc/webapps/dspam/admins");
+   while(<FILE>) {
+     chomp;
+     if ($_ eq $ENV{'REMOTE_USER'}) {
+@@ -2065,10 +2065,10 @@
+   if (keys(%PREFS) eq "0" || $CONFIG{'PREFERENCES_EXTENSION'} != 1) {
+-    if (! -e "./default.prefs") {
++    if (! -e "/etc/webapps/dspam/default.prefs") {
+       &error("$LANG{'error_load_default_prefs'}");
+     }
+-    open(FILE, "<./default.prefs");
++    open(FILE, "</etc/webapps/dspam/default.prefs");
+     while(<FILE>) {
+       chomp;
+       my($directive, $value) = split(/\=/);
+--- dspam-3.6.5/webui/cgi-bin/admin.cgi        2006-05-07 16:34:00.934427888 +0300
++++ dspam-3.6.5/webui/cgi-bin/admin.cgi        2006-05-07 16:37:17.648823791 +0300
+@@ -24,7 +24,7 @@
+ require "ctime.pl";
+ # Read configuration parameters common to all CGI scripts
+-require "configure.pl";
++require "/etc/webapps/dspam/configure.pl";
+ #
+ # The current CGI script
+@@ -37,7 +37,7 @@
+ #
+ do {
+   my($admin) = 0;
+-  open(FILE, "<./admins");
++  open(FILE, "</etc/webapps/dspam/admins");
+   while(<FILE>) {
+     chomp;
+     if ($_ eq $ENV{'REMOTE_USER'}) {
+@@ -125,14 +125,14 @@
+   $USER = $FORM{'username'};
+   if ($FORM{'username'} eq "") {
+-    $FILE = "./default.prefs";
++    $FILE = "/etc/webapps/dspam/default.prefs";
+     if ($CONFIG{'PREFERENCES_EXTENSION'} != 1 && ! -l "$CONFIG{'DSPAM_HOME'}/default.prefs") {
+       $DATA{'ERROR'} = "<em>WARNING:</em> " .
+         "These default preferences will not be loaded by DSPAM, but only by ".
+         " the CGI interface when a user initially sets up their preferences. ".
+         "To have DSPAM override its configuration with these default ".
+         "preferences, symlink $CONFIG{'DSPAM_HOME'}/default.prefs to the ".
+-        "default.prefs file in the CGI directory.<BR><BR>";
++        "default.prefs file in the /etc/webapps/dspam directory.<BR><BR>";
+     }
+   } else {
+     $FILE = GetPath($FORM{'username'}) . ".prefs";
+@@ -213,7 +213,7 @@
+   }
+   if (! -e $FILE) {
+-    %PREFS = GetPrefs($USER, "./default.prefs");
++    %PREFS = GetPrefs($USER, "/etc/webapps/dspam/default.prefs");
+   } else {
+     %PREFS = GetPrefs($USER, $FILE);
+   }
+@@ -704,7 +704,7 @@
+     close(PIPE);
+   } else {
+     if (! -e $FILE) {
+-      $FILE = "./default.prefs";
++      $FILE = "/etc/webapps/dspam/default.prefs";
+     }
+                                                                                 
+     if (! -e $FILE) {
+--- dspam-3.9.0/webui/cgi-bin/configure.pl.in~ 2010-01-11 22:21:58.000000000 +0100
++++ dspam-3.9.0/webui/cgi-bin/configure.pl.in  2010-04-27 00:33:18.000000000 +0200
+@@ -25,7 +25,7 @@
+ # Default DSPAM enviroment
+ $CONFIG{'DSPAM_HOME'} = "@dspam_home@";
+-$CONFIG{'DSPAM_BIN'}  = "@bindir@";
++$CONFIG{'DSPAM_BIN'}  = "/usr/bin";
+ $CONFIG{'DSPAM'}      = $CONFIG{'DSPAM_BIN'} . "/dspam";
+ $CONFIG{'DSPAM_STATS'}        = $CONFIG{'DSPAM_BIN'} . "/dspam_stats";
+ $CONFIG{'DSPAM_ARGS'} = "--deliver=innocent --class=innocent " .
+
+@@ -34,7 +34,7 @@
+ $CONFIG{'DSPAM_PROCESSES'} = "ps auxw | grep dspam | grep -v 'grep\|cgi\|sock' | wc -l"; # use ps -deaf for Solaris
+ $CONFIG{'MAIL_QUEUE'} = "mailq | grep '^[0-9,A-F]\{10,12\}[\t ][\t ]*[1-9]' | wc -l";
+-$CONFIG{'WEB_ROOT'}   = ""; # URL location of included htdocs/ files
++$CONFIG{'WEB_ROOT'}   = "/dspam/htdocs"; # URL location of included htdocs/ files
+ # Default DSPAM display
+ #$CONFIG{'DATE_FORMAT'}       = "%d.%m.%Y %H:%M"; # Date format in strftime style
+@@ -54,14 +54,14 @@
+ $ENV{'PATH'}          = "$ENV{'PATH'}:$CONFIG{'DSPAM_BIN'}";
+ # Autodetect filesystem layout and preference options
+-$CONFIG{'AUTODETECT'} = 1;
++#$CONFIG{'AUTODETECT'}        = 1;
+ # Or, if you're running dspam.cgi as untrusted, it won't be able to auto-detect
+ # so you will need to specify some features manually:
+-#$CONFIG{'AUTODETECT'}        = 0;
+-#$CONFIG{'LARGE_SCALE'}       = 0;
+-#$CONFIG{'DOMAIN_SCALE'}= 0;
+-#$CONFIG{'PREFERENCES_EXTENSION'} = 0;
++$CONFIG{'AUTODETECT'} = 1;
++$CONFIG{'LARGE_SCALE'}        = 1;
++$CONFIG{'DOMAIN_SCALE'}= 0;
++$CONFIG{'PREFERENCES_EXTENSION'} = 1;
+ # Get DSPAM version
+ $CONFIG{'DSPAM_VERSION'} = "Unknown Version";
diff --git a/dspam.init b/dspam.init
new file mode 100644 (file)
index 0000000..3582e86
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh
+#
+# dspam                dspam
+#
+# chkconfig:   345 55 45
+#
+# description: dspam
+
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get service config
+[ -f /etc/sysconfig/dspam ] && . /etc/sysconfig/dspam
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       # Check if the service is already running?
+       if [ ! -f /var/lock/subsys/dspam ]; then
+               msg_starting dspam
+               daemon --fork --user mail /usr/bin/dspam --daemon
+               RETVAL=$?
+               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dspam
+       else
+               msg_already_running dspam
+       fi
+       ;;
+  stop)
+       if [ -f /var/lock/subsys/dspam ]; then
+               msg_stopping dspam
+               killproc --pidfile dspam/dspam.pid dspam
+               rm -f /var/lock/subsys/dspam >/dev/null 2>&1
+       else
+               msg_not_running dspam
+       fi
+       ;;
+  restart)
+       $0 stop
+       $0 start
+       exit $?
+       ;;
+  status)
+       status dspam
+       exit $?
+       ;;
+  reload|force-reload)
+       if [ -f /var/lock/subsys/dspam ]; then
+               msg_reloading dspam
+               killproc dspam -HUP
+               RETVAL=$?
+       else
+               msg_not_running dspam
+               exit 7
+       fi
+       ;;
+  *)
+       msg_usage "$0 {start|stop|init|restart|reload|force-reload|status}"
+       exit 3
+esac
+
+exit $RETVAL
diff --git a/dspam.spec b/dspam.spec
new file mode 100644 (file)
index 0000000..0c56d41
--- /dev/null
@@ -0,0 +1,529 @@
+# TODO:
+# - support for libdclassify
+# - oracle driver
+# - messages from default install of cron with mysql driver Memory fault
+# - remove versioned sonames from drivers
+#
+# Conditional build:
+%bcond_without mysql   # disable MySQL storage driver
+%bcond_without pgsql   # disable PostgreSQL storage driver
+%bcond_without sqlite  # disable SQLite3 storage driver
+%bcond_with    mysql40 # use with mysql 4.0
+
+%include       /usr/lib/rpm/macros.perl
+Summary:       A library and Mail Delivery Agent for Bayesian spam filtering
+Summary(pl.UTF-8):     Biblioteka i MDA do bayesowskiego filtrowania spamu
+Name:          dspam
+Version:       3.9.0
+Release:       7
+License:       GPL v2+
+Group:         Applications/Mail
+Source0:       http://downloads.sourceforge.net/project/dspam/dspam/%{name}-%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 10d092b57d628d8c91655fee5dc0d0cd
+Source1:       %{name}.init
+Source2:       %{name}-apache.conf
+Source3:       %{name}.tmpfiles
+Source4:       %{name}-httpd.conf
+Patch0:                %{name}-webui.patch
+Patch1:                %{name}-config.patch
+Patch2:                %{name}-speedup.patch
+Patch3:                %{name}-autotools.patch
+Patch4:                %{name}-single-char-usernames.patch
+URL:           http://dspam.nuclearelephant.com/
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: clamav-devel
+BuildRequires: libtool
+%{?with_mysql:BuildRequires:   mysql-devel}
+BuildRequires: openldap-devel >= 2.4.6
+%{?with_pgsql:BuildRequires:   postgresql-devel}
+BuildRequires: rpm-perlprov >= 4.1-13
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: sed >= 4.0
+%{?with_sqlite:BuildRequires:  sqlite3-devel}
+BuildRequires: zlib-devel
+Requires(post,preun):  /sbin/chkconfig
+Requires:      %{name}-common = %{version}-%{release}
+Requires:      %{name}-driver = %{version}-%{release}
+Requires:      rc-scripts
+BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%define                _webapps        /etc/webapps
+%define                _webapp         %{name}
+
+# symbols are provided by dspam executable
+%define                skip_post_check_so      libdspam.so.7.0.0 lib(hash\|mysql\|pgsql\|sqlite3)_drv.so.7.0.0
+
+%description
+DSPAM (as in De-Spam) is an open-source project to create a new kind
+of anti-spam mechanism, and is currently effective as both a
+server-side agent for UNIX email servers and a developer's library for
+mail clients, other anti-spam tools, and similar projects requiring
+drop-in spam filtering.
+
+The DSPAM agent masquerades as the email server's local delivery agent
+and filters/learns spams using an advanced Bayesian statistical
+approach (based on Bayes's theorem of combined probabilities) which
+provides an administratively maintenance-free, easy-learning Anti-Spam
+service custom tailored to each individual user's behavior. Advanced
+because on top of standard Bayesian filtering is also incorporated the
+use of Chained Tokens, de-obfuscation, and other enhancements. DSPAM
+works great with Sendmail and Exim, and should work well with any
+other MTA that supports an external local delivery agent (postfix,
+qmail, etc.)
+
+%description -l pl.UTF-8
+DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
+stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
+efektywny zarówno jako działający po stronie serwera agent dla
+uniksowych serwerów pocztowych jak i biblioteka dla programistów
+klientów pocztowych, innych narzędzi antyspamowych i innych projektów
+wymagających filtrowania spamu w locie.
+
+Agent DSPAM zachowuje się jak lokalny agent dostarczania poczty (MDA)
+i filtruje/uczy się spamu przy użyciu zaawansowanego bayesowskiego
+przybliżenia statystycznego (opartego na twierdzeniu Bayesa o
+połączonych prawdopodobieństwach), dając nie wymagającą obsługi
+administracyjnej, łatwo uczącą się usługę antyspamową dostosowaną do
+zachowania każdego użytkownika. Metoda jest zaawansowana ponieważ na
+podstawie standardowego filtrowania bayesowskiego wprowadzono użycie
+tokenów łańcuchowych, eliminowanie ukrywanie i inne rozszerzenia.
+DSPAM działa wspaniale z Sendmailem i Eximem, powinien działać dobrze
+z każdym innym MTA obsługującym zewnętrznego agenta MDA (postfiksem,
+qmailem itd.).
+
+%package client
+Summary:       dspam client
+Summary(pl.UTF-8):     Klient dspam
+Group:         Applications/Mail
+Requires:      %{name}-common
+
+%description client
+dspam client.
+
+%description client -l pl.UTF-8
+Klient dspam.
+
+%package common
+Summary:       Common files for dspam packages
+Summary(pl.UTF-8):     Wspólne pliki dla pakietów z dspamem
+Group:         Applications/Mail
+
+%description common
+Common files for dspam and dspam-client packages.
+
+%description common -l pl.UTF-8
+Wspólne pliki dla pakietów dspam i dspam-client.
+
+%package libs
+Summary:       A library for Bayesian spam filtering
+Summary(pl.UTF-8):     Biblioteka do bayesowskiego filtrowania spamu
+Group:         Libraries
+Obsoletes:     dspam-driver-db
+
+%description libs
+DSPAM (as in De-Spam) is an open-source project to create a new kind
+of anti-spam mechanism, and is currently effective as both a
+server-side agent for UNIX email servers and a developer's library for
+mail clients, other anti-spam tools, and similar projects requiring
+drop-in spam filtering.
+
+This package contains the library.
+
+%description libs -l pl.UTF-8
+DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
+stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
+efektywny zarówno jako działający po stronie serwera agent dla
+uniksowych serwerów pocztowych jak i biblioteka dla programistów
+klientów pocztowych, innych narzędzi antyspamowych i innych projektów
+wymagających filtrowania spamu w locie.
+
+Ten pakiet zawiera wspomnianą bibliotekę.
+
+%package devel
+Summary:       Header files for the DSPAM library
+Summary(pl.UTF-8):     Pliki nagłówkowe biblioteki DSPAM
+Group:         Development/Libraries
+Requires:      %{name}-libs = %{version}-%{release}
+
+%description devel
+DSPAM has had its core engine moved into a separate library, libdspam.
+This library can be used by developers to provide 'drop-in' spam
+filtering for their mail client applications, other anti-spam tools,
+or similar projects.
+
+%description devel -l pl.UTF-8
+Główny silnik DSPAM został przeniesiony do oddzielnej biblioteki
+libdspam, która może być używana przez programistów do zapewnienia
+filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
+narzędzi antyspamowych i podobnych projektów.
+
+%package static
+Summary:       Static DSPAM library
+Summary(pl.UTF-8):     Statyczna biblioteka DSPAM
+Group:         Development/Libraries
+Requires:      %{name}-devel = %{version}-%{release}
+
+%description static
+Static DSPAM library.
+
+%description static -l pl.UTF-8
+Statyczna biblioteka DSPAM.
+
+%package driver-hash
+Summary:       HASH driver for DSPAM
+Summary(pl.UTF-8):     Sterownik HASH dla DSPAM-a
+Group:         Libraries
+Requires(post):        sed >= 4.0
+Requires:      %{name} = %{version}-%{release}
+Provides:      %{name}-driver = %{version}-%{release}
+
+%description driver-hash
+HASH driver for DSPAM.
+
+%description driver-hash -l pl.UTF-8
+Sterownik HASH dla DSPAM-a.
+
+%package driver-mysql
+Summary:       MySQL driver for DSPAM
+Summary(pl.UTF-8):     Sterownik MySQL dla DSPAM-a
+Group:         Libraries
+Requires(post):        sed >= 4.0
+Requires:      %{name} = %{version}-%{release}
+Provides:      %{name}-driver = %{version}-%{release}
+
+%description driver-mysql
+MySQL driver for DSPAM.
+
+%description driver-mysql -l pl.UTF-8
+Sterownik MySQL dla DSPAM-a.
+
+%package driver-pgsql
+Summary:       PostgreSQL driver for DSPAM
+Summary(pl.UTF-8):     Sterownik PostgreSQL dla DSPAM-a
+Group:         Libraries
+Requires(post):        sed >= 4.0
+Requires:      %{name} = %{version}-%{release}
+Provides:      %{name}-driver = %{version}-%{release}
+
+%description driver-pgsql
+PostgreSQL driver for DSPAM.
+
+%description driver-pgsql -l pl.UTF-8
+Sterownik PostgreSQL dla DSPAM-a.
+
+%package driver-sqlite3
+Summary:       SQLite driver for DSPAM
+Summary(pl.UTF-8):     Sterownik SQLite dla DSPAM-a
+Group:         Libraries
+Requires(post):        sed >= 4.0
+Requires:      %{name} = %{version}-%{release}
+Provides:      %{name}-driver = %{version}-%{release}
+Obsoletes:     dspam-driver-sqlite
+
+%description driver-sqlite3
+SQLite driver for DSPAM.
+
+%description driver-sqlite3 -l pl.UTF-8
+Sterownik SQLite dla DSPAM-a.
+
+%package webui
+Summary:       DSPAM Web UI
+Summary(pl.UTF-8):     Interfejs WWW do programu DSPAM
+Group:         Applications/WWW
+Requires:      webapps
+# needs dspam binary
+Requires:      %{name} = %{version}-%{release}
+Conflicts:     apache-base < 2.4.0-1
+
+%description webui
+The Web UI (CGI client) can be run from any executable location on a
+web server, and detects its user's identity from the REMOTE_USER
+environment variable. This means you'll need to use HTTP password
+authentication to access the CGI (Any type of authentication will
+work, so long as Apache supports the module). This is also convenient
+in that you can set up authentication using almost any existing system
+you have. The only catch is that you'll need the usernames to match
+the actual DSPAM usernames used the system. A copy of the shadow
+password file will suffice for most common installs.
+
+%description webui -l pl.UTF-8
+Interfejs użytkownika WWW (klient CGI) może być uruchamiany z
+dowolnego wykonywalnego miejsca na serwerze WWW i rozpoznaje tożsamość
+użytkownika ze zmiennej środowiskowej REMOTE_USER. Oznacza to, że
+trzeba użyć uwietrzytelnienia HTTP z hasłem do dostępu do CGI (działać
+będzie dowolny rodzaj uwierzytelnienia obsługiwany przez moduły
+Apache'a). Jest to o tyle wygodne, że można skonfigurować
+uwierzytelnianie dla prawie każdego istniejącego systemu. Jedynym
+wymogiem jest, żeby nazwy użytkowników pokrywały się z nazwami
+użytkowników DSPAM-a używanymi w systemie. Kopia pliku shadow
+wystarczy dla większości popularnych instalacji.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
+%{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
+sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
+
+%build
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+
+DRIVERS="
+hash_drv
+%{?with_mysql:mysql_drv}
+%{?with_pgsql:pgsql_drv}
+%{?with_sqlite:sqlite3_drv}
+"
+%configure \
+       --disable-dependency-tracking \
+       %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
+       --enable-trusted-user-security \
+       --enable-large-scale \
+       --with-dspam-home=/var/lib/%{name} \
+       --with-dspam-home-owner=none \
+       --with-dspam-home-group=none \
+       --with-dspam-owner=none \
+       --with-dspam-group=none \
+       --with-logdir=/var/log/%{name} \
+       --enable-ldap \
+       --enable-clamav \
+       --enable-preferences-extension \
+       --enable-long-usernames \
+       --enable-virtual-users \
+       --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
+%if %{with mysql}
+       --with-mysql-includes=%{_includedir}/mysql \
+       --with-mysql-libraries=%{_libdir} \
+%endif
+%if %{with pgsql}
+       --with-pgsql-includes=%{_includedir}/postgresql \
+       --with-pgsql-libraries=%{_libdir} \
+%endif
+%if 0
+%if %{with sqlite}
+       --with-sqlite-includes=%{_includedir} \
+       --with-sqlite-libraries=%{_libdir} \
+%endif
+%endif
+       --enable-daemon
+
+# --enable-dclassify-extension needs libdclassify
+
+%{__make} -j1
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
+       $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data} \
+       $RPM_BUILD_ROOT/usr/lib/tmpfiles.d
+
+%{__make} -j1 install \
+       DESTDIR=$RPM_BUILD_ROOT
+
+install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
+
+cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
+
+# install devel files
+install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
+install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
+
+# provide maintenance scripts
+install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
+cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
+#!/bin/sh
+exec %{_bindir}/%{name}_clean -s -p
+EOF
+
+chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
+
+# fix purge stuff
+#install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
+
+%if %{with mysql}
+cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
+_UNCONFIGURED_
+
+Note!
+
+This file can only contain 5 lines with the following values:
+
+HOSTNAME
+PORT
+USERNAME
+PASSWORD
+DATABASE
+EOF
+%endif
+
+%if %{with pgsql}
+cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
+_UNCONFIGURED_
+
+Note!
+
+This file can only contain 5 lines with the following values:
+
+HOSTNAME
+PORT
+USERNAME
+PASSWORD
+DATABASE
+EOF
+%endif
+
+install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
+install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
+install %{SOURCE4} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
+touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
+
+install %{SOURCE3} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
+
+# cleanup
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/dspam/*.{a,la}
+
+%post
+/sbin/chkconfig --add dspam
+%service dspam restart "dspam daemon"
+
+%preun
+if [ "$1" = "0" ]; then
+       %service dspam stop
+       /sbin/chkconfig --del dspam
+fi
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post  libs -p /sbin/ldconfig
+%postun        libs -p /sbin/ldconfig
+
+%post driver-hash
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
+
+%post driver-mysql
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
+
+%post driver-pgsql
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
+
+%post driver-sqlite3
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libsqlite3_drv.so,' /etc/dspam.conf
+
+%triggerin webui -- apache1 < 1.3.37-3, apache1-base
+%webapp_register apache %{_webapp}
+
+%triggerun webui -- apache1 < 1.3.37-3, apache1-base
+%webapp_unregister apache %{_webapp}
+
+%triggerin webui -- apache-base
+%webapp_register httpd %{_webapp}
+
+%triggerun webui -- apache-base
+%webapp_unregister httpd %{_webapp}
+
+%files
+%defattr(644,root,root,755)
+%doc README CHANGELOG RELEASE.NOTES UPGRADING
+%doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
+%doc scripts/train.pl
+/usr/lib/tmpfiles.d/%{name}.conf
+%dir %attr(775,root,mail) /var/run/dspam
+%dir %attr(750,root,mail) /var/lib/%{name}
+%dir %attr(770,root,mail) /var/lib/%{name}/data
+%dir /var/lib/%{name}/txt
+%dir %{_libdir}/dspam
+%config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
+%dir %attr(770,root,mail) /var/log/dspam
+%attr(754,root,root) /etc/rc.d/init.d/dspam
+%attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
+%attr(755,root,root) %{_bindir}/%{name}
+%attr(755,root,root) %{_bindir}/%{name}_logrotate
+%attr(755,root,root) %{_bindir}/%{name}_clean
+%attr(755,root,root) %{_bindir}/%{name}_crc
+%attr(755,root,root) %{_bindir}/%{name}_dump
+%attr(755,root,root) %{_bindir}/%{name}_stats
+%attr(755,root,root) %{_bindir}/%{name}_merge
+%attr(755,root,root) %{_bindir}/%{name}_2sql
+%attr(755,root,root) %{_bindir}/%{name}_admin
+%attr(755,root,root) %{_bindir}/%{name}_train
+%{_mandir}/man?/%{name}*
+
+%files client
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/%{name}c
+
+%files common
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libdspam.so.7.0.0
+%attr(755,root,root) %ghost %{_libdir}/libdspam.so.7
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libdspam.so
+%{_libdir}/libdspam.la
+%{_includedir}/%{name}
+%{_mandir}/man3/libdspam.3*
+%{_pkgconfigdir}/dspam.pc
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libdspam.a
+
+%files driver-hash
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/css*
+%attr(755,root,root) %{_libdir}/dspam/libhash_drv.so*
+
+%if %{with mysql}
+%files driver-mysql
+%defattr(644,root,root,755)
+%doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
+%attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
+%attr(755,root,root) %{_libdir}/dspam/libmysql_drv.so*
+%endif
+
+%if %{with pgsql}
+%files driver-pgsql
+%defattr(644,root,root,755)
+%doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
+%attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
+%attr(755,root,root) %{_bindir}/%{name}_pg2int8
+%attr(755,root,root) %{_libdir}/dspam/libpgsql_drv.so*
+%endif
+
+%if %{with sqlite}
+%files driver-sqlite3
+%defattr(644,root,root,755)
+%doc doc/sqlite_drv.txt
+%attr(755,root,root) %{_libdir}/dspam/libsqlite3_drv.so*
+%endif
+
+%files webui
+%defattr(644,root,root,755)
+%dir %attr(750,root,http) %{_webapps}/%{_webapp}
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
+%attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
+%config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
+
+%dir %{_datadir}/dspam
+%dir %{_datadir}/dspam/cgi
+%attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
+%{_datadir}/dspam/cgi/templates
+%{_datadir}/dspam/htdocs
diff --git a/dspam.tmpfiles b/dspam.tmpfiles
new file mode 100644 (file)
index 0000000..e48ffcd
--- /dev/null
@@ -0,0 +1 @@
+d /var/run/dspam 0775 root mail -