import cyrus-imapd-3.8.3-5.el10

c10-beta imports/c10-beta/cyrus-imapd-3.8.3-5.el10
MSVSphere Packaging Team 1 month ago
commit c539d1a098
Signed by: sys_gitsync
GPG Key ID: B2B0B9F29E528FE8

@ -0,0 +1,2 @@
710d7c1c942240018d0f3693dbfec0a8299a0a5b SOURCES/cyrus-imapd-3.8.3.tar.gz
2cb01af57f5e1e2df8fd91aab28e94e7b566194b SOURCES/cyrus-imapd-3.8.3.tar.gz.sig

2
.gitignore vendored

@ -0,0 +1,2 @@
SOURCES/cyrus-imapd-3.8.3.tar.gz
SOURCES/cyrus-imapd-3.8.3.tar.gz.sig

@ -0,0 +1,34 @@
---------------
Cyrus IMAPd RPM
---------------
This is a _very_ 'quick and dirty' install howto.
The following steps should lead you to a running Cyrus IMAP server:
1) Install on a distribution which is supported by this RPM. Don't install
on a dirty system, where you have previously installed from source.
2) Don't install if you have a previous Cyrus IMAPd installation <=2.1.x on
your box. Upgrading any Invoca rpm based installation should be fine.
3) Make sure you understand that this RPM installs in FHS compliant
directories, like /var/lib/imap and /var/spool/imap
4) Make sure cyrus-sasl is installed.
5) Make sure saslauthd is running. If not, edit /etc/sysconfig/saslauthd as
needed and do 'chkconfig saslauthd on ; service saslauthd start'
6) Install the cyrus-imapd RPMs.
7) If it's your first install of Cyrus IMAPd, then set a password for the
cyrus user in whatever database you are using to authenticate. When
using a local account, this should be 'passwd cyrus'.
8) Make sure your MTA delivers to Cyrus IMAPd, I recommend LMTP for this.
9) Start Cyrus IMAPd with 'service cyrus-imapd start'
10) Run cyradm and create a user. Usually it's something like this:
'cyradm --user=cyrus --auth=login localhost'
11) If you're using sendmail, be aware that cyrusv2.m4 included in standard
sendmail distribution uses socket /var/imap/socket/lmtp while this rpm
uses /var/lib/imap/socket/lmtp.
12) Check your syslog configuration. This RPM uses the mail facility to log
messages. On busy sites you may want to limit the mail facility to the
info priority with something like 'mail.info /var/log/maillog' in
/etc/syslog.conf.
Enjoy!

@ -0,0 +1,56 @@
# A basic cassandane.ini file for running cassandane as part of the Fedora
# package build process.
# The idea here is to run tests on the just-compiled version of cyrus-imapd.
# However, many of the build locations are just random temporary directories, and
# so this requires some finesse.
[cassandane]
rootdir = CASSDIR/work
pwcheck = alwaystrue # This is enabled in Fedora builds
cleanup = no
maxworkers = 1
base_port = 19100
#[valgrind]
#enabled = no
# The installed copy
[cyrus default]
prefix = /usr
destdir = BUILDROOT
quota = cyr_quota
# Replication testing disabled
# [cyrus replica]
# [cyrus murder]
# Don't enable any of the gdb options but leave them here in case someone ever
# needs to do so
#[gdb]
# imapd = yes
# sync_server = yes
# lntpd = yes
# timsieved = yes
# backupd = yes
[config]
altnamespace = no
unixhierarchysep = no
client_timeout = 60
#[caldavtalk]
#basedir = CASSDIR/cassandane/testdata
[imaptest]
# Cassandane wants this to not be installed. Don't know why. To use it we
# have to make a directory and link things into it.
basedir = imaptest
# [jmaptester]
# basedir = JMAP-Tester
# The JMAP modules end up needing JSON-Typist (which I could bundle) and CryptX (which is a bit too much to bundle)
# [caldavtester]
# XXX Would need to include the source in the cyrus package just as cassandane is, and get it built before running tests
# basedir = ...

@ -0,0 +1,12 @@
[Unit]
Description=One-time configuration for cyrus-imapd
ConditionPathExists=!/etc/pki/cyrus-imapd/cyrus-imapd.pem
ConditionPathExists=!/etc/pki/cyrus-imapd/cyrus-imapd-key.pem
ConditionPathExists=!/etc/pki/cyrus-imapd/cyrus-imapd-ca.pem
[Service]
Type=oneshot
Group=mail
RemainAfterExit=no
ExecStart=/usr/bin/sscg --package cyrus-imapd --cert-file /etc/pki/cyrus-imapd/cyrus-imapd.pem --cert-key-file /etc/pki/cyrus-imapd/cyrus-imapd-key.pem --ca-file /etc/pki/cyrus-imapd/cyrus-imapd-ca.pem --cert-key-mode=0640

@ -0,0 +1,36 @@
#!/bin/sh
#
# This file is run on a daily basis to perform a backup of your
# mailbox list which can be used to recreate mailboxes.db from backup.
# Restore is done using ctl_mboxlist after uncompressing the file.
BACKDIR="/var/lib/imap/backup"
MBOXLIST="${BACKDIR}/mboxlist"
ROTATE=6
# fallback to su if runuser not available
if [ -x /sbin/runuser ]; then
RUNUSER=runuser
else
RUNUSER=su
fi
# source custom configuration
if [ -f /etc/sysconfig/cyrus-imapd ]; then
. /etc/sysconfig/cyrus-imapd
fi
[ -x /usr/sbin/ctl_mboxlist ] || exit 0
[ -f /var/lib/imap/db/skipstamp ] || exit 0
# rotate mailbox lists
seq $[ $ROTATE - 1 ] -1 1 | while read i; do
[ -f ${MBOXLIST}.${i}.gz ] && mv -f ${MBOXLIST}.${i}.gz ${MBOXLIST}.$[ $i + 1 ].gz
done
[ -f ${MBOXLIST}.gz ] && mv -f ${MBOXLIST}.gz ${MBOXLIST}.1.gz
# export mailboxes.db
$RUNUSER - cyrus -s /bin/sh -c "umask 077 < /dev/null ; /usr/sbin/ctl_mboxlist -d | gzip > ${MBOXLIST}.gz"
exit 0
# EOF

@ -0,0 +1,7 @@
/var/log/imapd.log /var/log/auth.log {
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

@ -0,0 +1,9 @@
# Magic
# Magic data for file(1) command.
# Format is described in magic(files), where:
# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID.
#------------------------------------------------------------------------------
# skiplist: file(1) magic Cyrus skiplist DB
#
0 string \241\002\213\015skiplist\ file\0\0\0 Cyrus skiplist DB

@ -0,0 +1,5 @@
#%PAM-1.0
auth required pam_nologin.so
auth include password-auth
account include password-auth
session include password-auth

@ -0,0 +1,22 @@
[Unit]
Description=Cyrus-imapd IMAP/POP3 email server
After=local-fs.target network-online.target
Requires=cyrus-imapd-init.service
After=cyrus-imapd-init.service
[Service]
Type=simple
EnvironmentFile=/etc/sysconfig/cyrus-imapd
ExecStart=/usr/libexec/cyrus-imapd/master $CYRUSOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
PrivateTmp=true
# Cyrus may spawn many processes in normal operation. These figures are higher
# than the defaults, but may still need to be tuned for your local
# configuration.
TasksMax=2048
LimitNOFILE=16384
[Install]
WantedBy=multi-user.target

@ -0,0 +1,5 @@
# Options to cyrus-master
CYRUSOPTIONS=""
# Mailbox list dumps are rotated n times via cron.daily
#ROTATE=6

@ -0,0 +1,4 @@
#Type Name ID GECOS Home directory Shell
g saslauth 76
u cyrus 76:mail "Cyrus IMAP Server" /var/lib/imap /sbin/nologin
m cyrus saslauth

@ -0,0 +1,5 @@
d /run/cyrus 0750 cyrus mail -
d /run/cyrus/db 0700 cyrus mail -
d /run/cyrus/lock 0700 cyrus mail -
d /run/cyrus/proc 0700 cyrus mail -
d /run/cyrus/socket 0750 cyrus mail -

@ -0,0 +1,17 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFU5pZUBCAC+m05W9nJnBkrfFO9I+iimF1WCsSZNFoASJ3WEeZxIkOQO9BZj
aKf8EP/nK7nEfNGZ2m+OrAtQU/+I8Sk1ppHuwZgENLvRzLsBGbv80kDKBw31Nd1f
sCpVQs4b8zlohXjq0UN8tT5NcGJnGE7ahoOHzJk/0Ll76oVmOZvSw+WHBp1945m2
Q8CbIbfmyuv7NF6GtGDVilPeIPsDnh5w5usjpKsxjYHKpy6Rtf4MbcCLtkRbHFra
KJD+xum0PgPdCAEEbQsSXQgwOd0TZ59avRVVef674PjWqIuudUGUhJ/f9OWOj7LG
6QgJR6yvCy7Bc2eAN4RnIIzaUZGaJDKDCNozABEBAAG0ImVsbGllIHRpbW9uZXkg
PGVsbGllQGZhc3RtYWlsLmNvbT6JATgEEwECACIFAlU5pZUCGwMGCwkIBwMCBhUI
AgkKCwQWAgMBAh4BAheAAAoJEFVPBP6zY3jgb9gH/3GPDLGybo7SYZMtBmfe+Udf
tcRkTtH+o2pf2rh6KwPhhEDuOXWVCIUPWXsWIVU2K5Y8AdBIHOEoSUp3n8juV57I
u9CfDI718/WaHgEpYrq5DqyROAFr+sGahcb6C40+V/CeUSAmKVhFGniuALUSAQ+B
XVj/i2EAFNg/5ALkPYDnDYDqm7Ak6odDbktYQz987y38sg3EMC/2wi2EoOG1VWeG
twFD8HKmXZw+u6cYtFh9K1hOBZm+PhLHr3h1MHTuWYeBKkT3YqaGtXMwi704LlNr
HU8beOHSNBSsVYJ61B4kgBA7p+qnx6xIpU2KfAJl8cgjCYwrq8yo+Lm9TazagfM=
=dIwC
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,14 @@
diff --git a/cassandane/utils/annotator.pl b/cassandane/utils/annotator.pl
index 265c73f..8af3d58 100755
--- a/cassandane/utils/annotator.pl
+++ b/cassandane/utils/annotator.pl
@@ -140,6 +140,8 @@ GetOptions(
xlog "annotator $$ starting";
Cassandane::AnnotatorDaemon->run(
pid_file => $pidfile,
- port => $port
+ port => $port,
+ user => (getpwuid($<))[0],
+ group => (getgrgid($())[0],
);
xlog "annotator $$ exiting";

@ -0,0 +1,57 @@
diff --git a/cassandane/Cassandane/Util/Log.pm b/cassandane/Cassandane/Util/Log.pm
index a44005c..5bb5710 100644
--- a/cassandane/Cassandane/Util/Log.pm
+++ b/cassandane/Cassandane/Util/Log.pm
@@ -51,9 +51,6 @@ our @EXPORT = qw(
my $verbose = 0;
-openlog('cassandane', '', LOG_LOCAL6)
- or die "Cannot openlog";
-
sub xlog
{
my $id;
@@ -87,7 +84,6 @@ sub xlog
else {
print STDERR "$msg\n";
}
- syslog(LOG_ERR, "$msg");
}
sub set_verbose
diff --git a/cassandane/utils/syslog.c b/cassandane/utils/syslog.c
index 20d3763..0238d82 100644
--- a/cassandane/utils/syslog.c
+++ b/cassandane/utils/syslog.c
@@ -116,14 +116,28 @@ EXPORTED void syslog(int priority, const char *format, ...)
va_start(ap, format);
fake_vsyslog(priority, format, ap);
va_end(ap);
+}
+
+EXPORTED void
+__attribute__((format(printf, 3, 4)))
+__syslog_chk(int priority, int whatever __attribute__((unused)),
+ const char *format, ...)
+{
+ va_list ap;
va_start(ap, format);
- real_vsyslog(priority, format, ap);
+ fake_vsyslog(priority, format, ap);
va_end(ap);
}
EXPORTED void vsyslog(int priority, const char *format, va_list ap)
{
fake_vsyslog(priority, format, ap);
- real_vsyslog(priority, format, ap);
+}
+
+EXPORTED void
+__attribute__((format(printf, 3, 0)))
+__vsyslog_chk(int priority, int whatever __attribute__((unused)), const char *format, va_list ap)
+{
+ fake_vsyslog(priority, format, ap);
}

@ -0,0 +1,15 @@
diff --git a/cassandane/Cassandane/Instance.pm b/cassandane/Cassandane/Instance.pm
index 78e7100..edf6f5d 100644
--- a/cassandane/Cassandane/Instance.pm
+++ b/cassandane/Cassandane/Instance.pm
@@ -492,9 +492,7 @@ sub _find_binary
my $base = $self->{cyrus_destdir} . $self->{cyrus_prefix};
if ($name eq 'delve') {
- my $lib = `ldd $base/libexec/imapd` || die "can't ldd imapd";
- $lib =~ m{(/\S+)/lib/libxapian-([0-9.]+)\.so};
- return "$1/bin/xapian-delve-$2";
+ return "/bin/xapian-delve";
}
foreach (qw( bin sbin libexec libexec/cyrus-imapd lib cyrus/bin ))

@ -0,0 +1,105 @@
diff --git a/doc/examples/imapd_conf/normal.conf b/doc/examples/imapd_conf/normal.conf
index 95b54e9..3935b77 100644
--- a/doc/examples/imapd_conf/normal.conf
+++ b/doc/examples/imapd_conf/normal.conf
@@ -10,7 +10,7 @@ admins: cyrus
###################################################################
# Configuration directory
-configdirectory: /var/lib/cyrus
+configdirectory: /var/lib/imap
# Directories for proc and lock files
proc_path: /run/cyrus/proc
@@ -19,18 +19,18 @@ mboxname_lockpath: /run/cyrus/lock
# Locations for DB files
# The following DB are recreated upon initialization, so should live in
# ephemeral storage for best performance.
-duplicate_db_path: /run/cyrus/deliver.db
-ptscache_db_path: /run/cyrus/ptscache.db
-statuscache_db_path: /run/cyrus/statuscache.db
-tls_sessions_db_path: /run/cyrus/tls_sessions.db
+duplicate_db_path: /run/cyrus/db/deliver.db
+ptscache_db_path: /run/cyrus/db/ptscache.db
+statuscache_db_path: /run/cyrus/db/statuscache.db
+tls_sessions_db_path: /run/cyrus/db/tls_sessions.db
# Which partition to use for default mailboxes
defaultpartition: default
-partition-default: /var/spool/cyrus/mail
+partition-default: /var/spool/imap
# If sieveusehomedir is false (the default), this directory is searched
# for Sieve scripts.
-sievedir: /var/spool/sieve
+sievedir: /var/lib/imap/sieve
###################################################################
## Important: KEEP THESE IN SYNC WITH cyrus.conf
@@ -51,19 +51,16 @@ syslog_prefix: cyrus
# Space-separated list of HTTP modules that will be enabled in
# httpd(8). This option has no effect on modules that are disabled at
# compile time due to missing dependencies (e.g. libical).
-#
-# Allowed values: caldav, carddav, domainkey, ischedule, rss
-httpmodules: caldav carddav
+# Fedora default: enable all modules besides admin and tzdist
+httpmodules: caldav carddav domainkey freebusy ischedule jmap rss webdav
# If enabled, the partitions will also be hashed, in addition to the
# hashing done on configuration directories. This is recommended if one
# partition has a very bushy mailbox tree.
hashimapspool: true
-# Enable virtual domains
-# and set default domain to localhost
-virtdomains: yes
-defaultdomain: localhost
+# Disable virtual domains by default
+virtdomains: off
###################################################################
## User experience settings
@@ -72,6 +69,14 @@ defaultdomain: localhost
# Minimum time between POP mail fetches in minutes
popminpoll: 1
+# Conversation support is required for jmap
+conversations: 1
+conversations_db: twoskip
+
+# This will default to on in 3.1, and improves compatibility with some Apple
+# devices. Upstream https://github.com/cyrusimap/cyrus-imapd/issues/1556
+specialusealways: 1
+
###################################################################
## User Authentication settings
###################################################################
@@ -99,6 +104,12 @@ sasl_auto_transition: no
## SSL/TLS Options
###################################################################
+# These three files will automatically be generated by the systemd unit when
+# the service starts for the first time.
+tls_server_cert: /etc/pki/cyrus-imapd/cyrus-imapd.pem
+tls_server_key: /etc/pki/cyrus-imapd/cyrus-imapd-key.pem
+tls_client_ca_file: /etc/pki/cyrus-imapd/cyrus-imapd-ca.pem
+
# File containing the global certificate used for ALL services (imap,
# pop3, lmtp, sieve)
#tls_server_cert: /etc/ssl/certs/ssl-cert-snakeoil.pem
diff --git a/doc/examples/cyrus_conf/prefork.conf b/doc/examples/cyrus_conf/prefork.conf
index 186fe66..ab97848 100644
--- a/doc/examples/cyrus_conf/prefork.conf
+++ b/doc/examples/cyrus_conf/prefork.conf
@@ -19,8 +19,8 @@ SERVICES {
# nntps cmd="nntpd -s" listen="nntps" prefork=1
# these are only necessary if using HTTP for CalDAV, CardDAV, or RSS
-# http cmd="httpd" listen="http" prefork=3
-# https cmd="httpd -s" listen="https" prefork=1
+ http cmd="httpd" listen="http" prefork=3
+ https cmd="httpd -s" listen="https" prefork=1
# at least one LMTP is required for delivery
# lmtp cmd="lmtpd" listen="lmtp" prefork=0

@ -0,0 +1,26 @@
diff --git a/perl/sieve/managesieve/Makefile.PL.in b/perl/sieve/managesieve/Makefile.PL.in
index 7180b98..d589ebe 100644
--- a/perl/sieve/managesieve/Makefile.PL.in
+++ b/perl/sieve/managesieve/Makefile.PL.in
@@ -69,7 +69,7 @@ WriteMakefile(
'ABSTRACT' => 'Cyrus Sieve management interface',
'VERSION_FROM' => "@top_srcdir@/perl/sieve/managesieve/managesieve.pm", # finds $VERSION
'MYEXTLIB' => '../lib/.libs/libisieve.a @top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a',
- 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @LIB_REGEX@ @ZLIB@ @SQLITE_LIBADD@ @MYSQL_LIBADD@ @PGSQL_LIBADD@"],
+ 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @LIB_REGEX@ @ZLIB@ @SQLITE_LIBADD@ @MYSQL_LIBADD@ @PGSQL_LIBADD@ -lpcre2-posix"],
'CCFLAGS' => '@GCOV_CFLAGS@',
'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING'
'INC' => "-I@top_srcdir@/lib -I@top_srcdir@/perl/sieve -I@top_srcdir@/perl/sieve/lib @SASLFLAGS@ @SSL_CPPFLAGS@",
diff --git a/perl/imap/Makefile.PL.in b/perl/imap/Makefile.PL.in
index 71416cc..f76cda6 100644
--- a/perl/imap/Makefile.PL.in
+++ b/perl/imap/Makefile.PL.in
@@ -91,7 +91,7 @@ WriteMakefile(
'LD' => $Config{ld} . ' @GCOV_LDFLAGS@',
'OBJECT' => 'IMAP.o',
'MYEXTLIB' => '@top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a',
- 'LIBS' => [ "$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@ @GCOV_LIBS@ @LIBCAP_LIBS@"],
+ 'LIBS' => [ "$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@ @GCOV_LIBS@ @LIBCAP_LIBS@ -lpcre2-posix"],
'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING'
'INC' => "-I@top_srcdir@ -I@top_srcdir@/com_err/et @SASLFLAGS@ @SSL_CPPFLAGS@ @GCOV_CFLAGS@ -I@top_srcdir@/perl/imap",
'EXE_FILES' => [cyradm],

@ -0,0 +1,13 @@
diff --git a/lib/util.c b/lib/util.c
index a2eae15..ef8c25b 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -1188,7 +1188,7 @@ EXPORTED int buf_getline(struct buf *buf, FILE *fp)
#ifdef HAVE_DECLARE_OPTIMIZE
EXPORTED inline size_t buf_len(const struct buf *buf)
- __attribute__((always_inline, optimize("-O3")));
+ __attribute__((optimize("-O3")));
#endif
EXPORTED inline size_t buf_len(const struct buf *buf)
{

@ -0,0 +1,40 @@
diff --git a/Makefile.am b/Makefile.am
index 71333b0..52317da 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2092,14 +2092,14 @@ endif
## The @$(MKDIR_P) line is added due to a bug in Automake 1.10 and can be removed if using Automake 1.12.
@$(MKDIR_P) $(DESTDIR)$(bindir)
cd $(DESTDIR)$(bindir) && \
- $(LN_S) -f imtest httptest && \
- $(LN_S) -f imtest lmtptest && \
- $(LN_S) -f imtest mupdatetest && \
- $(LN_S) -f imtest nntptest && \
- $(LN_S) -f imtest pop3test && \
- $(LN_S) -f imtest sivtest && \
- $(LN_S) -f imtest smtptest && \
- $(LN_S) -f imtest synctest
+ $(LN_S) -f cyr_imtest httptest && \
+ $(LN_S) -f cyr_imtest lmtptest && \
+ $(LN_S) -f cyr_imtest mupdatetest && \
+ $(LN_S) -f cyr_imtest nntptest && \
+ $(LN_S) -f cyr_imtest pop3test && \
+ $(LN_S) -f cyr_imtest sivtest && \
+ $(LN_S) -f cyr_imtest smtptest && \
+ $(LN_S) -f cyr_imtest synctest
uninstall-hook: cyrus-makemaker-uninstall-workaround
if PERL
diff --git a/imtest/imtest.c b/imtest/imtest.c
index 725ff62..d9406e1 100644
--- a/imtest/imtest.c
+++ b/imtest/imtest.c
@@ -3040,7 +3040,7 @@ int main(int argc, char **argv)
}
if (!*prot) {
- if (!strcasecmp(prog, "imtest"))
+ if (!strcasecmp(prog, "cyr_imtest"))
prot = "imap";
else if (!strcasecmp(prog, "pop3test"))
prot = "pop3";

@ -0,0 +1,13 @@
diff --git a/imap/imapd.c b/imap/imapd.c
index 3cc75f5..a22a356 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -8022,7 +8022,7 @@ static void cmd_reconstruct(const char *tag, const char *name, int recursive)
fclose(stdout);
fclose(stderr);
- ret = snprintf(buf, sizeof(buf), "%s/quota", SBIN_DIR);
+ ret = snprintf(buf, sizeof(buf), "%s/cyr_quota", SBIN_DIR);
if(ret < 0 || ret >= (int) sizeof(buf)) {
/* in child, so fatailing won't disconnect our user */
fatal("quota buffer not sufficiently big", EX_CONFIG);

@ -0,0 +1,13 @@
diff --git a/cunit/unit.c b/cunit/unit.c
index 46dc358..ca37f22 100644
--- a/cunit/unit.c
+++ b/cunit/unit.c
@@ -97,7 +97,7 @@ EXPORTED void fatal(const char *s, int code)
}
/* Each test gets a maximum of 20 seconds. */
-#define TEST_TIMEOUT_MS (20*1000)
+#define TEST_TIMEOUT_MS (300*1000)
static jmp_buf jbuf;
static const char *code;

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save