# 5.4 * RESTful API: + `GET /api/users/`: Export used quota info. * Fixed issues: - [API] Disabling domain causes losing inbound BCC email address. - Can not save few per-admin privileges. - Not respect server wide min/max password lengths while adding new user. - tools/cleanup_amavisd_db.py: Can not clean up old SQL records if column "quar_type" value is null. # 5.3 + Ship Python module web.py (github.com/webpy/webpy, public domain). * RESTful API: + Able to reset passwords of all users under same domain. * Improvements: + New: tools/promote_user_to_global_admin.py, used to promote an existing mail user to be a global admin. - New config parameter: SET_PASSWORD_CHANGE_DATE_FOR_NEW_USER. Set password last change date for newly created user. Defaults to True. If you want to force end user to change password when first login or send first email (with iRedAPD plugin `*_force_change_password`), please set it to False. * Fixed issues: - Can not delete user if email address ends with a whitespace. - Domain admin can still login when domain is disabled. Thanks Linh Phan for the feedback. - tools/upgrade_iredadmin.sh: incorrect uwsgi path on CentOS 8. - tools/reset_user_password.py: Not set password last change date when reset user password. + Translations: - New: Swedish (sv_SE). Thanks Anders Johansson . # 5.2 * Improvements: - Return server-side-render text for new mailing list subscription API. - Add link to mailing list profile page in "Top Senders" section on Dashboard page. - Support custom email notification template file on server deployed with iRedMail Easy platform: `/opt/iredmail/custom/iredadmin/notify_quarantined_recipients.html` * Fixed issues: - Normal admin can view all admin's activities. - 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. - Can not list disabled domains. Thanks Linh Phan for the report. - Programming error while accessing newsletter subscription page. # 5.1 * Improvements: - tools/import_users.py now supports employee id. * Fixed issues: - Removing domain should not remove all email forwarding destinations which are users under the removed domain. Thanks to Anzulo1984@GitHub for the report. - Disallow non-ascii characters in email username and domain name. - Not support email address with IP address as domain name. For example, `user@[192.168.1.1]`. # 5.0 * Fixed issues: - RESTful API: Updating user profile causes empty value of SQL column `mailbox.mailboxfolder`. - Self-service: missing pagination on moderated mailing lists page. - Settings stored in SQL db does not work in command line tools. - Domain admin was able to set unlimit mailbox quota for user even there's a domain-level mailbox quota. - Error displaying banned rules if it's empty. Thanks to laiyukwa@GitHub for the report. - Invalid function argument while calling API to create new user. Thanks to Dmitriy Maksimov for the report. - Can not set per-user and per-domain banned rules. Thanks to Peter Schumacher for the report. - Not correctly display number of banned IP addresses on Dashboard page. - Not disable web browser autocomplete feature for input fields like username and passwords while creating new account. - Not correctly detect new version and display a button to request download link. * Updated translations. + Danish (da_DK). Thanks Søren Mortensen . = 4.9 = * Improvements: - Able to enable or disable per-user SOGo webmail, calendar and activesync service. - Allow to assign Amavisd ban rules to user, domain or globally. FYI: https://docs.iredmail.org/iredadmin-pro.custom.ban.rules.html - Able to view all users' last login dates, including imap/pop3 login, and latest delivered message. - Add link to system settings in "About mail logs" modal. * Fixed issues: - Can not correct display time stamp in "Sent/Received Emails" page. - It now allows omit mailbox folder name while creating new user. - Admin can not update (subscribeable) mailing list owners and moderators. = 4.8 = * Improvements: + (base64) Decode log lines stored by Fail2ban. + Able to limit max recipients of single message. Note: iRedAPD-5.0 is required. + Standalone admin account now has timezone setting. + Self-service: able to manage owned or moderated mailing lists, including updating profile, members, newsletter-style subscription. Thanks to Konrad Oleksinski for the sponsorship. + Able to log to stdout. Thanks to tms0@GitHub. + Activities are logged to SQL db by default, it now logs to syslog/stdout too. * Fixed issues: - Not update moderator and owner of mailing list while changing user's email address. - Not reject emails before queue if user is marked as not to accept emails. - tools/cleanup_amavisd_db.py: Not correctly remove old records. - tools/import_users.py: can not import users correctly with Python 3. * Updated translations. + Spanish (es_ES). Thanks Gonzalo Meneses (alakentu@github). = 4.7 = * Fixed issues: - No menu item to visit rejected smtp sessions. - Error while searching mail accounts. - Not keep pagination on rejected smtp sessions page. - Error (in some cases) while sending notification emails to recipients of quarantined messages. - Error while viewing quarantined mails. - Error while exporting per-domain accounts. - Error while whitelisting IP for senderscore service. - Error while converting timestamp to local timezone. - Error while sending notification to recipient of quarantined mails. = 4.6 = * Improvements: - Able to search mailing list account. * Fixed issues: - Error while deleting all admin activitys (`Activites -> Admin Log`). - Can not view quarantined mail message. - Error while searching mail accounts. - Can not view user profile if domain has mulitple mail alias accounts. - Several errors in upgrade script `tools/upgrade_iredadmin.sh`. = 4.5 = * Improvements: - Python-3.5 or later is required. Python-2 support has been dropped completely. * Fixed issues: - Cannot always successfully start `iredadmin` service on FreeBSD. - Can not get count of banned IP addresses in some case. - Not validate whitelist addresses for greylisting service. - Not remove non-existing addresses in same domain while updating per-domain catch-all addresses. - Can not set relay without verifying local recipients. - Fix few functions which takes no keyword arguments. - Not validate existence of local email address(es) while updating per-user BCC addresses. - Not keep pagination after performed action on user list page. - `Top Senders` on Dashboard page doesn't work. * Updated translations. - Japanese (ja_JP). Thanks Osakana Taro (osakanataro@github). - Danish (da_DK). Thanks Søren Mortensen . = 4.4 = * RESTful API: + Able to whitelist IP for senderscore checking (applied by iRedAPD plugin `senderscore`) on `SMTP sessions` page. - URL: `PUT /api/wblist/senderscore/whitelist/` + Able to whitelist IP for greylisting service (applied by iRedAPD plugin `greylisting`) on `SMTP sessions` page. - URL: `PUT /api/greylisting/global/whitelist/` * Improvements: - Display max user quota besides the "Default quota of new user" input field for normal admin. - Able to view log lines which triggered the ban by Fail2ban. - Able to view reverse DNS name of banned IP address. - Able to specify hours of statistics data on Dashboard page with parameter `STATISTICS_HOURS`, defaults to `24` hours. - Create connection to iRedAPD database only once. - Able to verify CRYPT-SHA-512 password hash (handled by 'doveadm pw'). * Fixed issues: - Incorrect time zone for Turkey/Istanbul, it's now GMT+03:00. - The sender of subscription confirmation was hard-coded to `no-reply@localhost.local`, it's now set to mailing list itself. - SMTP session time is not rendered with correct time zone. - If either parameter `amavisd_enable_logging` or `amavisd_enable_quarantine` is set to False, daily cron job `tools/cleanup_amavisd_db.py` will not run. = 4.3 = * Improvements: - Able to unban IP addresses. Note: If your server was deployed with iRedMail Easy platform, this should be enabled by default. If deployed with the downloadable iRedMail installer, please follow our tutorial to configure Fail2ban to store banned IP in SQL database: https://docs.iredmail.org/fail2ban.sql.html - Able to manage alias addresses for mailing list account. - Failed login will be logged to syslog. - It now display last login time of both IMAP and POP3 logins. * Fixed issues: - Not disable access to per-user or per-domain (Sent/Received Mails) activity pages if admin is disallowed to view the activities. * Updated translations. - New: Latvian (lv_LV). Thanks Juris BALANDIS (JurisBALANDIS@GitHub). - Triditional Chinese (zh_TW). Thanks WildfootW@GitHub. - Simplified Chinese (zh_CN). = 4.2 = * RESTful API: - Fixed: resetting mail forwarding (with `forwarding=`) generates incorrect SQL record. * Improvements: - Allow to mark domain as backup mx without specifying primary mx (Postfix will query DNS record to get primary mx). - Normal admin can not set min/max password lengths shorter/longer than global settings. - Able to disallow normal admin to manage min/max password lengths. - Able to view banned IP addresses (in Fail2ban). Note: This is available only when you setup iRedMail server with iRedMail Easy platform. * Fixed issues: - Not store password last change date while updating user password via RESTful API. - Not correctly remove user profiles while iRedAPD and Amavisd are disabled. - Modified incorrect settings while updating admin profile. = 4.1.2 = * Fixed issues: - Can not save mail forwarding addresses. - Incorrect pagination on smtp outbound session history page. - Incorrect pagination on disabled mail alias account list page. = 4.1.1 = * Fixed issues: - Can not save a copy of forwarded messages. Thanks Mark (mark _at_ bluebanana.com) for the feedback. = 4.1 = * RESTful API: - Able to add new or remove existing mail forwarding addresses. - URL: `PUT /api/user/` - Parameter names: `addForwarding`, `removeForwarding` * Improvements: - Disallow few characters in local accounts' email addresses: +, =, /. - Simplify uwsgi log format. * Fixed issues: - Incorrect syslog id in uwsgi config file. - Log of outbound session with sasl_username filter doesn't work. - Incorrect pagination on smtp session history page. = 4.0 = * Improvements: - Display number of smtp authentications and rejected smtp sessions on Dashboard page. NOTE: This feature requires iRedAPD-3.2. - Display detailed logs of smtp authentication and rejected smtp sessions. NOTE: This feature requires iRedAPD-3.2. * Fixed issues: - Not correctly convert mail alias account to subscribeable mailing list. - Can not whitelist/blacklist top-level domain name like `.com` as reverse DNS domain name. - Can not correctly count in/out emails. = 3.9 = * Fixed issues: - Do not display menu `System -> Settings` for normal admin. Thanks Eckehardt Riedel for the feedback. - Pagenation on mailing lists page doesn't work. - Per-domain password length is not applied. - Admin log page doesn't work in some cases. - tools/upgrade_iredadmin.sh: not set correct syslog socket on FreeBSD. = 3.8 = * Fixed issues: - Not correctly update spam policy to quarantine detected virus. - Not ignore white/blacklists which contain non-ascii chars. - Not display password last change date with correct time zone. = 3.7 = * Improvements: - tools/bulk_import.py: able to disable https SSL cert verification. * Fixed issues: - Can not filter existing email addresses due to a programming error. Thanks to sfletcher for the report in forum. = 3.6 = * RESTful API: - Able to manage global, per-domain and per-user whitelists and blacklists. - Fixed: Not check whether mail alias account exists before updating profile. Thanks David Good for the report. * Improvements: - iRedAdmin-Pro now logs error message to syslog, facility "local5". - Able to verify SHA512-CRYPT password hash with `doveadm pw` command. * Fixed issues: - Can not save mail alias members with extension (e.g. user+folder@domain.com). - If user is disabled, newly added forwarding addresses were not disabled. - Activating a disabled mail alias account doesn't activate its members. Thanks Susan for the report and firming video to help reproduce the issue. - Can not delete mail alias account on search result page. Thanks marius.timukas for the report in forum. - Not correctly enable disabled user. * Misc: - File renamed: tools/bulk_import.py -> tools/import_users.py. = 3.5 = * RESTful API: - Able to create mail user with a password hash instead of plain password (parameter name `password_hash`). - Fixed: can not update max message size of subscribeable mailing list. - Fixed: can not update per-user services. Thanks Christopher Dent for the report. * Improvements: + Display user last login date on search result page. Note: it requires additional setup by following this tutorial: https://docs.iredmail.org/track.user.last.login.html * Fixed issues: - Not correctly redirect to mailing list profile page on `System -> Received Mails` page. - Can not save outbound throttle setting in some cases. - Improper tooltip text for viewing/editing domain profile on domain list page. - Not correctly get first character of account email addresses. - Not convert values of global settings returned by SQL query to correct formats. - Do not log error message if python module netifaces is not available. - Do not log error message for PostgreSQL backend if no sql table `vmail.last_login`. - tools/cleanup_amavisd_db.py: not establish proper SQL connection. - tools/update_mailbox_quota.py: not read quota size correctly. - tools/bulk_import.py: read mail user accounts from text file and import them with the RESTful API interface. = 3.4 = * RESTful API: * Always return user last login date. URIs: - `GET /api/user/` - `GET /api/users/` * Improvements: + Correctly show first character of existing mail addresses on user/maillist/alias account list page. + Display user last login date on user list page and profile page. Note: This requires Dovecot config change, please follow our tutorial here: https://docs.iredmail.org/track.user.last.login.html + Store and manage few iRedAdmin-Pro settings in SQL db. Updating iRedAdmin-Pro config file `settings.py` still works, but settings in SQL db have higher priority. + tools/export_last_login.py: used to export user last login time. Note: You need to follow this tutorial to enable last_login plugin in Dovecot: https://docs.iredmail.org/track.user.last.login.html * Fixed issues: - Not display the saved value for disabling account creating in domain profile page. - Can not get first character of username/domain with PostgreSQL 8.x on CentOS 6. Thanks Stanislav Studený for the report and fix. - Can not limit number of mailing lists while creating mail domain. - It counts virus email which is not quarantined in SQL db. = 3.3 = * RESTful API: * Able to update account status of mail alias account. URI: `PUT /api/alias/`, parameter `accountStatus` * Able to update per-user sender/recipient bcc. URI: `PUT /api/user/` * Able to get all users' and aliases' profiles of given domain. URI: `GET /api/users/` URI: `GET /api/aliases/` * Improvements: + Able to sort mail users by display name. * Fixed issues: - tools/delete_mailboxes.py: - (python) syntax error when removes mailboxes without timestamp in maildir path. = 3.2 = * Fixed issues: - Not correctly remove user from subscribed mailing list while removing mail user. - Can not filter admin activity log. - Not correct detect allowed IP for global admins. Thanks Ralph Hensel for the report in iRedMail Easy platform. - Can not delete all quarantined emails in database. - Not remove user from subscribed mailing lists while removing user. - Can not request download link of new iRedAdmin-Pro release. - tools/delete_mailboxes.py: not verify whether the maildir of removed user contains other user's mailbox. * Translations: - Updated: German (de_DE). Thanks Martin Hofheinz . Thanks toxicvengeance @ github. Thanks lug-gh @ github. = 3.1 = * Fixed issues: - Incorrectly show featured relevant to Amavisd on domain profile page when it's not installed. - Not correctly parse quarantined email message. - Upgrade script 'tools/upgrade_iredadmin.sh' doesn't correct restart web service. * Translations: - Updated: German (de_DE). Thanks Martin Hofheinz . = 3.0 = * RESTful API: * Able to add subscribers while creating (subscribeable) mailing list. * Able to add/remove subscribers while updating (subscribeable) mailing list. * Able to get all subscribers of given mailing list with optional parameter `with_subscribers=yes`: - URI: `GET /api/ml/?with_subscribers=yes` * Able to list all mailing lists in given domain: - URI: `GET /api/mls/` - Optional parameters: - `email_only=yes`: if present, return a list of mailing list email addresses. Otherwise return a list of mailing list profiles. * Able to set mailbox format, mailbox folder name, full maildir path while creating/updating user: - URLS: - `POST /api/user/` - `PUT /api/user/` - Parameters: `mailboxFormat`, `mailboxFolder`, `maildir`. * Show mailbox size and number of stored messages while getting user profile: - URI: GET /api/user/ - New parameter names: stored_bytes, stored_messages. * Show assigned mail alias groups and mailing lists while getting user profile: - URI: GET /api/user/ - New parameter names: mailing_aliases, mailing_lists. * Able to reset user password by submitting a password hash (`PUT /api/user/`, parameter `password_hash`). * Fixed issues: - Cannot verify password: `POST /api/verify_password/user/`. - Not correctly set date to deleted mailboxes while deleting a domain (`DELETE /api/domain//keep_mailbox_days/`) Thanks Wes Cossick for the report. * Improvements: + Able to export statistics of admins. + If new password doesn't match policies, display error messages of all unmatched policies. + Spam policy: able to set score for blocking/quarantining detected spam. + On search result page, now able to set days to keep mailbox of removed domain and user accounts. + Able to define days to keep removed mailbox for normal domain admin and global admin. With default settings, normal admin can keep mailbox for 1 day, 1/2/3 weeks, 1/2/3/6/12 months. Global admin can keep mailbox for 1 day, 1/2/3 weeks, 1/2/3/6/12 months, 2/3 years, and 'forever'. + Display user password last change date on user list page and user profile page. + Able to set mailbox format while creating new user. + New: tools/dump_quarantined_mails.py, used to dump quarantined emails to the directory given on command line. It's useful if you want to train SpamAssassin by calling `sa-learn`. * Fixed issues: - While deleting a domain, it removes all forwarding destinations addresses under this domain, but it should be kept for those forwarding source addresses which don't belong to removed domain. - When login as normal admin, it lists global admins in the per-domain admin list page. - Normal domain admin should not be able to update max user quota. - Cannot correctly sort domain names on domain list page. - Cannot unassign user from external mail aliases on user profile page. - Cannot filter admin log. - Cannot set throttle setting to inherit from lower priority account. - Not strip leading and ending spaces in search string. - Incorrectly delete assigned external mail alias groups while updating mail user profile. - Cannot disable imap service per user. - Not correctly set spam policy to deliver detected spam/virus/badheader/banned mail to mailbox while quarantining is disabled. - Not delete all emails of selected quarantined type (e.g. spam, virus). It deleted all emails no matter which quarantined type you are viewing. - Not handle service name 'pop3tls' and 'imaptls' for Dovecot-2.3. - Not use AMAVISD_QUARANTINE_HOST as mlmmj relay host if a remote Amavisd server is used. - tools/notify_quarantined_recipients.py: - Cannot generate email message if quarantined mail subject contains non-ascii characters. - Not correctly handle mail subject in some case. * Translations: - New: Danish (da_DK). Thanks Søren Mortensen . - Updated: German (de_DE). Thanks lug-gh on github. = 2.9.0 = * RESTful API: * Show allocated domain quota while getting domain profile (`GET /api/domain/`). * Able to manage alias domains while updating domain profile (`GET /api/domain/`): * `aliasDomains`: reset all alias domains * `addAliasDomain`: add new alias domains * `removeAliasDomain`: remove existing alias domains * Parameter names changed while updating domain profile (`PUT /api/domain/`): * `enableService` was renamed to `addService` * `disableService` was renamed to `removeService` * `removeAllServices` was renamed to `services` * Improvements: - mlmmj mailing list integration. Mailing list is now subscribable via email or web. Admin can migrate existing mail alias account to subscribable mailing list in account profile page, all profiles (members/moderators, access policy, etc) will be fully migrated. - Able to export all managed accounts with one click. - Able to disable domain ownership verification per admin for newly created domain. - Able to disable normal domain admin to view mail log and manage quarantined mails. * Fixed issues: - Not correctly set spam policy while no options were updated. - self-service: user cannot update white/blacklists while removing log of received/sent mails. Thanks Jochen Häberle for the feedback in forum. - Not delete records which use removed mail accounts as destination bcc address. - Not display stored messages and size in user profile page if user has unlimited mailbox quota. - Cannot set user mailbox quota to unlimited by leaving the input field empty. - Cannot correctly indicate managed domains in user profile page. Thanks Slawomir Wrobel for the report. - Filter on domain list page shows only first letter of all existing domains instead of hard-coded letters. - Dead link used to display greylisting tracking data. - Per-user bcc settings were removed while updating per-domain bcc settings. - Email address with extension is considered as not existing. - Not correctly display indicator of mail forwarding in search result page. Thanks Luke6283 for the report in forum. - Not correct set spam policy if `Quarantine spam` is not checked in spam policy setting page. Thanks Jorge for the report in forum. - Normal admin cannot edit user mailbox quota. Thanks Adil Demiri for the report. - tools/notify_quarantined_recipients.py: Cannot get correct timestamp of quarantined emails. - tools/cleanup_amavisd_db.py: endless loop in some case with PostgreSQL. * Translations: - Update German (de_DE). Thanks Peter . - Update Italian (it_IT). Thanks Francesco . = 2.8.0 = * RESTful API: + NEW: Able to list all managed domains (/domains). + NEW: Able to manage per-usre enabled mail services (/user/). + NEW: Able to promote mail user to be a global admin (/user/). + Enhancement: Return managed domain names while getting user (must have admin privilege) or admin profile. * Improvements: - Able to filter domains in the "Managed Domains" section on user/admin profile page. * Fixed issues: - RESTful API: - It always requires password while updating domain admin profile. - Cannot view domain list and domain profile with MariaDB-10.x. Thanks Torkil Liseth for the feedback. - Not delete records in `forwardings` table while removing mail alias account. Thanks lamagra for the report in forum. To delete dead / orphan mail alias accounts, please run SQL commands: USE vmail; DELETE FROM forwardings WHERE is_list=1 AND address NOT IN (SELECT address FROM alias); - Cannot update per-domain bcc if there's alias domain. - Not return 'INVALID_CREDENTIALS' if login with a not-existing domain name. - If login as normal domain admin, search result will return matched accounts not in managed domain. - If a mail user is marked as domain admin with privilege to mark other user as admin, it's able to assign user to any domain hosted on server. - Cannot use '*@domain.com' as alias moderator. - Cannot save wildcard sender addresses for whitelist/blacklists. - Top 10 Senders/Recipients show non-local users. - Not correctly paginate domain list. - Cannot store maildir path of removed user due to incorrect variable type. - Not use current date as password last change date for created user. - Cannot update per-domain throttle settings. = 2.7.0 = * RESTful API: + NEW: Able to manage global, per-domain and per-user greylisting settings, whitelist senders, and global whitelisted SPF domains. * Improvements: - While removing mail user account, option 'Keep (mailbox) forever' now log a null delete date instead of keeping for 100 years. Thanks mejo for the feedback in forum. - Able to manage whitelists/blacklists based on reverse DNS name of sender server IP address. Sponsored development by Daniel Senie . - Able to search accounts based on per-user alias address and mail forwarding address. - Display per-user alias addresses and mail forwarding addresses in search result page. - Able to define custom favicon.ico with parameter BRAND_FAVICON. - Able to use CIDR network as whitelist/blacklists. e.g. 192.168.1.0/24, 2002::1234:abcd:ffff:c0a8:101/64. Sponsored development by Daniel Senie . - Able to generate and verify SHA512 password hash. + New: tools/reset_user_password.py, used to reset user password. * Fixed issues: - RESTful API: - Not remove admin privilege after revoked domain admin privilege if admin doesn't manage any domain anymore. - Not correctly set per-domain enabled/disabled domain profiles. - Cannot get per-domain sender dependent relayhost while getting domain profile. - Cannot correctly remove per-domain sender/recipient BCC settings. - Cannot correctly reset per-domain transport if domain was marked as backup MX. - Not correctly update profiles (password, global admin privilege) for standalone admin account. - Cannot set per-user alias addresses while creating new mail user. - Cannot add or remove per-user alias addresses while updating user profile. - User mailbox quota was removed while updating user profile. Thanks Dorian Gutowski for the report. - Not use default transport setting while creating new domain. - Cannot remove user from assigned groups in user profile page. - Not delete managed domains if user (which has admin privilege) after revoked admin privilege. - Not store plain password while user changing password -- if iRedAdmin-Pro is configured to store plain password. Thanks Sergio for the report. - Not remove per-account wblist/greylisting/throttle settings and tracking data while removing account. - Not correctly count accounts while listing accounts with first letter of email address. - Not correctly page if current account list page is filtered with first letter of email address. - Not remove throttle and greylisting settings while removing domains. - Spam policy (quarantining) doesn't fully working. - If user is assigned as moderator of mail alias account, after user was removed, it still exists in alias moderator list. - Not use custom settings while getting top sender/recipients on Dashboard page. Thanks nicolasfo for the report. - Not update backupmx status while disabling 'Relay without verifying local recipients' in domain profile page, tab 'Relay'. Thanks Luftar Braha for the report. - tools/notify_quarantined_recipients.py: - Not convert time to local time zone. Thanks roy.wong for the report. = 2.6.0 = * Fixed issues: - API: - Cannot save a (email) copy while updating per-user mail forwarding. Thanks Wes Cossick for the report. - Not correctly enable alias domain after domain ownership verification. - Should not require domain ownership verification if alias domain was added by global admin. - Not disable white/blacklisting actions in 'Quarantined Mails' page if white/blacklist is disabled by domain admin in user preferences. Thanks Rain for the report. - Cannot create new mail user due to miss sql column name in 'GROUP BY' statement. + tools/notify_quarantined_recipients.py: - unicode error if mail subject contains unicode characters. - unicode error if system default encoding is 'ascii' Thanks Rain for the report. - tools/upgrade_iredadmin.sh cannot create new MySQL table due to missing required privilege. = 2.5.0 = * APIs: * Several parameter names have been changed for simplification: + old: `cn` -> new: `name` + old: `mailQuota` -> new: `quota` + old: `preferredLanguage` -> new: `language` * Variable names used in returned JSON data have been changed to avoid possible namespace conflict: + old: {'success': ..., 'msg': ...} + new: {'_success': ..., '_msg': ...} + NEW: /api/users/: Update profiles for all users under domain. + NEW: /api/users//password: Update all user passwords under domain. + NEW: /api/domain/admins/: manage domain admins. + NEW: Verify given (plain) password against the one stored in LDAP. - /api/verify_password/user/ - /api/verify_password/admin/ + NEW: /api/admin/: manage standalone domain admins. + Able to delete mail domain or user with option to keep mailboxes for given days. + Able to update more domain profiles (/api/domain/): + default mailbox quota for new user. + max mailbox quota of newly created mail user + catch-all account + inbound and outbound relay + sender bcc, recipient bcc + set max number of users, aliases, mailing lists + disabled domain profiles + disabled user profiles + disabled user preferences + Able to update more user profiles (/api/user/): + mail forwarding + employee id + per-user alias addresses + Able to change email address of user/alias accounts. + Able to set members while creating mail alias account. + Able to update members while updating mail alias account. + Able to get profile of existing mail domain/user/alias. + NEW: Able to manage global, per-domain and per-user spam policy. - Fixed: Cannot set per-domain quota while creating domain. * Improvements: + Normal domain admin is now able to create new mail domains with limits like number of max domains/users/alias/lists/quota. Note: new mail domain added by normal domain admin requires domain ownership verification. For more details, please check our tutorial: http://www.iredmail.org/docs/iredadmin-pro.domain.ownership.verification.html + Able to use domain name as primary MX server (IP address is recommended). + Able to enable/disable pop3/imap/smtp/sogo/managesieve services for existing or newly created mail users under domain in domain profile page. + Able to enable/explicitly disable greylisting for domain/user. + Able to schedule date to delete mailboxes while removing domain or mail users. Note: This feature requires a daily cron job to run `tools/delete_mailboxes.py`. + Able to set access policy while creating mail alias account. + Able to set timezone while creating mail domain. + New: tools/update_password_with_csv.py, used to reset password by reading password from CSV file (format: ' '). + tools/dump_disclaimer.py: able to dump disclaimer for alias domains. + tools/cleanup_amavisd_db.py: Huge performance improvement with dirty read (SELECT) while cleaning up old records in Amavisd database. + tools/notify_quarantined_recipients.py: + able to track last notify time and notify for new quarantined emails only. + able to notify users under backup MX domains with command line argument '--notify-backupmx'. + correctly encode mail subject and sender name * Fixed issues: - SECURITY: iRedAdmin accepts any password on FreeBSD and OpenBSD if password is stored in BCRYPT hash. - Standalone admin account cannot change its own password. - Standalone admin account can be an email address under locally hosted mail domain. This causes conflict when there's a normal mail user with same email address. - Normal domain admin cannot view/update its own profile if it doesn't manage its own domain. - Not check current email address existence while changing account email address. - Not update sql column `mailbox.local_part` while changing account email address. - Not remove per-user alias addresses while removing user account. - Cannot use domain name as Primary MX in backup mx setting page. - Cannot delete mail user account due to incorrect PostgreSQL command. - Cannot use non-ascii characters in mail subject and body of notification mail used to notify local recipient of quarantined mails. - Cannot search mail accounts with PostgreSQL backend. - Normal domain admin can view or update global domain admin's profile. - Cannot save submitted greylisting whitelists while there's a duplicate sender inserted by `tools/spf_to_greylist_whitelists.py`. Thanks Juan Bou Riquer for the report. - Incorrect pages while viewing disabled accounts. Thanks to Li Wei for the report. - Incorrectly count number of mail alias accounts in domain list page. Thanks to Santosh Gupta for the report. - Separated normail domain admin cannot change its own password. - Able to set unlimited mailbox quota when per-domain quota was set. - Cannot handle mail alias members if some character is in uppercase. - Not specify path to python command to run 'tools/cleanup_db.py' in upgrade script, this causes error in cron job. - Incorrectly update domain backupmx status while updating profile under tab 'General'. - iOS devices may have problem with character '^' in password. we remove it from allowed special character for randomly generated password. - Creating domain in invalid domain format causes 'internal server error'. - Fix the html target="_blank" vulnerability. * Translations: - Update Traditional Chinese (zh_TW). Thanks rain . - Update Simplified Chinese (zh_CN). = 2.4.0 = * RESTful API. Read document below for more details: http://www.iredmail.org/docs/iredadmin-pro.restful.api.html * Improvements: + Able to set limits of mail user/alias accounts while creating new domain. + Able to search user alias address (name and email address). + Able to manage per-domain and per-user sender dependent relayhost. + Able to enable/disable SOGo service for a single user in user profile page. + Bring back option 'Relay without verifying local recipients' for per-domain relay setting. + Show progress bar in domain list page to indicate percentage of used quota (and allocated quota). + Show a small icon as indicator: - on domain list page: indicate certain domain has alias domain(s). - on user list page: indicate current account has alias and forwarding addresses. Moving cursor on the icon will show more details like alias/forwarding addresses. * Fixed issues: - Not remove email address which contains invalid character while updating alias members/moderators. - Cannot convert invalid date/time to local time. - Not add required header (Content-Type: text/html) for web pages. - Not correctly handle submitted alias moderators. - tools/cleanup_amavisd_db.py: Not correctly delete unreferred sql records in Amavisd database, this bug may incorrectly delete some whitelists/blacklists. - Cannot correctly sort mail users by used quota of mailbox with PostgreSQL backend. Thanks Andris Vasers for the report. - Updating per-domain and per-user greylisting setting will delete greylisting whitelisted domains. * Updated translations: + Spain (es_ES). Thanks Juan Bou Riquer . = 2.3.1 = * Fixed issues: + Not correctly strip email addresses which contains delimiter. = 2.3.0 = * Completely remove support for Policyd and Cluebringer. iRedMail shipped Policyd in very early releases, THANK YOU. GOODBYE. * tools/wblist_admin.py has been removed, it's available in iRedAPD-1.8.0. * Improvements: + Able to manage greylisting whitelist domains. + New option of 'Disabled self-service preferences' in domain profile page, under tab 'Advanced': View basic info of received mails. + Better spam policy control: able to control bypassing or quarantining detected spam/virus/banned/bad-header email. * Fixed issues: - Cannot release quarantined email on some Linux distributions. - Cannot add email address like 'user+ext@domain.com' as alias member. - Improper maildir path if username contains more than 3 characters. Thanks bardzotrudny for the report in forum. - Cannot update throttle settings. Thanks ketan.aagja for the report in forum. - Self-service is not working. - Not correctly set greylisting priorities. Thanks Animatrix for the report in forum. - Incorrect regular expressions of email address and domain name, cause several '404 page not found' errors, and cannot access user profile page whose email address contains a dot like 'abc.def@domain.com'. * Updated translations: + Spain (es_ES). Thanks Juan Bou Riquer . + Bulgarian (bg_BG). Thanks Пламен Василев . = 2.2.0 = NOTE: Greylisting and throttling offered by iRedAPD conflict with Policyd/Cluebringer, so if you want to use Policyd/Cluebringer, please disable iRedAPD integration in config file `settings.py` with setting `iredapd_enabled = False`. We have greylisting and throttling support in iRedAPD as replacement, and here's tutorial to help you migrate from Cluebringer to iRedAPD: http://www.iredmail.org/docs/cluebringer.to.iredapd.html * Improvements: - Able to restrict user to login from specified IP addresses or network. (under user profile page, tab "Advanced".) - Able to manage global, per-domain and per-user greylisting and throttle settings implemented with iRedAPD. - Able to list disabled domain/user/mailing list/alias accounts. - Allow to store mail user's plain password in additional column in `vmail.mailbox` table. - Able to bypass bad-header checking in spam policy setting page. - Able to manage per-user alias addresses. - Show iRedMail version number stored in /etc/iredmail-release. - Able to manage white/blacklists for outbound message. - tools/cleanup_amavisd_db.py won't cause lock issue or performance issue anymore. - New scripts: + tools/update_mailbox_quota.py: update mailbox quota for one user (specified on command line) or bulk users (read from a plain text file). * Fixed issues: + Not correctly update spam subject text (spam_subject_tag3). Thanks rafaelr for the report in forum. + Cannot correctly handle improper unicode string in mail headers while viewing quarantined mail. + Not correctly submit per-domain white/blacklists while submitting from 'Quarantined Mails' page as normal domain admin. + Cannot set empty time zone and preferred language. + Not generate proper maildir path when first 3 characters in username part of email address contains dot. - Cannot verify BCRYPT password hash with '{BLF-CRYPT}' prefix. - Not correctly set access restriction to account profile page. - Not correctly set domain as backup mx. * Updated translations: + Germany (de_DE). Thanks Joachim Buthe and Martin Hofheiz . + Spain (es_ES). Thanks informatica _at_ ttu.es. + Simplified Chinese (zh_CN). = 2.1.3 = * Improvements: - Command line tool to manage white/blacklists: tools/wblist_admin.py. Supported operations: add/delete/list whitelists or blacklists for server-wide, per-domain, per-user. Run the script without any arguments to get a help message. Note: tools/submit_wblist.py was removed. * Fixed issues: - Not correctly assign default mail group(s) to newly created mail user. Thanks for the report. = 2.1.2 = * Fixed issues: - Not correctly update `alias` table while changing user's mail address. - Cannot delete user in search page. Thanks Grzegorz Leśkiewicz for the report. * Updated translations: + Germany (de_DE). Thanks Joachim Buthe . + Spain (es_ES). Thanks informatica _at_ ttu.es. = 2.1.1 = * Fixed issues: - Normal admin cannot update alias profile. Thanks Hilario Ortigosa Monteoliva for the feedback. = 2.1 = * Improvements: - Able to white/blacklist senders or recipients in System -> Mail Logs -> Sent Mails (or Received Mails). * Fixed issues: - Improperly checking per-admin time zone for separate admin account. - Cannot set mail forwarding in self-service page. - Incorrect function arguments when calling simple_profile() defined in libs/sqllib/user.py. - Always set per-user preferred language to system default value. - Cannot delete/enable/disable mail alias account. - Incorrect variable name in controllers/panel/log.py causes 'internal server error' while accessing Admin Log page. = 2.0 = Note: iRedAdmin-Pro-MySQL is now merged into iRedAdmin-Pro-SQL. * Improvements: - Able to set per-domain and per-user time zone. - Allow to specify amavisd server address if amavisd and sql database are not running on the same host. - Able to filter out accounts by first character in email address or domain name. - Self-service is now a per-domain setting, not more global setting. Global admin can enable/disable self-service in domain profile page, under tab 'Advanced'. - New script: tools/notify_quarantined_recipients.py. Used to query quarantined mails and notify local recipients (via email) they have emails quarantined on server and not delivered to their mailbox. It's ok to setup a cron job to run this script every, for example, 6 or 12 hours, it's up to you. - Able to white/blacklist senders on Quarantined Mails page. - Able to change email address of mail user/alias account in place. - Log profile update operations. - Show per-user mailbox quota in self-service preference page. - Pulling out plain text of HTML email while displaying quarantined email. NOTE: this feature requires Python module BeautifulSoup. - New script: tools/submit_wblist.py, used to submit white/blacklist from command line. Sample usage: python tools/submit_wblist.py --blacklist 192.168.1.10 user@test.com - Able to use 'user@*' as white/blacklist sender. * Fixed issues: - Cannot disable global throttling. - Cannot correctly redirect to page of certain type of quarantined mails after release/delete emails. - Not verify members in same domain while updating user forwarding. - Cannot list IPv6 address(es) assigned on network interface(s) on Dashboard page. - Cannot blacklist top-level domain name (e.g. @.com). - Cannot delete alias account. = 1.9.2 = * Improvements: - Log message after updated mail list members/moderators. - Able to use '*@domain.com' as moderator of mail alias account. Note: this requires iRedAPD-1.4.5. - New script tool: migrate_cluebringer_wblist_to_amavisd.py. Used to migrate Cluebringer white/blacklists to Amavisd database. Note: Don't forget to enable iRedAPD plugin `amavisd_wblist` in /opt/iredapd/settings.py. * Fixed issues: - Cannot delete mail alias account. - Cannot display all domains in user profile page. - Not wrap subject/sender/recipient in Sent/Received Mails page. - Cannot correctly delete all Sent/Received mails in SQL database. - Not correctly handle SQL column `policy.spam_subject_tag3` while updating spam policy. This column doesn't exist in Amavisd-new-2.6.x. - Cannot remove existing white/blacklists. - Upgrading script (tools/upgrade_iredadmin.sh) should restart uwsgi sesrvice instead of nginx if Nginx is running as web server. - Not save 'Always insert X-Spam-* headers' setting in 'Global Spam Policy' page. - Show improper links in self-service spam policy page. - 'INNER JOIN' in tools/cleanup_amavisd_db.py causes performance issue while removing old records in amavisd database. * Updated translations: + Spain (es_ES). Thanks informatica _at_ ttu.es. = 1.9.1 = * Fixed issues: - Not handle msg 'WBLIST_UPDATED' in self-service page. - Not correctly save per-user wblist in self-service page. - Remove existing wblist after adding new ones. - Raise 'internal server error' if login username/password is wrong. - Cannot delete all quarantined mails. = 1.9.0 = * New features: - Better Amavisd integration: o Able to set max size of single incoming email. Note: it requires iRedAPD plugin `amavisd_message_size_limit`. o Able to manage per-domain, per-user white/blacklists, and it's integrated with Amavisd. + Although this white/blacklists works with Amavisd after-queue, but you'd better enable iRedAPD plugin `amavisd_wblist` to reject blacklisted senders during smtp session to save system resource. + It replaces white/blacklists provided by Cluebringer, but Cluebringer wblist also works. o Able to set global, per-domain and per-user (basic) spam policy. - self-service. Normal user can login to manage their own profile (name, password), forwarding, per-user white/blacklist, quarantined mails, and check received mails. o Self-service is disabled by default. Please set below parameter in iRedAdmin config file 'settings.py' then reload/restart Apache web service or uwsgi service if you're running Nginx. ENABLE_SELF_SERVICE = True o Domain admin can restrict allowed self-service preferences in domain profile page, under tab 'Advanced'. o Server admin is able to set which self-service page should be displayed after user login. Sample setting in iRedAdmin config file: SELF_SERVICE_DEFAULT_PAGE = 'preferences' # Default setting SELF_SERVICE_DEFAULT_PAGE = 'quarantined' # Quarantined Mails SELF_SERVICE_DEFAULT_PAGE = 'received' # Received Mails o User is able to white/blacklist sender or sender domain in 'Quarantined Mails' page. o User is able to blacklist sender or sender domain in 'Received Mails' page. * Improvements: + Able to sort quarantined mails by spam score. + Able to generate 'CRAM-MD5' password hash with command `doveadm pw`. + Able to generate bcrypt password hash with Python module 'bcrypt' or 'py-bcrypt'. It works on BSD systems, but not Linux. Since libc shipped in most Linux distributions doesn't support bcrypt, Dovecot cannot verify bcrypt hash on Linux. + Able to sort mail users by mailbox quota usage percentage. + Able to restrict IP addresses where global admin are allowed to login from (new setting parameter: GLOBAL_ADMIN_IP_LIST). + Show spam score in quarantined page and received mail log page. + Able to filter quarantined emails by quarantined type: bad header. + Able to set default per-user sender/recipient bcc address for newly created mail user. * Fixed issues: - Not escape random password in account creation page. this bug causes iRedAdmin displays an incomplete password. - Cannot set domain quota to unlimited with radio checkbox. Thanks Dinis D for the report. - Incorrect regular expression which not support IDN domain name. - Cannot white/blacklist some IP addresses due to incorrect regular expression. - Not correctly show domain status (active/inactive) in domain list page when domain is inactive but has custom relay. - Not sync 'mailbox.enablelda' and 'mailbox.enablelmtp' while updating 'mailbox.enabledeliver'. - Not show `mailbox.employeeid` in search result. - Not correctly mark user as normal admin or global admin. - Use removed SQL columns while searching accounts. - Cannot set per-user mailbox quota. Thanks Kim Gardner for the report. - Generated random password is longer than max password length. Thanks labasus for the report. - Not detect openSUSE in script tools/upgrade_iredadmin.sh. - Duplicate value of 'Received' header while rendering quarantined mail headers. * Updated translations: + Spain (es_ES). Thanks informatica _at_ ttu.es. + Portuguese (Brazil), (pt_BR). Thanks Douglas Medeiros . = 1.8.2 = * Improvements: + New script used to help upgrade iRedAdmin open source edition or old version of iRedAdmin-Pro. + Able to filter quarantined emails by quarantined type: clean. + Enhanced password restrictions. New password must has at least - one letter - one uppercase letter - one digit number - one special characters + Set default time (15 mintues) of inactivity before session expires. + Normal admin is now able to manage multiple domains, and mark other mail user as domain admin. + Able to add record of sub-domain for Cluebringer whitelist/blacklist. * Fixed issues: + Not render pages in selected language in drop-down list in Login page after logged in. + Not delete global admin record in `vmail.domain_admins` while deleting mail domain. Thanks sergiocesar for the report. + Not allow to use longer top domain name in regular expression used to verify domain name and email address. + Incorrect URL handle in Amavisd quarantined mail list. Thanks Adrian Schurr for the report. + Incorrectly paged list of quarantined mails. Thanks Michael and Kyle Harris for the report. + Not verify permission while searching mail log. Thanks Khanb for the report. + Incorrect function name in libs/policyd/greylist.py. Thanks for the report. = 1.8.1 = * Fixed issues: + Cannot detect or switch to language on login page. Thanks Robert for the report. + Not correctly count number of in/out mails. Thanks Robert for the report. + Not correctly disable Policyd/Cluebringer status. Thanks spango for the report. = 1.8.0 = * Cluebringer support: + Server-wide, per-domain and per-user inbound/outbound throttling. NOTE: Throttling does NOT apply to emails sent from internal domains to internal domains. + Add domain as internal domains while creating new mail domain. + Remove domain from internal domains while removing mail domain. + Greylisting: o Able to enable/disable per-domain and per-user greylisting. o Able to list/remove accounts which has greylisting disabled. o Able to update basic greylisting settings for 'Default Inbound'. + White/Blacklist: o View, add, delete white/blacklist records. * Improvements: + Detect non-ascii character in password and raise error message. Thanks Chris for the feedback in forum. + Able to filter quarantined emails by quarantined type: spam, virus, banned. + Switch config file from ini format to Python source file, this makes programming and upgrading easier. * Fixed: + Mail user which marked as global admin but not domain admin cannot create new mail user/alias account. Thanks Hugo Ferreira for the report. + Mail user which marked as global admin but not domain admin cannot view Sent/Received mail log. Thanks Hugo Ferreira for the report. + Normal admin cannot search quarantined mail log. Thanks Hugo Ferreira for the report. + Explicitly tell Amavisd to release quarantined mail stored in SQL database with addition release command 'quar_type=Q'. Thanks cts.cobra _at_ gmail for the report and help in our forum. + Not delete SQL record in 'vmail.domain_admins' while removing mail user which is domain admin. Thanks Atendimento GrupoW for the report. + Not return correct allocated quota size while creating new user for newly created domain. Thanks Simon Kulessa for the report. + Use HTTP_PROXY defined in settings.py first, if empty try proxy server defined in environment variable 'http_proxy'. Thanks Bernhard Roth for the report and propose. + Not correctly get number of per-admin managed alias accounts while logging in as normal admin. Thanks Bryan and Neil in NetEasy Inc. for the report. * New or updated translations: + Russia (ru_RU). Thanks Андрей Бережков . = 1.7.0 = * New features: + Log maildir path of deleted mail domain or user in table 'vmail.deleted_mailboxes'. Maildir path is concatenate with 3 columns: CONCAT(storagebasedirectory, '/', storagenode, '/', maildir). + Global admin can set per-domain disabled domain/user profiles in domain profile page. Normal admin cannot view and update disabled profiles. * Improvements: + Mark/Unmark users as domain admin or global admin in user list page. + List internal domain admins in separate page: /admins/[domain]. + Redirect from admin profile page (/profile/admin/general/xx) to user profile page (/profile/user/general/xxx) if admin is a mail user. + Able to delete admin accounts from Admins page (/admins) if admin is a mail user. + Link to account profile page for account name in search page. + Able to set addition settings in domain creation page: domain quota, default quota/language for new user. + Set per-domain default language for newly created mail users. * Fixed: + Not list mail admin which are mail user in "System -> Admin Log". + Not show correct used mailbox quota in domain list page. Thanks Ivo Schindler for the report. + Cannot limit user mailbox quota in user profile page. + Searching full email address returns empty result. Thanks our forum user "tonyd" for the report. + Not check new version of iRedAdmin-Pro. + Cannot show top 10 recipients in Dashboard page. Thanks melaleuca5 for the report in forum. * New or updated translations: + Korean (ko_KR). Thanks Bosung Lee = 1.6.0 = * Improvements: + Show content type (spam/virus/banned) of quarantined mails. + Able to set relay without verifying local recipients. + New password schemes: SSHA, SSHA512. Note: SSHA512 requires Dovecot-2.0 (and later), Python-2.5 (or later). + Show breadcrumb links in account creation pages. + Don't show duplicate tabs in Users/Lists/Aliases list pages. * Fixed: - Can use primary domain as alias domain. - Script tools/cleanup_amavisd_db.py cannot read local settings in libs/settings_local.py. Thanks Bruce MacKay for the report. - Not update greylisting opt-in/out for alias domains. Thanks gleenj for the report. - Not update account status in `alias` table while updating account status of mail user. Thanks Mickey Everts for the report. - Script tools/cleanup_amavisd_db.py cannot delete older SQL records in Amavisd database. Thanks broth for the report in forum. - Cannot store default domain transport setting if user submits empty value in domain profile (relay) page. - Not assign new user to default mail groups. Thanks Matteo Fracassetti for the report. - Not show number of existing alias accounts in domain profile. Thanks thatday for the report. - Not update domain/user bcc records while adding/removing alias domains. - Not update mailbox.enablesieve, mailbox.enablesievesecured correctly. Thanks thatday for the report. - Incorrectly unset domainGlobalAdmin status in session after updating admin profile. Thanks Tue and escu for the report. * New or updated translations: + Traditional Chinese (zh_TW). Thanks Ho ho . + Polish (pl_PL). Thanks Adrian Grygier . + Spain (es_ES). Thanks Luis Armando Perez Marin. + Russian (ru_RU). Thanks Taylor D . + Serbian (Cyrillic, sr_CS). Thanks Robert Bogdan . + Slovenian (sl_SI). Thanks Marko Kobal . + French (fr_FR). Thanks Shafeek Sumser . + Portuguese (Brazilian, pt_BR). Thanks Wendell Martins Borges . + Finnish (fi_FI). Thanks Teemu Harjula . + Itilian (it_IT). Thanks Nicolas Cauchie , Riccardo Raggi , and Alberto Baudacci . + Netherlands (nl_NL). Thanks Luc Verhoeven + German (de_DE). Thanks Ivo Schindler , and Martin . + Czech (cs_CZ). Thanks Roman Pudil . = 1.5.1 = * Fixed: + List normal users in Admins page. * New and updated translations: + Update German translation (de_DE). Thanks "Sascha Wolski | cognitics GmbH" . + Update Brazilian (pt_BR). Thanks "Julio C. Oliveira" . = 1.5.0 = * New features: + Mark domain as backup MX. + New cron script: tools/cleanup_amavisd_db.py. Used to remove old records of incoming/outgoing/quarantined mails. + Mark mail user as admin of its domain and/or global admin. * Improvements: + Cron script tools/dump_disclaimer.py was rewritten, no need to edit it anymore, just specify the directory used to store disclaimer file. e.g. python tools/dump_disclaimer.py /etc/postfix/disclaimer/. + Allow to redirect to domain list page instead of Dashboard page after login: REDIRECT_TO_DOMAIN_LIST_AFTER_LOGIN (libs/settings.py). + Show search box on top-right corner. + Show more domain status in domain list page: relay, backupmx. + Add some sample relay settings as reference. + Set http proxy server address in libs/settings.py (HTTP_PROXY) if iRedAdmin cannot access internet (iredmail.org) directly. Thanks Bernhard Roth for helping test. + Oops, don't allow normal domain admin to manage both per-domain and per-user throttling. * Fixed: + Cannot delete all per-user activities with one-click. Thanks melaleuca5 for the report. + Incorrect real-time quota in user list page with unlimited quota. Thanks HV for the report. + Didn't remove SQL records of real-time mailbox quota while deleting mail domain or user. + Cannot delete all records of received mails with one-click. + Not convert timestamp of admin logs to LOCAL_TIMEZONE. * New and updated translations: + Update Brazilian (pt_BR). Thanks "Julio C. Oliveira" . + Czech (cs_CZ). Thanks Roman Pudil . = 1.4.0 = * Improvements: + Show basic license info. + Allow to use plain MD5 password. + Manage quarantined banned emails. + Per-domain and per-user greylisting control in account profile page, under tab Advanced. + Show search string in search result page. + Verify email address for per-domain bcc settings if mail domain is a local domain. + Allow normal domain admin to manage both per-domain and per-user throttling. * Fixed: + Add missed msg handlers in account list pages. Thanks Jure Pečar for the report. + Cannot delete all quarantined mails with one click. + Cannot perform search. + Get realtime mailbox quota from incorrect SQL table. Thanks Edgaras Dagilis for the report and fix. + Cannot handle timezones with minutes. e.g. GMT+5:45. * New and updated translations: + Slovenian (sl_SI). Thanks Marko Kobal . + Polish (pl_PL). Thanks Adrian (adi _at_ zwami.pl) = 1.3.1 = * Improvements: + Able to search mail domains. + Read used mailbox quota from separate table 'used_quota'. + Save password last change date in column: mailbox.passwordlastchange. + Able to set global timezone in libs/settings.py: LOCAL_TIMEZONE. + Allow to store user password in plain text in libs/settings.py: STORE_PASSWORD_IN_PLAIN. Thanks brothner . * Fixed: + Show quarantined emails of all domains instead of specified domain. Thanks mmh@forum for the report. + Not completely delete user related records while removing user from search result page. Thanks wangning_wang@staff.easou.com for the report. + Cannot assign alias as member of another alias account. * New and updated translations: + Polish (pl_PL). Thanks Krzysztof Skurzyński . + Finnish (fi_FI). Thanks Teemu Harjula . = 1.3.0 = * New features: + Sender and recipient throttling, available as per-user and per-domain settings. * Improvements: + Show used quota percentage in user profile page. Thanks atros . + Assign user to aliases in user profile page. + Remove deleted user from mail aliases (member). + Delete all sent/received logs with one-click. + Better SQL performance while listing all domains. Thanks atros . * Fixed: + Cannot delete some records of sent/received mail log. Caused by incorrect mail_id, secret_id character set. Thanks Michael . + Typo error in alias member list. Thanks John Hannawin . + Not allow '+' in email address. Thanks . * New and updated translations: + Brazilian Portuguese (pt_BR). Thanks Fabricio Caseiro . + Itilian (it_IT). Thanks Alberto . + Russian (ru_RU). Thanks Dmitry Sukharev . + German (de_DE). Thanks info@netzwerk-design.net . + Traditional Chinese (zh_TW). Thanks Wayne . + Spanish (es_ES). Thanks Lucas . = 1.2.1 = * Fixed: + Cannot delete quarantined VIRUS mails when try to delete all quarantined mails with one click. Thanks beez . + Cannot list per-domain and per-user activities. Thanks Chris Ip . + Incorrect count of Sent, Received mails with normal admin. Thanks Chris Ip . = 1.2.0 = * Improvements: + CSRF protect. + Able to delete all admin logs with one click. * Fixed: + Cannot view quarantined VIRUS mails. Thanks beez@forum . + Incorrect links of pages in per-user and per-domain activity list. + Allow to use domain names which end with 2-6 chars. Thanks Julian P. <@consistency.at>. + Fix EXCEEDED_DOMAIN_ACCOUNT_LIMIT issue while creating new user. Thanks Emidio Reggiani , Tecnologia - PLUGNET + Allow normal admin to update catch-all address of domain. Thanks Chris Ip (chris.ip@...hk). + Some possible XSS, XSRF vulnerabilities. = 1.1.0 = * New features: - Search log of sent/received/quarantined mails based on domain name or email address. - Able to view per-user and per-domain sent/received/quarantined mail logs. - Able to set mail deliver restriction for mail alias, add moderators. Note: This feature requires iRedAPD-1.3.4 or later. - Able to disable for creating mail user/list/alias. - Store passwords in plain text. * Improvements: - Separate bcc/relay tab in user profile page. - Generate a random password while setting/resetting password. - Show spam level (score) in quarantined page. - Able to delete all quarantined mails with one click. - Show mail size in received/sent mail logs. - Sortable sent/received/quarantined mail log pages. - Delete old amavisd records only once in each login session. - Better unicode handle in quarantined/sent/received mail logs. - Show admin type (global/normal) in admin list page. - Delete alias from 'domain.defaultuseraliases' while deleting alias account. - List user email in 'domain.defaultuseraliases' which is not exist. * Fixed: - Permission denied if normal admin create user/alias from main navigation bar: Add account -> User/Alias. Thanks Chris Ip . - Incorrect SQL queries which use unindexed content (column 'time_num' in table 'amavisd.msgs'. - Incorrect mail forwarding address list in user profile page. Thanks Alexandre Silva for bug report and testing. - Do not add exist domain name as alias domain. - Use specified MySQL host instead of 'localhost'. Thanks atros@forum . - Add alias account for new users: address=goto. So that catch-all account will work as expected. - Incorrect SQL command used to query catch-all address in domain profile. - Allow normal admin to release/delete their quarantined mails. - Incorrect count of quarantined mails. - Unable to expand quarantined mails which has '+' in mail_id. * Translations: - Update French (fr_FR). Thanks Olivier PLOIX = 1.0.0 = * Initial release. - List all accounts (domains/admins/users/aliases). - Add/delete/enable/disable account (domain/admin/user/alias). - View/update account profile (domain/admin/user/alias). - Show number of total domains, users, alias in dashboard. - User authentication against MySQL (MD5). - Log major operations in database. - Amavisd integration. - Policyd integration.