8.5.3 (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


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_protocol = !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]
