2 # - support for libdclassify
4 # - messages from default install of cron with mysql driver Memory fault
5 # - installing dspam and dspam-client on same host causes
6 # /etc/dspam.conf being owned by both packages and .rpmnew files being
7 # created. move the config to -libs? -common? patch code to use
8 # different config for client?
11 %bcond_without mysql # disable MySQL storage driver
12 %bcond_without pgsql # disable PostgreSQL storage driver
13 %bcond_without sqlite # disable SQLite3 storage driver
14 %bcond_without db # disable BerkeleyDB storage driver
15 %bcond_with mysql40 # use with mysql 4.0
17 %include /usr/lib/rpm/macros.perl
18 Summary: A library and Mail Delivery Agent for Bayesian spam filtering
19 Summary(pl): Biblioteka i MDA do bayesowskiego filtrowania spamu
24 Group: Applications/Mail
25 Source0: http://www.nuclearelephant.com/projects/dspam/sources/%{name}-%{version}.tar.gz
26 # Source0-md5: da4f0e00633bff49d71fde418caaf14b
27 Patch0: %{name}-webui.patch
28 Patch1: %{name}-config.patch
30 Source2: %{name}-apache.conf
31 URL: http://www.nuclearelephant.com/projects/dspam/
32 BuildRequires: autoconf
33 BuildRequires: automake
34 BuildRequires: clamav-devel
35 %{?with_db:BuildRequires: db-devel}
36 BuildRequires: libtool
37 %{?with_mysql:BuildRequires: mysql-devel}
38 BuildRequires: openldap-devel
39 %{?with_pgsql:BuildRequires: postgresql-devel}
40 BuildRequires: rpm-perlprov >= 4.1-13
41 BuildRequires: rpmbuild(macros) >= 1.268
42 BuildRequires: sed >= 4.0
43 %{?with_sqlite:BuildRequires: sqlite3-devel}
44 BuildRequires: zlib-devel
45 Requires(post,preun): /sbin/chkconfig
47 Buildroot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
49 %define _webapps /etc/webapps
50 %define _webapp %{name}
53 DSPAM (as in De-Spam) is an open-source project to create a new kind
54 of anti-spam mechanism, and is currently effective as both a
55 server-side agent for UNIX email servers and a developer's library for
56 mail clients, other anti-spam tools, and similar projects requiring
57 drop-in spam filtering.
59 The DSPAM agent masquerades as the email server's local delivery agent
60 and filters/learns spams using an advanced Bayesian statistical
61 approach (based on Bayes's theorem of combined probabilities) which
62 provides an administratively maintenance-free, easy-learning Anti-Spam
63 service custom tailored to each individual user's behavior. Advanced
64 because on top of standard Bayesian filtering is also incorporated the
65 use of Chained Tokens, de-obfuscation, and other enhancements. DSPAM
66 works great with Sendmail and Exim, and should work well with any
67 other MTA that supports an external local delivery agent (postfix,
71 DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
72 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
73 efektywny zarówno jako dzia³aj±cy po stronie serwera agent dla
74 uniksowych serwerów pocztowych jak i biblioteka dla programistów
75 klientów pocztowych, innych narzêdzi antyspamowych i innych projektów
76 wymagaj±cych filtrowania spamu w locie.
78 Agent DSPAM zachowuje siê jak lokalny agent dostarczania poczty (MDA)
79 i filtruje/uczy siê spamu przy u¿yciu zaawansowanego bayesowskiego
80 przybli¿enia statystycznego (opartego na twierdzeniu Bayesa o
81 po³±czonych prawdopodobieñstwach), daj±c nie wymagaj±c± obs³ugi
82 administracyjnej, ³atwo ucz±c± siê us³ugê antyspamow± dostosowan± do
83 zachowania ka¿dego u¿ytkownika. Metoda jest zaawansowana poniewa¿ na
84 podstawie standardowego filtrowania bayesowskiego wprowadzono u¿ycie
85 tokenów ³añcuchowych, eliminowanie ukrywanie i inne rozszerzenia.
86 DSPAM dzia³a wspaniale z Sendmailem i Eximem, powinien dzia³aæ dobrze
87 z ka¿dym innym MTA obs³uguj±cym zewnêtrznego agenta MDA (postfiksem,
92 Summary(pl): Klient dspam
93 Group: Applications/Mail
94 # to get the same dspam.conf when both installed
95 Conflicts: dspam < %{version}-%{release}
96 Conflicts: dspam > %{version}-%{release}
101 %description client -l pl
105 Summary: A library for Bayesian spam filtering
106 Summary(pl): Biblioteka do bayesowskiego filtrowania spamu
108 Requires: %{name}-driver = %{version}-%{release}
111 DSPAM (as in De-Spam) is an open-source project to create a new kind
112 of anti-spam mechanism, and is currently effective as both a
113 server-side agent for UNIX email servers and a developer's library for
114 mail clients, other anti-spam tools, and similar projects requiring
115 drop-in spam filtering.
117 This package contains the library.
119 %description libs -l pl
120 DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
121 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
122 efektywny zarówno jako dzia³aj±cy po stronie serwera agent dla
123 uniksowych serwerów pocztowych jak i biblioteka dla programistów
124 klientów pocztowych, innych narzêdzi antyspamowych i innych projektów
125 wymagaj±cych filtrowania spamu w locie.
127 Ten pakiet zawiera wspomnian± bibliotekê.
130 Summary: Header files for the DSPAM library
131 Summary(pl): Pliki nag³ówkowe biblioteki DSPAM
132 Group: Development/Libraries
133 Requires: %{name}-libs = %{version}-%{release}
136 DSPAM has had its core engine moved into a separate library, libdspam.
137 This library can be used by developers to provide 'drop-in' spam
138 filtering for their mail client applications, other anti-spam tools,
141 %description devel -l pl
142 G³ówny silnik DSPAM zosta³ przeniesiony do oddzielnej biblioteki
143 libdspam, która mo¿e byæ u¿ywana przez programistów do zapewnienia
144 filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
145 narzêdzi antyspamowych i podobnych projektów.
148 Summary: Static DSPAM library
149 Summary(pl): Statyczna biblioteka DSPAM
150 Group: Development/Libraries
151 Requires: %{name}-devel = %{version}-%{release}
154 Static DSPAM library.
156 %description static -l pl
157 Statyczna biblioteka DSPAM.
160 Summary: HASH driver for DSPAM
161 Summary(pl): Sterownik HASH dla DSPAM-a
163 Requires(post): sed >= 4.0
164 Requires: %{name}-libs = %{version}-%{release}
165 Provides: %{name}-driver = %{version}-%{release}
167 %description driver-hash
168 HASH driver for DSPAM.
170 %description driver-hash -l pl
171 Sterownik HASH dla DSPAM-a.
174 Summary: DB driver for DSPAM
175 Summary(pl): Sterownik DB dla DSPAM-a
177 Requires(post): sed >= 4.0
178 Requires: %{name}-libs = %{version}-%{release}
179 Provides: %{name}-driver = %{version}-%{release}
181 %description driver-db
184 %description driver-db -l pl
185 Sterownik DB dla DSPAM-a.
187 %package driver-mysql
188 Summary: MySQL driver for DSPAM
189 Summary(pl): Sterownik MySQL dla DSPAM-a
191 Requires(post): sed >= 4.0
192 Requires: %{name}-libs = %{version}-%{release}
193 Provides: %{name}-driver = %{version}-%{release}
195 %description driver-mysql
196 MySQL driver for DSPAM.
198 %description driver-mysql -l pl
199 Sterownik MySQL dla DSPAM-a.
201 %package driver-pgsql
202 Summary: PostgreSQL driver for DSPAM
203 Summary(pl): Sterownik PostgreSQL dla DSPAM-a
205 Requires(post): sed >= 4.0
206 Requires: %{name}-libs = %{version}-%{release}
207 Provides: %{name}-driver = %{version}-%{release}
209 %description driver-pgsql
210 PostgreSQL driver for DSPAM.
212 %description driver-pgsql -l pl
213 Sterownik PostgreSQL dla DSPAM-a.
215 %package driver-sqlite
216 Summary: SQLite driver for DSPAM
217 Summary(pl): Sterownik SQLite dla DSPAM-a
219 Requires(post): sed >= 4.0
220 Requires: %{name}-libs = %{version}-%{release}
221 Provides: %{name}-driver = %{version}-%{release}
223 %description driver-sqlite
224 SQLite driver for DSPAM.
226 %description driver-sqlite -l pl
227 Sterownik SQLite dla DSPAM-a.
230 Summary: DSPAM Web UI
231 Group: Applications/WWW
234 Requires: %{name} = %{version}-%{release}
237 The Web UI (CGI client) can be run from any executable location on a
238 web server, and detects its user's identity from the REMOTE_USER
239 environment variable. This means you'll need to use HTTP password
240 authentication to access the CGI (Any type of authentication will
241 work, so long as Apache supports the module). This is also convenient
242 in that you can set up authentication using almost any existing system
243 you have. The only catch is that you'll need the usernames to match
244 the actual DSPAM usernames used the system. A copy of the shadow
245 password file will suffice for most common installs.
251 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
252 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
253 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
263 %{?with_db:libdb4_drv}
264 %{?with_mysql:mysql_drv}
265 %{?with_pgsql:pgsql_drv}
266 %{?with_sqlite:sqlite_drv}
269 --disable-dependency-tracking \
270 %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
271 --enable-trusted-user-security \
273 --enable-large-scale \
274 --with-userdir=/var/lib/%{name} \
275 --with-userdir-owner=none \
276 --with-userdir-group=none \
277 --with-dspam-home=/var/lib/%{name} \
278 --with-dspam-home-owner=none \
279 --with-dspam-home-group=none \
280 --with-dspam-owner=none \
281 --with-dspam-group=none \
282 --with-signature-life=14 \
285 --enable-preferences-extension \
286 --enable-long-usernames \
287 --enable-neural-networking \
288 --enable-virtual-users \
289 --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
291 --with-mysql-includes=%{_includedir}/mysql \
292 --with-mysql-libraries=%{_libdir} \
295 --with-pgsql-includes=%{_includedir}/postgresql \
296 --with-pgsql-libraries=%{_libdir} \
299 --with-sqlite3-includes=%{_includedir} \
300 --with-sqlite3-libraries=%{_libdir} \
304 # --enable-dclassify-extension needs libdclassify
309 rm -rf $RPM_BUILD_ROOT
310 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
311 $RPM_BUILD_ROOT/var/lib/%{name}/data
314 DESTDIR=$RPM_BUILD_ROOT
316 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
318 # install devel files
319 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
320 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
322 # provide maintenance scripts
323 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
324 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
326 exec %{_bindir}/%{name}_clean -s -p
329 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
332 sed -i -e "s|%{_prefix}/local|%{_prefix}|g" $RPM_BUILD_ROOT%{_bindir}/%{name}_corpus
335 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
338 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
343 This file can only contain 5 lines with the following values:
354 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
359 This file can only contain 5 lines with the following values:
369 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
370 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
371 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
372 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
375 /sbin/chkconfig --add dspam
376 %service dspam restart "dspam daemon"
379 if [ "$1" = "0" ]; then
381 /sbin/chkconfig --del dspam
385 rm -rf $RPM_BUILD_ROOT
387 %post libs -p /sbin/ldconfig
388 %postun libs -p /sbin/ldconfig
391 if [ "$1" = "1" ]; then
392 sed -i -e '/^StorageDriver/s,/.*.so,%{_libdir}/libdb4_drv.so,' /etc/dspam.conf
396 if [ "$1" = "1" ]; then
397 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libhash_drv.so,' /etc/dspam.conf
401 if [ "$1" = "1" ]; then
402 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libmysql_drv.so,' /etc/dspam.conf
406 if [ "$1" = "1" ]; then
407 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libpgsql_drv.so,' /etc/dspam.conf
411 if [ "$1" = "1" ]; then
412 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libsqlite_drv.so,' /etc/dspam.conf
415 %triggerin webui -- apache1
416 %webapp_register apache %{_webapp}
418 %triggerun webui -- apache1
419 %webapp_unregister apache %{_webapp}
421 %triggerin webui -- apache < 2.2.0, apache-base
422 %webapp_register httpd %{_webapp}
424 %triggerun webui -- apache < 2.2.0, apache-base
425 %webapp_unregister httpd %{_webapp}
428 %defattr(644,root,root,755)
429 %doc README CHANGELOG RELEASE.NOTES UPGRADING
430 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
431 %doc scripts/train.pl
432 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
433 %dir %attr(775,root,mail) /var/run/dspam
434 %dir %attr(750,root,mail) /var/lib/%{name}
435 %dir %attr(770,root,mail) /var/lib/%{name}/data
436 %dir %attr(770,root,mail) /var/log/dspam
437 %attr(754,root,root) /etc/rc.d/init.d/dspam
438 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
439 %attr(755,root,root) %{_bindir}/%{name}
440 %attr(755,root,root) %{_bindir}/%{name}_logrotate
441 %attr(755,root,root) %{_bindir}/%{name}_clean
442 %attr(755,root,root) %{_bindir}/%{name}_corpus
443 %attr(755,root,root) %{_bindir}/%{name}_crc
444 %attr(755,root,root) %{_bindir}/%{name}_dump
445 %attr(755,root,root) %{_bindir}/%{name}_genaliases
446 %attr(755,root,root) %{_bindir}/%{name}_stats
447 %attr(755,root,root) %{_bindir}/%{name}_merge
448 %attr(755,root,root) %{_bindir}/%{name}_2sql
449 %attr(755,root,root) %{_bindir}/%{name}_admin
450 %attr(755,root,root) %{_bindir}/%{name}_train
451 %{_mandir}/man?/%{name}*
454 %defattr(644,root,root,755)
455 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
456 %attr(755,root,root) %{_bindir}/%{name}c
459 %defattr(644,root,root,755)
460 %doc README CHANGELOG
461 %attr(755,root,root) %{_libdir}/lib*.so.*.*.*
462 %attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
465 %defattr(644,root,root,755)
466 %attr(755,root,root) %{_libdir}/lib*.so
467 %attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
469 %{_includedir}/%{name}
470 %{_mandir}/man3/libdspam*
471 %{_pkgconfigdir}/*.pc
474 %defattr(644,root,root,755)
478 %defattr(644,root,root,755)
479 %attr(755,root,root) %{_bindir}/css*
480 %attr(755,root,root) %{_libdir}/libhash_drv*.so*
484 %defattr(644,root,root,755)
485 %attr(755,root,root) %{_libdir}/libdb4_drv*.so*
490 %defattr(644,root,root,755)
491 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
492 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
493 %attr(755,root,root) %{_libdir}/libmysql_drv*.so*
498 %defattr(644,root,root,755)
499 %doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
500 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
501 %attr(755,root,root) %{_bindir}/%{name}_pg2int8
502 %attr(755,root,root) %{_libdir}/libpgsql_drv*.so*
507 %defattr(644,root,root,755)
508 %doc doc/sqlite_drv.txt
509 %attr(755,root,root) %{_libdir}/libsqlite_drv*.so*
513 %defattr(644,root,root,755)
514 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
515 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
516 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
517 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
518 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
519 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
520 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
522 %dir %{_datadir}/dspam
523 %dir %{_datadir}/dspam/cgi
524 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
525 %{_datadir}/dspam/cgi/templates
526 %{_datadir}/dspam/htdocs