# - support for libdclassify
# - oracle driver
# - messages from default install of cron with mysql driver Memory fault
-# - installing dspam and dspam-client on same host causes
-# /etc/dspam.conf being owned by both packages and .rpmnew files being
-# created. move the config to -libs? -common? patch code to use
-# different config for client?
+# - 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): Biblioteka i MDA do bayesowskiego filtrowania spamu
+Summary(pl.UTF-8): Biblioteka i MDA do bayesowskiego filtrowania spamu
Name: dspam
-Version: 3.6.8
-Release: 0.1
-License: GPL
+Version: 3.9.0
+Release: 8
+License: GPL v2+
Group: Applications/Mail
-Source0: http://dspam.nuclearelephant.com/sources/%{name}-%{version}.tar.gz
-# Source0-md5: c4b1a7079690ee16d8b0f36b2a2a90a4
+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
-Source1: %{name}.init
-Source2: %{name}-apache.conf
+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
+BuildRequires: openldap-devel >= 2.4.6
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: rpm-perlprov >= 4.1-13
BuildRequires: rpmbuild(macros) >= 1.268
%{?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)
+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
other MTA that supports an external local delivery agent (postfix,
qmail, etc.)
-%description -l pl
-DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
+%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,
+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): Klient dspam
+Summary(pl.UTF-8): Klient dspam
Group: Applications/Mail
-# to get the same dspam.conf when both installed
-Conflicts: dspam < %{version}-%{release}
-Conflicts: dspam > %{version}-%{release}
+Requires: %{name}-common
%description client
dspam client.
-%description client -l pl
+%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): Biblioteka do bayesowskiego filtrowania spamu
+Summary(pl.UTF-8): Biblioteka do bayesowskiego filtrowania spamu
Group: Libraries
-Requires: %{name}-driver = %{version}-%{release}
+Obsoletes: dspam-driver-db
%description libs
DSPAM (as in De-Spam) is an open-source project to create a new kind
This package contains the library.
-%description libs -l pl
-DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
+%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.
+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ê.
+Ten pakiet zawiera wspomnianą bibliotekę.
%package devel
Summary: Header files for the DSPAM library
-Summary(pl): Pliki nag³ówkowe biblioteki DSPAM
+Summary(pl.UTF-8): Pliki nagłówkowe biblioteki DSPAM
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
filtering for their mail client applications, other anti-spam tools,
or similar projects.
-%description devel -l pl
-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.
+%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): Statyczna biblioteka DSPAM
+Summary(pl.UTF-8): Statyczna biblioteka DSPAM
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
%description static
Static DSPAM library.
-%description static -l pl
+%description static -l pl.UTF-8
Statyczna biblioteka DSPAM.
%package driver-hash
Summary: HASH driver for DSPAM
-Summary(pl): Sterownik HASH dla DSPAM-a
+Summary(pl.UTF-8): Sterownik HASH dla DSPAM-a
Group: Libraries
Requires(post): sed >= 4.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
Provides: %{name}-driver = %{version}-%{release}
%description driver-hash
HASH driver for DSPAM.
-%description driver-hash -l pl
+%description driver-hash -l pl.UTF-8
Sterownik HASH dla DSPAM-a.
%package driver-mysql
Summary: MySQL driver for DSPAM
-Summary(pl): Sterownik MySQL dla DSPAM-a
+Summary(pl.UTF-8): Sterownik MySQL dla DSPAM-a
Group: Libraries
Requires(post): sed >= 4.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
Provides: %{name}-driver = %{version}-%{release}
%description driver-mysql
MySQL driver for DSPAM.
-%description driver-mysql -l pl
+%description driver-mysql -l pl.UTF-8
Sterownik MySQL dla DSPAM-a.
%package driver-pgsql
Summary: PostgreSQL driver for DSPAM
-Summary(pl): Sterownik PostgreSQL dla DSPAM-a
+Summary(pl.UTF-8): Sterownik PostgreSQL dla DSPAM-a
Group: Libraries
Requires(post): sed >= 4.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
Provides: %{name}-driver = %{version}-%{release}
%description driver-pgsql
PostgreSQL driver for DSPAM.
-%description driver-pgsql -l pl
+%description driver-pgsql -l pl.UTF-8
Sterownik PostgreSQL dla DSPAM-a.
-%package driver-sqlite
+%package driver-sqlite3
Summary: SQLite driver for DSPAM
-Summary(pl): Sterownik SQLite dla DSPAM-a
+Summary(pl.UTF-8): Sterownik SQLite dla DSPAM-a
Group: Libraries
Requires(post): sed >= 4.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
Provides: %{name}-driver = %{version}-%{release}
+Obsoletes: dspam-driver-sqlite
-%description driver-sqlite
+%description driver-sqlite3
SQLite driver for DSPAM.
-%description driver-sqlite -l pl
+%description driver-sqlite3 -l pl.UTF-8
Sterownik SQLite dla DSPAM-a.
%package webui
Summary: DSPAM Web UI
-Summary(pl): Interfejs WWW do programu DSPAM
+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
the actual DSPAM usernames used the system. A copy of the shadow
password file will suffice for most common installs.
-%description webui -l pl
-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.
+%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
%{__libtoolize}
%{__aclocal} -I m4
%{__autoconf}
+%{__autoheader}
%{__automake}
DRIVERS="
hash_drv
%{?with_mysql:mysql_drv}
%{?with_pgsql:pgsql_drv}
-%{?with_sqlite:sqlite_drv}
+%{?with_sqlite:sqlite3_drv}
"
%configure \
--disable-dependency-tracking \
%{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
--enable-trusted-user-security \
- --enable-bias \
--enable-large-scale \
- --with-userdir=/var/lib/%{name} \
- --with-userdir-owner=none \
- --with-userdir-group=none \
--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-signature-life=14 \
+ --with-logdir=/var/log/%{name} \
--enable-ldap \
--enable-clamav \
--enable-preferences-extension \
--enable-long-usernames \
- --enable-neural-networking \
--enable-virtual-users \
--with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
%if %{with mysql}
--with-pgsql-includes=%{_includedir}/postgresql \
--with-pgsql-libraries=%{_libdir} \
%endif
+%if 0
%if %{with sqlite}
- --with-sqlite3-includes=%{_includedir} \
- --with-sqlite3-libraries=%{_libdir} \
+ --with-sqlite-includes=%{_includedir} \
+ --with-sqlite-libraries=%{_libdir} \
+%endif
%endif
--enable-daemon
# --enable-dclassify-extension needs libdclassify
-%{__make}
+%{__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/var/lib/%{name}/{txt,data} \
+ $RPM_BUILD_ROOT/usr/lib/tmpfiles.d
-%{__make} install \
+%{__make} -j1 install \
DESTDIR=$RPM_BUILD_ROOT
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
-install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.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"
%postun libs -p /sbin/ldconfig
%post driver-hash
-if [ "$1" = "1" ]; then
- sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libhash_drv.so,' /etc/dspam.conf
-fi
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
%post driver-mysql
-if [ "$1" = "1" ]; then
- sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libmysql_drv.so,' /etc/dspam.conf
-fi
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
%post driver-pgsql
-if [ "$1" = "1" ]; then
- sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libpgsql_drv.so,' /etc/dspam.conf
-fi
+%{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
-%post driver-sqlite
-if [ "$1" = "1" ]; then
- sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libsqlite_drv.so,' /etc/dspam.conf
-fi
+%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 < 2.2.0, apache-base
+%triggerin webui -- apache-base
%webapp_register httpd %{_webapp}
-%triggerun webui -- apache < 2.2.0, apache-base
+%triggerun webui -- apache-base
%webapp_unregister httpd %{_webapp}
%files
%doc README CHANGELOG RELEASE.NOTES UPGRADING
%doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
%doc scripts/train.pl
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
+/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
%files client
%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
%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)
-%doc README CHANGELOG
-%attr(755,root,root) %{_libdir}/lib*.so.*.*.*
-%attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
+%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}/lib*.so
-%attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
-%{_libdir}/lib*.la
+%attr(755,root,root) %{_libdir}/libdspam.so
+%{_libdir}/libdspam.la
%{_includedir}/%{name}
-%{_mandir}/man3/libdspam*
-%{_pkgconfigdir}/*.pc
+%{_mandir}/man3/libdspam.3*
+%{_pkgconfigdir}/dspam.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/lib*.a
+%{_libdir}/libdspam.a
%files driver-hash
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/css*
-%attr(755,root,root) %{_libdir}/libhash_drv*.so*
+%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}/libmysql_drv*.so*
+%attr(755,root,root) %{_libdir}/dspam/libmysql_drv.so*
%endif
%if %{with pgsql}
%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}/libpgsql_drv*.so*
+%attr(755,root,root) %{_libdir}/dspam/libpgsql_drv.so*
%endif
%if %{with sqlite}
-%files driver-sqlite
+%files driver-sqlite3
%defattr(644,root,root,755)
%doc doc/sqlite_drv.txt
-%attr(755,root,root) %{_libdir}/libsqlite_drv*.so*
+%attr(755,root,root) %{_libdir}/dspam/libsqlite3_drv.so*
%endif
%files webui