11.0.2 (2021-05-12)
===================
Fixes:
* icalmapi: not all fields of cantacts end up in VCF [KC-1608]
* common: stderr not logged with unix_system [KC-1872]
* configuration: commented attachment_storage setting does not reflect
  default [KC-1875]
* backup: used diskspace not decreasing after purge [KC-1970]
* pyko: Unable to create items from ics file in public store [KC-1980]
Enhancements:
* dagent: make it possible again to forward auto replied messages
  (configurable) [KC-1525]
* pyko: remove item.filtered_html [KC-1752]
* pyko: remove import * pattern [KC-1799]
* server: enable enable_sql_procedures by default [KC-1855]


11.0.1 (2021-02-08)
===================
Fixes:
* swig: revert to tuples for multi-output functions [KC-1680]
* provider: reject URLs with zero-length domain name
* utils: display root folder as ROOT in mailbox-permissions
* pyko: Set PR_FREEBUSY_ENTRYIDS correctly for a MSR store
Enhancements:
* Add necessary const_cast for compilation with C++14
* Prevent build with SWIG >= 4
* installer: remove obsolete searchscripts
* swig: add PR_EC_SERVER_VERSION property tag
* Make OBSOLETE and UNUSED settings clearly distinct
* Deprecate ldap_authentication_method configuration
* Remove unused server_ssl_protocols variable


11.0.0 (2021-01-19)
===================
All changes from the 10.x branch up to 10.0.7 are included.

10.0.7 (2021-01-13)
===================
Fixes:
* libserver: disable PR_ACCESS shortcut for GetContentsTable entries [KC-1755]
* server: cache can exceed desired size [KC-1764]
* srvadm: only complain about config errors when -c is used [KC-1810]
* libserver: repair user store table returning garbage error values [KC-1818]
* dagent,spooler: fail startup if plugin system not loadable [KC-1823]
* backup: fall back to guid when store.company is not available [KC-1835]
* pyko: disable syslog log method support [KC-1858]
* pyko: honor log_timestamp log setting [KC-1862]
* pyko: check if basedate is not None when accepting meeting request [1871]
* storeadm: Listing orphan stores produces segmentation fault [KC-1873]
* common: Avoid looping available file pointers on startup [KC-1843]
* spooler: pluginmanager uses deprecated python "imp" module [KC-1801]
* common: cure crash when ec_socket calls freeaddrinfo [KC-1889]
* client: read JSON license block for SSO/OIDC logons [KC-1892]
* libserver: remove questionable rejection of different-term OR search
  requests [KC-1385]
* pyko: handle invalid PR_EXTENDED_FOLDER_FLAGS [KC-823]
Enhancements:
* build: replace libkcserver-ldapms.so generation [KC-850]
* cli: add future warning for upcoming deprecation [KC-1778]
* python-scripts: remove from .. import * pattern [KC-1799]
* server: more direct invocation of userscripts [KC-1800]
* server: print license information in log on startup [KC-1812]
* server: speedup cached item expiry [KC-1817]
* server: deliver boolean flag to MAPI clients based on libkustomer ensure
  results [KC-1821]
* ldap: reduce DN cache retrieval time [KC-1876]
* build: make kopano-indexer complation optional [KC-1881]
* libvserver: early-reject/-filter invalid searchfolder criteria [KC-1915]
* cfgchecker: check for +x bits on scripts and programs
* eidprint: decode ZCONTACTS's entryids
Changes:
* kopano-rules: the utility has been removed


10.0.6 (2020-05-24)
===================
All changes from the 9.x branch up to 9.0.9 are included.
Enhancements:
* pyko: Add subject_prefix to meeting request decline
Changes:
* dagent, gateway: drop server-side HTML filtering [KC-1175]


10.0.5 (2020-05-20)
===================
All changes from the 9.x branch up to 9.0.7 are included.
Changes:
* common: process kd_trans rollback even during exceptions
* dagent: failure to run actions will not stop rule processing


10.0.4 (2020-04-10)
===================
All changes from the 9.x branch up to 9.0.6 are included.


10.0.3 (2020-03-17)
===================
All changes from the 9.x branch up to 9.0.5 are included.


10.0.2 (2020-03-06)
===================
All changes from the 9.x branch up to 9.0.4 are included.
* dagent: add processing time stats and publish via surveyclient
* common: fix a malloc/delete[] mismatch in kc_utf8_to_punyaddr
* Respect KOPANO_SOCKET environment variable in all programs
* server: support numeric UID/GID for local_admin_users directive
* daemons: support numeric UID/GID for run_as_* directives


10.0.1 (2020-01-28)
===================
All changes from the 9.x branch up to 9.0.3 are included.
Enhancements:
* client: IDN support [KC-1659]
  Saving PR_EMAIL_ADDRESS/PR_SMTP_ADDRESS will transform
  IDN domains to Punycode.
* In config files, fractional values can now be used for sizes, e.g.
  "cache_cell_size=0.5G"


9.0.11 (2020-07-29)
===================
Changes from the 8.7.x branch up to 8.7.16 are included.
Fixes:
* storeadm: have -M emit a single JSON object [KC-1820]
Changes:
* server: use a lot less LDAP connections [KS-45830]
* server: synchronize SQL column stores.user_id with hierarchy.owner so that
  storeadm -M and -O output are consistent with one another [KC-1819]
* server: cure a case where caches can exceed their desired size [KC-1764]


9.0.10 (2020-07-09)
===================
Changes from the 8.7.x branch up to 8.7.15 are included.
Fixes:
* mapi4linux: fix a refcycle between session and stores/
  move store cache to ZCONTACTS provider [KC-1791]
* m4lcommon: avoid losing rows from ECMemTable
Changes:
* GetContentsTable now produces correct PR_ACCESS columns [KC-1755]
* cli: the utility now emits an obsoletion warning [KC-1778]


9.0.9 (2020-06-22)
==================
Fixes:
* gateway: resolve file descriptors building up /
  mapi4linux: manually break session<->store object_ptr loop [KC-1791]
Changes:
* spooler: avoid premature expansion of distlists into individual
  recipients when the distlist does in fact have an email address /
  m4lcommon: add missing address type promotion when looking up
  ZARAFA->SMTP addresses [KC-1792]
* php-ext: add error reason to error some messages


9.0.8 (2020-06-16)
==================
Changes from the 8.7.x branch up to 8.7.14 are included.


9.0.7 (2020-05-20)
==================
Changes from the 8.7.x branch up to 8.7.13 are included.
Fixes:
* mapi4linux: avoid M4LMAPISession going away while ECMsgStore still alive


9.0.6 (2020-04-15)
==================
Changes from the 8.7.x branch up to 8.7.12 are included.
Enhancements:
* daemons: now run with systemd protections [KC-430]


9.0.5 (2020-03-17)
==================
Changes from the 8.7.x branch up to 2020-03-16 are included.
Enhancements:
* server: new config directive request_log_method and request_log_file
Changes:
* server: The log_level=0x100000 bit (SOAP) no longer has a meaning;
  use the request_log_file mechanism instead.


9.0.4 (2020-03-04)
==================
Changes from the 8.7.x branch up to 2020-03-04 are included.
Fixes:
* common: cure free/delete[] mismatch in hr_logcode2


9.0.3 (2020-01-28)
==================
Changes from the 8.7.x branch up to 2020-01-14 are included.
Enhancements:
* common: avoid computing log messages that will not get shown [KC-1674]
* freebusy: fix crash in RecurrenceState::Exception instantiation


9.0.2 (2019-12-11)
==================
All changes from the 8.7.x branch up to 8.7.9 are included.


9.0.1 (2019-11-29)
==================
All changes from the 8.7.x branch up to 8.7.8 are included.
Enhancements:
* freebusy: generate human-readable string for recurrences [KC-1289]
* storeadm: have `storeadm -M` show mailbox size [KC-1632, KS-43943]
Changes:
* daemons: removed old config file options from before KC 8.7,
  these will now generate an error during startup.


8.7.85 (2019-11-06)
===================
All changes from the 8.7.x branch up to 8.7.7 are included.
Enhancements:
* daemons: support "%xxx"-style interface identifiers in bindspecs
  (the "server_listen" or similarly-named directives in .cfg files)
* client: send fewer logoff calls [KC-1590]
Fixes:
* daemons: AF_LOCAL sockets were erroneously owned by root rather than
  run_as_user [KC-1616]
* pyko: avoid circular strong reference from notification to store [KC-1572]
* php: add missing successful return value for zif_mapi_vcfstomapi [KC-1487]
* client: unbreak translation of newly created store folder names [KC-1607]
Changes:
* dagent: the server_bind_intf option is removed in favor of %xxx
* search: put back the old value for limit_results=1000


8.7.84 (2019-10-04)
===================
All changes from the 8.7.x branch up to 8.7.6 are included.
Enhancements:
* admin: the --mr-process option has been added
* dbadm: the "populate" action has been added
* daemons: the {pop3,imap,etc.}_listen directives can now take an
  interface specifier similar to ping(8), e.g. "%eth0"
* server/ldapplugin: LDAP group membership cache [KC-1588]
Changes:
* server: new installations will use files_v2 by default [KC-567]
* icalmapi: vCard 4.0 (RFC 6350) is now emitted
* kopano-set-oof has been removed; use `kopano-oof` instead [KC-981]
* kopano-localize-folders has been removed; use `kopano-storeadm -Y` instead


8.7.83 (2019-09-12)
===================
All changes from the 8.7.x branch up to 8.7.5 are included.
Enhancements:
* daemons: a new config variable "tls_min_proto" is available
  (kopano-server: "server_tls_min_proto") [KC-1439]
* daemons: SCTP socket support [KC-1508]
* server/client: new RPC for batch creation of folders; this improves
  store creation time by +5–8% [KC-1258]
* client: enable write-caching for properties on stores and folders;
  improves e.g. store creation time by another +17% [KC-1585]
* server: configurable fanout factor for files_v1 attachment backend [KC-1540]
Changes:
* PHP5 support has been dropped [KC-1042]


8.7.82 (2019-07-03)
===================
All changes from the 8.7.x branch up to 8.7.4 are included.
Enhancements:
* php: added PHP API to read multi-vcard VCF [KC-1487]
Changes:
* RHEL6 is no longer officially supported
Fixes:
* server: cure emission of repeated K-1515 messages [KC-1519]


8.7.81 (2019-05-14)
===================
All changes from the 8.7.x branch up to 8.7.2 are included.
Enhancements:
* ldapplugin: 22% speedup in retriving the entire user list [KC-1399]
* client: avoid double-fetching PR_RTF_COMPRESSED_DATA [KC-1349]
* inetmapi: added C++ API to read multi-vcard VCF [KC-1291]
Changes:
* dagent, spooler: plugins are disabled by default now [KC-1475]
  Add plugin_enabled=yes to your .cfg if needed.
* dagent, spooler: threaded more is enabled by default now [KC-1475]
* search: index_attachments is disabled by default now [KC-1455]
* daemons: the -F option is removed, daemons always start in foreground
  mode now [KC-1428]
* server: support for non-Unicode connections used by ZCP 5.x was removed
* server: support for some legacy RPCs used by ZCP 6.30 was removed
* Support for Python 2.x was removed
* The python-zarafa compat module was removed
* The object-oriented MAPI classes (written in PHP) were removed from KC.
  A copy survives in kopano-webapp. What remains in KC is the set of
  MAPI-related procedural functions provided by the PHP plugin
  (written in C++).
* kopano-rest has been moved to a separate git repository
Packaging changes:
* gsoap 2.8.73 or higher is now required


8.7.16 (2020-07-27)
===================
Fixes:
* srvadm: read admin.cfg by default [KC-1815]
* srvadm: do pass TLS certificates to server [KC-1815]
* libserver: resolve crash in notify_mgr thread on shutdown [KS-45804]


8.7.15 (2020-07-09)
===================
Fixes:
* libserver: fix off by one crash in
  ECGenericObjectTable::AddCategoryBeforeAddRow [KC-1798]
* libserver: fix crash in ECNotifyClient::Reregister [KC-1806]
* storeadm: support -D on global public store [KS-45824]
* storeadm: support -D on company public stores [KS-45824]
Changes:
* storeadm: -O distinguishes "entities with no store" more
  precisely now as "users without private store" and
  "companies without public store" [KC-1805]


8.7.14 (2020-06-11)
===================
* build: support gsoap 2.8.103
* libserver: add thread_end calls for ECSchedule threads [KC-1767]
* server: add debug messages for SQL connection object states [KC-1767]
* mapi4linux: cure a pointer mismatch that could lead to a crash
  in M4LAddrBook::OpenEntry / (PHP)mapi_ab_openentry [KC-1790]


8.7.13 (2020-05-20)
===================
Enhancements:
* gateway: gateway: support entering MAPI folders with slash in it [KS-45600]
* server: support files_v2 attachment directory that has had files
  saved with KC 9.x [KC-1760]
Fixes:
* admin: fix stack exhaustion calling AclRightsToString [KS-44473]
* admin: fix out-of-bounds access in ConsoleTable [KC-1758]
* admin: show more specific error text for attached archive ACLs [KS-44473]
* dagent: change SMTP error code for plugin failure from permanent to
  transient category [KS-45558]
* doc: update kopano-server.cfg:thread_limit default [KS-46529]
* server: call ntlm_auth with absolute path [KS-45579]
* server: recognize more MariaDB-specific status codes and initiate
  reconnect if needed [KS-45596, KS-45601]
* server: fix a cache pollution with PR_HTML and PR_RTF_COMPRESSED [KS-43977]
* stats: fix misprinting of CPUTIME column in `kopano-stats --top`


8.7.12 (2020-04-09)
===================
Enhancements:
* icalmapi: support reading multi-iCal and multi-vCard files [KC-1291]
* storeadm: show store guid and sizes for mailbox overview (-M)
* client: avoid unnecessary property computations [KC-1660]
Changes:
* Process RES_CONTENT restrictions with Unicode normalization [KC-1672]
Fixes:
* dagent, spooler: workaround crash during Python GC [KC-1427]
* dagent, gateway: avoid stack exhaustion in librosie [KC-1653]
* dagent: force indexing of X-Kopano-Rule-Action to make forward loop detection
  functional again [KC-1647]
* spooler: do not emit "not found" when rule does not match [KS-44090]
* gateway: avoid non-atomic replacement of SSL context [KC-1530]
* gateway: avoid one crash case for deeply-nested HTML mail [KC-1653]
* admin: admin: fix error message when --{udqw,udqs,udqh} is missing
* server: cure a mysql wait phase during shutdown [KC-1645]
* server: cure a crash when the SQL server has shut down [KC-1578]
* daemons: avoid deadlock during signal handling [KC-1654]
* libserver: fix use-after-free and crash on shutdown [KC-1662]
* better stack traces when dying on uncaught exceptions [KC-1670]
* gateway, ical: new-style OpenSSL 1.1 API setup [KF-2886]
* fsck: consistent unique entity check [KC-1665]
* Various null deref warnings from clang --analyze were fixed
* pymapi, pyko: emit tuples rather than arrays for functions with
  multiple return values (e.g.  [KC-1680]
* ical: treat HTTP headers as case-insensitive
* libserver: resolve memory leak of MYSQL objects [KC-1645]


8.7.9 (2019-12-10)
==================
Enhancements:
* cfgchecker: cure compiler warnings
* common: replace kc_perror call by ec_perror [KC-1639]
Fixes:
* libserver: adjust version notice for old ZCP database schemas [KF-2841]
* libserver: drop K-1255 message [KF-2833]
* server: fix dreaded "SSL_accept: (null)" reporting


8.7.8 (2019-11-29)
==================
Enhancements:
* storeadm: print entity types in orphan list [KC-718]
* client: improve dreaded "gsoap connect: ()" reporting
* ECtools: add kopano-vcfimport
Fixes:
* dbadm: selecting across "names" table needs
  NO_UNSIGNED_SUBTRACTIONS [KF-2757]
* doc: adjust LDAP attribute names for OpenLDAP ANR search [KC-494]
* client: fix always reject when attempting OIDC/SSO impersonation
  login [KC-1624]
* client: resolve rogue file descriptor closing [KC-1397, KC-1462, KC-1518,
  KC-1584, KS-42330, KS-43193, KS-43409, KS-43618, KS-43677, KS-43693,
  KS-43907, KS-43925, KS-43936]
* dagent: resolve crash when appointment has empty organizer [KC-1637]
* spooler: regard redirected messages as having recipients [KC-1638]


8.7.7 (2019-11-06)
==================
Enhancements:
* icalmapi: export more MAPI field to VCF and import vice-versa [KC-1608]
Fixes:
* libserver: avoid null deref when GIG on RFC2307 is attempted [KC-1606]
* storeadm: allow combining -P and -k [KF-2741]
* fsck: fix broken recipient lists deduplication [KC-1562]
* oof: -x option should prompt for plain password [KC-1617]
* oof: avoid printing set=null [KC-1629]
* freebusy: avoid out of bounds access in HrAddFBBlock [KC-235]
* admin: cannot change group fullname [KC-734]
* doc: update misspelling and behavior of --verbose [KC-1554]
* doc: quota recipients only work with companies [KC-735]


8.7.6 (2019-10-01)
==================
Fixes:
* spooler: shorter Message-Ids to adhere to RFC [KC-1548]
* spooler: avoid setting PYTHONPATH repeatedly [KC-1558]
* server: remove assertions on normal behavior [KC-1551, KC-1552, KC-1011]
* server: avoid emission of K-1504 log messages [KC-1589]
* gateway: plug a memory leak [KC-1397]
* server: reduce K-1515 warnings in normal situations [KF-2677]
* server: cure use-after-free on shutdown [KC-1531]
* dagent: split OP_REPLY/OP_FORWARD header match lists [KC-1445]
* dagent: mails with ICS attachments now remain IPM.Note [KC-1555]
Enhancements:
* icalmapi: import and export middle names, prefixes and suffixes
  from/to vCards [KC-1595]


8.7.5 (2019-07-09)
==================
Fixes:
* php: add a missing vector resize call to
  mapi_freebusysupport_loadupdate [KC-1539]
* libserver: fix "withholding" of properties from clients [KC-1547]


8.7.4 (2019-07-03)
==================
Fixes:
* storeadm: accept -l option even if the non-UTF8 variant of that locale is
  absent from the system [KC-1429]
* dagent: rule matching against very large subject lines was made
  functional [KC-1478]
* gateway: guard against a null dereference [KC-1505]
* inetmapi: avoid emitting multi-encoded words to work around Outlook
  bugs [KC-1506]
* daemons: resolved a startup failure when socket activation was used [KC-1513]
* daemons: resolved kopano-server.socket entering a failed state after stopping
  kopano-server.service [KC-1514]
* dagent: cured a silent exit when "lmtp_listen" contained garbage [KC-1516]
* dagent: evalute entire transport headers [KC-1443]
* freebusy: fix potential freeing of uninitialized pointers [KC-1539]
* pyko: avoid local time conversion of UTC dates
Enhancements:
* logrotate will now use `systemctl reload` if available [GH-PR-14]
* doc: new manpages kopano-admin.cfg(5) and kopano-statsd.cfg(5)
* admin: do not abort out on --details SYSTEM
* server: report highest objectid to statsd [KC-1523]


8.7.3 (2019-05-27)
==================
Fixes:
* stats: print "PR_..." instead of proptag numbers [KC-1495]
* server: no more unbounded thread number increase [KC-1446]
* php: fix crash in zif_mapi_getprops [KC-1507]


8.7.2 (2019-05-13)
==================
Fixes:
* server: complete utf8mb4->utf8 fallback for RHEL6 [KC-1423]
* inetmapi: modified appointments need to produce a new Message-ID [KC-1458]
* dagent: set Bcc/RecipMe flags appropriately [KC-319]
* inetmapi: restore FQDN in Message-IDs [KC-1393]
* inetmapi: parse fake "From:" header better to hinder proliferation of
  impersonations [KC-1350]


8.7.1 (2019-04-17)
==================
Fixes:
* dagent: standard casing for RFC 5322 headers [KF-2100]
* daemons: do not fail startup on IPv4-only systems [KC-1400]
* Feed HTML through libtidy before using it for the to-plaintext
  conversion stage [KS-40722]
* server: fix crash on shutdown [KF-2179]
* server: address a potential crash due to type mismatch [KF-2151]
* server: use utf8mb3 with mysql 5.1 [KC-1423]
* server: avoid entering truncated tproperties data into the cache [KC-1417]
* server: avoid using OpenLDAP-specific filters that 389-ds does not
  know about [KC-1402]
* server: fixed TLS negotiation errors with openSSL 1.1.1 [KC-1439]
* spooler: avoid unnecessary QP encoding in header fields [KC-1430]
* spooler: fix hang on process termination [KC-1449]
* srvadm: do not complain about default_store_locale [KC-1416]
* dbadm: some long-running statements can now be run in parallel
  with the new -j option [KS-42617]
* pyko: expand stubbed messages when dumping [KC-1159,KC-1168]
* pyko: don't mix str/int busy statuses [KC-1433]
* oof: fix erroneous -u parsing [KC-1425]
* oof: make --message option set the right property [KC-1435]
* dagent: some large properties need different kind of loading [KC-1443]
Enhancements:
* backup: do record outofoffice settings
* php-ext: performance measurement log now contains a timestamp, thread
  identifier, and global monotonic counter. This can be used for estimating the
  achieved command rate.


8.6.92 -> 8.7.0 (2019-01-24)
============================
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) (2019-01-11)
==============================
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) (2018-12-21)
==============================
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) (2018-10-18)
==============================
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) (2018-10-12)
===================================
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) (2018-08-10)
===================================
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
* php7-ext: cease modifying potentially-immutable PHP variables [KC-1355]
*  gateway: avoid uncaught exception when client disconnects midway [KC-1452]
* client: add a nullptr check when parsing copying resolvePseudoUrlResponse
  struct [KC-1453]
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 division 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]
