1 # TODO: zephyr notification?
5 %bcond_without doc # don't regenerate docs
6 %bcond_without http # build without http support
7 %bcond_without ldap # build without ldap support
8 %bcond_without lmdb # build without lmdb backend support
9 %bcond_without mysql # build without mysql backend support
10 %bcond_without perl # build without perl support
11 %bcond_without pgsql # build without postgresql backend support
12 %bcond_with sphinx # build with sphinx search engine support (broken)
13 %bcond_without xapian # build without xapian search engine support
16 Summary: High-performance mail store with IMAP and POP3
17 Summary(pl.UTF-8): Wysoko wydajny serwer IMAP i POP3
18 Summary(pt_BR.UTF-8): Um servidor de mail de alto desempenho que suporta IMAP e POP3
23 Group: Networking/Daemons/POP3
24 Source0: https://github.com/cyrusimap/cyrus-imapd/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
25 # Source0-md5: f93394d3bf981d558a8d7e2cb989b568
27 Source2: cyrus-procmailrc
28 Source3: cyrus-deliver-wrapper.c
29 Source4: cyrus-user-procmailrc.template
30 Source5: %{name}-procmail+cyrus.mc
31 Source6: %{name}.logrotate
34 Source10: %{name}-pop.pamd
35 Source11: %{name}.init
37 Source13: cyrus-sync.init
38 Patch0: %{name}-et.patch
40 Patch2: %{name}-clamav-0.101.patch
41 Patch3: %{name}-sphinx3.patch
42 Patch4: openssl3.patch
43 URL: http://www.cyrusimap.org/
44 BuildRequires: autoconf >= 2.63
45 BuildRequires: automake
46 BuildRequires: cyrus-sasl-devel >= 2.1.7
47 BuildRequires: db-devel >= 4.1.25
49 BuildRequires: jansson-devel >= 2.3
50 %{?with_http:BuildRequires: libbrotli-devel}
51 BuildRequires: libcap-devel
52 BuildRequires: libcom_err-devel >= 1.21
53 %{?with_http:BuildRequires: libical-devel >= 2.0}
54 BuildRequires: libicu-devel
55 BuildRequires: libtool >= 2:2.2.6
56 %{?with_http:BuildRequires: libxml2-devel >= 1:2.7.3}
57 %{?with_lmdb:BuildRequires: lmdb-devel}
58 %{?with_mysql:BuildRequires: mysql-devel}
59 BuildRequires: net-snmp-devel
60 %{?with_http:BuildRequires: nghttp2-devel >= 1.5}
61 %{?with_ldap:BuildRequires: openldap-devel}
62 BuildRequires: openssl-devel >= 0.9.7d
63 BuildRequires: patchutils
64 %{?with_doc:BuildRequires: perl-Pod-POM-View-Restructured}
65 %{?with_perl:BuildRequires: perl-devel >= 1:5.8.0}
66 %{?with_pgsql:BuildRequires: postgresql-devel}
67 %{?with_perl:BuildRequires: rpm-perlprov}
68 BuildRequires: rpmbuild(macros) >= 1.527
69 %{?with_http:BuildRequires: shapelib-devel >= 1.4.1}
70 %{?with_http:BuildRequires: sqlite3-devel >= 3}
71 %{?with_doc:BuildRequires: sphinx-pdg-3}
72 %{?with_xapian:BuildRequires: xapian-core-devel}
73 BuildRequires: zlib-devel
74 Requires(post,preun): /sbin/chkconfig
75 Requires(postun): /usr/sbin/userdel
76 Requires(pre): /bin/id
77 Requires(pre): /usr/sbin/useradd
78 Requires: %{name}-libs = %{version}-%{release}
79 Requires: rc-scripts >= 0.4.0.18
80 # needed by scripts from %{_bindir}
81 Requires: pam >= 0.79.0
82 %{?with_perl:Requires: perl-%{name} = %{version}-%{release}}
86 Obsoletes: cyrus-imapd-doc < 3
91 Conflicts: courier-imap
92 Conflicts: courier-imap-common
93 Conflicts: courier-imap-pop3
95 Conflicts: imap-common
100 Conflicts: solid-pop3d
102 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
104 %define pkglibexecdir %{_libexecdir}/cyrus
106 %define skip_post_check_so libcyrus(|_min|_imap|_sieve).so.*
109 The Cyrus IMAP server is a scalable enterprise mail system designed
110 for use from small to large enterprise environments using
111 standards-based technologies.
113 A full Cyrus IMAP implementation allows a seamless mail and bulletin
114 board environment to be set up across multiple servers. It differs
115 from other IMAP server implementations in that it is run on "sealed"
116 servers, where users are not normally permitted to log in. The mailbox
117 database is stored in parts of the filesystem that are private to the
118 Cyrus IMAP system. All user access to mail is through software using
119 the IMAP, POP3, or KPOP protocols.
121 %description -l pl.UTF-8
122 Serwer Cyrus IMAP jest skalowalnym systemem e-mail dla
123 przedsiębiorstwa, zaprojektowanym dla małych i dużych firm i
124 wykorzystującym oparte na standardach technologie.
126 Pełna implementacja Cyrus IMAP pozwala na bezproblemowe ustawienie
127 środowiska poczty i elektronicznej tablicy ogłoszeniowej na kilku
128 serwerach. Tym się różni od innych implementacji serwerów IMAP, że
129 jest uruchamiany na "opieczętowanych" serwerach, na które w normalnych
130 warunkach użytkownicy nie mogą się zalogować. Baza danych skrzynek
131 pocztowych jest przechowywana w tych częściach systemu plików, które
132 są dostępne jedynie dla systemu IMAP Cyrus. Wszelki dostęp do poczty
133 ma miejsce poprzez oprogramowanie wykorzystujące protokoły IMAP, POP3
136 %description -l pt_BR.UTF-8
137 O servidor IMAP Cyrus é um sistema de mail corporativo escalável
138 projetado para uso por pequenos a grandes ambientes corporativos
139 usando tecnologias baseadas em padrões abertos.
141 Uma implementação completa do Cyrus permite se configurar um ambiente
142 transparente de mail e bulletin board entre múltiplos servidores. Ele
143 difere de outros servidores IMAP por rodar em servidores "selados",
144 onde usuários não possuem normalmente a permissão de log in. O banco
145 de dados de caixas de mail é armazenado em partes do sistema de
146 arquivos que são privativos do sistema Cyrus. Todo o acesso de
147 usuários aos mails se dá através de software usando os protocolos
151 Summary: Shared cyrus-imapd libraries
152 Summary(pl.UTF-8): Współdzielone biblioteki cyrus-imapd
154 Requires: cyrus-sasl-libs >= 2.1.7
155 Requires: jansson >= 2.3
158 Shared cyrus-imapd libraries.
160 %description libs -l pl.UTF-8
161 Współdzielone biblioteki cyrus-imapd.
164 Summary: Header files for developing with cyrus-imapd libraries
165 Summary(pl.UTF-8): Pliki nagłówkowe do programowania z użyciem bibliotek cyrus-imapd
166 Group: Development/Libraries
167 Requires: %{name}-libs = %{version}-%{release}
168 Requires: cyrus-sasl-devel >= 2.1.7
169 Requires: jansson-devel >= 2.3
172 This package provides the necessary header files files to allow you to
173 develop with cyrus-imapd libraries.
175 %description devel -l pl.UTF-8
176 Ten pakiet zawiera pliki nagłówkowe niezbędne do tworzenia
177 oprogramowania z wykorzystaniem bibliotek cyrus-imapd.
180 Summary: Static cyrus-imapd libraries
181 Summary(pl.UTF-8): Biblioteki statyczne cyrus-imapd
182 Group: Development/Libraries
183 Requires: %{name}-devel = %{version}-%{release}
186 Static cyrus-imapd libraries
188 %description static -l pl.UTF-8
189 Biblioteki statyczne cyrus-imapd
191 %package -n perl-%{name}
192 Summary: Perl interface to cyrus-imapd library
193 Summary(pl.UTF-8): Perlowy interfejs do biblioteki cyrus-imapd
194 Group: Development/Languages/Perl
195 Requires: %{name}-libs = %{version}-%{release}
197 %description -n perl-%{name}
198 Perl interface to cyrus-imapd library.
200 %description -n perl-%{name} -l pl.UTF-8
201 Perlowy interfejs do biblioteki cyrus-imapd.
211 cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
213 find docsrc/ -name '*.pyc' -print0 | xargs --null %{__rm}
217 %{__aclocal} -I cmulocal
222 --libexecdir=%{pkglibexecdir} \
223 --enable-autocreate \
226 %{__enable_disable http} \
230 --enable-replication \
231 %{__enable_disable sphinx} \
233 %{__enable_disable xapian} \
234 --with-com_err=/usr \
235 %{__with_without ldap} \
238 %{__with_without lmdb} \
239 %{__with_without mysql} \
240 %{__with_without perl perl %{__perl}} \
241 %{__with_without pgsql} \
242 %{__with_without doc sphinx-build}
248 %{__cc} %{rpmcflags} \
249 -DLIBEXECDIR="\"%{pkglibexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
252 rm -rf $RPM_BUILD_ROOT
254 $RPM_BUILD_ROOT{%{_sbindir},%{pkglibexecdir},%{_mandir}} \
255 $RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,sysconfig/rc-inetd} \
256 $RPM_BUILD_ROOT/var/spool/imap/stage. \
257 $RPM_BUILD_ROOT/var/lib/imap/{user,quota,proc,log,msg,deliverdb/db,sieve,db,socket} \
258 $RPM_BUILD_ROOT/etc/{security,pam.d,rc.d/init.d}
260 touch $RPM_BUILD_ROOT/var/lib/imap/mailboxes \
261 $RPM_BUILD_ROOT/var/lib/imap/faillog \
262 $RPM_BUILD_ROOT/etc/security/blacklist.imap \
263 $RPM_BUILD_ROOT/etc/security/blacklist.pop3
266 DESTDIR=$RPM_BUILD_ROOT \
267 CYRUS_USER=%(id -u) \
268 CYRUS_GROUP=%(id -g) \
271 # ensure +x bit for rpm autodeps
272 chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so*
274 install -p deliver-wrapper $RPM_BUILD_ROOT%{pkglibexecdir}/deliver-wrapper
276 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
277 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/imapd.conf
278 cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/pam.d/imap
279 cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/pop
280 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
281 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
282 cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cyrus.conf
284 # We rename some utils, so we need to sort out the manpages
285 for i in master reconstruct quota deliver; do
286 mv $RPM_BUILD_ROOT%{_mandir}/man8/{,cyr}$i.8
289 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man8/idled.8
291 touch $RPM_BUILD_ROOT/etc/security/blacklist.{imap,pop3}
294 for i in $(%{__perl} -le 'print for "a".."z"'); do
295 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/user/$i
296 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/quota/$i
297 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/sieve/$i
298 install -d $RPM_BUILD_ROOT%{_var}/spool/imap/$i
302 find $RPM_BUILD_ROOT%{perl_vendorarch} -name .packlist | xargs rm -v
303 %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
307 rm -rf $RPM_BUILD_ROOT
310 %useradd -u 76 -d /var/spool/imap -s /bin/false -c "Cyrus User" -g mail cyrus
313 touch /var/lib/imap/faillog
314 chown cyrus:mail /var/lib/imap/faillog
315 chmod 640 /var/lib/imap/faillog
317 chattr +S . user quota user/* quota/* 2>/dev/null ||:
318 chattr +S /var/spool/imap /var/spool/imap/* 2>/dev/null ||:
320 /sbin/chkconfig --add cyrus-imapd
321 %service cyrus-imapd restart "cyrus imap daemon"
322 %service cyrus-sync restart "cyrus replication service"
325 if [ "$1" = "0" ]; then
326 %service cyrus-imapd stop
327 %service cyrus-sync stop
328 /sbin/chkconfig --del cyrus-imapd
329 /sbin/chkconfig --del cyrus-sync
333 if [ "$1" = "0" ]; then
337 %post libs -p /sbin/ldconfig
338 %postun libs -p /sbin/ldconfig
341 %defattr(644,root,root,755)
342 %doc cyrus-README cyrus-procmailrc cyrus-user-procmailrc.template
343 %doc cyrus-imapd-procmail+cyrus.mc COPYING tools
344 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
345 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cyrus-imapd
346 %attr(440,cyrus,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
347 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.*
348 %attr(754,root,root) /etc/rc.d/init.d/cyrus-imapd
349 %attr(754,root,root) /etc/rc.d/init.d/cyrus-sync
350 %attr(640,cyrus,mail) %ghost /var/lib/imap/faillog
351 %attr(755,root,root) %{_bindir}/cyradm
352 %attr(755,root,root) %{_bindir}/httptest
353 %attr(755,root,root) %{_bindir}/imtest
354 %attr(755,root,root) %{_bindir}/installsieve
355 %attr(755,root,root) %{_bindir}/lmtptest
356 %attr(755,root,root) %{_bindir}/mupdatetest
357 %attr(755,root,root) %{_bindir}/nntptest
358 %attr(755,root,root) %{_bindir}/pop3test
359 %attr(755,root,root) %{_bindir}/sieveshell
360 %attr(755,root,root) %{_bindir}/sivtest
361 %attr(755,root,root) %{_bindir}/smtptest
362 %attr(755,root,root) %{_bindir}/synctest
364 %dir %{pkglibexecdir}
365 %attr(2755,cyrus,mail) %{pkglibexecdir}/deliver-wrapper
366 %attr(755,root,root) %{pkglibexecdir}/backupd
367 %attr(755,root,root) %{pkglibexecdir}/calalarmd
368 %attr(755,root,root) %{pkglibexecdir}/fud
369 %{?with_http:%attr(755,root,root) %{pkglibexecdir}/httpd}
370 %attr(755,root,root) %{pkglibexecdir}/idled
371 %attr(755,root,root) %{pkglibexecdir}/imapd
372 %attr(755,root,root) %{pkglibexecdir}/lmtpd
373 %attr(755,root,root) %{pkglibexecdir}/lmtpproxyd
374 %attr(755,root,root) %{pkglibexecdir}/master
375 %attr(755,root,root) %{pkglibexecdir}/mupdate
376 %attr(755,root,root) %{pkglibexecdir}/nntpd
377 %attr(755,root,root) %{pkglibexecdir}/notifyd
378 %attr(755,root,root) %{pkglibexecdir}/ptloader
379 %attr(755,root,root) %{pkglibexecdir}/pop3d
380 %attr(755,root,root) %{pkglibexecdir}/pop3proxyd
381 %attr(755,root,root) %{pkglibexecdir}/proxyd
382 %attr(755,root,root) %{pkglibexecdir}/smmapd
383 %attr(755,root,root) %{pkglibexecdir}/sync_server
384 %attr(755,root,root) %{pkglibexecdir}/timsieved
385 %attr(755,root,root) %{_sbindir}/arbitron
386 %attr(755,root,root) %{_sbindir}/chk_cyrus
387 %attr(755,root,root) %{_sbindir}/ctl_backups
388 %attr(755,root,root) %{_sbindir}/ctl_conversationsdb
389 %attr(755,root,root) %{_sbindir}/ctl_cyrusdb
390 %attr(755,root,root) %{_sbindir}/ctl_deliver
391 %attr(755,root,root) %{_sbindir}/ctl_mboxlist
392 %{?with_http:%attr(755,root,root) %{_sbindir}/ctl_zoneinfo}
393 %attr(755,root,root) %{_sbindir}/cvt_cyrusdb
394 %attr(755,root,root) %{_sbindir}/cvt_xlist_specialuse
395 %attr(755,root,root) %{_sbindir}/cyr_buildinfo
396 %attr(755,root,root) %{_sbindir}/cyr_dbtool
397 %attr(755,root,root) %{_sbindir}/cyr_deny
398 %attr(755,root,root) %{_sbindir}/cyr_df
399 %attr(755,root,root) %{_sbindir}/cyrdump
400 %attr(755,root,root) %{_sbindir}/cyr_backup
401 %attr(755,root,root) %{_sbindir}/cyr_expire
402 %attr(755,root,root) %{_sbindir}/cyr_info
403 %attr(755,root,root) %{_sbindir}/cyr_sequence
404 %attr(755,root,root) %{_sbindir}/cyr_synclog
405 %attr(755,root,root) %{_sbindir}/cyr_userseen
406 %attr(755,root,root) %{_sbindir}/cyr_virusscan
407 %{?with_http:%attr(755,root,root) %{_sbindir}/dav_reconstruct}
408 %attr(755,root,root) %{_sbindir}/deliver
409 %attr(755,root,root) %{_sbindir}/fetchnews
410 %attr(755,root,root) %{_sbindir}/ipurge
411 %attr(755,root,root) %{_sbindir}/mbexamine
412 %attr(755,root,root) %{_sbindir}/mbpath
413 %attr(755,root,root) %{_sbindir}/mbtool
414 %attr(755,root,root) %{_sbindir}/quota
415 %attr(755,root,root) %{_sbindir}/ptdump
416 %attr(755,root,root) %{_sbindir}/ptexpire
417 %attr(755,root,root) %{_sbindir}/reconstruct
418 %attr(755,root,root) %{_sbindir}/restore
419 %attr(755,root,root) %{_sbindir}/sievec
420 %attr(755,root,root) %{_sbindir}/sieved
421 %attr(755,root,root) %{_sbindir}/squatter
422 %attr(755,root,root) %{_sbindir}/sync_client
423 %attr(755,root,root) %{_sbindir}/sync_reset
424 %attr(755,root,root) %{_sbindir}/tls_prune
425 %attr(755,root,root) %{_sbindir}/unexpunge
427 %attr(750,cyrus,mail) /var/spool/imap
428 %attr(750,cyrus,mail) %dir /var/lib/imap
429 %attr(750,cyrus,mail) %dir /var/lib/imap/deliverdb
430 %attr(750,cyrus,mail) /var/lib/imap/deliverdb/db
431 %attr(750,cyrus,mail) /var/lib/imap/quota
432 %attr(750,cyrus,mail) /var/lib/imap/user
433 %attr(750,cyrus,mail) /var/lib/imap/sieve
434 %attr(750,cyrus,mail) /var/lib/imap/log
435 %attr(750,cyrus,mail) /var/lib/imap/msg
436 %attr(750,cyrus,mail) /var/lib/imap/proc
437 %attr(750,cyrus,mail) /var/lib/imap/db
438 %attr(750,cyrus,mail) /var/lib/imap/socket
439 %attr(750,cyrus,mail) %config(noreplace) %verify(not md5 mtime size) /var/lib/imap/mailboxes
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_libdir}/libcyrus.so.0
446 %attr(755,root,root) %ghost %{_libdir}/libcyrus.so.*.*
447 %attr(755,root,root) %{_libdir}/libcyrus_min.so.0
448 %attr(755,root,root) %ghost %{_libdir}/libcyrus_min.so.*.*
449 %attr(755,root,root) %{_libdir}/libcyrus_imap.so.0
450 %attr(755,root,root) %ghost %{_libdir}/libcyrus_imap.so.*.*
451 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so.0
452 %attr(755,root,root) %ghost %{_libdir}/libcyrus_sieve.so.*.*
455 %defattr(644,root,root,755)
457 %attr(755,root,root) %{_libdir}/libcyrus.so
458 %attr(755,root,root) %{_libdir}/libcyrus_min.so
459 %attr(755,root,root) %{_libdir}/libcyrus_imap.so
460 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so
461 %{_libdir}/libcyrus.la
462 %{_libdir}/libcyrus_min.la
463 %{_libdir}/libcyrus_imap.la
464 %{_libdir}/libcyrus_sieve.la
465 %{_pkgconfigdir}/libcyrus.pc
466 %{_pkgconfigdir}/libcyrus_imap.pc
467 %{_pkgconfigdir}/libcyrus_min.pc
468 %{_pkgconfigdir}/libcyrus_sieve.pc
471 %defattr(644,root,root,755)
472 %{_libdir}/libcyrus.a
473 %{_libdir}/libcyrus_imap.a
474 %{_libdir}/libcyrus_min.a
475 %{_libdir}/libcyrus_sieve.a
478 %files -n perl-%{name}
479 %defattr(644,root,root,755)
480 %{perl_vendorarch}/Cyrus
481 %dir %{perl_vendorarch}/auto/Cyrus
482 %dir %{perl_vendorarch}/auto/Cyrus/IMAP
483 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/IMAP/IMAP.so
484 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE
485 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
486 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
487 %dir %{perl_vendorlib}/Cyrus
488 %dir %{perl_vendorlib}/Cyrus/Annotator
489 %{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
490 %{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
491 %{perl_vendorlib}/Cyrus/Annotator/Message.pm