1 # TODO: zephyr notification?
5 %bcond_without docs # 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
15 %{?with_perl:%include /usr/lib/rpm/macros.perl}
17 Summary: High-performance mail store with IMAP and POP3
18 Summary(pl.UTF-8): Wysoko wydajny serwer IMAP i POP3
19 Summary(pt_BR.UTF-8): Um servidor de mail de alto desempenho que suporta IMAP e POP3
24 Group: Networking/Daemons/POP3
25 Source0: https://www.cyrusimap.org/releases/%{name}-%{version}.tar.gz
26 # Source0-md5: 8452f81e3c30fa9af6f456e143e98576
28 Source2: cyrus-procmailrc
29 Source3: cyrus-deliver-wrapper.c
30 Source4: cyrus-user-procmailrc.template
31 Source5: %{name}-procmail+cyrus.mc
32 Source6: %{name}.logrotate
35 Source10: %{name}-pop.pamd
36 Source11: %{name}.init
38 Source13: cyrus-sync.init
39 Patch0: %{name}-et.patch
41 Patch2: %{name}-clamav-0.101.patch
42 Patch3: %{name}-icu.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_docs: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_docs: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.
210 cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
214 %{__aclocal} -I cmulocal
219 --libexecdir=%{pkglibexecdir} \
220 --enable-autocreate \
223 %{__enable_disable http} \
227 --enable-replication \
228 %{__enable_disable sphinx} \
230 %{__enable_disable xapian} \
231 --with-com_err=/usr \
232 %{__with_without ldap} \
235 %{__with_without lmdb} \
236 %{__with_without mysql} \
237 %{__with_without perl perl %{__perl}} \
238 %{__with_without pgsql} \
239 %{__with_without docs sphinx-build}
245 %{__cc} %{rpmcflags} \
246 -DLIBEXECDIR="\"%{pkglibexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
249 rm -rf $RPM_BUILD_ROOT
251 $RPM_BUILD_ROOT{%{_sbindir},%{pkglibexecdir},%{_mandir}} \
252 $RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,sysconfig/rc-inetd} \
253 $RPM_BUILD_ROOT/var/spool/imap/stage. \
254 $RPM_BUILD_ROOT/var/lib/imap/{user,quota,proc,log,msg,deliverdb/db,sieve,db,socket} \
255 $RPM_BUILD_ROOT/etc/{security,pam.d,rc.d/init.d}
257 touch $RPM_BUILD_ROOT/var/lib/imap/mailboxes \
258 $RPM_BUILD_ROOT/var/lib/imap/faillog \
259 $RPM_BUILD_ROOT/etc/security/blacklist.imap \
260 $RPM_BUILD_ROOT/etc/security/blacklist.pop3
263 DESTDIR=$RPM_BUILD_ROOT \
264 CYRUS_USER=%(id -u) \
265 CYRUS_GROUP=%(id -g) \
268 # ensure +x bit for rpm autodeps
269 chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so*
271 install -p deliver-wrapper $RPM_BUILD_ROOT%{pkglibexecdir}/deliver-wrapper
273 cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
274 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/imapd.conf
275 cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/pam.d/imap
276 cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/pop
277 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
278 sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
279 cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cyrus.conf
281 # We rename some utils, so we need to sort out the manpages
282 for i in master reconstruct quota deliver; do
283 mv $RPM_BUILD_ROOT%{_mandir}/man8/{,cyr}$i.8
286 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man8/idled.8
288 touch $RPM_BUILD_ROOT/etc/security/blacklist.{imap,pop3}
291 for i in $(%{__perl} -le 'print for "a".."z"'); do
292 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/user/$i
293 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/quota/$i
294 install -d $RPM_BUILD_ROOT%{_var}/lib/imap/sieve/$i
295 install -d $RPM_BUILD_ROOT%{_var}/spool/imap/$i
299 find $RPM_BUILD_ROOT%{perl_vendorarch} -name .packlist | xargs rm -v
300 %{__rm} $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
304 rm -rf $RPM_BUILD_ROOT
307 %useradd -u 76 -d /var/spool/imap -s /bin/false -c "Cyrus User" -g mail cyrus
310 touch /var/lib/imap/faillog
311 chown cyrus:mail /var/lib/imap/faillog
312 chmod 640 /var/lib/imap/faillog
314 chattr +S . user quota user/* quota/* 2>/dev/null ||:
315 chattr +S /var/spool/imap /var/spool/imap/* 2>/dev/null ||:
317 /sbin/chkconfig --add cyrus-imapd
318 %service cyrus-imapd restart "cyrus imap daemon"
319 %service cyrus-sync restart "cyrus replication service"
322 if [ "$1" = "0" ]; then
323 %service cyrus-imapd stop
324 %service cyrus-sync stop
325 /sbin/chkconfig --del cyrus-imapd
326 /sbin/chkconfig --del cyrus-sync
330 if [ "$1" = "0" ]; then
334 %post libs -p /sbin/ldconfig
335 %postun libs -p /sbin/ldconfig
338 %defattr(644,root,root,755)
339 %doc cyrus-README cyrus-procmailrc cyrus-user-procmailrc.template
340 %doc cyrus-imapd-procmail+cyrus.mc COPYING tools
341 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
342 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cyrus-imapd
343 %attr(440,cyrus,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
344 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.*
345 %attr(754,root,root) /etc/rc.d/init.d/cyrus-imapd
346 %attr(754,root,root) /etc/rc.d/init.d/cyrus-sync
347 %attr(640,cyrus,mail) %ghost /var/lib/imap/faillog
348 %attr(755,root,root) %{_bindir}/cyradm
349 %attr(755,root,root) %{_bindir}/httptest
350 %attr(755,root,root) %{_bindir}/imtest
351 %attr(755,root,root) %{_bindir}/installsieve
352 %attr(755,root,root) %{_bindir}/lmtptest
353 %attr(755,root,root) %{_bindir}/mupdatetest
354 %attr(755,root,root) %{_bindir}/nntptest
355 %attr(755,root,root) %{_bindir}/pop3test
356 %attr(755,root,root) %{_bindir}/sieveshell
357 %attr(755,root,root) %{_bindir}/sivtest
358 %attr(755,root,root) %{_bindir}/smtptest
359 %attr(755,root,root) %{_bindir}/synctest
361 %dir %{pkglibexecdir}
362 %attr(2755,cyrus,mail) %{pkglibexecdir}/deliver-wrapper
363 %attr(755,root,root) %{pkglibexecdir}/backupd
364 %attr(755,root,root) %{pkglibexecdir}/calalarmd
365 %attr(755,root,root) %{pkglibexecdir}/fud
366 %{?with_http:%attr(755,root,root) %{pkglibexecdir}/httpd}
367 %attr(755,root,root) %{pkglibexecdir}/idled
368 %attr(755,root,root) %{pkglibexecdir}/imapd
369 %attr(755,root,root) %{pkglibexecdir}/lmtpd
370 %attr(755,root,root) %{pkglibexecdir}/lmtpproxyd
371 %attr(755,root,root) %{pkglibexecdir}/master
372 %attr(755,root,root) %{pkglibexecdir}/mupdate
373 %attr(755,root,root) %{pkglibexecdir}/nntpd
374 %attr(755,root,root) %{pkglibexecdir}/notifyd
375 %attr(755,root,root) %{pkglibexecdir}/ptloader
376 %attr(755,root,root) %{pkglibexecdir}/pop3d
377 %attr(755,root,root) %{pkglibexecdir}/pop3proxyd
378 %attr(755,root,root) %{pkglibexecdir}/proxyd
379 %attr(755,root,root) %{pkglibexecdir}/smmapd
380 %attr(755,root,root) %{pkglibexecdir}/sync_server
381 %attr(755,root,root) %{pkglibexecdir}/timsieved
382 %attr(755,root,root) %{_sbindir}/arbitron
383 %attr(755,root,root) %{_sbindir}/chk_cyrus
384 %attr(755,root,root) %{_sbindir}/ctl_backups
385 %attr(755,root,root) %{_sbindir}/ctl_conversationsdb
386 %attr(755,root,root) %{_sbindir}/ctl_cyrusdb
387 %attr(755,root,root) %{_sbindir}/ctl_deliver
388 %attr(755,root,root) %{_sbindir}/ctl_mboxlist
389 %{?with_http:%attr(755,root,root) %{_sbindir}/ctl_zoneinfo}
390 %attr(755,root,root) %{_sbindir}/cvt_cyrusdb
391 %attr(755,root,root) %{_sbindir}/cvt_xlist_specialuse
392 %attr(755,root,root) %{_sbindir}/cyr_buildinfo
393 %attr(755,root,root) %{_sbindir}/cyr_dbtool
394 %attr(755,root,root) %{_sbindir}/cyr_deny
395 %attr(755,root,root) %{_sbindir}/cyr_df
396 %attr(755,root,root) %{_sbindir}/cyrdump
397 %attr(755,root,root) %{_sbindir}/cyr_backup
398 %attr(755,root,root) %{_sbindir}/cyr_expire
399 %attr(755,root,root) %{_sbindir}/cyr_info
400 %attr(755,root,root) %{_sbindir}/cyr_sequence
401 %attr(755,root,root) %{_sbindir}/cyr_synclog
402 %attr(755,root,root) %{_sbindir}/cyr_userseen
403 %attr(755,root,root) %{_sbindir}/cyr_virusscan
404 %{?with_http:%attr(755,root,root) %{_sbindir}/dav_reconstruct}
405 %attr(755,root,root) %{_sbindir}/deliver
406 %attr(755,root,root) %{_sbindir}/fetchnews
407 %attr(755,root,root) %{_sbindir}/ipurge
408 %attr(755,root,root) %{_sbindir}/mbexamine
409 %attr(755,root,root) %{_sbindir}/mbpath
410 %attr(755,root,root) %{_sbindir}/mbtool
411 %attr(755,root,root) %{_sbindir}/quota
412 %attr(755,root,root) %{_sbindir}/ptdump
413 %attr(755,root,root) %{_sbindir}/ptexpire
414 %attr(755,root,root) %{_sbindir}/reconstruct
415 %attr(755,root,root) %{_sbindir}/restore
416 %attr(755,root,root) %{_sbindir}/sievec
417 %attr(755,root,root) %{_sbindir}/sieved
418 %attr(755,root,root) %{_sbindir}/squatter
419 %attr(755,root,root) %{_sbindir}/sync_client
420 %attr(755,root,root) %{_sbindir}/sync_reset
421 %attr(755,root,root) %{_sbindir}/tls_prune
422 %attr(755,root,root) %{_sbindir}/unexpunge
424 %attr(750,cyrus,mail) /var/spool/imap
425 %attr(750,cyrus,mail) %dir /var/lib/imap
426 %attr(750,cyrus,mail) %dir /var/lib/imap/deliverdb
427 %attr(750,cyrus,mail) /var/lib/imap/deliverdb/db
428 %attr(750,cyrus,mail) /var/lib/imap/quota
429 %attr(750,cyrus,mail) /var/lib/imap/user
430 %attr(750,cyrus,mail) /var/lib/imap/sieve
431 %attr(750,cyrus,mail) /var/lib/imap/log
432 %attr(750,cyrus,mail) /var/lib/imap/msg
433 %attr(750,cyrus,mail) /var/lib/imap/proc
434 %attr(750,cyrus,mail) /var/lib/imap/db
435 %attr(750,cyrus,mail) /var/lib/imap/socket
436 %attr(750,cyrus,mail) %config(noreplace) %verify(not md5 mtime size) /var/lib/imap/mailboxes
441 %defattr(644,root,root,755)
442 %attr(755,root,root) %{_libdir}/libcyrus.so.0
443 %attr(755,root,root) %ghost %{_libdir}/libcyrus.so.*.*
444 %attr(755,root,root) %{_libdir}/libcyrus_min.so.0
445 %attr(755,root,root) %ghost %{_libdir}/libcyrus_min.so.*.*
446 %attr(755,root,root) %{_libdir}/libcyrus_imap.so.0
447 %attr(755,root,root) %ghost %{_libdir}/libcyrus_imap.so.*.*
448 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so.0
449 %attr(755,root,root) %ghost %{_libdir}/libcyrus_sieve.so.*.*
452 %defattr(644,root,root,755)
454 %attr(755,root,root) %{_libdir}/libcyrus.so
455 %attr(755,root,root) %{_libdir}/libcyrus_min.so
456 %attr(755,root,root) %{_libdir}/libcyrus_imap.so
457 %attr(755,root,root) %{_libdir}/libcyrus_sieve.so
458 %{_libdir}/libcyrus.la
459 %{_libdir}/libcyrus_min.la
460 %{_libdir}/libcyrus_imap.la
461 %{_libdir}/libcyrus_sieve.la
462 %{_pkgconfigdir}/libcyrus.pc
463 %{_pkgconfigdir}/libcyrus_min.pc
464 %{_pkgconfigdir}/libcyrus_sieve.pc
467 %defattr(644,root,root,755)
468 %{_libdir}/libcyrus.a
469 %{_libdir}/libcyrus_imap.a
470 %{_libdir}/libcyrus_min.a
471 %{_libdir}/libcyrus_sieve.a
474 %files -n perl-%{name}
475 %defattr(644,root,root,755)
476 %{perl_vendorarch}/Cyrus
477 %dir %{perl_vendorarch}/auto/Cyrus
478 %dir %{perl_vendorarch}/auto/Cyrus/IMAP
479 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/IMAP/IMAP.so
480 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE
481 %dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
482 %attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
483 %dir %{perl_vendorlib}/Cyrus
484 %dir %{perl_vendorlib}/Cyrus/Annotator
485 %{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
486 %{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
487 %{perl_vendorlib}/Cyrus/Annotator/Message.pm