]> git.pld-linux.org Git - packages/dspam.git/blob - dspam.spec
- fix %post scriptlets (now plugins are installed in dspam dubdir)
[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 # - upgrade to 3.9.0
8 #
9 # Conditional build:
10 %bcond_without  mysql   # disable MySQL storage driver
11 %bcond_without  pgsql   # disable PostgreSQL storage driver
12 %bcond_without  sqlite  # disable SQLite3 storage driver
13 %bcond_with     mysql40 # use with mysql 4.0
14
15 %include        /usr/lib/rpm/macros.perl
16 Summary:        A library and Mail Delivery Agent for Bayesian spam filtering
17 Summary(pl.UTF-8):      Biblioteka i MDA do bayesowskiego filtrowania spamu
18 Name:           dspam
19 Version:        3.9.0
20 Release:        0.1
21 License:        GPL
22 Group:          Applications/Mail
23 Source0:        http://downloads.sourceforge.net/project/dspam/dspam/dspam-%{version}/%{name}-%{version}.tar.gz
24 # Source0-md5:  10d092b57d628d8c91655fee5dc0d0cd
25 Patch0:         %{name}-webui.patch
26 Patch1:         %{name}-config.patch
27 Patch2:         %{name}-speedup.patch
28 Patch3:         %{name}-autotools.patch
29 Patch4:         %{name}-single-char-usernames.patch
30 Source1:        %{name}.init
31 Source2:        %{name}-apache.conf
32 URL:            http://dspam.nuclearelephant.com/
33 BuildRequires:  autoconf
34 BuildRequires:  automake
35 BuildRequires:  clamav-devel
36 BuildRequires:  libtool
37 %{?with_mysql:BuildRequires:    mysql-devel}
38 BuildRequires:  openldap-devel >= 2.4.6
39 %{?with_pgsql:BuildRequires:    postgresql-devel}
40 BuildRequires:  rpm-perlprov >= 4.1-13
41 BuildRequires:  rpmbuild(macros) >= 1.268
42 BuildRequires:  sed >= 4.0
43 %{?with_sqlite:BuildRequires:   sqlite3-devel}
44 BuildRequires:  zlib-devel
45 Requires(post,preun):   /sbin/chkconfig
46 Requires:       %{name}-common = %{version}-%{release}
47 Requires:       %{name}-driver = %{version}-%{release}
48 Requires:       rc-scripts
49 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
50
51 %define         _webapps        /etc/webapps
52 %define         _webapp         %{name}
53
54 # Disable parallel build
55 %define         _smp_mflags     %{nil}
56
57 %description
58 DSPAM (as in De-Spam) is an open-source project to create a new kind
59 of anti-spam mechanism, and is currently effective as both a
60 server-side agent for UNIX email servers and a developer's library for
61 mail clients, other anti-spam tools, and similar projects requiring
62 drop-in spam filtering.
63
64 The DSPAM agent masquerades as the email server's local delivery agent
65 and filters/learns spams using an advanced Bayesian statistical
66 approach (based on Bayes's theorem of combined probabilities) which
67 provides an administratively maintenance-free, easy-learning Anti-Spam
68 service custom tailored to each individual user's behavior. Advanced
69 because on top of standard Bayesian filtering is also incorporated the
70 use of Chained Tokens, de-obfuscation, and other enhancements. DSPAM
71 works great with Sendmail and Exim, and should work well with any
72 other MTA that supports an external local delivery agent (postfix,
73 qmail, etc.)
74
75 %description -l pl.UTF-8
76 DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
77 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
78 efektywny zarówno jako działający po stronie serwera agent dla
79 uniksowych serwerów pocztowych jak i biblioteka dla programistów
80 klientów pocztowych, innych narzędzi antyspamowych i innych projektów
81 wymagających filtrowania spamu w locie.
82
83 Agent DSPAM zachowuje się jak lokalny agent dostarczania poczty (MDA)
84 i filtruje/uczy się spamu przy użyciu zaawansowanego bayesowskiego
85 przybliżenia statystycznego (opartego na twierdzeniu Bayesa o
86 połączonych prawdopodobieństwach), dając nie wymagającą obsługi
87 administracyjnej, łatwo uczącą się usługę antyspamową dostosowaną do
88 zachowania każdego użytkownika. Metoda jest zaawansowana ponieważ na
89 podstawie standardowego filtrowania bayesowskiego wprowadzono użycie
90 tokenów łańcuchowych, eliminowanie ukrywanie i inne rozszerzenia.
91 DSPAM działa wspaniale z Sendmailem i Eximem, powinien działać dobrze
92 z każdym innym MTA obsługującym zewnętrznego agenta MDA (postfiksem,
93 qmailem itd.).
94
95 %package client
96 Summary:        dspam client
97 Summary(pl.UTF-8):      Klient dspam
98 Group:          Applications/Mail
99 Requires:       %{name}-common
100
101 %description client
102 dspam client.
103
104 %description client -l pl.UTF-8
105 Klient dspam.
106
107 %package common
108 Summary:        Common files for dspam packages
109 Summary(pl.UTF-8):      Wspólne pliki dla pakietów z dspamem
110 Group:          Applications/Mail
111
112 %description common
113 Common files for dspam and dspam-client packages.
114
115 %description client -l pl.UTF-8
116 Wspólne pliki dla pakietów dspam i dspam-client.
117
118 %package libs
119 Summary:        A library for Bayesian spam filtering
120 Summary(pl.UTF-8):      Biblioteka do bayesowskiego filtrowania spamu
121 Group:          Libraries
122 Obsoletes:      dspam-driver-db
123
124 %description libs
125 DSPAM (as in De-Spam) is an open-source project to create a new kind
126 of anti-spam mechanism, and is currently effective as both a
127 server-side agent for UNIX email servers and a developer's library for
128 mail clients, other anti-spam tools, and similar projects requiring
129 drop-in spam filtering.
130
131 This package contains the library.
132
133 %description libs -l pl.UTF-8
134 DSPAM (czyli De-Spam) to projekt o otwartych źródłach mający na celu
135 stworzenie nowego rodzaju mechanizmu antyspamowego. Aktualnie jest
136 efektywny zarówno jako działający po stronie serwera agent dla
137 uniksowych serwerów pocztowych jak i biblioteka dla programistów
138 klientów pocztowych, innych narzędzi antyspamowych i innych projektów
139 wymagających filtrowania spamu w locie.
140
141 Ten pakiet zawiera wspomnianą bibliotekę.
142
143 %package devel
144 Summary:        Header files for the DSPAM library
145 Summary(pl.UTF-8):      Pliki nagłówkowe biblioteki DSPAM
146 Group:          Development/Libraries
147 Requires:       %{name}-libs = %{version}-%{release}
148
149 %description devel
150 DSPAM has had its core engine moved into a separate library, libdspam.
151 This library can be used by developers to provide 'drop-in' spam
152 filtering for their mail client applications, other anti-spam tools,
153 or similar projects.
154
155 %description devel -l pl.UTF-8
156 Główny silnik DSPAM został przeniesiony do oddzielnej biblioteki
157 libdspam, która może być używana przez programistów do zapewnienia
158 filtrowania spamu w locie dla aplikacji klientów pocztowych, innych
159 narzędzi antyspamowych i podobnych projektów.
160
161 %package static
162 Summary:        Static DSPAM library
163 Summary(pl.UTF-8):      Statyczna biblioteka DSPAM
164 Group:          Development/Libraries
165 Requires:       %{name}-devel = %{version}-%{release}
166
167 %description static
168 Static DSPAM library.
169
170 %description static -l pl.UTF-8
171 Statyczna biblioteka DSPAM.
172
173 %package driver-hash
174 Summary:        HASH driver for DSPAM
175 Summary(pl.UTF-8):      Sterownik HASH dla DSPAM-a
176 Group:          Libraries
177 Requires(post): sed >= 4.0
178 Requires:       %{name} = %{version}-%{release}
179 Provides:       %{name}-driver = %{version}-%{release}
180
181 %description driver-hash
182 HASH driver for DSPAM.
183
184 %description driver-hash -l pl.UTF-8
185 Sterownik HASH dla DSPAM-a.
186
187 %package driver-mysql
188 Summary:        MySQL driver for DSPAM
189 Summary(pl.UTF-8):      Sterownik MySQL dla DSPAM-a
190 Group:          Libraries
191 Requires(post): sed >= 4.0
192 Requires:       %{name} = %{version}-%{release}
193 Provides:       %{name}-driver = %{version}-%{release}
194
195 %description driver-mysql
196 MySQL driver for DSPAM.
197
198 %description driver-mysql -l pl.UTF-8
199 Sterownik MySQL dla DSPAM-a.
200
201 %package driver-pgsql
202 Summary:        PostgreSQL driver for DSPAM
203 Summary(pl.UTF-8):      Sterownik PostgreSQL dla DSPAM-a
204 Group:          Libraries
205 Requires(post): sed >= 4.0
206 Requires:       %{name} = %{version}-%{release}
207 Provides:       %{name}-driver = %{version}-%{release}
208
209 %description driver-pgsql
210 PostgreSQL driver for DSPAM.
211
212 %description driver-pgsql -l pl.UTF-8
213 Sterownik PostgreSQL dla DSPAM-a.
214
215 %package driver-sqlite3
216 Summary:        SQLite driver for DSPAM
217 Summary(pl.UTF-8):      Sterownik SQLite dla DSPAM-a
218 Group:          Libraries
219 Requires(post): sed >= 4.0
220 Requires:       %{name} = %{version}-%{release}
221 Provides:       %{name}-driver = %{version}-%{release}
222 Obsoletes:      dspam-driver-sqlite
223
224 %description driver-sqlite3
225 SQLite driver for DSPAM.
226
227 %description driver-sqlite3 -l pl.UTF-8
228 Sterownik SQLite dla DSPAM-a.
229
230 %package webui
231 Summary:        DSPAM Web UI
232 Summary(pl.UTF-8):      Interfejs WWW do programu DSPAM
233 Group:          Applications/WWW
234 Requires:       webapps
235 # needs dspam binary
236 Requires:       %{name} = %{version}-%{release}
237
238 %description webui
239 The Web UI (CGI client) can be run from any executable location on a
240 web server, and detects its user's identity from the REMOTE_USER
241 environment variable. This means you'll need to use HTTP password
242 authentication to access the CGI (Any type of authentication will
243 work, so long as Apache supports the module). This is also convenient
244 in that you can set up authentication using almost any existing system
245 you have. The only catch is that you'll need the usernames to match
246 the actual DSPAM usernames used the system. A copy of the shadow
247 password file will suffice for most common installs.
248
249 %description webui -l pl.UTF-8
250 Interfejs użytkownika WWW (klient CGI) może być uruchamiany z
251 dowolnego wykonywalnego miejsca na serwerze WWW i rozpoznaje tożsamość
252 użytkownika ze zmiennej środowiskowej REMOTE_USER. Oznacza to, że
253 trzeba użyć uwietrzytelnienia HTTP z hasłem do dostępu do CGI (działać
254 będzie dowolny rodzaj uwierzytelnienia obsługiwany przez moduły
255 Apache'a). Jest to o tyle wygodne, że można skonfigurować
256 uwierzytelnianie dla prawie każdego istniejącego systemu. Jedynym
257 wymogiem jest, żeby nazwy użytkowników pokrywały się z nazwami
258 użytkowników DSPAM-a używanymi w systemie. Kopia pliku shadow
259 wystarczy dla większości popularnych instalacji.
260
261 %prep
262 %setup -q
263 %patch0 -p1
264 %patch1 -p1
265 %patch2 -p1
266 %patch3 -p1
267 %patch4 -p1
268 sed -i -e 's#\-static##g' src/Makefile* src/*/Makefile*
269 %{?with_mysql40:sed -i -e 's#40100#99999#g' src/mysql_drv.c}
270 sed -i -e 's,/usr/local/dspam/bin,/usr/bin,' ./scripts/train.pl
271
272 %build
273 %{__libtoolize}
274 %{__aclocal} -I m4
275 %{__autoconf}
276 %{__automake}
277
278 DRIVERS="
279 hash_drv
280 %{?with_mysql:mysql_drv}
281 %{?with_pgsql:pgsql_drv}
282 %{?with_sqlite:sqlite3_drv}
283 "
284 %configure \
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         --enable-ldap \
295         --enable-clamav \
296         --enable-preferences-extension \
297         --enable-long-usernames \
298         --enable-virtual-users \
299         --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
300 %if %{with mysql}
301         --with-mysql-includes=%{_includedir}/mysql \
302         --with-mysql-libraries=%{_libdir} \
303 %endif
304 %if %{with pgsql}
305         --with-pgsql-includes=%{_includedir}/postgresql \
306         --with-pgsql-libraries=%{_libdir} \
307 %endif
308 %if 0
309 %if %{with sqlite}
310         --with-sqlite-includes=%{_includedir} \
311         --with-sqlite-libraries=%{_libdir} \
312 %endif
313 %endif
314         --enable-daemon
315
316 # --enable-dclassify-extension needs libdclassify
317
318 %{__make}
319
320 %install
321 rm -rf $RPM_BUILD_ROOT
322 install -d $RPM_BUILD_ROOT{/var/run/dspam,/etc/{rc.d/init.d,sysconfig}} \
323         $RPM_BUILD_ROOT/var/lib/%{name}/{txt,data}
324
325 %{__make} install \
326         DESTDIR=$RPM_BUILD_ROOT
327
328 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
329
330 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
331
332 # install devel files
333 install -d $RPM_BUILD_ROOT{%{_includedir}/%{name},/var/{log,lib}/%{name}}
334 install src/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
335
336 # provide maintenance scripts
337 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
338 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
339 #!/bin/sh
340 exec %{_bindir}/%{name}_clean -s -p
341 EOF
342
343 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
344
345 # fix purge stuff
346 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
347
348 %if %{with mysql}
349 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
350 _UNCONFIGURED_
351
352 Note!
353
354 This file can only contain 5 lines with the following values:
355
356 HOSTNAME
357 PORT
358 USERNAME
359 PASSWORD
360 DATABASE
361 EOF
362 %endif
363
364 %if %{with pgsql}
365 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
366 _UNCONFIGURED_
367
368 Note!
369
370 This file can only contain 5 lines with the following values:
371
372 HOSTNAME
373 PORT
374 USERNAME
375 PASSWORD
376 DATABASE
377 EOF
378 %endif
379
380 install -d $RPM_BUILD_ROOT%{_webapps}/%{_webapp}
381 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
382 install %{SOURCE2} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
383 touch $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/htpasswd
384
385 %post
386 /sbin/chkconfig --add dspam
387 %service dspam restart "dspam daemon"
388
389 %preun
390 if [ "$1" = "0" ]; then
391         %service dspam stop
392         /sbin/chkconfig --del dspam
393 fi
394
395 %clean
396 rm -rf $RPM_BUILD_ROOT
397
398 %post   libs -p /sbin/ldconfig
399 %postun libs -p /sbin/ldconfig
400
401 %post driver-hash
402 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
403
404 %post driver-mysql
405 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
406
407 %post driver-pgsql
408 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
409
410 %post driver-sqlite3
411 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libsqlite3_drv.so,' /etc/dspam.conf
412
413 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
414 %webapp_register apache %{_webapp}
415
416 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
417 %webapp_unregister apache %{_webapp}
418
419 %triggerin webui -- apache < 2.2.0, apache-base
420 %webapp_register httpd %{_webapp}
421
422 %triggerun webui -- apache < 2.2.0, apache-base
423 %webapp_unregister httpd %{_webapp}
424
425 %files
426 %defattr(644,root,root,755)
427 %doc README CHANGELOG RELEASE.NOTES UPGRADING
428 %doc doc/{courier,exim,markov,pop3filter,postfix,qmail,relay,sendmail}.txt
429 %doc scripts/train.pl
430 %dir %attr(775,root,mail) /var/run/dspam
431 %dir %attr(750,root,mail) /var/lib/%{name}
432 %dir %attr(770,root,mail) /var/lib/%{name}/data
433 %dir /var/lib/%{name}/txt
434 %config(noreplace) %verify(not md5 mtime size) /var/lib/%{name}/txt/*.txt
435 %dir %attr(770,root,mail) /var/log/dspam
436 %attr(754,root,root) /etc/rc.d/init.d/dspam
437 %attr(755,root,root) %config(noreplace) /etc/cron.daily/%{name}
438 %attr(755,root,root) %{_bindir}/%{name}
439 %attr(755,root,root) %{_bindir}/%{name}_logrotate
440 %attr(755,root,root) %{_bindir}/%{name}_clean
441 %attr(755,root,root) %{_bindir}/%{name}_crc
442 %attr(755,root,root) %{_bindir}/%{name}_dump
443 %attr(755,root,root) %{_bindir}/%{name}_stats
444 %attr(755,root,root) %{_bindir}/%{name}_merge
445 %attr(755,root,root) %{_bindir}/%{name}_2sql
446 %attr(755,root,root) %{_bindir}/%{name}_admin
447 %attr(755,root,root) %{_bindir}/%{name}_train
448 %{_mandir}/man?/%{name}*
449
450 %files client
451 %defattr(644,root,root,755)
452 %attr(755,root,root) %{_bindir}/%{name}c
453
454 %files common
455 %defattr(644,root,root,755)
456 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
457
458 %files libs
459 %defattr(644,root,root,755)
460 %attr(755,root,root) %{_libdir}/libdspam.so.7.0.0
461 %attr(755,root,root) %ghost %{_libdir}/libdspam.so.7
462
463 %files devel
464 %defattr(644,root,root,755)
465 %attr(755,root,root) %{_libdir}/libdspam.so
466 %{_libdir}/libdspam.la
467 %{_libdir}/dspam/lib*_drv.la
468 %{_includedir}/%{name}
469 %{_mandir}/man3/libdspam.3*
470 %{_pkgconfigdir}/*.pc
471
472 %files static
473 %defattr(644,root,root,755)
474 %{_libdir}/libdspam.a
475 %{_libdir}/dspam/lib*_drv.a
476
477 %files driver-hash
478 %defattr(644,root,root,755)
479 %attr(755,root,root) %{_bindir}/css*
480 %attr(755,root,root) %{_libdir}/dspam/libhash_drv.so.7.0.0
481 %attr(755,root,root) %ghost %{_libdir}/dspam/libhash_drv.so.7
482 %{_libdir}/dspam/libhash_drv.so
483
484 %if %{with mysql}
485 %files driver-mysql
486 %defattr(644,root,root,755)
487 %doc doc/mysql_drv.txt src/tools.mysql_drv/*.sql
488 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/mysql.data
489 %attr(755,root,root) %{_libdir}/dspam/libmysql_drv.so.7.0.0
490 %attr(755,root,root) %ghost %{_libdir}/dspam/libmysql_drv.so.7
491 %{_libdir}/dspam/libmysql_drv.so
492 %endif
493
494 %if %{with pgsql}
495 %files driver-pgsql
496 %defattr(644,root,root,755)
497 %doc doc/pgsql_drv.txt src/tools.pgsql_drv/*.sql
498 %attr(640,root,mail) %config(noreplace) /var/lib/%{name}/pgsql.data
499 %attr(755,root,root) %{_bindir}/%{name}_pg2int8
500 %attr(755,root,root) %{_libdir}/dspam/libpgsql_drv.so.7.0.0
501 %attr(755,root,root) %ghost %{_libdir}/dspam/libpgsql_drv.so.7
502 %{_libdir}/dspam/libpgsql_drv.so
503 %endif
504
505 %if %{with sqlite}
506 %files driver-sqlite3
507 %defattr(644,root,root,755)
508 %doc doc/sqlite_drv.txt
509 %attr(755,root,root) %{_libdir}/dspam/libsqlite3_drv.so.7.0.0
510 %attr(755,root,root) %ghost %{_libdir}/dspam/libsqlite3_drv.so.7
511 %{_libdir}/dspam/libsqlite3_drv.so
512 %endif
513
514 %files webui
515 %defattr(644,root,root,755)
516 %dir %attr(750,root,http) %{_webapps}/%{_webapp}
517 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
518 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
519 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/htpasswd
520 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/admins
521 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/default.prefs
522 %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/configure.pl
523
524 %dir %{_datadir}/dspam
525 %dir %{_datadir}/dspam/cgi
526 %attr(755,root,root) %{_datadir}/dspam/cgi/*.cgi
527 %{_datadir}/dspam/cgi/templates
528 %{_datadir}/dspam/htdocs
This page took 0.096373 seconds and 3 git commands to generate.