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
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} .
217 find docsrc/ -name '*.pyc' -print0 | xargs --null %{__rm}
221 %{__aclocal} -I cmulocal
226 --libexecdir=%{pkglibexecdir} \
227 --enable-autocreate \
230 %{__enable_disable http} \
234 --enable-replication \
235 %{__enable_disable sphinx} \
237 %{__enable_disable xapian} \
238 --with-com_err=/usr \
239 %{__with_without ldap} \
242 %{__with_without lmdb} \
243 %{__with_without mysql} \
244 %{__with_without perl perl %{__perl}} \
245 %{__with_without pgsql} \
246 %{__with_without doc sphinx-build}
252 %{__cc} %{rpmcflags} \
253 -DLIBEXECDIR="\"%{pkglibexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
256 rm -rf $RPM_BUILD_ROOT
258 $RPM_BUILD_ROOT{%{_sbindir},%{pkglibexecdir},%{_mandir}} \
259 $RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,sysconfig/rc-inetd} \
260 $RPM_BUILD_ROOT/var/spool/imap/stage. \
261 $RPM_BUILD_ROOT/var/lib/imap/{user,quota,proc,log,msg,deliverdb/db,sieve,db,socket} \
262 $RPM_BUILD_ROOT/etc/{security,pam.d,rc.d/init.d}
264 touch $RPM_BUILD_ROOT/var/lib/imap/mailboxes \
265 $RPM_BUILD_ROOT/var/lib/imap/faillog \
266 $RPM_BUILD_ROOT/etc/security/blacklist.imap \
267 $RPM_BUILD_ROOT/etc/security/blacklist.pop3
270 DESTDIR=$RPM_BUILD_ROOT \
271 CYRUS_USER=%(id -u) \
272 CYRUS_GROUP=%(id -g) \
275 # ensure +x bit for rpm autodeps
276 chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so*
278 install -p deliver-wrapper $RPM_BUILD_ROOT%{pkglibexecdir}/deliver-wrapper
280 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
281 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/imapd.conf
282 cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/pam.d/imap
283 cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/pop
284 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
285 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
286 cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cyrus.conf
288 # We rename some utils, so we need to sort out the manpages
289 for i in master reconstruct quota deliver; do
290 mv $RPM_BUILD_ROOT%{_mandir}/man8/{,cyr}$i.8
293 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man8/idled.8
295 touch $RPM_BUILD_ROOT/etc/security/blacklist.{imap,pop3}
298 for i in $(%{__perl} -le 'print for "a".."z"'); do
299 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/user/$i
300 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/quota/$i
301 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/sieve/$i
302 install -d $RPM_BUILD_ROOT%{_var}/spool/imap/$i
306 find $RPM_BUILD_ROOT%{perl_vendorarch} -name .packlist | xargs rm -v
307 %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
311 rm -rf $RPM_BUILD_ROOT
314 %useradd -u 76 -d /var/spool/imap -s /bin/false -c "Cyrus User" -g mail cyrus
317 touch /var/lib/imap/faillog
318 chown cyrus:mail /var/lib/imap/faillog
319 chmod 640 /var/lib/imap/faillog
321 chattr +S . user quota user/* quota/* 2>/dev/null ||:
322 chattr +S /var/spool/imap /var/spool/imap/* 2>/dev/null ||:
324 /sbin/chkconfig --add cyrus-imapd
325 %service cyrus-imapd restart "cyrus imap daemon"
326 %service cyrus-sync restart "cyrus replication service"
329 if [ "$1" = "0" ]; then
330 %service cyrus-imapd stop
331 %service cyrus-sync stop
332 /sbin/chkconfig --del cyrus-imapd
333 /sbin/chkconfig --del cyrus-sync
337 if [ "$1" = "0" ]; then
341 %post libs -p /sbin/ldconfig
342 %postun libs -p /sbin/ldconfig
345 %defattr(644,root,root,755)
346 %doc cyrus-README cyrus-procmailrc cyrus-user-procmailrc.template
347 %doc cyrus-imapd-procmail+cyrus.mc COPYING tools
348 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
349 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cyrus-imapd
350 %attr(440,cyrus,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
351 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.*
352 %attr(754,root,root) /etc/rc.d/init.d/cyrus-imapd
353 %attr(754,root,root) /etc/rc.d/init.d/cyrus-sync
354 %attr(640,cyrus,mail) %ghost /var/lib/imap/faillog
355 %attr(755,root,root) %{_bindir}/cyradm
356 %attr(755,root,root) %{_bindir}/httptest
357 %attr(755,root,root) %{_bindir}/imtest
358 %attr(755,root,root) %{_bindir}/installsieve
359 %attr(755,root,root) %{_bindir}/lmtptest
360 %attr(755,root,root) %{_bindir}/mupdatetest
361 %attr(755,root,root) %{_bindir}/nntptest
362 %attr(755,root,root) %{_bindir}/pop3test
363 %attr(755,root,root) %{_bindir}/sieveshell
364 %attr(755,root,root) %{_bindir}/sivtest
365 %attr(755,root,root) %{_bindir}/smtptest
366 %attr(755,root,root) %{_bindir}/synctest
368 %dir %{pkglibexecdir}
369 %attr(2755,cyrus,mail) %{pkglibexecdir}/deliver-wrapper
370 %attr(755,root,root) %{pkglibexecdir}/backupd
371 %attr(755,root,root) %{pkglibexecdir}/calalarmd
372 %attr(755,root,root) %{pkglibexecdir}/fud
373 %{?with_http:%attr(755,root,root) %{pkglibexecdir}/httpd}
374 %attr(755,root,root) %{pkglibexecdir}/idled
375 %attr(755,root,root) %{pkglibexecdir}/imapd
376 %attr(755,root,root) %{pkglibexecdir}/lmtpd
377 %attr(755,root,root) %{pkglibexecdir}/lmtpproxyd
378 %attr(755,root,root) %{pkglibexecdir}/master
379 %attr(755,root,root) %{pkglibexecdir}/mupdate
380 %attr(755,root,root) %{pkglibexecdir}/nntpd
381 %attr(755,root,root) %{pkglibexecdir}/notifyd
382 %attr(755,root,root) %{pkglibexecdir}/ptloader
383 %attr(755,root,root) %{pkglibexecdir}/pop3d
384 %attr(755,root,root) %{pkglibexecdir}/pop3proxyd
385 %attr(755,root,root) %{pkglibexecdir}/proxyd
386 %attr(755,root,root) %{pkglibexecdir}/smmapd
387 %attr(755,root,root) %{pkglibexecdir}/sync_server
388 %attr(755,root,root) %{pkglibexecdir}/timsieved
389 %attr(755,root,root) %{_sbindir}/arbitron
390 %attr(755,root,root) %{_sbindir}/chk_cyrus
391 %attr(755,root,root) %{_sbindir}/ctl_backups
392 %attr(755,root,root) %{_sbindir}/ctl_conversationsdb
393 %attr(755,root,root) %{_sbindir}/ctl_cyrusdb
394 %attr(755,root,root) %{_sbindir}/ctl_deliver
395 %attr(755,root,root) %{_sbindir}/ctl_mboxlist
396 %{?with_http:%attr(755,root,root) %{_sbindir}/ctl_zoneinfo}
397 %attr(755,root,root) %{_sbindir}/cvt_cyrusdb
398 %attr(755,root,root) %{_sbindir}/cvt_xlist_specialuse
399 %attr(755,root,root) %{_sbindir}/cyr_buildinfo
400 %attr(755,root,root) %{_sbindir}/cyr_dbtool
401 %attr(755,root,root) %{_sbindir}/cyr_deny
402 %attr(755,root,root) %{_sbindir}/cyr_df
403 %attr(755,root,root) %{_sbindir}/cyrdump
404 %attr(755,root,root) %{_sbindir}/cyr_backup
405 %attr(755,root,root) %{_sbindir}/cyr_expire
406 %attr(755,root,root) %{_sbindir}/cyr_info
407 %attr(755,root,root) %{_sbindir}/cyr_sequence
408 %attr(755,root,root) %{_sbindir}/cyr_synclog
409 %attr(755,root,root) %{_sbindir}/cyr_userseen
410 %attr(755,root,root) %{_sbindir}/cyr_virusscan
411 %{?with_http:%attr(755,root,root) %{_sbindir}/dav_reconstruct}
412 %attr(755,root,root) %{_sbindir}/deliver
413 %attr(755,root,root) %{_sbindir}/fetchnews
414 %attr(755,root,root) %{_sbindir}/ipurge
415 %attr(755,root,root) %{_sbindir}/mbexamine
416 %attr(755,root,root) %{_sbindir}/mbpath
417 %attr(755,root,root) %{_sbindir}/mbtool
418 %attr(755,root,root) %{_sbindir}/quota
419 %attr(755,root,root) %{_sbindir}/ptdump
420 %attr(755,root,root) %{_sbindir}/ptexpire
421 %attr(755,root,root) %{_sbindir}/reconstruct
422 %attr(755,root,root) %{_sbindir}/restore
423 %attr(755,root,root) %{_sbindir}/sievec
424 %attr(755,root,root) %{_sbindir}/sieved
425 %attr(755,root,root) %{_sbindir}/squatter
426 %attr(755,root,root) %{_sbindir}/sync_client
427 %attr(755,root,root) %{_sbindir}/sync_reset
428 %attr(755,root,root) %{_sbindir}/tls_prune
429 %attr(755,root,root) %{_sbindir}/unexpunge
431 %attr(750,cyrus,mail) /var/spool/imap
432 %attr(750,cyrus,mail) %dir /var/lib/imap
433 %attr(750,cyrus,mail) %dir /var/lib/imap/deliverdb
434 %attr(750,cyrus,mail) /var/lib/imap/deliverdb/db
435 %attr(750,cyrus,mail) /var/lib/imap/quota
436 %attr(750,cyrus,mail) /var/lib/imap/user
437 %attr(750,cyrus,mail) /var/lib/imap/sieve
438 %attr(750,cyrus,mail) /var/lib/imap/log
439 %attr(750,cyrus,mail) /var/lib/imap/msg
440 %attr(750,cyrus,mail) /var/lib/imap/proc
441 %attr(750,cyrus,mail) /var/lib/imap/db
442 %attr(750,cyrus,mail) /var/lib/imap/socket
443 %attr(750,cyrus,mail) %config(noreplace) %verify(not md5 mtime size) /var/lib/imap/mailboxes
448 %defattr(644,root,root,755)
449 %attr(755,root,root) %{_libdir}/libcyrus.so.0
450 %attr(755,root,root) %ghost %{_libdir}/libcyrus.so.*.*
451 %attr(755,root,root) %{_libdir}/libcyrus_min.so.0
452 %attr(755,root,root) %ghost %{_libdir}/libcyrus_min.so.*.*
453 %attr(755,root,root) %{_libdir}/libcyrus_imap.so.0
454 %attr(755,root,root) %ghost %{_libdir}/libcyrus_imap.so.*.*
455 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so.0
456 %attr(755,root,root) %ghost %{_libdir}/libcyrus_sieve.so.*.*
459 %defattr(644,root,root,755)
461 %attr(755,root,root) %{_libdir}/libcyrus.so
462 %attr(755,root,root) %{_libdir}/libcyrus_min.so
463 %attr(755,root,root) %{_libdir}/libcyrus_imap.so
464 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so
465 %{_libdir}/libcyrus.la
466 %{_libdir}/libcyrus_min.la
467 %{_libdir}/libcyrus_imap.la
468 %{_libdir}/libcyrus_sieve.la
469 %{_pkgconfigdir}/libcyrus.pc
470 %{_pkgconfigdir}/libcyrus_imap.pc
471 %{_pkgconfigdir}/libcyrus_min.pc
472 %{_pkgconfigdir}/libcyrus_sieve.pc
475 %defattr(644,root,root,755)
476 %{_libdir}/libcyrus.a
477 %{_libdir}/libcyrus_imap.a
478 %{_libdir}/libcyrus_min.a
479 %{_libdir}/libcyrus_sieve.a
482 %files -n perl-%{name}
483 %defattr(644,root,root,755)
484 %{perl_vendorarch}/Cyrus
485 %dir %{perl_vendorarch}/auto/Cyrus
486 %dir %{perl_vendorarch}/auto/Cyrus/IMAP
487 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/IMAP/IMAP.so
488 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE
489 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
490 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
491 %dir %{perl_vendorlib}/Cyrus
492 %dir %{perl_vendorlib}/Cyrus/Annotator
493 %{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
494 %{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
495 %{perl_vendorlib}/Cyrus/Annotator/Message.pm