]> git.pld-linux.org Git - packages/dspam.git/blob - dspam.spec
- rel 1
[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 # - install drivers in /usr/lib/dspam
6 # - if drivers are installed to private dir, remove versioned sonames from drivers
7 #
8 # Conditional build:
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
13
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
17 Name:           dspam
18 Version:        3.8.0
19 Release:        1
20 License:        GPL
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
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 client -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 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
265
266 %build
267 %{__libtoolize}
268 %{__aclocal} -I m4
269 %{__autoconf}
270 %{__automake}
271
272 DRIVERS="
273 hash_drv
274 %{?with_mysql:mysql_drv}
275 %{?with_pgsql:pgsql_drv}
276 %{?with_sqlite:sqlite3_drv}
277 "
278 %configure \
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 \
288         --enable-ldap \
289         --enable-clamav \
290         --enable-preferences-extension \
291         --enable-long-usernames \
292         --enable-virtual-users \
293         --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
294 %if %{with mysql}
295         --with-mysql-includes=%{_includedir}/mysql \
296         --with-mysql-libraries=%{_libdir} \
297 %endif
298 %if %{with pgsql}
299         --with-pgsql-includes=%{_includedir}/postgresql \
300         --with-pgsql-libraries=%{_libdir} \
301 %endif
302 %if 0
303 %if %{with sqlite}
304         --with-sqlite-includes=%{_includedir} \
305         --with-sqlite-libraries=%{_libdir} \
306 %endif
307 %endif
308         --enable-daemon
309
310 # --enable-dclassify-extension needs libdclassify
311
312 %{__make}
313
314 %install
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}
318
319 %{__make} install \
320         DESTDIR=$RPM_BUILD_ROOT
321
322 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
323
324 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
325
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}
329
330 # provide maintenance scripts
331 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
332 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
333 #!/bin/sh
334 exec %{_bindir}/%{name}_clean -s -p
335 EOF
336
337 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
338
339 # fix purge stuff
340 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
341
342 %if %{with mysql}
343 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
344 _UNCONFIGURED_
345
346 Note!
347
348 This file can only contain 5 lines with the following values:
349
350 HOSTNAME
351 PORT
352 USERNAME
353 PASSWORD
354 DATABASE
355 EOF
356 %endif
357
358 %if %{with pgsql}
359 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
360 _UNCONFIGURED_
361
362 Note!
363
364 This file can only contain 5 lines with the following values:
365
366 HOSTNAME
367 PORT
368 USERNAME
369 PASSWORD
370 DATABASE
371 EOF
372 %endif
373
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
378
379 %post
380 /sbin/chkconfig --add dspam
381 %service dspam restart "dspam daemon"
382
383 %preun
384 if [ "$1" = "0" ]; then
385         %service dspam stop
386         /sbin/chkconfig --del dspam
387 fi
388
389 %clean
390 rm -rf $RPM_BUILD_ROOT
391
392 %post   libs -p /sbin/ldconfig
393 %postun libs -p /sbin/ldconfig
394
395 %post driver-hash
396 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libhash_drv.so,' /etc/dspam.conf
397
398 %post driver-mysql
399 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libmysql_drv.so,' /etc/dspam.conf
400
401 %post driver-pgsql
402 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libpgsql_drv.so,' /etc/dspam.conf
403
404 %post driver-sqlite3
405 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/libsqlite3_drv.so,' /etc/dspam.conf
406
407 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
408 %webapp_register apache %{_webapp}
409
410 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
411 %webapp_unregister apache %{_webapp}
412
413 %triggerin webui -- apache < 2.2.0, apache-base
414 %webapp_register httpd %{_webapp}
415
416 %triggerun webui -- apache < 2.2.0, apache-base
417 %webapp_unregister httpd %{_webapp}
418
419 %files
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}*
443
444 %files client
445 %defattr(644,root,root,755)
446 %attr(755,root,root) %{_bindir}/%{name}c
447
448 %files common
449 %defattr(644,root,root,755)
450 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
451
452 %files libs
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
456
457 %files devel
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
465
466 %files static
467 %defattr(644,root,root,755)
468 %{_libdir}/libdspam.a
469 %{_libdir}/lib*_drv.a
470
471 %files driver-hash
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
477
478 %if %{with mysql}
479 %files driver-mysql
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
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}/libpgsql_drv.so.7.0.0
495 %attr(755,root,root) %ghost %{_libdir}/libpgsql_drv.so.7
496 %{_libdir}/libpgsql_drv.so
497 %endif
498
499 %if %{with sqlite}
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
506 %endif
507
508 %files webui
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
517
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
This page took 0.231112 seconds and 3 git commands to generate.