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