]> git.pld-linux.org Git - packages/dovecot.git/blob - dovecot.spec
- up to 2.3.4.1; fixes CVE-2019-3814
[packages/dovecot.git] / dovecot.spec
1 #
2 # Conditional build:
3 %bcond_without  gssapi  # without GSSAPI support
4 %bcond_without  ldap    # without LDAP auth
5 %bcond_without  mysql   # without MySQL auth
6 %bcond_without  pgsql   # without PostgreSQL auth
7 %bcond_without  sqlite  # without SQLite3 auth
8 %bcond_without  sasl    # without SASL auth
9 %bcond_without  tests   # tests
10
11 Summary:        IMAP and POP3 server written with security primarily in mind
12 Summary(pl.UTF-8):      Serwer IMAP i POP3 pisany głównie z myślą o bezpieczeństwie
13 Name:           dovecot
14 Version:        2.3.4.1
15 Release:        1
16 Epoch:          1
17 License:        MIT (libraries), LGPL v2.1 (the rest)
18 Group:          Networking/Daemons
19 Source0:        http://dovecot.org/releases/2.3/%{name}-%{version}.tar.gz
20 # Source0-md5:  b5144d8a7e81833428320a2c32a265d2
21 Source1:        %{name}.pamd
22 Source2:        %{name}.init
23 Source3:        %{name}.sysconfig
24 Source4:        %{name}.tmpfiles
25 Patch0:         %{name}-config.patch
26 Patch1:         %{name}-rpath.patch
27 URL:            http://dovecot.org/
28 BuildRequires:  autoconf
29 BuildRequires:  automake
30 BuildRequires:  bzip2-devel
31 BuildRequires:  clucene-core-devel >= 2.3.3.4
32 BuildRequires:  curl-devel
33 %{?with_sasl:BuildRequires:     cyrus-sasl-devel >= 2.0}
34 BuildRequires:  expat-devel
35 BuildRequires:  gettext-tools
36 %{?with_gssapi:BuildRequires:   heimdal-devel}
37 BuildRequires:  libapparmor-devel
38 BuildRequires:  libcap-devel
39 BuildRequires:  libicu-devel
40 BuildRequires:  libstemmer-devel
41 BuildRequires:  libexttextcat-devel
42 BuildRequires:  libtool
43 BuildRequires:  lz4-devel
44 %{?with_mysql:BuildRequires:    mysql-devel}
45 %{?with_ldap:BuildRequires:     openldap-devel >= 2.3.3}
46 BuildRequires:  openssl-devel >= 0.9.7d
47 BuildRequires:  pam-devel
48 BuildRequires:  pkgconfig
49 %{?with_pgsql:BuildRequires:    postgresql-devel}
50 BuildRequires:  rpmbuild(macros) >= 1.647
51 BuildRequires:  sed >= 4.0
52 %{?with_sqlite:BuildRequires:   sqlite3-devel}
53 BuildRequires:  xz-devel
54 BuildRequires:  zlib-devel
55 Requires(post,preun):   /sbin/chkconfig
56 Requires(postun):       /usr/sbin/groupdel
57 Requires(postun):       /usr/sbin/userdel
58 Requires(pre):  /bin/id
59 Requires(pre):  /usr/bin/getgid
60 Requires(pre):  /usr/sbin/groupadd
61 Requires(pre):  /usr/sbin/useradd
62 Requires:       %{name}-libs = %{epoch}:%{version}-%{release}
63 Requires:       pam >= 0.79.0
64 Provides:       group(dovecot)
65 Provides:       imapdaemon
66 Provides:       pop3daemon
67 Provides:       user(dovecot)
68 # heimdal-daemons in PLD contained only "popper" (kerberized POP3 daemon)
69 %{?with_gssapi:Obsoletes:       heimdal-daemons}
70 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
71
72 %define         no_install_post_check_so        1
73
74 %description
75 Dovecot is an IMAP and POP3 server for Linux/UNIX-like systems,
76 written with security primarily in mind. Although it's written with C,
77 it uses several coding techniques to avoid most of the common
78 pitfalls.
79
80 Dovecot can work with standard mbox and maildir formats and it's fully
81 compatible with UW-IMAP and Courier IMAP servers as well as mail
82 clients accessing the mailboxes directly. It's also planned to support
83 storing mails in SQL databases.
84
85 Dovecot is easy to set up and doesn't require special maintenance.
86 Only thing you need is to get the authentication working properly - if
87 your users are in /etc/passwd there's hardly anything you have to do.
88
89 Dovecot should be pretty fast, mostly because of index files that
90 Dovecot maintains; instead of having to scan through all the data in
91 mailbox, Dovecot can get most of the wanted information from index
92 with little effort.
93
94 Status:
95 - should be quite ready for use with normal IMAP clients
96 - complete IMAP4rev1 and POP3 support
97 - supports THREAD, SORT and IDLE extensions, required by many IMAP
98   webmails
99 - complete TLS/SSL support
100 - IPv6 ready
101 - shared mailboxes aren't yet supported
102 - Maildir++ quota is supported, bad hard filesystem quota can be
103   problematic
104
105 %description -l pl.UTF-8
106 Dovecot to serwer IMAP i POP3 dla systemów linuksowych/uniksowych,
107 pisany głównie z myślą o bezpieczeństwie. Chociaż jest pisany w C,
108 używa kilku technik kodowania zapobiegających większości popularnych
109 pułapek.
110
111 Dovecot może działać ze standardowymi formatami mbox i maildir, jest
112 całkowicie kompatybilny z serwerami UW-IMAP i Courier IMAP, a także z
113 klientami pocztowymi bezpośrednio dostającymi się do skrzynek.
114 Planowana jest także obsługa przechowywania listów w bazach SQL.
115
116 Dovecot jest łatwy do skonfigurowania i nie wymaga specjalnego
117 nadzoru. Wystarczy tylko doprowadzić do działania uwierzytelnianie -
118 jeśli użytkownicy są w /etc/passwd, to właściwie nie trzeba nic
119 zmieniać.
120
121 Dovecot powinien być w miarę szybki, głównie z powodu plików
122 indeksowych utrzymywanych przez serwer; zamiast potrzeby skanowania
123 wszystkich danych w skrzynce, Dovecot może małym kosztem uzyskać
124 większość potrzebnych informacji z indeksu.
125
126 Stan:
127 - powinien być gotowy do użycia ze zwykłymi klientami IMAP
128 - pełna obsługa IMAP4rev1 i POP3
129 - obsługa rozszerzeń THREAD, SORT i IDLE, wymaganych przez wiele
130   webmaili IMAP
131 - obsługa IPv6
132 - pełna obsługa TLS/SSL
133 - quota Maildir++ jest obsługiwana, ale twarda quota na systemach
134   plików może być problematyczna
135
136 %package libs
137 Summary:        Dovecot shared libraries
138 Summary(pl.UTF-8):      Współdzielone biblioteki Dovecota
139 Group:          Development/Libraries
140
141 %description libs
142 Dovecot shared libraries.
143
144 %description libs -l pl.UTF-8
145 Współdzielone biblioteki Dovecota.
146
147 %package devel
148 Summary:        Development package for Dovecot plugins
149 Summary(pl.UTF-8):      Pakiet programistyczny do tworzenia wtyczek dla Dovecota
150 Group:          Development/Libraries
151 Requires:       %{name}-libs = %{epoch}:%{version}-%{release}
152
153 %description devel
154 Development package for Dovecot plugins.
155
156 %description devel -l pl.UTF-8
157 Pakiet programistyczny do tworzenia wtyczek dla Dovecota.
158
159 %prep
160 %setup -q
161 %patch0 -p1
162 %patch1 -p1
163
164 %{__sed} -i 's,/usr/lib/dovecot,%{_libdir}/dovecot,g' doc/example-config/*.conf doc/example-config/conf.d/*.conf
165
166 %build
167 touch config.rpath
168 %{__libtoolize}
169 %{__aclocal} -I . -I m4
170 %{__autoconf}
171 %{__autoheader}
172 %{__automake}
173 %configure \
174         ac_cv_prog_VALGRIND=no \
175         CPPFLAGS="%{rpmcppflags} -I/usr/include/libstemmer -D_LINUX_QUOTA_VERSION=2" \
176         --disable-static \
177         --enable-hardening \
178         %{?debug:--enable-debug} \
179         %{?with_ldap:--with-ldap=yes} \
180         %{?with_mysql:--with-mysql} \
181         %{?with_pgsql:--with-pgsql} \
182         %{?with_sqlite:--with-sqlite} \
183         %{?with_gssapi:--with-gssapi=plugin} \
184         --with-lucene \
185         --with-stemmer \
186         --with-solr \
187         --with-sql=plugin \
188         --with-pam \
189         --with-zlib \
190         --with-bzlib \
191         --with-libcap \
192         --with-ssl=openssl \
193         --with-moduledir=%{_libdir}/%{name}/plugins \
194         --with-ssldir=/var/lib/openssl \
195         --sysconfdir=%{_sysconfdir} \
196         --with-systemdsystemunitdir=%{systemdunitdir}
197
198 %{__make}
199
200 %{?with_tests:%{__make} check}
201
202 %install
203 rm -rf $RPM_BUILD_ROOT
204 install -d $RPM_BUILD_ROOT/etc/{pam.d,rc.d/init.d,sysconfig,security} \
205         $RPM_BUILD_ROOT{/var/lib/dovecot,/var/run/dovecot/login} \
206         $RPM_BUILD_ROOT/usr/lib/tmpfiles.d
207
208 %{__make} install \
209         DESTDIR=$RPM_BUILD_ROOT
210
211 mv -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/* $RPM_BUILD_ROOT%{_sysconfdir}/dovecot
212
213 cp -a %{SOURCE1} $RPM_BUILD_ROOT/etc/pam.d/%{name}
214 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
215 cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
216 install %{SOURCE4} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
217
218 touch $RPM_BUILD_ROOT/etc/security/blacklist.imap
219
220 find $RPM_BUILD_ROOT%{_libdir}/%{name} -name '*.la' | xargs rm
221
222 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}
223 %{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/README
224
225 %clean
226 rm -rf $RPM_BUILD_ROOT
227
228 %pre
229 %groupadd -g 172 dovecot
230 %useradd -u 172 -d /usr/share/empty -s /bin/false -c "Dovecot server" -g dovecot dovecot
231 %groupadd -g 254 dovenull
232 %useradd -u 254 -d /usr/share/empty -s /bin/false -c "Dovecot server" -g dovenull dovenull
233
234 %post
235 /sbin/chkconfig --add dovecot
236 %service dovecot restart
237 %systemd_post dovecot.socket dovecot.service
238
239 %preun
240 if [ "$1" = "0" ]; then
241         %service dovecot stop
242         /sbin/chkconfig --del dovecot
243 fi
244 %systemd_preun dovecot.service dovecot.socket
245
246 %postun
247 if [ "$1" = "0" ]; then
248         %userremove dovecot
249         %groupremove dovecot
250         %userremove dovenull
251         %groupremove dovenull
252 fi
253 %systemd_reload
254
255 %post   libs -p /sbin/ldconfig
256 %postun libs -p /sbin/ldconfig
257
258 %triggerin -- pam
259 # restart devocot if pam is upgraded
260 # (dovecot is linked with old libpam but tries to open modules linked with new libpam)
261 if [ "$2" != 1 ]; then
262         %service -q dovecot restart
263 fi
264
265 %triggerpostun -- dovecot < 1:2.0.0
266 # upgrading dovecot < 1.1
267 echo "Configuration change default_mail_env -> mail_location"
268 %{__sed} -i -e "s/^default_mail_env/mail_location/" /etc/dovecot/dovecot.conf
269 # upgrading dovecot < 2.0
270 i=0
271 for a in /etc/dovecot/dovecot-db-example.conf \
272         /etc/dovecot/dovecot-dict-sql-example.conf \
273         /etc/dovecot/dovecot-ldap-example.conf \
274         /etc/dovecot/dovecot-sql-example.conf \
275         /etc/dovecot/dovecot.conf; do
276         if [ -f "$a" ]; then
277                 [ "$i" -eq 0 ] && echo "Read http://wiki2.dovecot.org/Upgrading/2.0"
278                 i=1
279                 echo "Trying to migrate $a config file to dovecot 2."
280                 cp -a "$a" "$a-1.2.org"
281                 :> "$a.log"
282                 chmod 600 "$a.log"
283                 # convert config and prefix stderr lines with #
284                 %{_bindir}/doveconf -n -c "$a-1.2.org" > "$a" 2> "$a.log" || :
285         fi
286 done
287 if [ "$i" -eq 1 ]; then
288         echo "Please verify contents of %{_sysconfdir}/%{name}/* files."
289 fi
290
291 %triggerpostun -- %{name} < 1:2.2.4-2
292 %systemd_trigger dovecot.service dovecot.socket
293
294 %files
295 %defattr(644,root,root,755)
296 # COPYING contains some notes, not actual LGPL text
297 %doc AUTHORS COPYING ChangeLog NEWS README TODO doc/*.txt doc/*.c*f doc/wiki/*.txt
298 %attr(755,root,root) %{_bindir}/doveadm
299 %attr(755,root,root) %{_bindir}/doveconf
300 %attr(755,root,root) %{_bindir}/dsync
301 %attr(755,root,root) %{_sbindir}/%{name}
302 %attr(751,root,root) %dir %{_sysconfdir}/%{name}
303 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/%{name}.conf
304 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.ext
305 %attr(751,root,root) %dir %{_sysconfdir}/%{name}/conf.d
306 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/conf.d/*.conf
307 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/conf.d/*.ext
308 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/%{name}
309 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.imap
310 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
311 %attr(754,root,root) /etc/rc.d/init.d/%{name}
312 %if "%{_libexecdir}" != "%{_libdir}"
313 %dir %{_libexecdir}/%{name}
314 %endif
315 %attr(755,root,root) %{_libexecdir}/%{name}/aggregator
316 %attr(755,root,root) %{_libexecdir}/%{name}/anvil
317 %attr(755,root,root) %{_libexecdir}/%{name}/auth
318 %attr(755,root,root) %{_libexecdir}/%{name}/checkpassword-reply
319 %attr(755,root,root) %{_libexecdir}/%{name}/config
320 %attr(755,root,root) %{_libexecdir}/%{name}/decode2text.sh
321 %attr(755,root,root) %{_libexecdir}/%{name}/deliver
322 %attr(755,root,root) %{_libexecdir}/%{name}/dict
323 %attr(755,root,root) %{_libexecdir}/%{name}/director
324 %attr(755,root,root) %{_libexecdir}/%{name}/dns-client
325 %attr(755,root,root) %{_libexecdir}/%{name}/doveadm-server
326 %attr(755,root,root) %{_libexecdir}/%{name}/dovecot-lda
327 %attr(755,root,root) %{_libexecdir}/%{name}/gdbhelper
328 %attr(755,root,root) %{_libexecdir}/%{name}/imap
329 %attr(755,root,root) %{_libexecdir}/%{name}/imap-hibernate
330 %attr(755,root,root) %{_libexecdir}/%{name}/imap-login
331 %attr(755,root,root) %{_libexecdir}/%{name}/imap-urlauth
332 %attr(755,root,root) %{_libexecdir}/%{name}/imap-urlauth-login
333 %attr(755,root,root) %{_libexecdir}/%{name}/imap-urlauth-worker
334 %attr(755,root,root) %{_libexecdir}/%{name}/indexer
335 %attr(755,root,root) %{_libexecdir}/%{name}/indexer-worker
336 %attr(755,root,root) %{_libexecdir}/%{name}/ipc
337 %attr(755,root,root) %{_libexecdir}/%{name}/lmtp
338 %attr(755,root,root) %{_libexecdir}/%{name}/log
339 %attr(755,root,root) %{_libexecdir}/%{name}/maildirlock
340 %attr(755,root,root) %{_libexecdir}/%{name}/old-stats
341 %attr(755,root,root) %{_libexecdir}/%{name}/pop3
342 %attr(755,root,root) %{_libexecdir}/%{name}/pop3-login
343 %attr(755,root,root) %{_libexecdir}/%{name}/quota-status
344 %attr(755,root,root) %{_libexecdir}/%{name}/rawlog
345 %attr(755,root,root) %{_libexecdir}/%{name}/replicator
346 %attr(755,root,root) %{_libexecdir}/%{name}/script
347 %attr(755,root,root) %{_libexecdir}/%{name}/script-login
348 %attr(755,root,root) %{_libexecdir}/%{name}/stats
349 %attr(755,root,root) %{_libexecdir}/%{name}/submission
350 %attr(755,root,root) %{_libexecdir}/%{name}/submission-login
351 %attr(755,root,root) %{_libexecdir}/%{name}/xml2text
352 %attr(755,root,root) %{_libdir}/%{name}/libdcrypt_openssl.so
353 %dir %{_libdir}/%{name}/plugins
354 %attr(755,root,root) %{_libdir}/%{name}/plugins/*.so
355 %dir %{_libdir}/%{name}/plugins/auth
356 %attr(755,root,root) %{_libdir}/%{name}/plugins/auth/*.so
357 %dir %{_libdir}/%{name}/plugins/dict
358 %attr(755,root,root) %{_libdir}/%{name}/plugins/dict/*.so
359 %dir %{_libdir}/%{name}/plugins/doveadm
360 %attr(755,root,root) %{_libdir}/%{name}/plugins/doveadm/*.so
361 %dir %{_libdir}/%{name}/plugins/old-stats
362 %attr(755,root,root) %{_libdir}/%{name}/plugins/old-stats/*.so
363 %{_datadir}/dovecot
364 %{systemdunitdir}/dovecot.service
365 %{systemdunitdir}/dovecot.socket
366 /usr/lib/tmpfiles.d/%{name}.conf
367 %dir /var/lib/dovecot
368 %dir /var/run/dovecot
369 %attr(750,root,dovenull) %dir /var/run/dovecot/login
370
371 %{_mandir}/man1/deliver.1*
372 %{_mandir}/man1/dove*.1*
373 %{_mandir}/man1/dsync.1*
374 %{_mandir}/man7/doveadm-search-query.7*
375
376 %files libs
377 %defattr(644,root,root,755)
378 %dir %{_libdir}/%{name}
379
380 %attr(755,root,root) %{_libdir}/%{name}/libdovecot.so.0.0.0
381 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-compression.so.0.0.0
382 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-dsync.so.0.0.0
383 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-fts.so.0.0.0
384 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-lda.so.0.0.0
385 %{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/libdovecot-ldap.so.0.0.0}
386 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-login.so.0.0.0
387 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-sql.so.0.0.0
388 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-storage.so.0.0.0
389 # Note: we are in %{_libdir}/dovecot, ldconfig does not look into this
390 # directory. This is why the following files are not %ghost
391 %attr(755,root,root) %{_libdir}/%{name}/libdovecot.so.0
392 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-compression.so.0
393 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-dsync.so.0
394 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-fts.so.0
395 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-lda.so.0
396 %{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/libdovecot-ldap.so.0}
397 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-login.so.0
398 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-sql.so.0
399 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-storage.so.0
400
401 %files devel
402 %defattr(644,root,root,755)
403 %attr(755,root,root) %{_libdir}/%{name}/libdovecot.so
404 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-compression.so
405 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-dsync.so
406 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-fts.so
407 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-lda.so
408 %{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/libdovecot-ldap.so}
409 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-login.so
410 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-sql.so
411 %attr(755,root,root) %{_libdir}/%{name}/libdovecot-storage.so
412 %{_libdir}/%{name}/%{name}-config
413 %{_includedir}/%{name}
414 %{_aclocaldir}/dovecot.m4
This page took 0.082737 seconds and 3 git commands to generate.