2 # - support for libdclassify
4 # - messages from default install of cron with mysql driver Memory fault
5 # - install drivers in /usr/lib/dspam
6 # - if drivers are installed to private dir, remove versioned sonames from drivers
9 %bcond_without mysql # disable MySQL storage driver
10 %bcond_without pgsql # disable PostgreSQL storage driver
11 %bcond_without sqlite # disable SQLite3 storage driver
12 %bcond_with mysql40 # use with mysql 4.0
14 %include /usr/lib/rpm/macros.perl
15 Summary: A library and Mail Delivery Agent for Bayesian spam filtering
16 Summary(pl.UTF-8): Biblioteka i MDA do bayesowskiego filtrowania spamu
21 Group: Applications/Mail
22 Source0: http://dspam.nuclearelephant.com/sources/%{name}-%{version}.tar.gz
23 # Source0-md5: 056b8c8b3ad9415a52c01b22ff1e64cf
24 Patch0: %{name}-webui.patch
25 Patch1: %{name}-config.patch
26 Patch2: %{name}-speedup.patch
27 Patch3: %{name}-autotools.patch
29 Source2: %{name}-apache.conf
30 URL: http://dspam.nuclearelephant.com/
31 BuildRequires: autoconf
32 BuildRequires: automake
33 BuildRequires: clamav-devel
34 BuildRequires: libtool
35 %{?with_mysql:BuildRequires: mysql-devel}
36 BuildRequires: openldap-devel >= 2.4.6
37 %{?with_pgsql:BuildRequires: postgresql-devel}
38 BuildRequires: rpm-perlprov >= 4.1-13
39 BuildRequires: rpmbuild(macros) >= 1.268
40 BuildRequires: sed >= 4.0
41 %{?with_sqlite:BuildRequires: sqlite3-devel}
42 BuildRequires: zlib-devel
43 Requires(post,preun): /sbin/chkconfig
44 Requires: %{name}-common = %{version}-%{release}
45 Requires: %{name}-driver = %{version}-%{release}
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,
70 %description -l pl.UTF-8
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.UTF-8): Klient dspam
93 Group: Applications/Mail
94 Requires: %{name}-common
99 %description client -l pl.UTF-8
103 Summary: Common files for dspam packages
104 Summary(pl.UTF-8): Wspólne pliki dla pakietów z dspamem
105 Group: Applications/Mail
108 Common files for dspam and dspam-client packages.
110 %description client -l pl.UTF-8
111 Wspólne pliki dla pakietów dspam i dspam-client.
114 Summary: A library for Bayesian spam filtering
115 Summary(pl.UTF-8): Biblioteka do bayesowskiego filtrowania spamu
117 Obsoletes: dspam-driver-db
120 DSPAM (as in De-Spam) is an open-source project to create a new kind
121 of anti-spam mechanism, and is currently effective as both a
122 server-side agent for UNIX email servers and a developer's library for
123 mail clients, other anti-spam tools, and similar projects requiring
124 drop-in spam filtering.
126 This package contains the library.
128 %description libs -l pl.UTF-8
129 DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
130 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
131 efektywny zarówno jako działający po stronie serwera agent dla
132 uniksowych serwerów pocztowych jak i biblioteka dla programistów
133 klientów pocztowych, innych narzędzi antyspamowych i innych projektów
134 wymagających filtrowania spamu w locie.
136 Ten pakiet zawiera wspomnianą bibliotekę.
139 Summary: Header files for the DSPAM library
140 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki DSPAM
141 Group: Development/Libraries
142 Requires: %{name}-libs = %{version}-%{release}
145 DSPAM has had its core engine moved into a separate library, libdspam.
146 This library can be used by developers to provide 'drop-in' spam
147 filtering for their mail client applications, other anti-spam tools,
150 %description devel -l pl.UTF-8
151 Główny silnik DSPAM został przeniesiony do oddzielnej biblioteki
152 libdspam, która może być używana przez programistów do zapewnienia
153 filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
154 narzędzi antyspamowych i podobnych projektów.
157 Summary: Static DSPAM library
158 Summary(pl.UTF-8): Statyczna biblioteka DSPAM
159 Group: Development/Libraries
160 Requires: %{name}-devel = %{version}-%{release}
163 Static DSPAM library.
165 %description static -l pl.UTF-8
166 Statyczna biblioteka DSPAM.
169 Summary: HASH driver for DSPAM
170 Summary(pl.UTF-8): Sterownik HASH dla DSPAM-a
172 Requires(post): sed >= 4.0
173 Requires: %{name} = %{version}-%{release}
174 Provides: %{name}-driver = %{version}-%{release}
176 %description driver-hash
177 HASH driver for DSPAM.
179 %description driver-hash -l pl.UTF-8
180 Sterownik HASH dla DSPAM-a.
182 %package driver-mysql
183 Summary: MySQL driver for DSPAM
184 Summary(pl.UTF-8): Sterownik MySQL dla DSPAM-a
186 Requires(post): sed >= 4.0
187 Requires: %{name} = %{version}-%{release}
188 Provides: %{name}-driver = %{version}-%{release}
190 %description driver-mysql
191 MySQL driver for DSPAM.
193 %description driver-mysql -l pl.UTF-8
194 Sterownik MySQL dla DSPAM-a.
196 %package driver-pgsql
197 Summary: PostgreSQL driver for DSPAM
198 Summary(pl.UTF-8): Sterownik PostgreSQL dla DSPAM-a
200 Requires(post): sed >= 4.0
201 Requires: %{name} = %{version}-%{release}
202 Provides: %{name}-driver = %{version}-%{release}
204 %description driver-pgsql
205 PostgreSQL driver for DSPAM.
207 %description driver-pgsql -l pl.UTF-8
208 Sterownik PostgreSQL dla DSPAM-a.
210 %package driver-sqlite3
211 Summary: SQLite driver for DSPAM
212 Summary(pl.UTF-8): Sterownik SQLite dla DSPAM-a
214 Requires(post): sed >= 4.0
215 Requires: %{name} = %{version}-%{release}
216 Provides: %{name}-driver = %{version}-%{release}
217 Obsoletes: dspam-driver-sqlite
219 %description driver-sqlite3
220 SQLite driver for DSPAM.
222 %description driver-sqlite3 -l pl.UTF-8
223 Sterownik SQLite dla DSPAM-a.
226 Summary: DSPAM Web UI
227 Summary(pl.UTF-8): Interfejs WWW do programu DSPAM
228 Group: Applications/WWW
231 Requires: %{name} = %{version}-%{release}
234 The Web UI (CGI client) can be run from any executable location on a
235 web server, and detects its user's identity from the REMOTE_USER
236 environment variable. This means you'll need to use HTTP password
237 authentication to access the CGI (Any type of authentication will
238 work, so long as Apache supports the module). This is also convenient
239 in that you can set up authentication using almost any existing system
240 you have. The only catch is that you'll need the usernames to match
241 the actual DSPAM usernames used the system. A copy of the shadow
242 password file will suffice for most common installs.
244 %description webui -l pl.UTF-8
245 Interfejs użytkownika WWW (klient CGI) może być uruchamiany z
246 dowolnego wykonywalnego miejsca na serwerze WWW i rozpoznaje tożsamość
247 użytkownika ze zmiennej środowiskowej REMOTE_USER. Oznacza to, że
248 trzeba użyć uwietrzytelnienia HTTP z hasłem do dostępu do CGI (działać
249 będzie dowolny rodzaj uwierzytelnienia obsługiwany przez moduły
250 Apache'a). Jest to o tyle wygodne, że można skonfigurować
251 uwierzytelnianie dla prawie każdego istniejącego systemu. Jedynym
252 wymogiem jest, żeby nazwy użytkowników pokrywały się z nazwami
253 użytkowników DSPAM-a używanymi w systemie. Kopia pliku shadow
254 wystarczy dla większości popularnych instalacji.
262 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
263 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
264 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
274 %{?with_mysql:mysql_drv}
275 %{?with_pgsql:pgsql_drv}
276 %{?with_sqlite:sqlite3_drv}
279 --disable-dependency-tracking \
280 %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
281 --enable-trusted-user-security \
282 --enable-large-scale \
283 --with-dspam-home=/var/lib/%{name} \
284 --with-dspam-home-owner=none \
285 --with-dspam-home-group=none \
286 --with-dspam-owner=none \
287 --with-dspam-group=none \
290 --enable-preferences-extension \
291 --enable-long-usernames \
292 --enable-virtual-users \
293 --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
295 --with-mysql-includes=%{_includedir}/mysql \
296 --with-mysql-libraries=%{_libdir} \
299 --with-pgsql-includes=%{_includedir}/postgresql \
300 --with-pgsql-libraries=%{_libdir} \
304 --with-sqlite-includes=%{_includedir} \
305 --with-sqlite-libraries=%{_libdir} \
310 # --enable-dclassify-extension needs libdclassify
315 rm -rf $RPM_BUILD_ROOT
316 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
317 $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data}
320 DESTDIR=$RPM_BUILD_ROOT
322 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
324 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
326 # install devel files
327 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
328 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
330 # provide maintenance scripts
331 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
332 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
334 exec %{_bindir}/%{name}_clean -s -p
337 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
340 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
343 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
348 This file can only contain 5 lines with the following values:
359 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
364 This file can only contain 5 lines with the following values:
374 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
375 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
376 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
377 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
380 /sbin/chkconfig --add dspam
381 %service dspam restart "dspam daemon"
384 if [ "$1" = "0" ]; then
386 /sbin/chkconfig --del dspam
390 rm -rf $RPM_BUILD_ROOT
392 %post libs -p /sbin/ldconfig
393 %postun libs -p /sbin/ldconfig
396 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libhash_drv.so,' /etc/dspam.conf
399 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libmysql_drv.so,' /etc/dspam.conf
402 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libpgsql_drv.so,' /etc/dspam.conf
405 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libsqlite3_drv.so,' /etc/dspam.conf
407 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
408 %webapp_register apache %{_webapp}
410 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
411 %webapp_unregister apache %{_webapp}
413 %triggerin webui -- apache < 2.2.0, apache-base
414 %webapp_register httpd %{_webapp}
416 %triggerun webui -- apache < 2.2.0, apache-base
417 %webapp_unregister httpd %{_webapp}
420 %defattr(644,root,root,755)
421 %doc README CHANGELOG RELEASE.NOTES UPGRADING
422 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
423 %doc scripts/train.pl
424 %dir %attr(775,root,mail) /var/run/dspam
425 %dir %attr(750,root,mail) /var/lib/%{name}
426 %dir %attr(770,root,mail) /var/lib/%{name}/data
427 %dir /var/lib/%{name}/txt
428 %config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
429 %dir %attr(770,root,mail) /var/log/dspam
430 %attr(754,root,root) /etc/rc.d/init.d/dspam
431 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
432 %attr(755,root,root) %{_bindir}/%{name}
433 %attr(755,root,root) %{_bindir}/%{name}_logrotate
434 %attr(755,root,root) %{_bindir}/%{name}_clean
435 %attr(755,root,root) %{_bindir}/%{name}_crc
436 %attr(755,root,root) %{_bindir}/%{name}_dump
437 %attr(755,root,root) %{_bindir}/%{name}_stats
438 %attr(755,root,root) %{_bindir}/%{name}_merge
439 %attr(755,root,root) %{_bindir}/%{name}_2sql
440 %attr(755,root,root) %{_bindir}/%{name}_admin
441 %attr(755,root,root) %{_bindir}/%{name}_train
442 %{_mandir}/man?/%{name}*
445 %defattr(644,root,root,755)
446 %attr(755,root,root) %{_bindir}/%{name}c
449 %defattr(644,root,root,755)
450 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
453 %defattr(644,root,root,755)
454 %attr(755,root,root) %{_libdir}/libdspam.so.7.0.0
455 %attr(755,root,root) %ghost %{_libdir}/libdspam.so.7
458 %defattr(644,root,root,755)
459 %attr(755,root,root) %{_libdir}/libdspam.so
460 %{_libdir}/libdspam.la
461 %{_libdir}/lib*_drv.la
462 %{_includedir}/%{name}
463 %{_mandir}/man3/libdspam.3*
464 %{_pkgconfigdir}/*.pc
467 %defattr(644,root,root,755)
468 %{_libdir}/libdspam.a
469 %{_libdir}/lib*_drv.a
472 %defattr(644,root,root,755)
473 %attr(755,root,root) %{_bindir}/css*
474 %attr(755,root,root) %{_libdir}/libhash_drv.so.7.0.0
475 %attr(755,root,root) %ghost %{_libdir}/libhash_drv.so.7
476 %{_libdir}/libhash_drv.so
480 %defattr(644,root,root,755)
481 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
482 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
483 %attr(755,root,root) %{_libdir}/libmysql_drv.so.7.0.0
484 %attr(755,root,root) %ghost %{_libdir}/libmysql_drv.so.7
485 %{_libdir}/libmysql_drv.so
490 %defattr(644,root,root,755)
491 %doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
492 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
493 %attr(755,root,root) %{_bindir}/%{name}_pg2int8
494 %attr(755,root,root) %{_libdir}/libpgsql_drv.so.7.0.0
495 %attr(755,root,root) %ghost %{_libdir}/libpgsql_drv.so.7
496 %{_libdir}/libpgsql_drv.so
500 %files driver-sqlite3
501 %defattr(644,root,root,755)
502 %doc doc/sqlite_drv.txt
503 %attr(755,root,root) %{_libdir}/libsqlite3_drv.so.7.0.0
504 %attr(755,root,root) %ghost %{_libdir}/libsqlite3_drv.so.7
505 %{_libdir}/libsqlite3_drv.so
509 %defattr(644,root,root,755)
510 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
511 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
512 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
513 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
514 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
515 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
516 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
518 %dir %{_datadir}/dspam
519 %dir %{_datadir}/dspam/cgi
520 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
521 %{_datadir}/dspam/cgi/templates
522 %{_datadir}/dspam/htdocs