2 # - support for libdclassify
4 # - messages from default install of cron with mysql driver Memory fault
5 # - remove versioned sonames from drivers
8 %bcond_without mysql # disable MySQL storage driver
9 %bcond_without pgsql # disable PostgreSQL storage driver
10 %bcond_without sqlite # disable SQLite3 storage driver
11 %bcond_with mysql40 # use with mysql 4.0
13 %include /usr/lib/rpm/macros.perl
14 Summary: A library and Mail Delivery Agent for Bayesian spam filtering
15 Summary(pl.UTF-8): Biblioteka i MDA do bayesowskiego filtrowania spamu
20 Group: Applications/Mail
21 Source0: http://downloads.sourceforge.net/project/dspam/dspam/%{name}-%{version}/%{name}-%{version}.tar.gz
22 # Source0-md5: 10d092b57d628d8c91655fee5dc0d0cd
24 Source2: %{name}-apache.conf
25 Source3: %{name}.tmpfiles
26 Patch0: %{name}-webui.patch
27 Patch1: %{name}-config.patch
28 Patch2: %{name}-speedup.patch
29 Patch3: %{name}-autotools.patch
30 Patch4: %{name}-single-char-usernames.patch
31 URL: http://dspam.nuclearelephant.com/
32 BuildRequires: autoconf
33 BuildRequires: automake
34 BuildRequires: clamav-devel
35 BuildRequires: libtool
36 %{?with_mysql:BuildRequires: mysql-devel}
37 BuildRequires: openldap-devel >= 2.4.6
38 %{?with_pgsql:BuildRequires: postgresql-devel}
39 BuildRequires: rpm-perlprov >= 4.1-13
40 BuildRequires: rpmbuild(macros) >= 1.268
41 BuildRequires: sed >= 4.0
42 %{?with_sqlite:BuildRequires: sqlite3-devel}
43 BuildRequires: zlib-devel
44 Requires(post,preun): /sbin/chkconfig
45 Requires: %{name}-common = %{version}-%{release}
46 Requires: %{name}-driver = %{version}-%{release}
48 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
50 %define _webapps /etc/webapps
51 %define _webapp %{name}
53 # symbols are provided by dspam executable
54 %define skip_post_check_so libdspam.so.7.0.0 lib(hash\|mysql\|pgsql\|sqlite3)_drv.so.7.0.0
57 DSPAM (as in De-Spam) is an open-source project to create a new kind
58 of anti-spam mechanism, and is currently effective as both a
59 server-side agent for UNIX email servers and a developer's library for
60 mail clients, other anti-spam tools, and similar projects requiring
61 drop-in spam filtering.
63 The DSPAM agent masquerades as the email server's local delivery agent
64 and filters/learns spams using an advanced Bayesian statistical
65 approach (based on Bayes's theorem of combined probabilities) which
66 provides an administratively maintenance-free, easy-learning Anti-Spam
67 service custom tailored to each individual user's behavior. Advanced
68 because on top of standard Bayesian filtering is also incorporated the
69 use of Chained Tokens, de-obfuscation, and other enhancements. DSPAM
70 works great with Sendmail and Exim, and should work well with any
71 other MTA that supports an external local delivery agent (postfix,
74 %description -l pl.UTF-8
75 DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
76 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
77 efektywny zarówno jako działający po stronie serwera agent dla
78 uniksowych serwerów pocztowych jak i biblioteka dla programistów
79 klientów pocztowych, innych narzędzi antyspamowych i innych projektów
80 wymagających filtrowania spamu w locie.
82 Agent DSPAM zachowuje się jak lokalny agent dostarczania poczty (MDA)
83 i filtruje/uczy się spamu przy użyciu zaawansowanego bayesowskiego
84 przybliżenia statystycznego (opartego na twierdzeniu Bayesa o
85 połączonych prawdopodobieństwach), dając nie wymagającą obsługi
86 administracyjnej, łatwo uczącą się usługę antyspamową dostosowaną do
87 zachowania każdego użytkownika. Metoda jest zaawansowana ponieważ na
88 podstawie standardowego filtrowania bayesowskiego wprowadzono użycie
89 tokenów łańcuchowych, eliminowanie ukrywanie i inne rozszerzenia.
90 DSPAM działa wspaniale z Sendmailem i Eximem, powinien działać dobrze
91 z każdym innym MTA obsługującym zewnętrznego agenta MDA (postfiksem,
96 Summary(pl.UTF-8): Klient dspam
97 Group: Applications/Mail
98 Requires: %{name}-common
103 %description client -l pl.UTF-8
107 Summary: Common files for dspam packages
108 Summary(pl.UTF-8): Wspólne pliki dla pakietów z dspamem
109 Group: Applications/Mail
112 Common files for dspam and dspam-client packages.
114 %description common -l pl.UTF-8
115 Wspólne pliki dla pakietów dspam i dspam-client.
118 Summary: A library for Bayesian spam filtering
119 Summary(pl.UTF-8): Biblioteka do bayesowskiego filtrowania spamu
121 Obsoletes: dspam-driver-db
124 DSPAM (as in De-Spam) is an open-source project to create a new kind
125 of anti-spam mechanism, and is currently effective as both a
126 server-side agent for UNIX email servers and a developer's library for
127 mail clients, other anti-spam tools, and similar projects requiring
128 drop-in spam filtering.
130 This package contains the library.
132 %description libs -l pl.UTF-8
133 DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
134 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
135 efektywny zarówno jako działający po stronie serwera agent dla
136 uniksowych serwerów pocztowych jak i biblioteka dla programistów
137 klientów pocztowych, innych narzędzi antyspamowych i innych projektów
138 wymagających filtrowania spamu w locie.
140 Ten pakiet zawiera wspomnianą bibliotekę.
143 Summary: Header files for the DSPAM library
144 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki DSPAM
145 Group: Development/Libraries
146 Requires: %{name}-libs = %{version}-%{release}
149 DSPAM has had its core engine moved into a separate library, libdspam.
150 This library can be used by developers to provide 'drop-in' spam
151 filtering for their mail client applications, other anti-spam tools,
154 %description devel -l pl.UTF-8
155 Główny silnik DSPAM został przeniesiony do oddzielnej biblioteki
156 libdspam, która może być używana przez programistów do zapewnienia
157 filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
158 narzędzi antyspamowych i podobnych projektów.
161 Summary: Static DSPAM library
162 Summary(pl.UTF-8): Statyczna biblioteka DSPAM
163 Group: Development/Libraries
164 Requires: %{name}-devel = %{version}-%{release}
167 Static DSPAM library.
169 %description static -l pl.UTF-8
170 Statyczna biblioteka DSPAM.
173 Summary: HASH driver for DSPAM
174 Summary(pl.UTF-8): Sterownik HASH dla DSPAM-a
176 Requires(post): sed >= 4.0
177 Requires: %{name} = %{version}-%{release}
178 Provides: %{name}-driver = %{version}-%{release}
180 %description driver-hash
181 HASH driver for DSPAM.
183 %description driver-hash -l pl.UTF-8
184 Sterownik HASH dla DSPAM-a.
186 %package driver-mysql
187 Summary: MySQL driver for DSPAM
188 Summary(pl.UTF-8): Sterownik MySQL dla DSPAM-a
190 Requires(post): sed >= 4.0
191 Requires: %{name} = %{version}-%{release}
192 Provides: %{name}-driver = %{version}-%{release}
194 %description driver-mysql
195 MySQL driver for DSPAM.
197 %description driver-mysql -l pl.UTF-8
198 Sterownik MySQL dla DSPAM-a.
200 %package driver-pgsql
201 Summary: PostgreSQL driver for DSPAM
202 Summary(pl.UTF-8): Sterownik PostgreSQL dla DSPAM-a
204 Requires(post): sed >= 4.0
205 Requires: %{name} = %{version}-%{release}
206 Provides: %{name}-driver = %{version}-%{release}
208 %description driver-pgsql
209 PostgreSQL driver for DSPAM.
211 %description driver-pgsql -l pl.UTF-8
212 Sterownik PostgreSQL dla DSPAM-a.
214 %package driver-sqlite3
215 Summary: SQLite driver for DSPAM
216 Summary(pl.UTF-8): Sterownik SQLite dla DSPAM-a
218 Requires(post): sed >= 4.0
219 Requires: %{name} = %{version}-%{release}
220 Provides: %{name}-driver = %{version}-%{release}
221 Obsoletes: dspam-driver-sqlite
223 %description driver-sqlite3
224 SQLite driver for DSPAM.
226 %description driver-sqlite3 -l pl.UTF-8
227 Sterownik SQLite dla DSPAM-a.
230 Summary: DSPAM Web UI
231 Summary(pl.UTF-8): Interfejs WWW do programu DSPAM
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.
248 %description webui -l pl.UTF-8
249 Interfejs użytkownika WWW (klient CGI) może być uruchamiany z
250 dowolnego wykonywalnego miejsca na serwerze WWW i rozpoznaje tożsamość
251 użytkownika ze zmiennej środowiskowej REMOTE_USER. Oznacza to, że
252 trzeba użyć uwietrzytelnienia HTTP z hasłem do dostępu do CGI (działać
253 będzie dowolny rodzaj uwierzytelnienia obsługiwany przez moduły
254 Apache'a). Jest to o tyle wygodne, że można skonfigurować
255 uwierzytelnianie dla prawie każdego istniejącego systemu. Jedynym
256 wymogiem jest, żeby nazwy użytkowników pokrywały się z nazwami
257 użytkowników DSPAM-a używanymi w systemie. Kopia pliku shadow
258 wystarczy dla większości popularnych instalacji.
267 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
268 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
269 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
280 %{?with_mysql:mysql_drv}
281 %{?with_pgsql:pgsql_drv}
282 %{?with_sqlite:sqlite3_drv}
285 --disable-dependency-tracking \
286 %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
287 --enable-trusted-user-security \
288 --enable-large-scale \
289 --with-dspam-home=/var/lib/%{name} \
290 --with-dspam-home-owner=none \
291 --with-dspam-home-group=none \
292 --with-dspam-owner=none \
293 --with-dspam-group=none \
294 --with-logdir=/var/log/%{name} \
297 --enable-preferences-extension \
298 --enable-long-usernames \
299 --enable-virtual-users \
300 --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
302 --with-mysql-includes=%{_includedir}/mysql \
303 --with-mysql-libraries=%{_libdir} \
306 --with-pgsql-includes=%{_includedir}/postgresql \
307 --with-pgsql-libraries=%{_libdir} \
311 --with-sqlite-includes=%{_includedir} \
312 --with-sqlite-libraries=%{_libdir} \
317 # --enable-dclassify-extension needs libdclassify
322 rm -rf $RPM_BUILD_ROOT
323 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
324 $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data} \
325 $RPM_BUILD_ROOT/usr/lib/tmpfiles.d
327 %{__make} -j1 install \
328 DESTDIR=$RPM_BUILD_ROOT
330 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
332 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
334 # install devel files
335 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
336 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
338 # provide maintenance scripts
339 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
340 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
342 exec %{_bindir}/%{name}_clean -s -p
345 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
348 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
351 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
356 This file can only contain 5 lines with the following values:
367 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
372 This file can only contain 5 lines with the following values:
382 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
383 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
384 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
385 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
387 install %{SOURCE3} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
390 %{__rm} $RPM_BUILD_ROOT%{_libdir}/dspam/*.{a,la}
393 /sbin/chkconfig --add dspam
394 %service dspam restart "dspam daemon"
397 if [ "$1" = "0" ]; then
399 /sbin/chkconfig --del dspam
403 rm -rf $RPM_BUILD_ROOT
405 %post libs -p /sbin/ldconfig
406 %postun libs -p /sbin/ldconfig
409 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
412 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
415 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
418 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libsqlite3_drv.so,' /etc/dspam.conf
420 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
421 %webapp_register apache %{_webapp}
423 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
424 %webapp_unregister apache %{_webapp}
426 %triggerin webui -- apache < 2.2.0, apache-base
427 %webapp_register httpd %{_webapp}
429 %triggerun webui -- apache < 2.2.0, apache-base
430 %webapp_unregister httpd %{_webapp}
433 %defattr(644,root,root,755)
434 %doc README CHANGELOG RELEASE.NOTES UPGRADING
435 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
436 %doc scripts/train.pl
437 /usr/lib/tmpfiles.d/%{name}.conf
438 %dir %attr(775,root,mail) /var/run/dspam
439 %dir %attr(750,root,mail) /var/lib/%{name}
440 %dir %attr(770,root,mail) /var/lib/%{name}/data
441 %dir /var/lib/%{name}/txt
442 %dir %{_libdir}/dspam
443 %config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
444 %dir %attr(770,root,mail) /var/log/dspam
445 %attr(754,root,root) /etc/rc.d/init.d/dspam
446 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
447 %attr(755,root,root) %{_bindir}/%{name}
448 %attr(755,root,root) %{_bindir}/%{name}_logrotate
449 %attr(755,root,root) %{_bindir}/%{name}_clean
450 %attr(755,root,root) %{_bindir}/%{name}_crc
451 %attr(755,root,root) %{_bindir}/%{name}_dump
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 %attr(755,root,root) %{_bindir}/%{name}c
464 %defattr(644,root,root,755)
465 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
468 %defattr(644,root,root,755)
469 %attr(755,root,root) %{_libdir}/libdspam.so.7.0.0
470 %attr(755,root,root) %ghost %{_libdir}/libdspam.so.7
473 %defattr(644,root,root,755)
474 %attr(755,root,root) %{_libdir}/libdspam.so
475 %{_libdir}/libdspam.la
476 %{_includedir}/%{name}
477 %{_mandir}/man3/libdspam.3*
478 %{_pkgconfigdir}/dspam.pc
481 %defattr(644,root,root,755)
482 %{_libdir}/libdspam.a
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_bindir}/css*
487 %attr(755,root,root) %{_libdir}/dspam/libhash_drv.so*
491 %defattr(644,root,root,755)
492 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
493 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
494 %attr(755,root,root) %{_libdir}/dspam/libmysql_drv.so*
499 %defattr(644,root,root,755)
500 %doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
501 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
502 %attr(755,root,root) %{_bindir}/%{name}_pg2int8
503 %attr(755,root,root) %{_libdir}/dspam/libpgsql_drv.so*
507 %files driver-sqlite3
508 %defattr(644,root,root,755)
509 %doc doc/sqlite_drv.txt
510 %attr(755,root,root) %{_libdir}/dspam/libsqlite3_drv.so*
514 %defattr(644,root,root,755)
515 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
516 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
517 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
518 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
519 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
520 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
521 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
523 %dir %{_datadir}/dspam
524 %dir %{_datadir}/dspam/cgi
525 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
526 %{_datadir}/dspam/cgi/templates
527 %{_datadir}/dspam/htdocs