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 URL: http://www.cyrusimap.org/
45 BuildRequires: autoconf >= 2.63
46 BuildRequires: automake
47 BuildRequires: cyrus-sasl-devel >= 2.1.7
48 BuildRequires: db-devel >= 4.1.25
50 BuildRequires: jansson-devel >= 2.3
51 %{?with_http:BuildRequires: libbrotli-devel}
52 BuildRequires: libcap-devel
53 BuildRequires: libcom_err-devel >= 1.21
54 %{?with_http:BuildRequires: libical-devel >= 2.0}
55 BuildRequires: libicu-devel
56 BuildRequires: libtool >= 2:2.2.6
57 %{?with_http:BuildRequires: libxml2-devel >= 1:2.7.3}
58 %{?with_lmdb:BuildRequires: lmdb-devel}
59 %{?with_mysql:BuildRequires: mysql-devel}
60 BuildRequires: net-snmp-devel
61 %{?with_http:BuildRequires: nghttp2-devel >= 1.5}
62 %{?with_ldap:BuildRequires: openldap-devel}
63 BuildRequires: openssl-devel >= 0.9.7d
64 BuildRequires: patchutils
65 %{?with_doc:BuildRequires: perl-Pod-POM-View-Restructured}
66 %{?with_perl:BuildRequires: perl-devel >= 1:5.8.0}
67 %{?with_pgsql:BuildRequires: postgresql-devel}
68 %{?with_perl:BuildRequires: rpm-perlprov}
69 BuildRequires: rpmbuild(macros) >= 1.527
70 %{?with_http:BuildRequires: shapelib-devel >= 1.4.1}
71 %{?with_http:BuildRequires: sqlite3-devel >= 3}
72 %{?with_doc:BuildRequires: sphinx-pdg-3}
73 %{?with_xapian:BuildRequires: xapian-core-devel}
74 BuildRequires: zlib-devel
75 Requires(post,preun): /sbin/chkconfig
76 Requires(postun): /usr/sbin/userdel
77 Requires(pre): /bin/id
78 Requires(pre): /usr/sbin/useradd
79 Requires: %{name}-libs = %{version}-%{release}
80 Requires: rc-scripts >= 0.4.0.18
81 # needed by scripts from %{_bindir}
82 Requires: pam >= 0.79.0
83 %{?with_perl:Requires: perl-%{name} = %{version}-%{release}}
87 Obsoletes: cyrus-imapd-doc < 3
92 Conflicts: courier-imap
93 Conflicts: courier-imap-common
94 Conflicts: courier-imap-pop3
96 Conflicts: imap-common
101 Conflicts: solid-pop3d
103 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
105 %define pkglibexecdir %{_libexecdir}/cyrus
107 %define skip_post_check_so libcyrus(|_min|_imap|_sieve).so.*
110 The Cyrus IMAP server is a scalable enterprise mail system designed
111 for use from small to large enterprise environments using
112 standards-based technologies.
114 A full Cyrus IMAP implementation allows a seamless mail and bulletin
115 board environment to be set up across multiple servers. It differs
116 from other IMAP server implementations in that it is run on "sealed"
117 servers, where users are not normally permitted to log in. The mailbox
118 database is stored in parts of the filesystem that are private to the
119 Cyrus IMAP system. All user access to mail is through software using
120 the IMAP, POP3, or KPOP protocols.
122 %description -l pl.UTF-8
123 Serwer Cyrus IMAP jest skalowalnym systemem e-mail dla
124 przedsiębiorstwa, zaprojektowanym dla małych i dużych firm i
125 wykorzystującym oparte na standardach technologie.
127 Pełna implementacja Cyrus IMAP pozwala na bezproblemowe ustawienie
128 środowiska poczty i elektronicznej tablicy ogłoszeniowej na kilku
129 serwerach. Tym się różni od innych implementacji serwerów IMAP, że
130 jest uruchamiany na "opieczętowanych" serwerach, na które w normalnych
131 warunkach użytkownicy nie mogą się zalogować. Baza danych skrzynek
132 pocztowych jest przechowywana w tych częściach systemu plików, które
133 są dostępne jedynie dla systemu IMAP Cyrus. Wszelki dostęp do poczty
134 ma miejsce poprzez oprogramowanie wykorzystujące protokoły IMAP, POP3
137 %description -l pt_BR.UTF-8
138 O servidor IMAP Cyrus é um sistema de mail corporativo escalável
139 projetado para uso por pequenos a grandes ambientes corporativos
140 usando tecnologias baseadas em padrões abertos.
142 Uma implementação completa do Cyrus permite se configurar um ambiente
143 transparente de mail e bulletin board entre múltiplos servidores. Ele
144 difere de outros servidores IMAP por rodar em servidores "selados",
145 onde usuários não possuem normalmente a permissão de log in. O banco
146 de dados de caixas de mail é armazenado em partes do sistema de
147 arquivos que são privativos do sistema Cyrus. Todo o acesso de
148 usuários aos mails se dá através de software usando os protocolos
152 Summary: Shared cyrus-imapd libraries
153 Summary(pl.UTF-8): Współdzielone biblioteki cyrus-imapd
155 Requires: cyrus-sasl-libs >= 2.1.7
156 Requires: jansson >= 2.3
159 Shared cyrus-imapd libraries.
161 %description libs -l pl.UTF-8
162 Współdzielone biblioteki cyrus-imapd.
165 Summary: Header files for developing with cyrus-imapd libraries
166 Summary(pl.UTF-8): Pliki nagłówkowe do programowania z użyciem bibliotek cyrus-imapd
167 Group: Development/Libraries
168 Requires: %{name}-libs = %{version}-%{release}
169 Requires: cyrus-sasl-devel >= 2.1.7
170 Requires: jansson-devel >= 2.3
173 This package provides the necessary header files files to allow you to
174 develop with cyrus-imapd libraries.
176 %description devel -l pl.UTF-8
177 Ten pakiet zawiera pliki nagłówkowe niezbędne do tworzenia
178 oprogramowania z wykorzystaniem bibliotek cyrus-imapd.
181 Summary: Static cyrus-imapd libraries
182 Summary(pl.UTF-8): Biblioteki statyczne cyrus-imapd
183 Group: Development/Libraries
184 Requires: %{name}-devel = %{version}-%{release}
187 Static cyrus-imapd libraries
189 %description static -l pl.UTF-8
190 Biblioteki statyczne cyrus-imapd
192 %package -n perl-%{name}
193 Summary: Perl interface to cyrus-imapd library
194 Summary(pl.UTF-8): Perlowy interfejs do biblioteki cyrus-imapd
195 Group: Development/Languages/Perl
196 Requires: %{name}-libs = %{version}-%{release}
198 %description -n perl-%{name}
199 Perl interface to cyrus-imapd library.
201 %description -n perl-%{name} -l pl.UTF-8
202 Perlowy interfejs do biblioteki cyrus-imapd.
213 cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
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_min.pc
467 %{_pkgconfigdir}/libcyrus_sieve.pc
470 %defattr(644,root,root,755)
471 %{_libdir}/libcyrus.a
472 %{_libdir}/libcyrus_imap.a
473 %{_libdir}/libcyrus_min.a
474 %{_libdir}/libcyrus_sieve.a
477 %files -n perl-%{name}
478 %defattr(644,root,root,755)
479 %{perl_vendorarch}/Cyrus
480 %dir %{perl_vendorarch}/auto/Cyrus
481 %dir %{perl_vendorarch}/auto/Cyrus/IMAP
482 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/IMAP/IMAP.so
483 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE
484 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
485 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
486 %dir %{perl_vendorlib}/Cyrus
487 %dir %{perl_vendorlib}/Cyrus/Annotator
488 %{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
489 %{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
490 %{perl_vendorlib}/Cyrus/Annotator/Message.pm