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
29 Patch2: %{name}-speedup.patch
31 Source2: %{name}-apache.conf
32 URL: http://www.nuclearelephant.com/projects/dspam/
33 BuildRequires: autoconf
34 BuildRequires: automake
35 BuildRequires: clamav-devel
36 %{?with_db:BuildRequires: db-devel}
37 BuildRequires: libtool
38 %{?with_mysql:BuildRequires: mysql-devel}
39 BuildRequires: openldap-devel
40 %{?with_pgsql:BuildRequires: postgresql-devel}
41 BuildRequires: rpm-perlprov >= 4.1-13
42 BuildRequires: rpmbuild(macros) >= 1.268
43 BuildRequires: sed >= 4.0
44 %{?with_sqlite:BuildRequires: sqlite3-devel}
45 BuildRequires: zlib-devel
46 Requires(post,preun): /sbin/chkconfig
48 Buildroot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
50 %define _webapps /etc/webapps
51 %define _webapp %{name}
54 DSPAM (as in De-Spam) is an open-source project to create a new kind
55 of anti-spam mechanism, and is currently effective as both a
56 server-side agent for UNIX email servers and a developer's library for
57 mail clients, other anti-spam tools, and similar projects requiring
58 drop-in spam filtering.
60 The DSPAM agent masquerades as the email server's local delivery agent
61 and filters/learns spams using an advanced Bayesian statistical
62 approach (based on Bayes's theorem of combined probabilities) which
63 provides an administratively maintenance-free, easy-learning Anti-Spam
64 service custom tailored to each individual user's behavior. Advanced
65 because on top of standard Bayesian filtering is also incorporated the
66 use of Chained Tokens, de-obfuscation, and other enhancements. DSPAM
67 works great with Sendmail and Exim, and should work well with any
68 other MTA that supports an external local delivery agent (postfix,
72 DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
73 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
74 efektywny zarówno jako dzia³aj±cy po stronie serwera agent dla
75 uniksowych serwerów pocztowych jak i biblioteka dla programistów
76 klientów pocztowych, innych narzêdzi antyspamowych i innych projektów
77 wymagaj±cych filtrowania spamu w locie.
79 Agent DSPAM zachowuje siê jak lokalny agent dostarczania poczty (MDA)
80 i filtruje/uczy siê spamu przy u¿yciu zaawansowanego bayesowskiego
81 przybli¿enia statystycznego (opartego na twierdzeniu Bayesa o
82 po³±czonych prawdopodobieñstwach), daj±c nie wymagaj±c± obs³ugi
83 administracyjnej, ³atwo ucz±c± siê us³ugê antyspamow± dostosowan± do
84 zachowania ka¿dego u¿ytkownika. Metoda jest zaawansowana poniewa¿ na
85 podstawie standardowego filtrowania bayesowskiego wprowadzono u¿ycie
86 tokenów ³añcuchowych, eliminowanie ukrywanie i inne rozszerzenia.
87 DSPAM dzia³a wspaniale z Sendmailem i Eximem, powinien dzia³aæ dobrze
88 z ka¿dym innym MTA obs³uguj±cym zewnêtrznego agenta MDA (postfiksem,
93 Summary(pl): Klient dspam
94 Group: Applications/Mail
95 # to get the same dspam.conf when both installed
96 Conflicts: dspam < %{version}-%{release}
97 Conflicts: dspam > %{version}-%{release}
102 %description client -l pl
106 Summary: A library for Bayesian spam filtering
107 Summary(pl): Biblioteka do bayesowskiego filtrowania spamu
109 Requires: %{name}-driver = %{version}-%{release}
112 DSPAM (as in De-Spam) is an open-source project to create a new kind
113 of anti-spam mechanism, and is currently effective as both a
114 server-side agent for UNIX email servers and a developer's library for
115 mail clients, other anti-spam tools, and similar projects requiring
116 drop-in spam filtering.
118 This package contains the library.
120 %description libs -l pl
121 DSPAM (czyli De-Spam) to projekt o otwartych ¼ród³ach maj±cy na celu
122 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
123 efektywny zarówno jako dzia³aj±cy po stronie serwera agent dla
124 uniksowych serwerów pocztowych jak i biblioteka dla programistów
125 klientów pocztowych, innych narzêdzi antyspamowych i innych projektów
126 wymagaj±cych filtrowania spamu w locie.
128 Ten pakiet zawiera wspomnian± bibliotekê.
131 Summary: Header files for the DSPAM library
132 Summary(pl): Pliki nag³ówkowe biblioteki DSPAM
133 Group: Development/Libraries
134 Requires: %{name}-libs = %{version}-%{release}
137 DSPAM has had its core engine moved into a separate library, libdspam.
138 This library can be used by developers to provide 'drop-in' spam
139 filtering for their mail client applications, other anti-spam tools,
142 %description devel -l pl
143 G³ówny silnik DSPAM zosta³ przeniesiony do oddzielnej biblioteki
144 libdspam, która mo¿e byæ u¿ywana przez programistów do zapewnienia
145 filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
146 narzêdzi antyspamowych i podobnych projektów.
149 Summary: Static DSPAM library
150 Summary(pl): Statyczna biblioteka DSPAM
151 Group: Development/Libraries
152 Requires: %{name}-devel = %{version}-%{release}
155 Static DSPAM library.
157 %description static -l pl
158 Statyczna biblioteka DSPAM.
161 Summary: HASH driver for DSPAM
162 Summary(pl): Sterownik HASH dla DSPAM-a
164 Requires(post): sed >= 4.0
165 Requires: %{name}-libs = %{version}-%{release}
166 Provides: %{name}-driver = %{version}-%{release}
168 %description driver-hash
169 HASH driver for DSPAM.
171 %description driver-hash -l pl
172 Sterownik HASH dla DSPAM-a.
175 Summary: DB driver for DSPAM
176 Summary(pl): Sterownik DB dla DSPAM-a
178 Requires(post): sed >= 4.0
179 Requires: %{name}-libs = %{version}-%{release}
180 Provides: %{name}-driver = %{version}-%{release}
182 %description driver-db
185 %description driver-db -l pl
186 Sterownik DB dla DSPAM-a.
188 %package driver-mysql
189 Summary: MySQL driver for DSPAM
190 Summary(pl): Sterownik MySQL dla DSPAM-a
192 Requires(post): sed >= 4.0
193 Requires: %{name}-libs = %{version}-%{release}
194 Provides: %{name}-driver = %{version}-%{release}
196 %description driver-mysql
197 MySQL driver for DSPAM.
199 %description driver-mysql -l pl
200 Sterownik MySQL dla DSPAM-a.
202 %package driver-pgsql
203 Summary: PostgreSQL driver for DSPAM
204 Summary(pl): Sterownik PostgreSQL dla DSPAM-a
206 Requires(post): sed >= 4.0
207 Requires: %{name}-libs = %{version}-%{release}
208 Provides: %{name}-driver = %{version}-%{release}
210 %description driver-pgsql
211 PostgreSQL driver for DSPAM.
213 %description driver-pgsql -l pl
214 Sterownik PostgreSQL dla DSPAM-a.
216 %package driver-sqlite
217 Summary: SQLite driver for DSPAM
218 Summary(pl): Sterownik SQLite dla DSPAM-a
220 Requires(post): sed >= 4.0
221 Requires: %{name}-libs = %{version}-%{release}
222 Provides: %{name}-driver = %{version}-%{release}
224 %description driver-sqlite
225 SQLite driver for DSPAM.
227 %description driver-sqlite -l pl
228 Sterownik SQLite dla DSPAM-a.
231 Summary: DSPAM Web UI
232 Group: Applications/WWW
235 Requires: %{name} = %{version}-%{release}
238 The Web UI (CGI client) can be run from any executable location on a
239 web server, and detects its user's identity from the REMOTE_USER
240 environment variable. This means you'll need to use HTTP password
241 authentication to access the CGI (Any type of authentication will
242 work, so long as Apache supports the module). This is also convenient
243 in that you can set up authentication using almost any existing system
244 you have. The only catch is that you'll need the usernames to match
245 the actual DSPAM usernames used the system. A copy of the shadow
246 password file will suffice for most common installs.
253 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
254 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
255 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
265 %{?with_db:libdb4_drv}
266 %{?with_mysql:mysql_drv}
267 %{?with_pgsql:pgsql_drv}
268 %{?with_sqlite:sqlite_drv}
271 --disable-dependency-tracking \
272 %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
273 --enable-trusted-user-security \
275 --enable-large-scale \
276 --with-userdir=/var/lib/%{name} \
277 --with-userdir-owner=none \
278 --with-userdir-group=none \
279 --with-dspam-home=/var/lib/%{name} \
280 --with-dspam-home-owner=none \
281 --with-dspam-home-group=none \
282 --with-dspam-owner=none \
283 --with-dspam-group=none \
284 --with-signature-life=14 \
287 --enable-preferences-extension \
288 --enable-long-usernames \
289 --enable-neural-networking \
290 --enable-virtual-users \
291 --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
293 --with-mysql-includes=%{_includedir}/mysql \
294 --with-mysql-libraries=%{_libdir} \
297 --with-pgsql-includes=%{_includedir}/postgresql \
298 --with-pgsql-libraries=%{_libdir} \
301 --with-sqlite3-includes=%{_includedir} \
302 --with-sqlite3-libraries=%{_libdir} \
306 # --enable-dclassify-extension needs libdclassify
311 rm -rf $RPM_BUILD_ROOT
312 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
313 $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data}
316 DESTDIR=$RPM_BUILD_ROOT
318 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
320 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
322 # install devel files
323 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
324 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
326 # provide maintenance scripts
327 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
328 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
330 exec %{_bindir}/%{name}_clean -s -p
333 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
336 sed -i -e "s|%{_prefix}/local|%{_prefix}|g" $RPM_BUILD_ROOT%{_bindir}/%{name}_corpus
339 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
342 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
347 This file can only contain 5 lines with the following values:
358 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
363 This file can only contain 5 lines with the following values:
373 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
374 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
375 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
376 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
379 /sbin/chkconfig --add dspam
380 %service dspam restart "dspam daemon"
383 if [ "$1" = "0" ]; then
385 /sbin/chkconfig --del dspam
389 rm -rf $RPM_BUILD_ROOT
391 %post libs -p /sbin/ldconfig
392 %postun libs -p /sbin/ldconfig
395 if [ "$1" = "1" ]; then
396 sed -i -e '/^StorageDriver/s,/.*.so,%{_libdir}/libdb4_drv.so,' /etc/dspam.conf
400 if [ "$1" = "1" ]; then
401 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libhash_drv.so,' /etc/dspam.conf
405 if [ "$1" = "1" ]; then
406 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libmysql_drv.so,' /etc/dspam.conf
410 if [ "$1" = "1" ]; then
411 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libpgsql_drv.so,' /etc/dspam.conf
415 if [ "$1" = "1" ]; then
416 sed -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libsqlite_drv.so,' /etc/dspam.conf
419 %triggerin webui -- apache1
420 %webapp_register apache %{_webapp}
422 %triggerun webui -- apache1
423 %webapp_unregister apache %{_webapp}
425 %triggerin webui -- apache < 2.2.0, apache-base
426 %webapp_register httpd %{_webapp}
428 %triggerun webui -- apache < 2.2.0, apache-base
429 %webapp_unregister httpd %{_webapp}
432 %defattr(644,root,root,755)
433 %doc README CHANGELOG RELEASE.NOTES UPGRADING
434 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
435 %doc scripts/train.pl
436 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
437 %dir %attr(775,root,mail) /var/run/dspam
438 %dir %attr(750,root,mail) /var/lib/%{name}
439 %dir %attr(770,root,mail) /var/lib/%{name}/data
440 %dir /var/lib/%{name}/txt
441 %config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
442 %dir %attr(770,root,mail) /var/log/dspam
443 %attr(754,root,root) /etc/rc.d/init.d/dspam
444 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
445 %attr(755,root,root) %{_bindir}/%{name}
446 %attr(755,root,root) %{_bindir}/%{name}_logrotate
447 %attr(755,root,root) %{_bindir}/%{name}_clean
448 %attr(755,root,root) %{_bindir}/%{name}_corpus
449 %attr(755,root,root) %{_bindir}/%{name}_crc
450 %attr(755,root,root) %{_bindir}/%{name}_dump
451 %attr(755,root,root) %{_bindir}/%{name}_genaliases
452 %attr(755,root,root) %{_bindir}/%{name}_stats
453 %attr(755,root,root) %{_bindir}/%{name}_merge
454 %attr(755,root,root) %{_bindir}/%{name}_2sql
455 %attr(755,root,root) %{_bindir}/%{name}_admin
456 %attr(755,root,root) %{_bindir}/%{name}_train
457 %{_mandir}/man?/%{name}*
460 %defattr(644,root,root,755)
461 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
462 %attr(755,root,root) %{_bindir}/%{name}c
465 %defattr(644,root,root,755)
466 %doc README CHANGELOG
467 %attr(755,root,root) %{_libdir}/lib*.so.*.*.*
468 %attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
471 %defattr(644,root,root,755)
472 %attr(755,root,root) %{_libdir}/lib*.so
473 %attr(755,root,root) %exclude %{_libdir}/lib*_drv*.so*
475 %{_includedir}/%{name}
476 %{_mandir}/man3/libdspam*
477 %{_pkgconfigdir}/*.pc
480 %defattr(644,root,root,755)
484 %defattr(644,root,root,755)
485 %attr(755,root,root) %{_bindir}/css*
486 %attr(755,root,root) %{_libdir}/libhash_drv*.so*
490 %defattr(644,root,root,755)
491 %attr(755,root,root) %{_libdir}/libdb4_drv*.so*
496 %defattr(644,root,root,755)
497 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
498 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
499 %attr(755,root,root) %{_libdir}/libmysql_drv*.so*
504 %defattr(644,root,root,755)
505 %doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
506 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
507 %attr(755,root,root) %{_bindir}/%{name}_pg2int8
508 %attr(755,root,root) %{_libdir}/libpgsql_drv*.so*
513 %defattr(644,root,root,755)
514 %doc doc/sqlite_drv.txt
515 %attr(755,root,root) %{_libdir}/libsqlite_drv*.so*
519 %defattr(644,root,root,755)
520 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
521 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
522 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
523 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
524 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
525 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
526 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
528 %dir %{_datadir}/dspam
529 %dir %{_datadir}/dspam/cgi
530 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
531 %{_datadir}/dspam/cgi/templates
532 %{_datadir}/dspam/htdocs