diff --git a/VERSION b/VERSION index ee13a2b..1809198 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.0-rc1 +3.4.0 diff --git a/configure b/configure index f844118..63f35e9 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cyrus-imapd 3.4.0-rc1. +# Generated by GNU Autoconf 2.69 for cyrus-imapd 3.4.0. # # Report bugs to . # @@ -650,8 +650,8 @@ # Identity of this package. PACKAGE_NAME='cyrus-imapd' PACKAGE_TARNAME='cyrus-imapd' -PACKAGE_VERSION='3.4.0-rc1' -PACKAGE_STRING='cyrus-imapd 3.4.0-rc1' +PACKAGE_VERSION='3.4.0' +PACKAGE_STRING='cyrus-imapd 3.4.0' PACKAGE_BUGREPORT='https://github.com/cyrusimap/cyrus-imapd/issues' PACKAGE_URL='https://www.cyrusimap.org' @@ -1693,7 +1693,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cyrus-imapd 3.4.0-rc1 to adapt to many kinds of systems. +\`configure' configures cyrus-imapd 3.4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1765,7 +1765,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cyrus-imapd 3.4.0-rc1:";; + short | recursive ) echo "Configuration of cyrus-imapd 3.4.0:";; esac cat <<\_ACEOF @@ -2027,7 +2027,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cyrus-imapd configure 3.4.0-rc1 +cyrus-imapd configure 3.4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2803,7 +2803,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cyrus-imapd $as_me 3.4.0-rc1, which was +It was created by cyrus-imapd $as_me 3.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3303,9 +3303,9 @@ ENABLE_STATIC="$enable_static" -CYRUS_IMAPD_SERIES=`echo 3.4.0-rc1 | cut -d- -f1 | cut -d. -f1-2` -CYRUS_IMAPD_REVISION=`echo 3.4.0-rc1 | cut -d- -f1 | cut -d. -f3` -CYRUS_IMAPD_PATCH=`echo 3.4.0-rc1 | cut -d- -f2-` +CYRUS_IMAPD_SERIES=`echo 3.4.0 | cut -d- -f1 | cut -d. -f1-2` +CYRUS_IMAPD_REVISION=`echo 3.4.0 | cut -d- -f1 | cut -d. -f3` +CYRUS_IMAPD_PATCH=`echo 3.4.0 | cut -d- -f2-` @@ -3917,7 +3917,7 @@ # Define the identity of the package. PACKAGE='cyrus-imapd' - VERSION='3.4.0-rc1' + VERSION='3.4.0' cat >>confdefs.h <<_ACEOF @@ -28436,7 +28436,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cyrus-imapd $as_me 3.4.0-rc1, which was +This file was extended by cyrus-imapd $as_me 3.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28507,7 +28507,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cyrus-imapd config.status 3.4.0-rc1 +cyrus-imapd config.status 3.4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo index c6c51cc..f8d5f47 100644 --- a/doc/html/.buildinfo +++ b/doc/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 763263b151edef4d8f6c575ba5caa2b5 +config: b8a4e2f6ec0adecc7b5cb804a800d913 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/doc/html/_sources/imap/download/release-notes/3.4/x/3.4.0.txt b/doc/html/_sources/imap/download/release-notes/3.4/x/3.4.0.txt new file mode 100644 index 0000000..7cfc73e --- /dev/null +++ b/doc/html/_sources/imap/download/release-notes/3.4/x/3.4.0.txt @@ -0,0 +1,109 @@ +:tocdepth: 3 + +==================================== +Cyrus IMAP 3.4.0 Release Notes +==================================== + +Download from GitHub: + + * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-3.4.0/cyrus-imapd-3.4.0.tar.gz + * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-3.4.0/cyrus-imapd-3.4.0.tar.gz.sig + +.. _relnotes-3.4.0-changes: + +Major changes since the 3.2 series +================================== + +* DAV improvements +* Improved performance for users with large folders +* LITERAL- maximum size is now honoured (:rfc:`7888`) +* Support for the ESORT (but not CONTEXT) extension from :rfc:`5267` +* Experimental :draft:`JMAP for Sieve Scripts ` + support + (requires `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* Experimental :draft:`Handling Message Disposition Notification with JMAP + ` support + (requires `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* Experimental JMAP Backup extension (requires + `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* Experimental JMAP Notes extension (requires + `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* Experimental JMAP Blob extension (requires + `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* Experimental JMAP Mail extension (requires + `jmap_nonstandard_extensions: yes` in :cyrusman:`imapd.conf(5)`). +* New cyrus.index format v17 adds changes_epoch field, needed by JMAP Backups + extension +* New `reverseuniqueids` :cyrusman:`imapd.conf(5)` option (default on), which + improves performance for users with large mailboxes +* Further improvements to the `reverseacls` :cyrusman:`imapd.conf(5)` + performance option +* Improvements to replication reliability and performance +* Experimental vnd.cyrus.log and vnd.cyrus.jmapquery Sieve extensions +* Experimental Sieve Snooze extension based on + :draft:`draft-ietf-extra-sieve-snooze` +* Experimental Sieve mailboxid extension based on + :draft:`draft-ietf-extra-sieve-mailboxid` +* Improvements to conversations +* New `mailbox_maxmessages_addressbook`, `mailbox_maxmessages_calendar`, and + `mailbox_maxmessages_email` :cyrusman:`imapd.conf(5)` options for providing + server-wide limits on the amount of objects in any one mailbox, independently + of quotas. These default to `0` (unlimited) for backward compatibility, but + are highly recommended for protecting your server from misbehaving clients. +* New IMAP create/delete behaviour based on + :draft:`draft-ietf-extra-imap4rev2`: mailboxes containing child mailboxes + can no longer be deleted; and when creating mailboxes, ancestors will be + created as needed. +* CRC32 optimisations +* :cyrusman:`quota(8)` and :cyrusman:`cyr_expire(8)` arguments are now in + the admin namespace like other tools +* Support for per-language indexing and searching +* SNMP support has been removed, as it was broken and unmaintained +* New `sync_rightnow_channel` :cyrusman:`imapd.conf(5)` option to enable + real-time replication to the specified channel as writes occur. +* Caching of mailbox state for quicker replication turnaround. Configure + `sync_cache_db` and `sync_cache_db_path` in :cyrusman:`imapd.conf(5)` to + enable. +* New `search-fuzzy-always` annotation allows per-user override of the + `search_fuzzy_always` :cyrusman:`imapd.conf(5)` option +* New `lmtp_preparse` :cyrusman:`imapd.conf(5)` option for parsing incoming + messages before locking the mailbox. +* New `search_index_skip_users` and `search_index_skip_domains` + :cyrusman:`imapd.conf(5)` options for skipping indexing of particular + users/domains. +* The HTTP Admin module's Currently Running Services feature now works + on the major BSDs (thanks Felix J. Ogris) +* :cyrusman:`squatter(8)` once again supports the ``-s`` option to skip + reindexing mailboxes which were not modified since the last index + (Squat backend only) +* :cyrusman:`squatter(8)` now supports long options +* Improvements to search query normalisation performance + + +Updates to default configuration +================================ + +The :cyrusman:`cyr_info(8)` `conf`, `conf-all` and `conf-default` subcommands +accept an `-s ` argument to highlight :cyrusman:`imapd.conf(5)` +options that are new or whose behaviour has changed since the specified +version. We recommend using this when evaluating a new Cyrus version to +check which configuration options you will need to examine and maybe set or +change during the process. + +* The `annotation_definitions` file is now loaded case-insensitively +* Implementations may want to revisit their `search_normalisation_max` + settings, but its default value 1000 is a good conservative choice. Current + server-grade hardware may use 20000 or more. + +Security fixes +============== + +* None so far + +Significant bugfixes +==================== + +* Fixed: Sieve Editheader Extension (:rfc:`5293`) now works correctly with + respect to section 7, Interaction with Other Sieve Extensions. +* Fixed :issue:`2598`: indexed search now works correctly with Squat engine + again diff --git a/doc/html/_sources/imap/installing.txt b/doc/html/_sources/imap/installing.txt index 9c95762..fc7fa2e 100644 --- a/doc/html/_sources/imap/installing.txt +++ b/doc/html/_sources/imap/installing.txt @@ -127,52 +127,19 @@ sudo -u cyrus ./tools/mkimap -Optional: Setting up SSL certificates +Optional: Setting up TLS certificates ------------------------------------- -Create a TLS certificate using OpenSSL. Generate the certificate and -store it in the /var/lib/cyrus/server.pem file: - -:: - - sudo openssl req -new -x509 -nodes -out /var/lib/cyrus/server.pem \ - -keyout /var/lib/cyrus/server.pem -days 365 \ - -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=localhost" - -This creates a TLS certificate (`-out`) and private key (`-keyout`) in -the `X.509 `_ format (`-x509`). -The certificate is set to expire in 365 days (`-days`) and has default -information set up (`-subj ...`). The contents of the -subj is -non-trivial and defined in `RFC 5280 -`_, a brief summary is available -on `stackoverflow -`_ -which is enough to decode our sample above. - -Great! You should now have a file at /var/lib/cyrus/server.pem. Give -Cyrus access to this file: - -:: - - sudo chown cyrus:mail /var/lib/cyrus/server.pem - -Awesome! Almost done. We will now configure the Cyrus IMAP server to -actually use this TLS certificate. Open your Cyrus configuration file -``/etc/imapd.conf`` and add the following two lines at the end of it: - -:: - - tls_server_cert: /var/lib/cyrus/server.pem - tls_server_key: /var/lib/cyrus/server.pem - -This tells the server where to find the TLS certificate and the key. It -may seem weird to specify the same file twice, but since the file has -the x509 format, the server will know what to do. Cyrus is there for -you, always (unless your hard drive burns down) ! :-) - -The other configuration file we have to edit is ``/etc/cyrus.conf``. -Open it up with your favorite text editor and in the **SERVICES** -section, add (or uncomment) this line: +Obtain a certificate, e.g. from +`Let’s Encrypt `_. You need a file with +the full chain and a private key in +`X.509 `_ format. Adjust the file +owner on these files with ``sudo chown cyrus:mail``. Set the options +``tls_server_cert`` and ``tls_server_key`` in :cyrusman:`imapd.conf(5)` +to point to these files. + +Open ``/etc/cyrus.conf`` and in the **SERVICES** section, add (or +uncomment) this line: :: diff --git a/doc/html/_sources/imap/support/feedback-meetings.txt b/doc/html/_sources/imap/support/feedback-meetings.txt index 2c34bb9..f19e4e2 100644 --- a/doc/html/_sources/imap/support/feedback-meetings.txt +++ b/doc/html/_sources/imap/support/feedback-meetings.txt @@ -9,7 +9,7 @@ Regular contributors catch up online weekly, both as a status checkpoint and to make sure we're all alive! -Meetings are currently held at **Monday 21:00 UTC** via +Meetings are currently held at **Monday 11:00 UTC** via `Zoom `_. It's worth checking on :ref:`IRC ` to confirm the time and URL if nobody else seems to be online. diff --git a/doc/html/_static/jquery.js b/doc/html/_static/jquery.js index 6ffad14..3ca6e1f 100644 --- a/doc/html/_static/jquery.js +++ b/doc/html/_static/jquery.js @@ -9,7 +9,7 @@ * Released under the MIT license * https://jquery.org/license * - * Date: 2019-04-18T20:57Z + * Date: 2021-02-20T20:04Z */ ( function( global, factory ) { @@ -4694,11 +4694,40 @@ +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + // We have to close these tags to support XHTML (#13200) var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten @@ -4711,11 +4740,13 @@ _default: [ 0, "", "" ] }; -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} function getAll( context, tag ) { @@ -4847,32 +4878,6 @@ return fragment; } - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); var documentElement = document.documentElement; @@ -5609,13 +5614,6 @@ var - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ @@ -5814,7 +5812,7 @@ jQuery.extend( { htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); + return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { diff --git a/doc/html/_static/underscore.js b/doc/html/_static/underscore.js index b29332f..4e5e7c4 100644 --- a/doc/html/_static/underscore.js +++ b/doc/html/_static/underscore.js @@ -1408,6 +1408,13 @@ return '\\' + escapes[match]; }; + // In order to prevent third-party code injection through + // `_.templateSettings.variable`, we test it against the following regular + // expression. It is intentionally a bit more liberal than just matching valid + // identifiers, but still prevents possible loopholes through defaults or + // destructuring assignment. + var bareIdentifier = /^\s*(\w|\$)+\s*$/; + // JavaScript micro-templating, similar to John Resig's implementation. // Underscore templating handles arbitrary delimiters, preserves whitespace, // and correctly escapes quotes within interpolated code. @@ -1443,15 +1450,24 @@ }); source += "';\n"; - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + var argument = settings.variable; + if (argument) { + // Insure against third-party code injection. + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; try { - var render = new Function(settings.variable || 'obj', '_', source); + var render = new Function(argument, '_', source); } catch (e) { e.source = source; throw e; @@ -1462,7 +1478,6 @@ }; // Provide the compiled source as a convenience for precompilation. - var argument = settings.variable || 'obj'; template.source = 'function(' + argument + '){\n' + source + '}'; return template; diff --git a/doc/html/contribute.html b/doc/html/contribute.html index 84e2f19..bd2f42b 100644 --- a/doc/html/contribute.html +++ b/doc/html/contribute.html @@ -8,7 +8,7 @@ - We need your help — Cyrus IMAP 3.4.0-rc1 documentation + We need your help — Cyrus IMAP 3.4.0 documentation @@ -35,7 +35,7 @@ - + @@ -324,7 +324,7 @@
  • Mail delivery from your MTA
  • Protocol ports
  • Cyrus config files
  • -
  • Optional: Setting up SSL certificates
  • +
  • Optional: Setting up TLS certificates
  • Prepare ephemeral (run-time) storage directories
  • @@ -763,7 +763,7 @@
      -
    • Docs v3.4.0-rc1 »
    • +
    • Docs v3.4.0 »
    • Developers »
    • @@ -828,7 +828,7 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/imap/download/release-notes/3.5/index.html b/doc/html/imap/download/release-notes/3.5/index.html index ede53a0..77ad124 100644 --- a/doc/html/imap/download/release-notes/3.5/index.html +++ b/doc/html/imap/download/release-notes/3.5/index.html @@ -8,7 +8,7 @@ - Cyrus IMAP 3.5 Tags — Cyrus IMAP 3.4.0-rc1 documentation + Cyrus IMAP 3.5 Tags — Cyrus IMAP 3.4.0 documentation @@ -35,7 +35,7 @@ - + @@ -324,7 +324,7 @@
    • Mail delivery from your MTA
    • Protocol ports
    • Cyrus config files
    • -
    • Optional: Setting up SSL certificates
    • +
    • Optional: Setting up TLS certificates
    • Prepare ephemeral (run-time) storage directories
    @@ -763,7 +763,7 @@
      -
    • Docs v3.4.0-rc1 »
    • +
    • Docs v3.4.0 »
    • Download »
    • @@ -834,7 +834,7 @@