]> git.pld-linux.org Git - packages/dspam.git/blob - dspam.spec
- release 4
[packages/dspam.git] / dspam.spec
1 # TODO:
2 # - support for libdclassify
3 # - oracle driver
4 # - messages from default install of cron with mysql driver Memory fault
5 # - remove versioned sonames from drivers
6 #
7 # Conditional build:
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
12
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
16 Name:           dspam
17 Version:        3.9.0
18 Release:        4
19 License:        GPL v2+
20 Group:          Applications/Mail
21 Source0:        http://downloads.sourceforge.net/project/dspam/dspam/%{name}-%{version}/%{name}-%{version}.tar.gz
22 # Source0-md5:  10d092b57d628d8c91655fee5dc0d0cd
23 Patch0:         %{name}-webui.patch
24 Patch1:         %{name}-config.patch
25 Patch2:         %{name}-speedup.patch
26 Patch3:         %{name}-autotools.patch
27 Patch4:         %{name}-single-char-usernames.patch
28 Source1:        %{name}.init
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}
46 Requires:       rc-scripts
47 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
48
49 %define         _webapps        /etc/webapps
50 %define         _webapp         %{name}
51
52 %description
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.
58
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,
68 qmail, etc.)
69
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.
77
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,
88 qmailem itd.).
89
90 %package client
91 Summary:        dspam client
92 Summary(pl.UTF-8):      Klient dspam
93 Group:          Applications/Mail
94 Requires:       %{name}-common
95
96 %description client
97 dspam client.
98
99 %description client -l pl.UTF-8
100 Klient dspam.
101
102 %package common
103 Summary:        Common files for dspam packages
104 Summary(pl.UTF-8):      Wspólne pliki dla pakietów z dspamem
105 Group:          Applications/Mail
106
107 %description common
108 Common files for dspam and dspam-client packages.
109
110 %description common -l pl.UTF-8
111 Wspólne pliki dla pakietów dspam i dspam-client.
112
113 %package libs
114 Summary:        A library for Bayesian spam filtering
115 Summary(pl.UTF-8):      Biblioteka do bayesowskiego filtrowania spamu
116 Group:          Libraries
117 Obsoletes:      dspam-driver-db
118
119 %description libs
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.
125
126 This package contains the library.
127
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.
135
136 Ten pakiet zawiera wspomnianą bibliotekę.
137
138 %package devel
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}
143
144 %description devel
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,
148 or similar projects.
149
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.
155
156 %package static
157 Summary:        Static DSPAM library
158 Summary(pl.UTF-8):      Statyczna biblioteka DSPAM
159 Group:          Development/Libraries
160 Requires:       %{name}-devel = %{version}-%{release}
161
162 %description static
163 Static DSPAM library.
164
165 %description static -l pl.UTF-8
166 Statyczna biblioteka DSPAM.
167
168 %package driver-hash
169 Summary:        HASH driver for DSPAM
170 Summary(pl.UTF-8):      Sterownik HASH dla DSPAM-a
171 Group:          Libraries
172 Requires(post): sed >= 4.0
173 Requires:       %{name} = %{version}-%{release}
174 Provides:       %{name}-driver = %{version}-%{release}
175
176 %description driver-hash
177 HASH driver for DSPAM.
178
179 %description driver-hash -l pl.UTF-8
180 Sterownik HASH dla DSPAM-a.
181
182 %package driver-mysql
183 Summary:        MySQL driver for DSPAM
184 Summary(pl.UTF-8):      Sterownik MySQL dla DSPAM-a
185 Group:          Libraries
186 Requires(post): sed >= 4.0
187 Requires:       %{name} = %{version}-%{release}
188 Provides:       %{name}-driver = %{version}-%{release}
189
190 %description driver-mysql
191 MySQL driver for DSPAM.
192
193 %description driver-mysql -l pl.UTF-8
194 Sterownik MySQL dla DSPAM-a.
195
196 %package driver-pgsql
197 Summary:        PostgreSQL driver for DSPAM
198 Summary(pl.UTF-8):      Sterownik PostgreSQL dla DSPAM-a
199 Group:          Libraries
200 Requires(post): sed >= 4.0
201 Requires:       %{name} = %{version}-%{release}
202 Provides:       %{name}-driver = %{version}-%{release}
203
204 %description driver-pgsql
205 PostgreSQL driver for DSPAM.
206
207 %description driver-pgsql -l pl.UTF-8
208 Sterownik PostgreSQL dla DSPAM-a.
209
210 %package driver-sqlite3
211 Summary:        SQLite driver for DSPAM
212 Summary(pl.UTF-8):      Sterownik SQLite dla DSPAM-a
213 Group:          Libraries
214 Requires(post): sed >= 4.0
215 Requires:       %{name} = %{version}-%{release}
216 Provides:       %{name}-driver = %{version}-%{release}
217 Obsoletes:      dspam-driver-sqlite
218
219 %description driver-sqlite3
220 SQLite driver for DSPAM.
221
222 %description driver-sqlite3 -l pl.UTF-8
223 Sterownik SQLite dla DSPAM-a.
224
225 %package webui
226 Summary:        DSPAM Web UI
227 Summary(pl.UTF-8):      Interfejs WWW do programu DSPAM
228 Group:          Applications/WWW
229 Requires:       webapps
230 # needs dspam binary
231 Requires:       %{name} = %{version}-%{release}
232
233 %description webui
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.
243
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.
255
256 %prep
257 %setup -q
258 %patch0 -p1
259 %patch1 -p1
260 %patch2 -p1
261 %patch3 -p1
262 %patch4 -p1
263 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
264 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
265 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
266
267 %build
268 %{__libtoolize}
269 %{__aclocal} -I m4
270 %{__autoconf}
271 %{__autoheader}
272 %{__automake}
273
274 DRIVERS="
275 hash_drv
276 %{?with_mysql:mysql_drv}
277 %{?with_pgsql:pgsql_drv}
278 %{?with_sqlite:sqlite3_drv}
279 "
280 %configure \
281         --disable-dependency-tracking \
282         %{?debug: --enable-debug --enable-bnr-debug --enable-verbose-debug} \
283         --enable-trusted-user-security \
284         --enable-large-scale \
285         --with-dspam-home=/var/lib/%{name} \
286         --with-dspam-home-owner=none \
287         --with-dspam-home-group=none \
288         --with-dspam-owner=none \
289         --with-dspam-group=none \
290         --with-logdir=/var/log/%{name} \
291         --enable-ldap \
292         --enable-clamav \
293         --enable-preferences-extension \
294         --enable-long-usernames \
295         --enable-virtual-users \
296         --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
297 %if %{with mysql}
298         --with-mysql-includes=%{_includedir}/mysql \
299         --with-mysql-libraries=%{_libdir} \
300 %endif
301 %if %{with pgsql}
302         --with-pgsql-includes=%{_includedir}/postgresql \
303         --with-pgsql-libraries=%{_libdir} \
304 %endif
305 %if 0
306 %if %{with sqlite}
307         --with-sqlite-includes=%{_includedir} \
308         --with-sqlite-libraries=%{_libdir} \
309 %endif
310 %endif
311         --enable-daemon
312
313 # --enable-dclassify-extension needs libdclassify
314
315 %{__make} -j1
316
317 %install
318 rm -rf $RPM_BUILD_ROOT
319 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
320         $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data}
321
322 %{__make} install \
323         DESTDIR=$RPM_BUILD_ROOT
324
325 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
326
327 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
328
329 # install devel files
330 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
331 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
332
333 # provide maintenance scripts
334 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
335 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
336 #!/bin/sh
337 exec %{_bindir}/%{name}_clean -s -p
338 EOF
339
340 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
341
342 # fix purge stuff
343 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
344
345 %if %{with mysql}
346 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
347 _UNCONFIGURED_
348
349 Note!
350
351 This file can only contain 5 lines with the following values:
352
353 HOSTNAME
354 PORT
355 USERNAME
356 PASSWORD
357 DATABASE
358 EOF
359 %endif
360
361 %if %{with pgsql}
362 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
363 _UNCONFIGURED_
364
365 Note!
366
367 This file can only contain 5 lines with the following values:
368
369 HOSTNAME
370 PORT
371 USERNAME
372 PASSWORD
373 DATABASE
374 EOF
375 %endif
376
377 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
378 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
379 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
380 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
381
382 %post
383 /sbin/chkconfig --add dspam
384 %service dspam restart "dspam daemon"
385
386 %preun
387 if [ "$1" = "0" ]; then
388         %service dspam stop
389         /sbin/chkconfig --del dspam
390 fi
391
392 %clean
393 rm -rf $RPM_BUILD_ROOT
394
395 %post   libs -p /sbin/ldconfig
396 %postun libs -p /sbin/ldconfig
397
398 %post driver-hash
399 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
400
401 %post driver-mysql
402 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
403
404 %post driver-pgsql
405 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
406
407 %post driver-sqlite3
408 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libsqlite3_drv.so,' /etc/dspam.conf
409
410 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
411 %webapp_register apache %{_webapp}
412
413 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
414 %webapp_unregister apache %{_webapp}
415
416 %triggerin webui -- apache < 2.2.0, apache-base
417 %webapp_register httpd %{_webapp}
418
419 %triggerun webui -- apache < 2.2.0, apache-base
420 %webapp_unregister httpd %{_webapp}
421
422 %files
423 %defattr(644,root,root,755)
424 %doc README CHANGELOG RELEASE.NOTES UPGRADING
425 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
426 %doc scripts/train.pl
427 %dir %attr(775,root,mail) /var/run/dspam
428 %dir %attr(750,root,mail) /var/lib/%{name}
429 %dir %attr(770,root,mail) /var/lib/%{name}/data
430 %dir /var/lib/%{name}/txt
431 %dir %{_libdir}/dspam
432 %config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
433 %dir %attr(770,root,mail) /var/log/dspam
434 %attr(754,root,root) /etc/rc.d/init.d/dspam
435 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
436 %attr(755,root,root) %{_bindir}/%{name}
437 %attr(755,root,root) %{_bindir}/%{name}_logrotate
438 %attr(755,root,root) %{_bindir}/%{name}_clean
439 %attr(755,root,root) %{_bindir}/%{name}_crc
440 %attr(755,root,root) %{_bindir}/%{name}_dump
441 %attr(755,root,root) %{_bindir}/%{name}_stats
442 %attr(755,root,root) %{_bindir}/%{name}_merge
443 %attr(755,root,root) %{_bindir}/%{name}_2sql
444 %attr(755,root,root) %{_bindir}/%{name}_admin
445 %attr(755,root,root) %{_bindir}/%{name}_train
446 %{_mandir}/man?/%{name}*
447
448 %files client
449 %defattr(644,root,root,755)
450 %attr(755,root,root) %{_bindir}/%{name}c
451
452 %files common
453 %defattr(644,root,root,755)
454 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
455
456 %files libs
457 %defattr(644,root,root,755)
458 %attr(755,root,root) %{_libdir}/libdspam.so.7.0.0
459 %attr(755,root,root) %ghost %{_libdir}/libdspam.so.7
460
461 %files devel
462 %defattr(644,root,root,755)
463 %attr(755,root,root) %{_libdir}/libdspam.so
464 %{_libdir}/libdspam.la
465 %{_includedir}/%{name}
466 %{_mandir}/man3/libdspam.3*
467 %{_pkgconfigdir}/dspam.pc
468
469 %files static
470 %defattr(644,root,root,755)
471 %{_libdir}/libdspam.a
472
473 %files driver-hash
474 %defattr(644,root,root,755)
475 %attr(755,root,root) %{_bindir}/css*
476 %attr(755,root,root) %{_libdir}/dspam/libhash_drv.so.7.0.0
477 %{_libdir}/dspam/libhash_drv.so
478
479 %if %{with mysql}
480 %files driver-mysql
481 %defattr(644,root,root,755)
482 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
483 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
484 %attr(755,root,root) %{_libdir}/dspam/libmysql_drv.so.7.0.0
485 %{_libdir}/dspam/libmysql_drv.so
486 %endif
487
488 %if %{with pgsql}
489 %files driver-pgsql
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}/dspam/libpgsql_drv.so.7.0.0
495 %{_libdir}/dspam/libpgsql_drv.so
496 %endif
497
498 %if %{with sqlite}
499 %files driver-sqlite3
500 %defattr(644,root,root,755)
501 %doc doc/sqlite_drv.txt
502 %attr(755,root,root) %{_libdir}/dspam/libsqlite3_drv.so.7.0.0
503 %{_libdir}/dspam/libsqlite3_drv.so
504 %endif
505
506 %files webui
507 %defattr(644,root,root,755)
508 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
509 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
510 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
511 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
512 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
513 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
514 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
515
516 %dir %{_datadir}/dspam
517 %dir %{_datadir}/dspam/cgi
518 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
519 %{_datadir}/dspam/cgi/templates
520 %{_datadir}/dspam/htdocs
This page took 0.091602 seconds and 4 git commands to generate.