8.6.93
======
Fixes:
* server: incomplete LDAP filter processing (KC-1261 from 8.6.91) had
  caused GAB users to be not shown, which is fixed [KC-1381]


8.6.92 (8.7 beta)
=================
Enhancements:
* dagent: a new config directive "mail_conversion_detail" was added [KC-1342]
* server: support running with old utf8mb3 databases by filtering
  all Emojis/Unicode SMP characters [KC-725]


8.6.91 (8.7 beta)
=================
Fixes:
* server: fix disappearing inbox rules [KC-1359,KF-1940]
* kopano-dbadm: new action "usmp" and "usmp-charset"
* server: no more automatic upgrade to utf8mb4,
  use `kopano-dbadm usmp` instead [KF-1394]
Enhancements:
* server: reduction of search folder overhead (have ECSearchFolders use a thread pool)
* server: implement faster LDAP-based Global Addressbook searches [KC-1261]
* ibrule: show contents of address lists
Changes:
* ol-schema-migrate: add back openldap support with -X option
  (ol-schema-migrate was earlier updated to a new upstream version,
  which changed attribute names to 389-ds)


8.6.90 (8.7 beta)
=================
Fixes:
* server: fix large inbox rule table/properties to "disappear" [KC-1359]
Enhancements:
* kopano-statsd: new daemon that records dagent/server/spooler stats
  (memory use, items processed, etc.) in RRD files.
  This constitutes a preview. RRA parameters are currently hardcoded (7-day
  window, 60-second step). PNG image generation is not included (CPU intensive,
  and styling depends on user taste).
  To enable, set statsclient_interval=60 in dagent.cfg/server.cfg/spooler.cfg.
Changes:
* dagent/spooler: the custom plaintext protocol of StatsClient is
  replaced by a JSON variant [KC-1264]


8.6.82 (8.7 Milestone 2)
========================
Fixes:
* server: logon/logoff times were not reported correctly [KC-1257]
Enhancements:
* daemons: coredumps no longer rely on fs.suid_dumpable [KC-1043]
* server: support for Unicode supplemental plane (Emojis) [KC-725]
* spooler: support for process_model=thread mode [KC-1235]
* spooler: add copy_delegate_mails=move-to-rep config directive [KC-412]
* dagent: "mark mail as read" rule action support [KC-1080]
* kopano-ibrule: new utility for MAPI rules [KC-1229]
* server: experimental "files_v2" attachment storage [KC-567]
Changes:
* dagent: ignore OP_REPLY/OP_FORWARD for autoreplies [KC-1244]
* server: the directives "socketspec", "server_tcp_enabled", "server_tcp_port",
  "server_ssl_enabled", "server_ssl_port" and "server_bind" have been removed
  in favor of "server_listen" and "server_listen_tls".
* dagent: the directives "socketspec", "lmtp_port" and "server_bind" have been
  removed in favor of "lmtp_listen".
* gateway: the directives "socketspec", "imap_enabled", "imap_port",
  "imaps_enabled", "imaps_port", "pop3_enabled", "pop3_port", "pop3s_enabled",
  "pop3s_port" and "server_bind" have been removed in favor of "imap_listen",
  "imaps_listen", "pop3_listen" and "pop3s_listen".
* ical: the directives "socketspec", "ical_enable", "ical_port",
  "icals_enable", "icals_port" and "server_bind" have been removed in favor of
  "ical_listen" and "icals_listen".
Packaging changes:
* The MySQL 8 C API is now supported at build time [KC-1237]


8.6.81 (8.7 Milestone 1)
========================
Fixes:
* ical: better support recurring tasks [KC-781]
Enhancements:
* dagent: support for process_model=thread mode [KC-1170]
* dagent: modern socket specification in dagent.cfg with lmtp_listen= [KC-1174]
* dagent: PF_LOCAL socket support for communicating with postfix [KC-1131]
* dagent: limited support for RFC 6531 (SMTPUTF8) [KC-833]
* gateway: modern socket specification in gateway.cfg with
  imap_listen=, pop3_listen=, etc. [KC-1130]
* ical: "coredump_enable" config directive now recognized [ZCP-11696]
* ical: modern socket specification in ical.cfg with
  ical_listen=, etc. [KC-1187]
* server: multivalue properties are now cached [KC-1162]
* server: LDAP STARTTLS support for user backend [KC-1188]
* spooler: new config value log_raw_message=error [KC-1105]
* daemons: TLS ECDH curves can now be specified in config [KC-1233]
* php: new functions to get freebusy message [KC-1077]
* inetmapi: support multiple recipients in Reply-To [KC-434]
Changes:
* daemons: the default logging target is now syslog/journalctl [KC-1100]
* daemons: SSLv3, TLSv1.0 and TLSv1.1 are now disabled by default [KC-1231]
* dagent will no longer join HTML MIME parts together by default;
  a new config directive "insecure_html_join" was added [KC-1157]
* kopano-mr-accept was replaced by a Python script
* systemd services start with more restrictions [KC-430]
Packaging changes:
* libkcpyplug.so.0 is dlopened from kopano-{dagent,spooler};
  dagent/spooler packages need a Require on it
  for a default install to function.


8.6.x
=====
Fixes:
* dagent: the spam_header_name was not matched correctly [KF-1961]
* dagent/client/libserver: fix inadvertent AF_LOCAL->SSL redirect [KC-1368]
* client: ABEIDs were parsed wrong (and it broke with gcc8) [KC-1386, KS-42325]
* libserver: restore a missing KCERR_NOT_FOUND return code in getStore
Enhancements:
* dbadm: new action "usmp-shrink-columns"
* dagent: add directive to read whitelist domains and body from file
  [KC-1278, KC-1279]
* Support for PHP 7.3 [KC-1372]
Packaging:
* Support for gsoap 2.8.73


8.6.9 (2018-11-28)
==================
Fixes:
* backup: use PR_STORE_ENTRYID instead of PR_STORE_RECORD_KEY
  to open stores [KC-1331]
* php: add missing variable initialization [KS-41996]
* server: cease issuing redirects to AF_LOCAL when connecting
  over AF_INET* [KC-117]
Enhancements:
* inetmapi: support multiple recipients in Reply-To [KC-434]
* server: print openssl errors when they happen [KC-1340]
Packaging:
* Support for gsoap 2.8.71


8.6.8 (2018-10-03)
==================
Fixes:
* dagent/client: fixed broken umlauts in PR_EC_BODY_FILTERED
  when input was not UTF-8 [KC-1225]
* daemons: avoid setting possibly nonexisting locales
  (specifically en_US) [KC-1271]
Enhancements:
* zcontacts: expose mobile phone number, business phone number and company name
  through ZCABContainer [KC-1246]
Changes:
* kopano-server no longer reads the KOPANO_USERSCRIPT_LOCALE variable from
  {/etc/sysconfig/kopano, /etc/default/kopano} and no longer passes it to
  kopano-storeadm invocations.
* Instead, kopano-storeadm reads default_store_locale", from admin.cfg, on its
  own now, thereby making the behavior of kopano-storeadm consistent between
  automatic invocations from kopano-server and manual invocations from a
  command prompt. [KC-1262]


8.6.7 (2018-08-14)
==================
Fixes:
* gateway, spooler: (re-)activate RFC 2047 header generation
  (Outlook is still unable to read the RFC 2231 headers that
  are generated normally) [KC-1226]
* srvadm: make --purge-softdelete=0 work
Enhancements:
* dagent: advertise 8BITMIME/RFC6152 support [KS-41452]
Changes:
* PHP function mapi_icaltomapi now returns MAPI_E_TABLE_EMPTY
  rather than MAPI_E_INVALID_PARAMETER when the .ics file has no (usable)
  appointments. [KC-1227]


8.6.6 (2018-07-31)
==================
Fixes:
* server: avoid SSL crash near ERR_clear_error on shutdown [KC-1132]
* ical: recognize quotes in Content-Type charset [KC-1198]


8.6.5 (2018-07-23)
==================
Fixes:
* kopano-mr-accept.py: preserve categories when processing MR [KC-1195]
* config: update server.cfg comment for owner_auto_full_access [KC-1190]
* php7-ext: cure stack corruption in mapi_vcftomapi [KC-1218]
* gateway: avoid uncaught exception when client disconnects midway [KS-41342]
* dagent: avoid always running into K-2383 [KC-1219]


8.6.4 (2018-07-17)
==================
Fixes:
* build: fix expansion of @PKGLIBEXECDIR@ [KC-1217]
* backup: fix differential deletes [KC-1207]
* installer: use pidfile in all cases for RH6 init script
* backup: don't delete while looping
* common: kopano_dcgettext_wide needs additional UTF-8 hint [KC-1196]


8.6.3 (2018-07-06)
==================
Fixes:
* ical: hopefully cure uncaught exception on OpenBSD
* ical: handle double quotes in Content-Type header [KC-1198]
* server: repair broken timing log messages for ldapplugin [KS-41082]
Enhancements:
* client: now emits warnings about own incomplete PR_RULES_DATA processing
* inetmapi: now emits a warning when runtime vmime is too old [KC-1124]
* server: fewer stat calls to the attachment backend [KC-1192]
Changes:
* dagent: default for log_timestamp changed to "yes" [KC-1152]


8.6.2 (2018-06-07)
==================
Includes changes until including 8.5.z.
Fixes:
* installer: remove duplicate defaults from sample config
* icalmapi: allow RRULE with DTSTART having zulu-marking [KC-414, KC-811]
* icalmapi: do not mark timestamp as UTC when we explicitly give a
  timezone [KC-920, KC-1018]
* icalmapi: do not write empty fields to VCF files [KW-2503]
* scripts: follow symbolic links when running user/group/company scripts,
  and run them in lexicographic order [KC-1171,KC-1172]
* common: force Unicode for internal string translations [KC-1140]
* common: remove bin2hex warning [KC-1178]
Enhancements:
* libicalmapi: allow some properties to be missing when serializing ADR
* kopano-dbadm: default to a loglevel so all dbadm messages get shown [KC-1167]


8.6.1 (2018-04-05)
==================
Includes changes from 8.5.6.
Fixes:
* swig: fix type error in SaveChanges(FILETIME, FILETIME)
* storeadm: honor config file and SSL parameters
Enhancements:
* pyko: add Python 3.4 compatibility


8.6 (2018-03-08)
================
Enhancements:
* spooler: rules support testing for out-of-office flag [KC-119]
* kopano-spamd: new daemon for spam learning in Kopano/SpamAssasin [KC-666]
* kopano-oof: new utility for Out Of Office [KC-981]
* kopano-storeadm: new utility replacing the store functions
  of kopano-admin [KC-982]
* server: JSON Web Token support via OpenID Connect [KC-898]
* daemons: added the --dump-config option [KC-1023]
* inetmapi: ensure all generated messages has a Message-ID [KC-989]
* gateway: handle a zero-length PR_TRANSPORT_MESSAGE_HEADERS property
  as if it was absent [KC-979]
Changes:
* gateway: generate Internet headers if missing [KC-979]
* inetmapi: ensure all messages have a Message-Id [KC-989]
Fixes:
* monitor: changed inconsistency in soft/hard template for
  user/company [KC-795]


8.5.z
=====
Enhancements:
* spooler: allow hard termination via repeated Ctrl-C


8.5.9 (2018-05-16)
==================
Changes:
* daemons: disable SSL renegotiation for OpenSSL 1.1+
* server: invalid port strings are now rejected
* client: quiesce verbose logon failure messages
* installer: set default and UTF-8 locale for services [KC-840, KC-1140]
Fixes:
* dbadm: recognize -c option properly
* libserver: drop all remains of clientupdatestatus table [KC-644]
* dbadm: fix np-defrag crash when run on blank database
* dbadm: fix np-defrag freemap handling [KC-1126]
* gateway: fix crash when new client immediately disconnects
* mapi: avoid garbage at end of malformed RTF [KC-1142]
Enhancements:
* dbadm: add timestamps to log messages
* dbadm: speed up np-defrag by using a reverse run
* dbadm: add helper index creation/removal as an explicit action
* dbadm: ad-hoc progress meter during operation
* dbadm: support mid-way program termination [KC-1156]
* dbadm: add np-remove-unused action
* propmap: expose kopanoHidden LDAP attribute as PR_EC_AB_HIDDEN [KC-63]


8.5.8 (2018-04-18)
==================
Enhancements:
* dbadm: np-repair-dups will now iterate over more tables that have proptags
* dbadm: handle overlapping proptags in np-repair-dups [KC-1126]
* dbadm: respect log_level from server.cfg (e.g. log_level=0x10006 to print
  SQL queries)


8.5.7 (2018-04-18)
==================
Fixes:
* Fix crash due to ODR violation [KF-1245,KC-379]
Enhancements:
* kopano-dbadm: new diagnostics program for offline database
  modification
* kopano-server: allow use of --ignore-da to skip schema update that won't
  complete (log id K-1221) [KC-1123]
* build: support ICU 61


8.5.6 (2018-04-05)
==================
Fixes:
* backup: ignore error when server cannot find attachments [KC-1056]
* server: search folders were not loaded on startup [KC-1074]
* monitor: handle absence of config file [KC-1095]
* dagent: do not treat -d option like -c was given [KC-1096]
* server: fix a case where an old kopano-server would refuse to
  start with a newer database even if --ignore-da was used
* server: fix server/client getting slower when named properties
  are created multiple times [KC-1108]
* client: fix data corruption when server returns high named property
  IDs [KC-1107]
Changes (generally requires admin action):
* inetmapi: stop treating empty indexed_headers as "X-*" [KC-1107]
* dagent: cease indexing X-Headers by default [KC-1107]
* dagent: turn indexed_headers from a prefix list into an exact-match set
  [KC-1107]
* If you need certain e-mail headers copied into named properties, they MUST
  be explicitly listed _one by one_ in dagent.cfg:indexed_headers now.
Enhancements:
* server: reorder SQL log messages so the error is shown first,
  and do say when the message was truncated [KC-1053]


8.5.5 (2018-03-07)
==================
Fixes:
* unixplugin: fix email resolving to multiple users [KC-1066]
* dagent: loglevel was erroneously reduced [KC-1030]
* gateway: check for illegal folder names that crashed the process [KC-1064]
* gateway: slightly improve error reporting around IMToINet
* gateway: make SELECT read the mails stored in the selected folder
* spooler: reduce harmless plugindir warning to info


8.5.4 (2018-02-28)
==================
Fixes:
* libicalmapi: handle BDAY VCF property [KC-1058]
* libicalmapi: add REV VCF property [KC-1058]
* libserver: restore PR_EMS_AB_HOME_MDB [KS-40005]


8.5.3 (2018-02-20)
==================
Fixes:
* php: pass mailuser to ParseICal; this is needed to deduce
  the organizer address
* php: fix wrong initialization of a bool variable
* admin: --user-count failed to print user counts [KC-1048]
* server: fix broken cache handling for ICS bulk restriction matching [KC-912]
Enhancements:
* php: add "ignore_missing_attachments" to sending_options [KC-704]


Release notes for 8.5.2 (2018-02-16)
====================================
Fixes:
* spooler: avoid deadlock due to double mutex acquisition within
  one thread [KC-815]
* php: mapi_icaltomapi did not copy the iCal recipients to the MAPI object
* archiver erroneously forgot to create its SQL tables on first use
* server: stop complaining about server_tcp_port when that is not specified [KC-1038]


Release notes for 8.5.1 (2018-02-13)
====================================
Enhancements:
* server: emit log message when LDAP is missing server info objects [KC-1021]


Release notes for 8.5.0 (2018-02-05)
====================================
Enhancements:
* server: new "server_listen" directive replacing "server_bind" [KC-645]
* server: stronger keep-alive [KC-888,KC-890]
* server: further general performance improvements
  [KC-62,KC-181,KC-889,KC-892,KC-893]
* server: update PR_LOCAL_COMMIT_MAX on hard-deletes [KC-770]
* server: speed up contact and search folder querying [KC-265,KC-941]
* server: skip some unnecessary attachment accesses [KC-769,KC-794]
* spooler: introduce indexed_headers config directive [KC-948]
* search: pass "limit_results" to xapian to improve performance [KC-786]
* search: optionally index draft folders [KC-787]
* unixplugin: support multiple non_login_shells [KC-824]
* unixplugin: add /sbin/nologin as a non_login_shell
  (new installs only) [KC-824]
* gateway: RFC 6154 support [KC-857]
* dagent: a Python version of kopano-autorespond is available [KC-861]
* kopano-spamd: new program [KC-666]
* icalmapi: support URL, NICKNAME, PRODID in vcards
* php: extend mapi_feature with ST_ONLY_WHEN_OOF [KC-970]
Fixes:
* gateway: generate envelope using inetmapi if not present yet [KC-607]
* spooler: only evaluate rules that are explicitly enabled using
  PR_RULE_STATE [KC-963]
* search: supply a HOME environment (tmpdir) when running
  conversion tools [KC-331]
Changes:
* Support for Debian 7 ended [KC-736]
* /etc/kopano is no longer prepopulated, create .cfg manually if you need to
  override anything [KC-681, KC-978]
* server: remove support for upgrading databases older than ZCP 7.2 [KC-839]
* gateway: use threaded mode for reduced memory usage on many-user systems
  (new installs only) [KC-768]
* gateway: the "imap_store_rfc822" config directive is removed
  [KC-964]
* server: the "counter_reset" config directive is removed [KC-960]
* spooler: the "always_send_utf8" config directive is removed [KC-901]
* client: MAPI provider configuration moved from /etc/mapi to /usr/lib/mapi.d
Packager notes:
* libical 3.x support [KC-920]


Release notes for 8.4.7
=======================
Fixes:
* php: do return true when AbortSubmit succeeded [KW-2087]


Release notes for 8.4.6 (2018-02-02)
====================================
Fixes:
* common: restore support for binary data in RTF [KC-969]
* libserver: store size for orphaned stores was reported incorrectly [KC-984]
* client: have OpenEntry check for NULL entryids and entryids too
  short [KC-932]
* dagent, client: fix nonfunctional HTML filter [KC-953]
* common: switch logging to stderr when pipe dies [KC-815]
* spooler: avoid printing garbage when non-worker child exits [KC-815]


Release notes for 8.4.5 (2017-12-15)
====================================
Fixes:
* treewide: avoid freeing ADRLIST garbage pointers [KC-927]
* libserver: fix waiting for ntlm_auth forever [KC-916]
* libserver: fix use after free in ECCacheManager::GetPropFromObject
  [KC-60, KC-177, KC-355, KC-669, KC-754]


Release notes for 8.4.4 (2017-11-23)
====================================
Fixes:
* common: fix detection of local connections that need not use zlib compression
* libserver: improve ECICS error reporting [KC-880]
* inetmapi: overwrite recipients instead of appending [KC-419]


Release notes for 8.4.3 (2017-11-07)
====================================
Enhancements:
* dagent: enable automated backtraces when invoked with -f [KC-879]
Fixes:
* php5-ext: fix positive retval setting in error case [KC-875]
* dagent: redirect rule led to crash [KC-868,KC-871]


Release notes for 8.4.2 (2017-11-02)
====================================
* server: revert NO_UNSIGNED_SUBTRACTIONS [KC-841,KC-869]


Release notes for 8.4.1 (2017-11-01)
====================================
Fixes:
* Avoid calling srand with 1-second-granular time
* inetmapi: handle empty/invalid Sender in RFC2822 mails [KC-263]
* spooler: for send-later mails, check trash, not outbox [KC-848,KC-863]


Release notes for 8.4.0 (2017-10-30)
====================================
Enhancements:
* dagent, gateway: whitelist-based HTML filter [ZCP-13472]
* New scripts/utilities: kopano-fix-ipm-subtree, kopano-localize-folders,
  kopano-recreate-systemfolders, kopano-rules [KC-533]
* server: drop excessive locking in ECABObjectTable/ECStoreObjectTable hot path
* provider: speed up getIDsFromNames by reducing SQL queries
* server: add LIMIT clauses to single-result SELECT statements [KC-5]
* client: speedup from-scratch MAPI session creation by avoiding
  extraneous logon-logoff cycles during provider initialization [KC-667]
* client: add API for dump+restore of MAPI session profile data so libmapi
  users can skip provider reinitialization at program startup [KC-67,KC-165]
* gateway: add option to ignore commands during IDLE
* gateway: will now warn about IMAP clients using wrong sequence ranges
* php: copy back improvements from the Z-Push project's bundled copy [KC-463]
* search: make searchfolder creation in shared stores configurable [KC-565]
* mapi: disable very slow RTF compression [KC-622]
* server: add entry cache for S3 backend [KC-702]
* icalmapi: handle up to three email addresses in a vcard [KC-420]
* inetmapi: add the right extension for attachments without filename [KC-624]
* search: index embedded messages (recursively) [KC-151]
* migration-pst: new options -S, --clean-folders option [KC-651,KC-485]
* pyko: fall back to search-key to determine recipient email address [KC-566]
* pyko: support processing basic cancellations [KC-612]
* pyko: support cancellation of existing exception [KC-612]
* icalmapi: support ADR, ORG, TITLE tags in VCF files
* swig: lazy opening of folder objects [KC-632]
* backup: the "backup_servers" option is back again [KC-364]
* backup: save and restore store-level ACLs [KC-687]
* backup: use store GUID for backup directory [KC-686]
* backup: merge store-level metadata [KC-627]
Fixes:
* spooler: do not run mr-process before mr-accept [KC-498]
* spooler: do not send deleted send-later mails [KC-848]
* Coverity reports on absent return value checks [KC-595]
* freebusy: avoid potential divison by zero when trying to determine the end
  date of a non-recurring recurrence. [KC-595]
* libserver: ensure same endianess for SOURCEKEYs [KC-628]
* server plugins: more escaping in SQL commands [KC-620]
* gateway: set PR_FOLLOWUP_ICON for WebApp [KC-653]
* gateway: cure slow folder access [KC-853]
* gateway: resolve accessing invalid pointer [KC-817]
* server: avoid crash when NTLM subprocess gives no newline [KC-656]
* pyko: avoid hang on shutdown of Python services with logging [KC-643]
* server: disable reminders from shared stores [KC-728]
* server: improved error reporting when users/groups/group members
  are not found/not complete [KC-497]
* backup: avoid emitting tracebacks [KC-411]
Changes:
* server: the underlying call for traditional-style fd monitoring was
  changed from select(2) to poll(2) [ZCP-13065]
* server: the sync_log_all_changes is obsolete [KC-527]
* server: use SQL autocommit=0 during transactions
* server: stop relying on NO_UNSIGNED_SUBTRACTIONS
  and avoid use of hexadecimal numbers [KC-841]
* server: avoid UB during hostname lookup when host is IPv6-only
* gateway: ignore missing (lost) attachments [KC-363]
* dagent: turn on PHP7 SCL on RHEL6 [KC-621]
* pyko/backup: change error into warning for 'missing' attachments
  [KC-545, KC-555, KC-575]
* server: hide private messages' reminders from shared stores [KC-565]
* server: drop ZCP client update support [KC-644]
Packager notes:
* libicu changed from optional to required build dependency
* kopano-server S3 store required libs3 4.1 [KC-751]
* python/swig is now optional [KC-753]


Release notes for 8.3.5 (unreleased/state of 2017-10-31)
========================================================
Fixes:
* server: complete signal blocking [KC-779]
* ical: avoid freeing garbage pointers [KC-803]
* caldav: fix unbounded copy/iteration past end [KC-792]
* migration-pst: skip archiver properties [KC-812]
* icalmapi: cure a NULL dereference when generating VCFs
* inetmapi: cure a NULL dereference when parsing MDNs [KC-814]
* inetmapi: support embedded messages once again [KC-540, KC-775]
* inetmapi: stop generating <"@"@hostname> [KC-689, KC-772]
* server: admin user is to always open shared reminders [KC-813]
* gateway: fix infinite loop when UID ranges are inverted [KS-38641]
* extra nullptr checks in Util::HrCopyProperty [KC-826]
* server: removing user from folder permission broke [KC-844]
* ldapplugin: fix out-of-bounds reads in SMD5 and SSHA password check
* ldapplugin: avoid triggering crash in DES_fcrypt
* ldapplugin: fix truncated SMD5 hash comparison
* ldapplugin: fix out-of-bounds in b64_encode


Release notes for 8.3.4 (2017-09-01)
====================================
Fixes:
* server: configurable shared reminders [KC-789]
* migration-pst: create unknown named-properties [KC-788]
* server: filter private shared messages from search,
  and filter private shared notifications [KC-565]
* dagent: check quota on delivery
* m4lcommon: ensure right condition for SRowSetPtr::empty [KC-773]
Changes:
* server: rename disable_shared_reminders option [KC-565]


Release notes for 8.3.3 (2017-08-09)
====================================
Fixes:
* gateway: fix another IMAP protocol error [KC-720]
* server: fix depth level count for attachments [KC-745]
* common/spooler: catch a potential pointer underflow [KC-694]
* common: fix incorrect condition in scheduler [KC-638]
  Fixes timing of softdeletes, sync-table cleanups, kopano-monitor.
* server: disable reminders from shared stores [KC-728]
* libserver: avoid creating multi-stream gzip files [KC-104, KC-314, KC-597]
* monitor: do not check quota for admin user [KC-773]
Changes:
* server: build with libs3 4.1 [KC-751]


Release notes for 8.3.2 [2017-07-06]
====================================
Fixes:
* gateway: fix an IMAP protocol error [KC-668]
  Apple Mail/Alpine did not show mails with long encoded subjects
* common: restore ability to output crashdump [KC-630]
* caldav: counter proposal without dates [KC-710]
* inetmapi: avoid short allocation on group expansion [KC-388,KC-727]
* server: support ICS initial sync with more than 100000 items again [KC-683]
Changes:
* server: improve wording of ntlm_auth messages [KC-572]


Release notes for 8.3.1 [2017-06-20]
====================================
Enhancements:
* gateway: add option to ignore commands during IDLE
Fixes:
* dagent.cfg:forward_whitelist_domains commentary has been reworded [KC-593]
* inetmapi: do not force HTML when use_tnef is set to minimal [KC-664]
* spooler: avoid a use-after-free, and a deadlock after this failure [KC-588]
* backup: batch storage updates [KC-662]
* spooler: custom bounce message text for forward_whitelist_domain [KC-618]
* server: avoid unchecked return value and unsigned underflow [KC-656]
* php: rework pointer value storing
* daemons: call initgroups when switching user and don't fall over
  [KC-684,KC-690]


Release notes for 8.3.0 [2017-04-27]
====================================
Enhancements:
* mapi: drop global lock and replace singleton allocmore table by
  per-object vectors [KC-328]
* swig: expose group and company properties in Python [KC-320]
* xapian-compact.py: new -c option to specify config file [KC-205]
* utils: support setting out-of-office without an until-date [KC-275]
* gateway, server: reload SSL certificates on SIGHUP [KC-301]
* gateway: optimize LIST, SELECT, STATUS [KC-490]
* dagent: log_raw_message option can now be used selectively on users [KC-370]
* icalmapi: VCF conversion [KC-420]
* migration-pst: call SaveChanges only once [KC-534]
Fixes:
* pyko: do not throw backtraces on log messages [KC-340]
* server: Ctrl-C now works in gdb [KC-171]
* ics: make creation of new syncids work incrementally [KC-208]
* libserver: change incorrect compare operator for EID_V0 [KC-365]
* migration-pst: show usage, not traceback, for invalid options [KC-372]
* migration-pst: skip root folder more intelligently [KC-487]
* migration-pst: MV properties are handled better [KC-457]
* inetmapi: avoid buffer overread on rejected recipients
  (showed garbage in logs) [KC-398]
* client: add extra checks for EID sizes [KC-500]
* gateway: enforce user and password checking on local socket [KC-396,KC-490]
* caldav: avoid a nullptr dereference [KC-236]
* cachestat: avoid exception and unpack tuple [KC-402]
* ldapplugin: revert "catch empty ldap_search_base" [KC-602]
* spooler: fix crash on forwarding rules [KC-608]
* dagent: avoid shell command injections [KC-619]
* server: avoid returning garbage for getLicenseAuth [KA-2]
Changes:
* server: compressed attachments now get the same permissions as uncompressed
  ones [KC-380]
* server: make softdelete_lifetime config setting a reloadable
  property [KC-472]
* icalmapi: handle missing timezone for RRULE [KC-414]
* backup: maintain deleted folders and add --purge N option [KC-376]
* migration-pst: filter metadata at start of subject [KC-424]
* migration-pst: ignore decode errors [KC-521]
* common: fix empty text bodies when converting U+0000 from
  RTF/HTML [KC-557,KC-580]
* icalmapi: reworked copying description into mail body [KC-568]
Of special mention:
* search: python3 support (but requires new python-xapian and,
  as a result, a db migration or full reindexing)
Developer/packager notes:
* KC variables and functions now live in the KC:: C++ namespace [KC-369]
* Build-time requirements: gsoap >= 2.8.39 [KC-335], libvmime >= 0.9.2,
  boost no longer needed at all [KC-451], xmlto no longer needed at all.


Release notes for 8.2.0 [2017-02-17]
====================================
Fixes:
* backup: avoid exceptions on problematic rules/ACLs/delegates [KC-213,KC-266]
* The comment for server.cfg's "disabled_features" was wrong [KC-262]
* php: fix crash by adding missing pointer type conversions [KC-274]
* dagent: the "Received" debugging header had the wrong target address
* gateway: do not emit an X-Mailer field when retrieving mail [KC-277]
* gateway: report missing attachments over IMAP better [KC-436]
* server/ldap: report empty ldap_search_base setting
* client: verify peer's SSL certificate name [KC-156,KC-409]
* admin: support unwrapping "default:" type URLs [KC-289]
* backup: fix tracebacks when used with ZCP [KC-306,KC-307,KC-308]
* server: implement missing readback of compressed attachments [KC-285]
* dagent: iCal descriptions caused wrong body parts to be displayed [KC-138]
* dagent: mr-process failed to copy attachments to the calendar item [KC-202]
* dagent: restore/rework forced ASCII charset upgrade [KC-294]
* server: S3 attachment size was not calculated [KC-351]
* inetmapi: review misdetection of TNEF necessity for reminders [KC-348]
* icalmapi: unbreak timezone lookup [KC-313]
* icalmapi: handle RRULE with missing timezone [KC-341]
* inetmapi: avoid an infinite recursion on SMIME handling [KC-366]
* inetmapi: avoid buffer overread when generating NDR [KC-398]
* inetmapi: avoid overzealously generating winmail.dat [KC-348]
* server: equalize fs permissions for attachments [KC-380]
* migration-pst: resolve tracebacks [KC-372,KC-373,KC-377]
* migration-pst: do not skip folder when items unprocessible [KC-417]
* common: fix spurious crash in sk_SSL_COMP_free on shutdown [KC-443]
Enhancements:
* client: Kerberos/GSSAPI support [KC-396]
* PST importer [KC-59]
* Python 3 support [KC-48,KC-267]
* search: files are now compacted, and their uid/gid checked [KC-188]
* server: allow search folder creation outside of own store [KC-271]
* dagent: forwarding by rule can be restricted with a whitelist [KC-109]
* search: add script for findroot upgrade [KC-300]
* php: can build with ZTS again [KC-442]
* php: ICS import/export functions [KC-302]
* server: AWS4-HMAC-SHA256 support for S3 [KC-170]
* pyko: permit "public@company" syntax to specify stores [KC-317]
* dagent: new AUTORESPOND_BCC option for use with OOF [KC-319]
* kopano-stats: bind 'q' key to exit as well [KC-105]
* presence: log authentication errors
* Improved PHP7 support [*,KC-330]
* backup: backup deleted items and folders [KC-376]
* backup: add --purge option [KC-376]
* backup: improved logging when ACL does not resolve to user/group [KC-431]
Changes:
* Non-Delivery Reports now originate from "Mail Delivery System"
  (like postfix) instead of yourself [KC-309]
* Support for building with a no-SSLv2 OpenSSL 1.1. [KC-230]
  If you run such a setup, be aware that a config setting like
  "ssl_protocols = !SSLv2" in one or more of kopano-{server,gateway,ical}.cfg
  can inhibit the process from starting.
* Cleanup of the example LDAP configuration files. [KC-229]
  /usr/share/doc/kopano/example-configs/ now has just a ldap.cfg,
  and no more ldap{,ms}.{active-directory,ldap}.cfg.
* The example LDAP config file now has a different proposed value for
  ldap_object_search_filter for OpenLDAP. [KC-218]
* spooler: messages with reminder will be sent with a TNEF copy [KC-152]
* admin: group features will no longer be shown [KC-239]
* search: log to file (if set) instead of stdout [KC-204]
* search: treat '_' as a word break [KC-290]
* swig: resolve crash when python programs end [KC-269]
* config: change ldap_object_search_filter for WebApp to be able to
  search by mail address [KC-337]
* backup: synchronize soft-deleted items [KC-376]
* The RTF encoder incorrectly produced paragraphs where
  it should have created linefeeds [KC-338]
* The RTF decoder failed to see that \uXXXX could start a paragraph [KC-338]
* The RTF decoder erroneously created a new paragraph on \pard [KC-338]
Developer/packager notes:
* Support for building the source with newer gsoap
  (upto and including 2.8.37) [KC-261]
* KC 8.2 is the first to support 2.8.34+ at runtime. [KC-261]
  Earlier KC releases only support gsoap < 2.8.30 because KC was using
  undocumented behavior for which the generator changed the wire protocol.
* New libvmime API is now being used [KC-263]
Internal:
* Many "goto exit" were abolished and reordered [KC-87]
* for() loop verbosity reduced by using range-based loops [KC-88]
* pthread_mutex calls have been switched to std::mutex [KC-191]
* Coverity report fixes and other possible NULL dereferences [KC-23,KC-235]
* Memory leak fixes [KC-93,KC-98,KC-316]
* Reduction of symbol table sizes [KC-20]


Release notes for 8.1.0 [2016-10-05]
====================================
Fixes:
* server: A fast-growing memory leak was resolved [KC-12]
* sql schema: all PRIMARY keys need to be NOT NULL, otherwise a UNIQUE
  key would be required. / MySQL 5.7 support [KC-2]
* server: avoid "netlink: 4 bytes leftover" in dmesg [KC-82]
* ldapplugin: hopefully avoid "Timed out" errors from ldap_search [KC-74]
* swig: resolve a memory leak when using python components [KC-72]
* server: better guard against off-size EntryIDs [KC-60]
* ics: avoid referencing a value-replaced mysql_fetch_lengths array [KC-52]
* backup: restore container classes [KC-22]
* all daemons: fixed coredumps not getting generated most of the time [KC-61]
* all: issue setgroups(2) before setuid(2) [KC-37]
* server: avoid infinite do-nothing loop if tmp_path is unwritable [KC-77]
* backup: users without a store are now ignored [KC-78]
* kopano-mailbox-permissions: resolve a crash involving Unicode [KC-100]
* inetmapi: Message-Id was truncated on send [KC-101]
* inetmapi: character set was ignored when reading TNEF mails
  (mails with a winmail.dat part/attachment) [KC-83]
* python: avoid terminal exception when handling a date past year 9999 [KC-184]
* caldav: Lightning workaround is not to apply to Apple mail client [KC-145]
* search: continue even if xapian db cannot be opened [KC-174]
* search: cure an infinite loop [KC-157]
* backup: miscellaneous [KC-161, KC-162, KC-192]
* init: classic init scripts showed wrong status for python daemons [KC-220]
* client: do check SSL certificate subject names [KC-156]
Enhancements:
* server: add ICS log messages [KC-18]
* server: ship example config files for ldap multi-server [KC-65]
* server: speed up REPLACE-type sql queries [KC-58]
* server: speed up login phase by caching PR_LOGON_TIME [KC-6]
* server: indexing of junk folders can be controlled now [KC-17]
* server: warn about on-disk attachments that have wrong metadata [KC-104]
* libicalmapi: improve fallback scenario to server_timezone in ical.cfg [KC-11]
* tools: add an SPropValue pretty printer for use with gdb
* `systemctl reload` for kopano services is now usable where supported [KC-71]
* RHEL(6) initscripts did not cope with python daemons well [KC-96]
* backup: add option to skip broken attachments [KC-45]
* spooler: rule name is now logged [KC-102]
* archiver: new scripts kopano-archiver-{aclsync,aclset,restore} [KC-39]
* python/swig: resolve some memory leaks [KC-92, KC-95]
* client: permit self-signed certificates [KC-155]
* Add scripts (source tarball only) to inspect/delete stale search folders
  which slow down kopano-server startup and message modification when too many
  have accumulated [KC-140]
* server: the allocator library is now switchable [KC-191, KC-216],
  there is a new option "allocator_library" in server.cfg to control it.
* Initial PHP7 support [KC-130, KC-131, KC-134, KC-158]
  (not complete for Z-Push yet)
Changes:
* search: no longer do indexing on root and Draft folders [KC-57]
* search: index junk folders, but skip updating suggestion list [KC-57]
* Python 2.5 support is removed
* server: libs3 is now dlopened to workaround libldap effects [KC-64]
