# 2.7

- Update dependent web.py to 0.70.

# 2.6

- Improvements:
    - New option (MAILDIR_DOMAIN_HASHED) to hash domain name in maildir path.
      Defaults to `False`.

* Fixed issues:
    - 2 possible XSS vulnerabilities.
      Thanks to Simone Quatrini @surecloudcyber.com.
    - Incorrect time zone (America/Sao_Paulo, GMT-03:00).
      Thanks to Guilherme Rauth.

# 2.5

- Fixed: tools/upgrade_iredadmin.sh, no need to check web.py anymore.

# 2.4

- Improvements:
    - New setting `NO_PROXY`, used to specify hosts which shouldn't be reached
      via proxy (the `HTTP_PROXY` setting).

+ New translation: Romanian (ro_RO).
  Thanks to i-Tom <https://github.com/i-Tom>.

# 2.3

- Fixed issues:
    - Incorrect order of importing web.py module in tools/*.py.

# 2.2

- Fixed issues:
    - tools/cleanup_amavisd_db.py: can not delete old records if column
      `msgs.quar_type` is null.

# 2.1

- Fixed: tools/upgrade_iredadmin.sh: incorrect uwsgi path on CentOS 8.
+ New translation: Swedish (sv_SE).
  Thanks Anders Johansson <johansson _at_ aljmedia.se>.

# 2.0

- Fixed: tools/upgrade_iredadmin.sh: handle uwsgi installed with pip.

# 1.9

- Ship Python module web.py (github.com/webpy/webpy, public domain).
* Improvements:
    + New: tools/promote_user_to_global_admin.py, used to promote an
      existing mail user to be a global admin.

# 1.8.1

- Support CentOS Stream 9, Rocky Linux 9, Alma Linux 9.

# 1.8

- Fixed issues:
    - Default uwsgi buffer size (4096) for iRedAdmin may be too small if
      iRedAdmin is running behind a proxy server. Increased to 8192 now.
      Thanks Marcel for the feedback.

# 1.7

- Fixed issues:
    - Incorrect variable name caused internal server error.
    - Can not delete all admin activities with option 'Delete all in database'.

# 1.6

- Fixed issues:
    - Settings stored in SQL db does not work in command line tools.

# 1.5

- Fixed: normal admin login causes infinite loop.

= 1.4 =
    * Fixed: remove html code used to mark user as normal domain admin.
      Note: Normal domain admin is only supported by iRedAdmin-Pro.

= 1.3 =
    * Able to log to stdout. Should be useful in Docker environment.
    * Activities are logged to SQL by default, it now logs to syslog/stdout too.

= 1.2 =
    * Fixed:
        - [LDAP] Error while updating user's mailbox quota.

= 1.1 =
    * It now works with Python 3. Python 2 support has been completely dropped.
    * Sync code base with the latest iRedAdmin-Pro.
    * New translation: Japanese (ja_JP). Thanks Osakana Taro (osakanataro@github).

= 1.0 =
    * Fixed:
        - Logout causes 'Internal server error'.

= 0.9.9 =
    * Fixed:
        - Can not filter admin log.
        - [LDAP] Not add required attribute/value pair for newly created mail
          user: enabledService=sievetls.

= 0.9.8 =
    * Add new ldap attr/value pair for mail user: enabledService=quota-status.
      Required by the Dovecot `quota-status` service.

= 0.9.7 =
    * New SQL table: iredadmin.settings.

= 0.9.6 =
    * Fixed issues:
        - tools/delete_mailboxes.py:
            - Not skip user account which doesn't have attribute 'homeDirectory'.
            - Remove unused function argument which causes script abort.

= 0.9.5 =
    * Fixed issues:
        - Can not filter admin activity log.
        - tools/delete_mailboxes.py: not verify whether the maildir of removed
          user contains other user's mailbox.

= 0.9.4 =
    * Fixed issues:
        - Upgrade script (tools/upgrade_iredadmin.sh) does not correctly update
          modular nginx config file generated by iRedMail-0.9.7.

= 0.9.3 =

    * Fixed issues:
        - Missing parameter 'AMAVISD_CLEANUP_QUERY_SIZE_LIMIT' in
          libs/default_settings.py.
        - Upgrade script 'tools/upgrade_iredadmin.sh' doesn't correct restart
          web service.

= 0.9.2 =
    * Improvements:
        + Able to set mailbox format while creating new user.

    * Fixed issues:
        - Used an incorrect sql table name while deleting user.

= 0.9.1 =
    * Fixed issues:
        - LDAP backend: update library used to delete LDAP tree.
          This causes iRedAdmin cannot be started on Ubuntu 18.04 with
          python-ldap-3.0.
        - Not add ldap attribute/value pairs required by Dovecot-2.3:
            - enabledService=imaptls
            - enabledService=pop3tls

= 0.9 =
    * Fixed issues:
        - Cannot view domain list and domain profile with MariaDB-10.x.
          Thanks Torkil Liseth <torkil.liseth _at_ gmail.com> for the feedback.

    * New translation:
        - ja_JP (Japanese). Thanks Osakana Taro <osakanataro _at_ gmail>.

= 0.8 =
    * Improvements:
        + Able to generate and verify SHA512 password hash.

    * Fixed issues:
        - tools/upgrade_iredadmin.sh:
            - Not able to upgrade SQL database if we're using a remote MySQL
              server. Fixed by introducing two new command line arguments:
                * SQL_IREDADMIN_USER: specify the sql username.
                * MY_CNF: specify alternative file of /root/.my.cnf.
            - Not copy custom config file 'custom_settings.py' - it's used in
              iRedMail cluster solution.
        - Not correctly query all managed domains.
        - Missing two '%s' for string format.

= 0.7 =
    * Improvements:
        + Able to specify sql table name which is used to store real-time
          mailbox quota usage. Defaults to 'used_quota'.
        + Fix improper links in admin log page.
        + New: tools/update_password_with_csv.py, used to reset password by
          reading password from CSV file (format: '<email> <password>').

= 0.6.3 =
    * Fixed issues:
        - Incorrect variable name in libs/ldaplib/connUtis,py:
          settings.LDAP_SERVER_TYPE -> settings.LDAP_SERVER_PRODUCT_NAME.
        - Cannot delete mail user account due to incorrect PostgreSQL command.

= 0.6.2 =
    * Improvements:
        + Add setting `SESSION_TIMEOUT` to control session timeout.
        + Able to schedule date to delete mailboxes while removing domain and
          user.
        + NEW: tools/delete_mailboxes.py: remove mailboxes which are scheduled
          to be removed.
        + tools/dump_disclaimer.py: able to dump disclaimer for alias domains.

    * Fixed issues:
        - SECURITY: iRedAdmin accepts any password on FreeBSD and OpenBSD
          if password is stored in BCRYPT hash.
        - SQL backends: Cannot identify separately created global admins.
        - OpenBSD ldapd(*) cannot handle MOD_DELETE correctly, it will
          remove all values of this attribute instead of removing just the
          one we specified.

          As a workaround, we define ldap server name in parameter
          'LDAP_SERVER_NAME'. For ldapd, perform one extra LDAP query to get
          all present values of the attribute first, then remove the one we
          want to delete.

= 0.6.1 =
    * Fixed issues:
        + Not specify path to python command to run 'tools/cleanup_db.py' in
          upgrade script, this causes error in cron job.

= 0.6 =
    * Improvements:
        + Easy to set custom logo image, product name and short description.
        + New script: tools/cleanup_db.py. Used to clean up old SQL records in
          sql table `iredadmin.log`.
        + Add 'enabledService=sogo' (LDAP) or 'mailbox.enablesogo=1' (SQL) for
          newly created mail user.

    * Fixed issues:
        - Not add required header (Content-Type: text/html) for web pages.

= 0.5 =
    * Fixed issues:
        - Improper maildir path if username contains more than 3 characters.
          Thanks bardzotrudny <bardzotrudnymail _at_ gmail> for the report in
          forum.

    * Improvements:
        + Log maildir path of deleted user in sql database:
            - OpenLDAP backend: it's stored in 'iredadmin.deleted_mailboxes'.
            - SQL backends: it's stored in 'vmail.deleted_mailboxes'.

= 0.4.3 =
    * New settings for iRedAPD integration in `settings.py`, used to connect
      to iRedAPD SQL database.
    * Improvements:
        + Show iRedMail version number stored in /etc/iredmail-release.
        + tools/cleanup_amavisd_db.py has been rewritten to avoid performance
          issue.

    * Fixed issues:
        + Incorrect set preferred language while updating user profile.
        + Cannot generate proper maildir path when first 3 characters in
          username part of email address contains dot.
        + Cannot verify BCRYPT hash with '{BLF-CRYPT}' prefix.
        + Cannot verify (salted) MD5 hash with '{CRYPT}' prefix.
        + Remove unused template macro in templates/default/macros/general.html.

= 0.4.2 =
    * Sync scripts under 'tools/' with the latest iRedAdmin-Pro release.
    * Fix incorrect parameter name:
      STORE_PASSWORD_IN_PLAIN_TEXT_TEXT -> STORE_PASSWORD_IN_PLAIN_TEXT.

= 0.4.1 =
    * Fixed issues:
        - Not correctly handle incorrect login username/password for OpenLDAP
          backend.

= 0.4 =
    * Improvements:
        + Able to generate 'CRAM-MD5' password hash with command `doveadm pw`.
        + Able to generate bcrypt password hash with Python module 'bcrypt' or
          'py-bcrypt'.
          NOTE: It works on BSD systems, but not Linux. Since libc shpped in
                most Linux distributions doesn't bcrypt, Dovecot cannot verify
                bcrypt hash on Linux.

    * New tool scripts:
        - tools/upgrade_iredadmin.py.
          Used to upgrade iRedAdmin from old release. Works with both
          iRedAdmin open source edition and iRedAdmin-Pro.

        - tools/cleanup_amavisd_db.py.
          Used to Cleanup old records from Amavisd database. It's safe to
          execute it manually.

        - tools/sync_cluebringer_internal_domains.py.
          Sync mail domain names from SQL/LDAP to cluebringer policy group
          '%internal_domains'.

    * Fixed issues:
        - Use VARCHAR(40) to store both IPv4 and IPv6 address.
        - Incorrect regular expression which not support IDN domain name.
        - Incorrect link in sub-navication bar in account profile page.
        - Missing LDAP attribute/value pairs required by Dovecot:
            o enabledService=indexer-worker.
            o enabledService=dsync

= 0.3.3 =
    * Fixed issues:
        - Not remove unused SQL columns for MySQL/PostgreSQL backends.
        - Not render pages in selected language in drop-down list in Login page
          after logged in.
        - Not correctly show current language in drop-down list in Login page.

= 0.3.2 =
    * Fixed issues:
        - Not add enabledService=lmtp for newly created LDAP mail user.

= 0.3.1 =
    * Fixed:
        - [ldap] Didn't add 'enabledService=doveadm' for newly created mail user.

    * Updated translation:
        - hu_HU (Hungarian). Thanks Balázsi Gábor <gapcsi _at_ gmail dot com>.

= 0.3 =
    * Able to choose addition password scheme as default one in OpenLDAP
      backend: SSHA512, MD5.
    * Use python source file as config file. You can convert old ini config
      file with script tools/convert_ini_to_py.py.

= 0.2.2 =
    * New SQL table: deleted_mailboxes. Required by iRedAdmin-Pro, used to
      store basic info of deleted user mailbox, majorly maildir path.
    * New or updated translations:
        + Korean (ko_KR). Thanks Bosung Lee <gotocloud _at_ gotocloud.co.kr>

= 0.2.1 =
    * Improvements:
        + [ldap] Able to manage first/last name in user/admin profile page.
        + New password schemes support: SSHA, SSHA512.
          Note: SSHA512 requires Dovecot-2.0 (and later), Python-2.5 (or
          later).

    * Fixed:
        - Incorrectly unset domainGlobalAdmin status in session after updating
          admin profile.
          Thanks Tue <tt _at_ atorbital.com> and escu <cosmin.necula@gmail> for
          the report.
        - [ldap] Normal user can login and update their own profile, includes
          mail quota.
          Thanks Wesley MOUEDINE ASSABY <wesley _at_ aise.re> for the report.

    * Updated translations:
        + Update Czech (cs_CZ). Thanks Roman Pudil <roman _at_ webhosting.fm>.

= 0.2 =
    * Fixed:
        + [mysql/pgsql] List all users in Admins page.

= 0.1.9 =
    * New features:
        + Mark mail user as global admin.

    * Fixed:
        + Add attribute/value for mail user required by Dovecot-2:
          enabledService=lib-storage.
        + Didn't remove SQL records of real-time mailbox quota while deleting 
          mail domain or user.

    * New and updated translations:
        + Czech (cs_CZ). Thanks Roman Pudil <roman _at_ webhosting.fm>.

= 0.1.8 =
    * Fixed:
        + [pgsql] Don't show link to view all mail aliases in domain profile page.
        + Cannot update user password in pgsql backend.

= 0.1.7 =
    * Based on iRedAdmin-Pro-LDAP-1.7.0, iRedAdmin-Pro-MySQL-1.4.0,
      iRedAdmin-Pro-PGSQL-1.0.

= 0.1.6 =
    * [MySQL] Better SQL performance while listing all domains.
      Thanks atros <christian (at) eol.co.nz>.
    * [LDAP] Add enabledService=lda for newly created mail user. Required by
      Dovecot 2.x.
    * [MySQL] Add an alias account for newly created mail user (address=goto).

= 0.1.5 =
    * Escape untrusted variables in template files.
    * Allow to use domain names which end with 2-6 chars.
      Thanks Julian P. <@consistency.at>.

= 0.1.4 =
    * Based on iRedAdmin-Pro-LDAP-1.4.0, iRedAdmin-Pro-MySQL-1.0.
    * Removed settings: mailbox_type, hashed_maildir.

= 0.1.3 =
    * New translation: pl_PL. Thanks Marcin Oleksinski.
    * Add 'enabledService: internal'.
    * Add storage_node in settings.ini, required in iRedMail-0.6.0.

= 0.1.2 =
    * Add objectClass=amavisAccount for mail user by default.
    * Add enabledService: sieve, sievesecured. Used for Dovecot-1.2.
    * New: Allow to switch language in login page.
    * New translation: de_DE (Deutsch). Thanks Jan Zude (caparcona <at> web.de).
    * New translation: es_ES. Thanks yrjc2004@gmail.
    * New translation: pt_BR (Brazilian Portuguese). Thanks giorgiolago@gmail.
    * New translation: hu_HU (Hungarian). Thanks zolikusz@gmail.

= 0.1.1 =
    * Add run-time language switch support.
    * Add enabledService={pop3secured,imapsecured,managesievesecured}.
    * Add new translation: vi_VN (Vietnamese), zh_CN, zh_TW.
    * Fixed: use 'ENINGE=' instead of 'TYPE='. Thanks peterpp @forum.
    * Show accountStatus image while view/update account profile.
    * Add ou=Externals by default.
    * Show correct http error 404 page.
    * Convert new account name to lower case.
    * Fix incorrect maildir path: missing '/'.
    * Add French translation. Thanks Mael Lesaout (mael.lesaout@gmail).
    * Show multiple values of phone number (telephoneNumber).
    * Show user id while list users.
    * Ability to modify user id (employeeNumber).
    * Fix issue while submit empty display name (cn).

= 0.1 =
    * Initiaize release.
