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://www.cyrusimap.org/releases/%{name}-%{version}.tar.gz
25 # Source0-md5: 8452f81e3c30fa9af6f456e143e98576
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}-icu.patch
42 Patch4: %{name}-libcap.patch
43 Patch5: %{name}-gcc10.patch
44 Patch6: %{name}-sphinx2.patch
45 URL: http://www.cyrusimap.org/
46 BuildRequires: autoconf >= 2.63
47 BuildRequires: automake
48 BuildRequires: cyrus-sasl-devel >= 2.1.7
49 BuildRequires: db-devel >= 4.1.25
51 BuildRequires: jansson-devel >= 2.3
52 %{?with_http:BuildRequires: libbrotli-devel}
53 BuildRequires: libcap-devel
54 BuildRequires: libcom_err-devel >= 1.21
55 %{?with_http:BuildRequires: libical-devel >= 2.0}
56 BuildRequires: libicu-devel
57 BuildRequires: libtool >= 2:2.2.6
58 %{?with_http:BuildRequires: libxml2-devel >= 1:2.7.3}
59 %{?with_lmdb:BuildRequires: lmdb-devel}
60 %{?with_mysql:BuildRequires: mysql-devel}
61 BuildRequires: net-snmp-devel
62 %{?with_http:BuildRequires: nghttp2-devel >= 1.5}
63 %{?with_ldap:BuildRequires: openldap-devel}
64 BuildRequires: openssl-devel >= 0.9.7d
65 BuildRequires: patchutils
66 %{?with_doc:BuildRequires: perl-Pod-POM-View-Restructured}
67 %{?with_perl:BuildRequires: perl-devel >= 1:5.8.0}
68 %{?with_pgsql:BuildRequires: postgresql-devel}
69 %{?with_perl:BuildRequires: rpm-perlprov}
70 BuildRequires: rpmbuild(macros) >= 1.527
71 %{?with_http:BuildRequires: shapelib-devel >= 1.4.1}
72 %{?with_http:BuildRequires: sqlite3-devel >= 3}
73 %{?with_doc:BuildRequires: sphinx-pdg-3}
74 %{?with_xapian:BuildRequires: xapian-core-devel}
75 BuildRequires: zlib-devel
76 Requires(post,preun): /sbin/chkconfig
77 Requires(postun): /usr/sbin/userdel
78 Requires(pre): /bin/id
79 Requires(pre): /usr/sbin/useradd
80 Requires: %{name}-libs = %{version}-%{release}
81 Requires: rc-scripts >= 0.4.0.18
82 # needed by scripts from %{_bindir}
83 Requires: pam >= 0.79.0
84 %{?with_perl:Requires: perl-%{name} = %{version}-%{release}}
88 Obsoletes: cyrus-imapd-doc < 3
93 Conflicts: courier-imap
94 Conflicts: courier-imap-common
95 Conflicts: courier-imap-pop3
97 Conflicts: imap-common
102 Conflicts: solid-pop3d
104 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
106 %define pkglibexecdir %{_libexecdir}/cyrus
108 %define skip_post_check_so libcyrus(|_min|_imap|_sieve).so.*
111 The Cyrus IMAP server is a scalable enterprise mail system designed
112 for use from small to large enterprise environments using
113 standards-based technologies.
115 A full Cyrus IMAP implementation allows a seamless mail and bulletin
116 board environment to be set up across multiple servers. It differs
117 from other IMAP server implementations in that it is run on "sealed"
118 servers, where users are not normally permitted to log in. The mailbox
119 database is stored in parts of the filesystem that are private to the
120 Cyrus IMAP system. All user access to mail is through software using
121 the IMAP, POP3, or KPOP protocols.
123 %description -l pl.UTF-8
124 Serwer Cyrus IMAP jest skalowalnym systemem e-mail dla
125 przedsiębiorstwa, zaprojektowanym dla małych i dużych firm i
126 wykorzystującym oparte na standardach technologie.
128 Pełna implementacja Cyrus IMAP pozwala na bezproblemowe ustawienie
129 środowiska poczty i elektronicznej tablicy ogłoszeniowej na kilku
130 serwerach. Tym się różni od innych implementacji serwerów IMAP, że
131 jest uruchamiany na "opieczętowanych" serwerach, na które w normalnych
132 warunkach użytkownicy nie mogą się zalogować. Baza danych skrzynek
133 pocztowych jest przechowywana w tych częściach systemu plików, które
134 są dostępne jedynie dla systemu IMAP Cyrus. Wszelki dostęp do poczty
135 ma miejsce poprzez oprogramowanie wykorzystujące protokoły IMAP, POP3
138 %description -l pt_BR.UTF-8
139 O servidor IMAP Cyrus é um sistema de mail corporativo escalável
140 projetado para uso por pequenos a grandes ambientes corporativos
141 usando tecnologias baseadas em padrões abertos.
143 Uma implementação completa do Cyrus permite se configurar um ambiente
144 transparente de mail e bulletin board entre múltiplos servidores. Ele
145 difere de outros servidores IMAP por rodar em servidores "selados",
146 onde usuários não possuem normalmente a permissão de log in. O banco
147 de dados de caixas de mail é armazenado em partes do sistema de
148 arquivos que são privativos do sistema Cyrus. Todo o acesso de
149 usuários aos mails se dá através de software usando os protocolos
153 Summary: Shared cyrus-imapd libraries
154 Summary(pl.UTF-8): Współdzielone biblioteki cyrus-imapd
156 Requires: cyrus-sasl-libs >= 2.1.7
157 Requires: jansson >= 2.3
160 Shared cyrus-imapd libraries.
162 %description libs -l pl.UTF-8
163 Współdzielone biblioteki cyrus-imapd.
166 Summary: Header files for developing with cyrus-imapd libraries
167 Summary(pl.UTF-8): Pliki nagłówkowe do programowania z użyciem bibliotek cyrus-imapd
168 Group: Development/Libraries
169 Requires: %{name}-libs = %{version}-%{release}
170 Requires: cyrus-sasl-devel >= 2.1.7
171 Requires: jansson-devel >= 2.3
174 This package provides the necessary header files files to allow you to
175 develop with cyrus-imapd libraries.
177 %description devel -l pl.UTF-8
178 Ten pakiet zawiera pliki nagłówkowe niezbędne do tworzenia
179 oprogramowania z wykorzystaniem bibliotek cyrus-imapd.
182 Summary: Static cyrus-imapd libraries
183 Summary(pl.UTF-8): Biblioteki statyczne cyrus-imapd
184 Group: Development/Libraries
185 Requires: %{name}-devel = %{version}-%{release}
188 Static cyrus-imapd libraries
190 %description static -l pl.UTF-8
191 Biblioteki statyczne cyrus-imapd
193 %package -n perl-%{name}
194 Summary: Perl interface to cyrus-imapd library
195 Summary(pl.UTF-8): Perlowy interfejs do biblioteki cyrus-imapd
196 Group: Development/Languages/Perl
197 Requires: %{name}-libs = %{version}-%{release}
199 %description -n perl-%{name}
200 Perl interface to cyrus-imapd library.
202 %description -n perl-%{name} -l pl.UTF-8
203 Perlowy interfejs do biblioteki cyrus-imapd.
215 cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
219 %{__aclocal} -I cmulocal
224 --libexecdir=%{pkglibexecdir} \
225 --enable-autocreate \
228 %{__enable_disable http} \
232 --enable-replication \
233 %{__enable_disable sphinx} \
235 %{__enable_disable xapian} \
236 --with-com_err=/usr \
237 %{__with_without ldap} \
240 %{__with_without lmdb} \
241 %{__with_without mysql} \
242 %{__with_without perl perl %{__perl}} \
243 %{__with_without pgsql} \
244 %{__with_without doc sphinx-build}
250 %{__cc} %{rpmcflags} \
251 -DLIBEXECDIR="\"%{pkglibexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
254 rm -rf $RPM_BUILD_ROOT
256 $RPM_BUILD_ROOT{%{_sbindir},%{pkglibexecdir},%{_mandir}} \
257 $RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,sysconfig/rc-inetd} \
258 $RPM_BUILD_ROOT/var/spool/imap/stage. \
259 $RPM_BUILD_ROOT/var/lib/imap/{user,quota,proc,log,msg,deliverdb/db,sieve,db,socket} \
260 $RPM_BUILD_ROOT/etc/{security,pam.d,rc.d/init.d}
262 touch $RPM_BUILD_ROOT/var/lib/imap/mailboxes \
263 $RPM_BUILD_ROOT/var/lib/imap/faillog \
264 $RPM_BUILD_ROOT/etc/security/blacklist.imap \
265 $RPM_BUILD_ROOT/etc/security/blacklist.pop3
268 DESTDIR=$RPM_BUILD_ROOT \
269 CYRUS_USER=%(id -u) \
270 CYRUS_GROUP=%(id -g) \
273 # ensure +x bit for rpm autodeps
274 chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so*
276 install -p deliver-wrapper $RPM_BUILD_ROOT%{pkglibexecdir}/deliver-wrapper
278 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
279 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/imapd.conf
280 cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/pam.d/imap
281 cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/pop
282 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
283 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
284 cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cyrus.conf
286 # We rename some utils, so we need to sort out the manpages
287 for i in master reconstruct quota deliver; do
288 mv $RPM_BUILD_ROOT%{_mandir}/man8/{,cyr}$i.8
291 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man8/idled.8
293 touch $RPM_BUILD_ROOT/etc/security/blacklist.{imap,pop3}
296 for i in $(%{__perl} -le 'print for "a".."z"'); do
297 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/user/$i
298 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/quota/$i
299 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/sieve/$i
300 install -d $RPM_BUILD_ROOT%{_var}/spool/imap/$i
304 find $RPM_BUILD_ROOT%{perl_vendorarch} -name .packlist | xargs rm -v
305 %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
309 rm -rf $RPM_BUILD_ROOT
312 %useradd -u 76 -d /var/spool/imap -s /bin/false -c "Cyrus User" -g mail cyrus
315 touch /var/lib/imap/faillog
316 chown cyrus:mail /var/lib/imap/faillog
317 chmod 640 /var/lib/imap/faillog
319 chattr +S . user quota user/* quota/* 2>/dev/null ||:
320 chattr +S /var/spool/imap /var/spool/imap/* 2>/dev/null ||:
322 /sbin/chkconfig --add cyrus-imapd
323 %service cyrus-imapd restart "cyrus imap daemon"
324 %service cyrus-sync restart "cyrus replication service"
327 if [ "$1" = "0" ]; then
328 %service cyrus-imapd stop
329 %service cyrus-sync stop
330 /sbin/chkconfig --del cyrus-imapd
331 /sbin/chkconfig --del cyrus-sync
335 if [ "$1" = "0" ]; then
339 %post libs -p /sbin/ldconfig
340 %postun libs -p /sbin/ldconfig
343 %defattr(644,root,root,755)
344 %doc cyrus-README cyrus-procmailrc cyrus-user-procmailrc.template
345 %doc cyrus-imapd-procmail+cyrus.mc COPYING tools
346 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
347 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cyrus-imapd
348 %attr(440,cyrus,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
349 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.*
350 %attr(754,root,root) /etc/rc.d/init.d/cyrus-imapd
351 %attr(754,root,root) /etc/rc.d/init.d/cyrus-sync
352 %attr(640,cyrus,mail) %ghost /var/lib/imap/faillog
353 %attr(755,root,root) %{_bindir}/cyradm
354 %attr(755,root,root) %{_bindir}/httptest
355 %attr(755,root,root) %{_bindir}/imtest
356 %attr(755,root,root) %{_bindir}/installsieve
357 %attr(755,root,root) %{_bindir}/lmtptest
358 %attr(755,root,root) %{_bindir}/mupdatetest
359 %attr(755,root,root) %{_bindir}/nntptest
360 %attr(755,root,root) %{_bindir}/pop3test
361 %attr(755,root,root) %{_bindir}/sieveshell
362 %attr(755,root,root) %{_bindir}/sivtest
363 %attr(755,root,root) %{_bindir}/smtptest
364 %attr(755,root,root) %{_bindir}/synctest
366 %dir %{pkglibexecdir}
367 %attr(2755,cyrus,mail) %{pkglibexecdir}/deliver-wrapper
368 %attr(755,root,root) %{pkglibexecdir}/backupd
369 %attr(755,root,root) %{pkglibexecdir}/calalarmd
370 %attr(755,root,root) %{pkglibexecdir}/fud
371 %{?with_http:%attr(755,root,root) %{pkglibexecdir}/httpd}
372 %attr(755,root,root) %{pkglibexecdir}/idled
373 %attr(755,root,root) %{pkglibexecdir}/imapd
374 %attr(755,root,root) %{pkglibexecdir}/lmtpd
375 %attr(755,root,root) %{pkglibexecdir}/lmtpproxyd
376 %attr(755,root,root) %{pkglibexecdir}/master
377 %attr(755,root,root) %{pkglibexecdir}/mupdate
378 %attr(755,root,root) %{pkglibexecdir}/nntpd
379 %attr(755,root,root) %{pkglibexecdir}/notifyd
380 %attr(755,root,root) %{pkglibexecdir}/ptloader
381 %attr(755,root,root) %{pkglibexecdir}/pop3d
382 %attr(755,root,root) %{pkglibexecdir}/pop3proxyd
383 %attr(755,root,root) %{pkglibexecdir}/proxyd
384 %attr(755,root,root) %{pkglibexecdir}/smmapd
385 %attr(755,root,root) %{pkglibexecdir}/sync_server
386 %attr(755,root,root) %{pkglibexecdir}/timsieved
387 %attr(755,root,root) %{_sbindir}/arbitron
388 %attr(755,root,root) %{_sbindir}/chk_cyrus
389 %attr(755,root,root) %{_sbindir}/ctl_backups
390 %attr(755,root,root) %{_sbindir}/ctl_conversationsdb
391 %attr(755,root,root) %{_sbindir}/ctl_cyrusdb
392 %attr(755,root,root) %{_sbindir}/ctl_deliver
393 %attr(755,root,root) %{_sbindir}/ctl_mboxlist
394 %{?with_http:%attr(755,root,root) %{_sbindir}/ctl_zoneinfo}
395 %attr(755,root,root) %{_sbindir}/cvt_cyrusdb
396 %attr(755,root,root) %{_sbindir}/cvt_xlist_specialuse
397 %attr(755,root,root) %{_sbindir}/cyr_buildinfo
398 %attr(755,root,root) %{_sbindir}/cyr_dbtool
399 %attr(755,root,root) %{_sbindir}/cyr_deny
400 %attr(755,root,root) %{_sbindir}/cyr_df
401 %attr(755,root,root) %{_sbindir}/cyrdump
402 %attr(755,root,root) %{_sbindir}/cyr_backup
403 %attr(755,root,root) %{_sbindir}/cyr_expire
404 %attr(755,root,root) %{_sbindir}/cyr_info
405 %attr(755,root,root) %{_sbindir}/cyr_sequence
406 %attr(755,root,root) %{_sbindir}/cyr_synclog
407 %attr(755,root,root) %{_sbindir}/cyr_userseen
408 %attr(755,root,root) %{_sbindir}/cyr_virusscan
409 %{?with_http:%attr(755,root,root) %{_sbindir}/dav_reconstruct}
410 %attr(755,root,root) %{_sbindir}/deliver
411 %attr(755,root,root) %{_sbindir}/fetchnews
412 %attr(755,root,root) %{_sbindir}/ipurge
413 %attr(755,root,root) %{_sbindir}/mbexamine
414 %attr(755,root,root) %{_sbindir}/mbpath
415 %attr(755,root,root) %{_sbindir}/mbtool
416 %attr(755,root,root) %{_sbindir}/quota
417 %attr(755,root,root) %{_sbindir}/ptdump
418 %attr(755,root,root) %{_sbindir}/ptexpire
419 %attr(755,root,root) %{_sbindir}/reconstruct
420 %attr(755,root,root) %{_sbindir}/restore
421 %attr(755,root,root) %{_sbindir}/sievec
422 %attr(755,root,root) %{_sbindir}/sieved
423 %attr(755,root,root) %{_sbindir}/squatter
424 %attr(755,root,root) %{_sbindir}/sync_client
425 %attr(755,root,root) %{_sbindir}/sync_reset
426 %attr(755,root,root) %{_sbindir}/tls_prune
427 %attr(755,root,root) %{_sbindir}/unexpunge
429 %attr(750,cyrus,mail) /var/spool/imap
430 %attr(750,cyrus,mail) %dir /var/lib/imap
431 %attr(750,cyrus,mail) %dir /var/lib/imap/deliverdb
432 %attr(750,cyrus,mail) /var/lib/imap/deliverdb/db
433 %attr(750,cyrus,mail) /var/lib/imap/quota
434 %attr(750,cyrus,mail) /var/lib/imap/user
435 %attr(750,cyrus,mail) /var/lib/imap/sieve
436 %attr(750,cyrus,mail) /var/lib/imap/log
437 %attr(750,cyrus,mail) /var/lib/imap/msg
438 %attr(750,cyrus,mail) /var/lib/imap/proc
439 %attr(750,cyrus,mail) /var/lib/imap/db
440 %attr(750,cyrus,mail) /var/lib/imap/socket
441 %attr(750,cyrus,mail) %config(noreplace) %verify(not md5 mtime size) /var/lib/imap/mailboxes
446 %defattr(644,root,root,755)
447 %attr(755,root,root) %{_libdir}/libcyrus.so.0
448 %attr(755,root,root) %ghost %{_libdir}/libcyrus.so.*.*
449 %attr(755,root,root) %{_libdir}/libcyrus_min.so.0
450 %attr(755,root,root) %ghost %{_libdir}/libcyrus_min.so.*.*
451 %attr(755,root,root) %{_libdir}/libcyrus_imap.so.0
452 %attr(755,root,root) %ghost %{_libdir}/libcyrus_imap.so.*.*
453 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so.0
454 %attr(755,root,root) %ghost %{_libdir}/libcyrus_sieve.so.*.*
457 %defattr(644,root,root,755)
459 %attr(755,root,root) %{_libdir}/libcyrus.so
460 %attr(755,root,root) %{_libdir}/libcyrus_min.so
461 %attr(755,root,root) %{_libdir}/libcyrus_imap.so
462 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so
463 %{_libdir}/libcyrus.la
464 %{_libdir}/libcyrus_min.la
465 %{_libdir}/libcyrus_imap.la
466 %{_libdir}/libcyrus_sieve.la
467 %{_pkgconfigdir}/libcyrus.pc
468 %{_pkgconfigdir}/libcyrus_min.pc
469 %{_pkgconfigdir}/libcyrus_sieve.pc
472 %defattr(644,root,root,755)
473 %{_libdir}/libcyrus.a
474 %{_libdir}/libcyrus_imap.a
475 %{_libdir}/libcyrus_min.a
476 %{_libdir}/libcyrus_sieve.a
479 %files -n perl-%{name}
480 %defattr(644,root,root,755)
481 %{perl_vendorarch}/Cyrus
482 %dir %{perl_vendorarch}/auto/Cyrus
483 %dir %{perl_vendorarch}/auto/Cyrus/IMAP
484 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/IMAP/IMAP.so
485 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE
486 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
487 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
488 %dir %{perl_vendorlib}/Cyrus
489 %dir %{perl_vendorlib}/Cyrus/Annotator
490 %{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
491 %{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
492 %{perl_vendorlib}/Cyrus/Annotator/Message.pm