]> git.pld-linux.org Git - packages/dspam.git/blob - dspam.spec
- added tmpfiles config for systemd
[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:        5
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 Source1:        %{name}.init
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}
47 Requires:       rc-scripts
48 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
49
50 %define         _webapps        /etc/webapps
51 %define         _webapp         %{name}
52
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
55
56 %description
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.
62
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,
72 qmail, etc.)
73
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.
81
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,
92 qmailem itd.).
93
94 %package client
95 Summary:        dspam client
96 Summary(pl.UTF-8):      Klient dspam
97 Group:          Applications/Mail
98 Requires:       %{name}-common
99
100 %description client
101 dspam client.
102
103 %description client -l pl.UTF-8
104 Klient dspam.
105
106 %package common
107 Summary:        Common files for dspam packages
108 Summary(pl.UTF-8):      Wspólne pliki dla pakietów z dspamem
109 Group:          Applications/Mail
110
111 %description common
112 Common files for dspam and dspam-client packages.
113
114 %description common -l pl.UTF-8
115 Wspólne pliki dla pakietów dspam i dspam-client.
116
117 %package libs
118 Summary:        A library for Bayesian spam filtering
119 Summary(pl.UTF-8):      Biblioteka do bayesowskiego filtrowania spamu
120 Group:          Libraries
121 Obsoletes:      dspam-driver-db
122
123 %description libs
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.
129
130 This package contains the library.
131
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.
139
140 Ten pakiet zawiera wspomnianą bibliotekę.
141
142 %package devel
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}
147
148 %description devel
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,
152 or similar projects.
153
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.
159
160 %package static
161 Summary:        Static DSPAM library
162 Summary(pl.UTF-8):      Statyczna biblioteka DSPAM
163 Group:          Development/Libraries
164 Requires:       %{name}-devel = %{version}-%{release}
165
166 %description static
167 Static DSPAM library.
168
169 %description static -l pl.UTF-8
170 Statyczna biblioteka DSPAM.
171
172 %package driver-hash
173 Summary:        HASH driver for DSPAM
174 Summary(pl.UTF-8):      Sterownik HASH dla DSPAM-a
175 Group:          Libraries
176 Requires(post): sed >= 4.0
177 Requires:       %{name} = %{version}-%{release}
178 Provides:       %{name}-driver = %{version}-%{release}
179
180 %description driver-hash
181 HASH driver for DSPAM.
182
183 %description driver-hash -l pl.UTF-8
184 Sterownik HASH dla DSPAM-a.
185
186 %package driver-mysql
187 Summary:        MySQL driver for DSPAM
188 Summary(pl.UTF-8):      Sterownik MySQL dla DSPAM-a
189 Group:          Libraries
190 Requires(post): sed >= 4.0
191 Requires:       %{name} = %{version}-%{release}
192 Provides:       %{name}-driver = %{version}-%{release}
193
194 %description driver-mysql
195 MySQL driver for DSPAM.
196
197 %description driver-mysql -l pl.UTF-8
198 Sterownik MySQL dla DSPAM-a.
199
200 %package driver-pgsql
201 Summary:        PostgreSQL driver for DSPAM
202 Summary(pl.UTF-8):      Sterownik PostgreSQL dla DSPAM-a
203 Group:          Libraries
204 Requires(post): sed >= 4.0
205 Requires:       %{name} = %{version}-%{release}
206 Provides:       %{name}-driver = %{version}-%{release}
207
208 %description driver-pgsql
209 PostgreSQL driver for DSPAM.
210
211 %description driver-pgsql -l pl.UTF-8
212 Sterownik PostgreSQL dla DSPAM-a.
213
214 %package driver-sqlite3
215 Summary:        SQLite driver for DSPAM
216 Summary(pl.UTF-8):      Sterownik SQLite dla DSPAM-a
217 Group:          Libraries
218 Requires(post): sed >= 4.0
219 Requires:       %{name} = %{version}-%{release}
220 Provides:       %{name}-driver = %{version}-%{release}
221 Obsoletes:      dspam-driver-sqlite
222
223 %description driver-sqlite3
224 SQLite driver for DSPAM.
225
226 %description driver-sqlite3 -l pl.UTF-8
227 Sterownik SQLite dla DSPAM-a.
228
229 %package webui
230 Summary:        DSPAM Web UI
231 Summary(pl.UTF-8):      Interfejs WWW do programu DSPAM
232 Group:          Applications/WWW
233 Requires:       webapps
234 # needs dspam binary
235 Requires:       %{name} = %{version}-%{release}
236
237 %description webui
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.
247
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.
259
260 %prep
261 %setup -q
262 %patch0 -p1
263 %patch1 -p1
264 %patch2 -p1
265 %patch3 -p1
266 %patch4 -p1
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
270
271 %build
272 %{__libtoolize}
273 %{__aclocal} -I m4
274 %{__autoconf}
275 %{__autoheader}
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         --with-logdir=/var/log/%{name} \
295         --enable-ldap \
296         --enable-clamav \
297         --enable-preferences-extension \
298         --enable-long-usernames \
299         --enable-virtual-users \
300         --with-storage-driver=$(echo $DRIVERS | tr ' ' ',') \
301 %if %{with mysql}
302         --with-mysql-includes=%{_includedir}/mysql \
303         --with-mysql-libraries=%{_libdir} \
304 %endif
305 %if %{with pgsql}
306         --with-pgsql-includes=%{_includedir}/postgresql \
307         --with-pgsql-libraries=%{_libdir} \
308 %endif
309 %if 0
310 %if %{with sqlite}
311         --with-sqlite-includes=%{_includedir} \
312         --with-sqlite-libraries=%{_libdir} \
313 %endif
314 %endif
315         --enable-daemon
316
317 # --enable-dclassify-extension needs libdclassify
318
319 %{__make} -j1
320
321 %install
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
326
327 %{__make} -j1 install \
328         DESTDIR=$RPM_BUILD_ROOT
329
330 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dspam
331
332 cp -a txt/*.txt $RPM_BUILD_ROOT/var/lib/%{name}/txt
333
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}
337
338 # provide maintenance scripts
339 install -d $RPM_BUILD_ROOT/etc/cron.{daily,weekly}
340 cat > $RPM_BUILD_ROOT/etc/cron.daily/%{name} <<EOF
341 #!/bin/sh
342 exec %{_bindir}/%{name}_clean -s -p
343 EOF
344
345 chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/%{name}
346
347 # fix purge stuff
348 #install dspam-cron.weekly $RPM_BUILD_ROOT%{_sysconfdir}/cron.weekly/%{name}
349
350 %if %{with mysql}
351 cat > $RPM_BUILD_ROOT/var/lib/%{name}/mysql.data <<EOF
352 _UNCONFIGURED_
353
354 Note!
355
356 This file can only contain 5 lines with the following values:
357
358 HOSTNAME
359 PORT
360 USERNAME
361 PASSWORD
362 DATABASE
363 EOF
364 %endif
365
366 %if %{with pgsql}
367 cat > $RPM_BUILD_ROOT/var/lib/%{name}/pgsql.data <<EOF
368 _UNCONFIGURED_
369
370 Note!
371
372 This file can only contain 5 lines with the following values:
373
374 HOSTNAME
375 PORT
376 USERNAME
377 PASSWORD
378 DATABASE
379 EOF
380 %endif
381
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
386
387 install %{SOURCE3} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
388
389 # cleanup
390 %{__rm} $RPM_BUILD_ROOT%{_libdir}/dspam/*.{a,la}
391
392 %post
393 /sbin/chkconfig --add dspam
394 %service dspam restart "dspam daemon"
395
396 %preun
397 if [ "$1" = "0" ]; then
398         %service dspam stop
399         /sbin/chkconfig --del dspam
400 fi
401
402 %clean
403 rm -rf $RPM_BUILD_ROOT
404
405 %post   libs -p /sbin/ldconfig
406 %postun libs -p /sbin/ldconfig
407
408 %post driver-hash
409 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libhash_drv.so,' /etc/dspam.conf
410
411 %post driver-mysql
412 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libmysql_drv.so,' /etc/dspam.conf
413
414 %post driver-pgsql
415 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libpgsql_drv.so,' /etc/dspam.conf
416
417 %post driver-sqlite3
418 %{__sed} -i -e '/^StorageDriver/s,/.*\.so,%{_libdir}/dspam/libsqlite3_drv.so,' /etc/dspam.conf
419
420 %triggerin webui -- apache1 < 1.3.37-3, apache1-base
421 %webapp_register apache %{_webapp}
422
423 %triggerun webui -- apache1 < 1.3.37-3, apache1-base
424 %webapp_unregister apache %{_webapp}
425
426 %triggerin webui -- apache < 2.2.0, apache-base
427 %webapp_register httpd %{_webapp}
428
429 %triggerun webui -- apache < 2.2.0, apache-base
430 %webapp_unregister httpd %{_webapp}
431
432 %files
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}*
458
459 %files client
460 %defattr(644,root,root,755)
461 %attr(755,root,root) %{_bindir}/%{name}c
462
463 %files common
464 %defattr(644,root,root,755)
465 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dspam.conf
466
467 %files libs
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
471
472 %files devel
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
479
480 %files static
481 %defattr(644,root,root,755)
482 %{_libdir}/libdspam.a
483
484 %files driver-hash
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_bindir}/css*
487 %attr(755,root,root) %{_libdir}/dspam/libhash_drv.so*
488
489 %if %{with mysql}
490 %files driver-mysql
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*
495 %endif
496
497 %if %{with pgsql}
498 %files driver-pgsql
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*
504 %endif
505
506 %if %{with sqlite}
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*
511 %endif
512
513 %files webui
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
522
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
This page took 0.135443 seconds and 3 git commands to generate.