KeyHelp Changelog Viewer

KeyHelp PHP Interpreter Applications Changelog (One-Click Installer) Operating System Scripts Expand records
24.0 07 February 2024

New Features / Added Content

  • Added domain owner transfer feature
  • Added notification webhook feature (each time a notification event occurs, event-relevant data is sent to a webhook URL, where it can be processed further)
  • Added traffic statistics for domains

Improvements / Changes

  • Improved the domain creation process by suggesting directories for the domain home directory
  • Added a new URL for accessing the database administration tool 'https://<DOMAIN>/db'
  • Enhanced the 'keyhelp_login_data' on new installations by adding access URL and IP to the database section, similar to the KeyHelp section
  • Updated the Apache error log parser (e.g. on web server protocols) to work with servers that use “remote” instead of “client” in the Apache error log
  • Improved the 'Login as this user' feature as it now preserves the administrator's theme mode regardless of what theme mode the client is using
  • Improved the user experience when switching to dark/normal mode - it now stays on the same page where it was triggered and no longer jumps back to the last main page
  • Revamped the Message of the Day (MotD) feature
    • Made MotD consistent for Debian and Ubuntu systems
    • Improved the way the MotD is generated
    • Enabled the display of IPv6 addresses
    • Made MotD script configurable (white-label, link a custom login file, decide which login URLs / IPs to display)
    • Implemented two different views, one for root SSH access and one for client SSH access (hide login file on client access)
  • Updated the ionCube Loader to version 13.0.2
  • Updated the SourceGuardian to version 14.0.2 / 14.0.3
  • Cleaned up and improved the database structure of the KeyHelp database
    • Changed charset from utf8mb3 to utf8mb4
    • Changed collation from utf8mb3_general_ci to utf8mb4_unicode_ci
    • Added relations / improved cascade design for various tables
    • Adjusted the lengths of database fields for various tables
    • As a side effect, you will now be able to use emojis in inputs fields 😉👍
  • Extended the start of anonymization for event log records from 48 hours to 14 days
  • Hardened calls to system commands (e.g. exec) to handle incorrectly set locales that could lead to non-English system responses and potential command output parser errors
  • Updated the HTTP headers KeyHelp is sending to no longer reveal the web server it is using (only for KeyHelp Web UI)
  • Improved screen space usage for screen widths between 769 - 1408px on various pages
  • Improved the wording on various pages to avoid vertical scrolling
  • Increased the width of all input pages and therefore improved visual appearances on wider screen resolutions
  • Moved the default language option out of the language configuration page table, saving horizontal space and making it easier to find
  • Added the 'Login as this user' feature to the TLS/SSL certificates page
  • Added a link from the AWStats configuration page to the data privacy page
  • Added an option to let AWStats determine visitor origin countries and hostnames instead of IPs
  • The option 'Configuration -> FTP-Server -> Allow only SSL/TLS protected connections' is now set to true by default on new installations
  • Added a note to the 'Server reboot' page when backup operations are still running
  • Added UI elements to the web server configuration page to reset web server ports settings to default
  • Updated the Apache log format section on the web server configuration page
  • Added UI elements to the web server configuration page to reset Apache log format settings to default
  • Ensured AWStats can now work with a custom Apache log format
  • Ensured the web server protocols page can now work with a custom Apache log format
  • Removed the ability to use email aliases with a different domain name than the email account address; During the update, existing aliases with a different domain became detached email forwarding accounts to the address of the email account
  • Backup system
    • Added progress status to restore operations
    • Improved CLI backup status reports
    • Improved the process handling of backup processes to be more flexible and easier to use, also fixed some minor issues
    • Improved the visibility of the provided example configurations for custom backup storages
    • When still using the old/outdated backup system, its email notifications are not issuing the status 'Warning' even on successful operations; Note, the old/outdated backup management is marked as deprecated
    • When still using the old/outdated backup system a warning notification is displayed on the KeyHelp dashboard; Note, the old/outdated backup management is marked as deprecated
    • Improved the description texts on the backup management selection page
    • Added an email notification when backup operations pile up (indicating a possible issue with the backup system)
  • Enabled logging of failed authentication attempts in SnappyMail to syslog
  • Fail2Ban
    • Implemented a jail for SnappyMail failed authentication attempts in /etc/fail2ban/jail.d/keyhelp.local (only for new installations or dist-upgrades - see /install/templates/fail2ban/jail.d/keyhelp.local for a template to update your server accordingly)
    • Implemented a jail for MariaDB (if remote access is enabled) failed authentication attempts in /etc/fail2ban/jail.d/keyhelp.local (only for new installations or dist-upgrades - see /install/templates/fail2ban/jail.d/keyhelp.local for a template to update your server accordingly; Debian 10 and Ubuntu 20 may need to update /etc/mysql/maria.conf.d/50-server.cnf and comment out the log_error = line to make this work)
    • Shortened the name all KeyHelp implemented Fail2ban jails (e.g. keyhelp-apache -> kh-apache)
    • Renamed the jail kh-proftpd to kh-ftp
    • Ensured that the required libraries 'python3-pyinotify' and 'python3-systemd' for fail2ban are installed
    • Added an alternative path to the fail2ban-client binary to the KeyHelp's sudoers configuration file
  • Debian 12 / Rspamd
    • Ensured the spam learn cronjob is enabled/disabled according to the settings made within the KeyHelp UI (when dist-upgrade was performed between 1st and 7th November, it may not be enabled)
    • Cleaned up the system for outdated / no longer needed content in /var/spool/spamassassin/
    • Cleaned up the /etc/postfix/master.cf for outdated / no longer needed Amavis configuration directives
    • Rebuilt the directory structure within /var/lib/rspamd/ for future Rspamd extensions
    • Fixed Rspamd's case-sensitive DKIM lookups
    • Reworked the method of securing the Rspamd web interface
      • The interface is now password protected but also allows autologin when being logged into KeyHelp
      • You have to set an initial password in order to use the web interface
      • Allows a much quicker access to the web interface
      • The Rspamd service no longer needs to reboot
      • The new method is much more secure (especially in shared IP environments)
      • Removed code complexity and maintenance
      • The Rspamd web interface can now be accessed without the need to log into KeyHelp first
      • Added a note and link to the Rspamd external web interface
    • Re-enabled email address black-/whitelist for Rspamd; On dist-upgraded systems: Your old black-/whitelist settings from before the dist-upgrade are reactivated automatically in the course of the update
    • Added an option to decide whether blacklisted email addresses should be tagged as spam or rejected
  • Improved the user interface on the email server configuration page
  • Updated the way CPU information are collected
  • Hides the CPU clock speed, if it could not be correctly determined
  • Added a fallback for processors whose processor label could not be correctly determined
  • Stopped loading vendor image if CPU vendor could not be correctly determined, resulting in a cleaner look of the dashboard
  • Added convenient functions to access the processor and core labels
  • Updated headlines and descriptions for maintenance intervals to make them more uniform and easier to understand
  • Ensured 'file' is installed for new installations (used for file manager)
  • Improved the parsing of the mail queue
    • Improved speed of the mail queue parsing by a factor of up to 200
    • If an email in the queue has more than one recipient, you can now see the addresses of other recipients, not just one
    • You can see the total number of recipients an email has
    • Improved the help section of the mail queue page
    • Improved formatting of large mail queue count numbers
    • The warning threshold for numerous emails in the queue has been reduced to 200 (previously 500)
    • The warning message is now more visible and more consistent to the rest of the KeyHelp UI
    • Added an email notification that triggers when the amount of emails in the queue reaches the warning threshold
  • Improved the user experience when using the password input fields while having caps lock enabled
  • Moved the login notification checkbox from dashboard to profile settings
  • Enabled login notifications feature also for administrators
  • Added the option to specify logos for Roundcube when it runs in dark mode (Configuration -> Webmail)
  • Installed PHP extension gmp
  • Updated the white label feature
    • Added the option to specify logos for the KeyHelp user interface when KeyHelp runs in dark mode
    • Removed the custom 'Product name' option and replaced with 'Replaces occurrences of KeyHelp with the neutral Control Panel' option
    • Updated the general white label user interface
    • Updated the current 'Hidden contents' section to 'User interface settings' section
    • Updated internal names, storage locations, etc. of the elements stored within the white label settings
  • Updated the CLI badges for error/important messages to be no longer localized (by default), as this results in an inconsistent message output
  • Added option to clear a mailbox, if it is a forwarding account and consumes above 1 MB disk space
  • The disk space consumption of a forwarding mailbox is now already displayed when the mailbox consumes more than 1 MB
  • Updates the visuals on the mailbox consumption for a forwarding mailbox to save horizontal space
  • Improved the texts for DNS blacklist/whitelist labels to minimize confusion
  • Updated the notes on the user privileges settings
  • Updated the redirect target when submitting the 'Email notification -> General settings' form to be more logical
  • Improved warning message in the extended installation log
  • Improved various user interface texts and wordings in the English and German base language to be more consistent, easier to read and to comprehend
  • Improved consistency of multiple email notification texts and subject lines
  • Updated the KeyHelp cronjobs to use /bin/bash instead of /bin/sh for keyhelp, keyhelp-firewall, keyhelp-monitoring, keyhelp-rspamd-learn, and keyhelp-sa-learn
  • Updated various string structures for event log records
  • Protected the postfix email server (MTA) against email smuggling
    • Debian 10: Uses the short-term workarounds suggested by postfix
    • Debian 11: Uses the long-term fix suggested by postfix
    • Debian 12: Uses the long-term fix suggested by postfix
    • Ubuntu 20: Uses the short-term workarounds suggested by postfix
    • Ubuntu 22: Uses the short-term workarounds suggested by postfix
  • Improved database stability when performing long-running tasks (like Backups) on Systems >= Ubuntu 22 & Debian 12
  • Improved error handling on database startup errors on Systems >= Ubuntu 22 & Debian 12
  • Used 'System (root)' consistently for all occurrences where resources do not belong to a certain user, but instead belong to the system / the administrators (e.g. SSL/TLS certificates, Bulk operations, Scheduled tasks)
  • Reduced the number of translations required due to word streamlining and reassignment of strings within the .po files
  • Reduced possible confusion about which maintenance interval task belongs to which configuration page by adding additional help texts

API Changes

  • Updated the endpoints '[GET] /domains' and '[GET] /clients/{id}/resources' to now return the traffic accumulated in the current month for the corresponding domain
  • Fixed the misspelled 'aliases' and 'aliases_utf8' fields on the endpoint '/emails' - the old misspelled fields 'aliasses' and 'aliasses_utf8' are marked as deprecated and should no longer be used
  • Fixed some spelling mistakes in API documentation
  • Prevented adding email aliases with a different domain than the domain of the email account
  • Provided the API definition file now also in JSON format under /api/openapi.json
  • Increased API version to 2.8

Tool Updates

  • Roundcube 1.6.6
  • SnappyMail 2.33.0
  • Restic 0.16.3
  • Rclone 1.65.2

Vendor Library Updates

  • Font Awesome 6.5.1
  • Chart.js 4.4.1
  • Twig 3.8.0
  • CodeMirror 5.65.16
  • PHPMailer 6.9.1
  • phpseclib 2.0.46
  • TinyMCE 6.8.2
  • symfony/yaml 5.4.35
  • symfony/polyfill-php80 1.28.0
  • monolog/monolog 2.9.2

Translations

  • Updated Arabic (100%) | Thanks to Mohammed Al Shamlan
  • Updated Brazilian Portuguese (100%) | Thanks to Rogério Borba
  • Updated Catalan (100%) | Thanks to Otmar Schuster
  • Updated Dutch (100%) | Thanks to Bas Heijermans
  • Updated English (100%)
  • Updated French (100%) | Thanks to Chris Mehl
  • Updated German (100%)
  • Updated Hungarian (100%) | Thanks to Madarász László
  • Updated Italian (100%) | Thanks to Alessandro Daniele
  • Updated Norwegian (100%) | Thanks to Eirik Sikveland
  • Updated Polish (96%) | Thanks to Grafidea
  • Updated Russian (73%) | Thanks to Vladimir Alferov
  • Updated Spanish (100%) | Thanks to Otmar Schuster
  • Updated Swedish (100%) | Thanks to Marwin Gripenfrost
  • Updated Turkish (100%) | Thanks to Serkan Türkkan

Fixes / Imperfections

  • Fixed an issue where the client's theme was updated instead of the admin's when an admin logged in as a client and changed the theme mode
  • Fixed an issue where the date format of the KeyHelp database and data backup during a KeyHelp update used an incorrect date format
  • Fixed an issue when using the 'Bulk Operations -> Updating the PHP version of domains and scheduled tasks' where the default PHP version may not get listed in the 'Current PHP version' dropdown
  • Fixed an email error notification during the spam learning cronjob when no email account exists on the server
  • Fixed an issue where determining the size of the email queue on the admin dashboard could be too slow when having a large mail queue and preventing the login into KeyHelp
  • Fixed an issue where the server clock displayed visitors local time instead of the server time
  • Fixed an error on certificate management page with certificates having a duplicate CommonName property
  • Fixed some incorrect redirect targets within the KeyHelp UI where the user may have been redirected to the wrong page in case of some edge-case errors
  • Fixed issues on systems with incorrectly set locale settings and the parsing of various system commands (e.g. swap may not be correctly determined, monitoring may not work properly)
  • Fixed a PHP notice that may occur during file upload: Trying to access array offset on value of type null” in /home/keyhelp/www/keyhelp/pages/client_file_manager.php on line 450
  • Fixed a PHP deprecation warning: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/keyhelp/www/keyhelp/core/pending/File.php on line 244
  • Fixed a PHP deprecated warning when creating a Dropbox backup repository: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/keyhelp/www/keyhelp/core/Backup/Storage/BackupStorageConfig/BackupStorageConfigDropbox.php on line 110
  • Debian 12 / PHP 8.2 | Fixed a PHP deprecation warning: Creation of dynamic property QRencode::$cmyk is deprecated in /home/keyhelp/www/keyhelp/vendor/phpqrcode/phpqrcode.php on line 3266
  • Debian 12 / PHP 8.2 | Fixed a PHP deprecation warning: Creation of dynamic property PwnedChecker::$numberOfDataBreaches is deprecated in /home/keyhelp/www/keyhelp/core/Security/PwnedChecker.php on line 90
  • Debian 12 | Fixed that OpenDKIM was installed (OpenDKIM is not needed on Debian 12)
  • Fixed an issue where the labels of the unban button did not match the modal window texts on the Fail2ban management page
  • Fixed some issues regarding backups being stopped during execution without an error message

Miscellaneous

  • Unified PHP package list installed from the pre-installer and the main install routine
  • Removed unnecessary duplicate Dovecot configuration checks
  • Adjusted the character input limits in the input field for FTP username
  • Adjusted the character input length in the input fields for database name & database username
  • Updated Easter eggs
  • Updated code structure by updating the association of functions to their corresponding files
  • Enhanced debug capabilities when KeyHelp is installed/running with debug mode
  • Updated Debian 12 to be capable of running in full debug mode (dev-server only)
  • Updated debug panel appearance
  • Changed the CLI badge label for an important message from 'Important' to 'Attention'
  • Added more features to help designing KeyHelp's configuration pages
  • Updated method on how Roundcube custom logo will be configured
  • Updated the way the Apache default log format is handled
  • Renamed various internal components to make them universal/independent of the software installed on the server
  • Updated database tables 'mail_users' and 'mail_aliases'
    • Renamed table to 'mail_aliases' to 'mail_routing'
    • Removed unnecessary fields from 'mail_routing' ('id_user', 'id_domain') and updated code accordingly
    • Updated column structure and order within the 'mail_users' table
  • Refactorings (performance improvement, implementation of new features, use of modern language features, streamlining, increased flexibility etc.)
    • Refactored Backup restore & process handling
    • Refactored Events class
    • Refactored BasicEnum class
    • Refactored BasicStorage & its derived classes
    • Refactored FileAccess class
    • Refactored FileTypeCategory class
    • Refactored ServerEmailAliases class
    • Refactored Curl class
    • Refactored Cloudflare class
23.2.1 30 October 2023

Improvements / Changes

  • Added ability to open files with mime type 'application/javascript' via file manager
  • The email notification 'A client has updated its contact details' is now also sent when clients have updated their email address
  • Debian 12 | Added spam-learning for Rspamd and corresponding option field for 'Configuration -> Email Server'

Tool Updates

  • Roundcube 1.6.4

Vendor Library Updates

  • phpseclib 2.0.45

Translations

  • Updated Dutch | Thanks to Bas Heijermans
  • Updated English
  • Updated French | Thanks to Chris Mehl
  • Updated German

Fixes / Imperfections

  • Debian 12 | Fixed an issue where the wrong template was used for the Apache configuration file keyhelp.conf, which caused the Rspamd web interface to stop working after a rewrite of keyhelp.conf was triggered (already fixed since KeyHelp build 23.2.0.3097, mentioned here only for completeness)
  • Debian 12 | Fixing a 'PHP deprecated notice' when performing Ajax requests on systems upgraded from Debian 11 to 12
  • Debian 12 | Fixed the error that occurred when using the Rspamd web interface and the 'Scan/Learn' feature
  • Fixed that the checkbox under 'Configuration -> Support Access' was incorrectly displayed as enabled, although support access was not enabled
  • Fixed that with certain browser window sizes, the input fields under 'Configuration -> Service/Port Monitoring on Dashboard' were displayed too small

Miscellaneous

  • Updated KeyDisc Pro Logo
  • Hidden 3 more Easter eggs
  • Implemented new method to allow more variation in the display of Easter eggs
  • Updated component names displayed during the installation routine
23.2 28 September 2023

New Features / Added Content

  • Added support for Debian 12
  • Only Debian 12 | Complete rework of the email server system -> now using Rspamd (etc.) instead of Amavisd (etc.)
    • Amavis, Spamassasin, OpenDKIM are no longer needed and therefor not installed anymore
    • Switched DKIM signing from OpenDKIM to Rspamd DKIM signing
    • Detected viruses in emails are now tagged with '***VIRUS***' instead of '***INFECTED***'
    • The 'keyhelp-toolbox' utility in 'Show system information' now shows Redis and Rspamd (if installed) and omits Amavis and Spamassasin (if not installed)
    • UI changes in the admin area
      • Added 'Rspamd Web Interface' to 'System Status'
      • Added Rspamd and Redis to 'System Status -> Monitoring'
      • Added Rspamd and Redis to 'System Status -> Server Service Management'
      • Added Rspamd and Redis to 'Applications' on the dashboard
      • Removed the 'Train spam filters' input field from 'Configuration -> Email Server'
      • Removed the 'Spam filter black/white list' input fields from 'Configuration -> Email Server'
      • Removed the 'Protection measurements for catch-all email accounts' input field from 'Configuration -> Email Server'
    • UI changes in the client area
      • Removed the 'Check incoming emails for viruses' input field from 'Email Addresses -> Add/Edit'
      • Removed the 'Check incoming emails for spam' input field from 'Email Addresses -> Add/Edit'
      • Removed the 'Spam score' input field from 'Email Addresses -> Add/Edit'
  • Added support for logging in with a WebAuthn device
  • DKIM selectors for domains can now be changed and set individually
  • Added Hungarian translation - Thanks to Madarász László

Improvements / Changes

  • Added compatibility with PHP 8.2
  • Added the new placeholder <DKIM_RECORD_HOST> (including the DKIM selector) to the DNS editor
  • Added the 'DKIM DNS record' pop-up window trigger to the host column of the DNS editor when the record uses <DKIM_RECORD_HOST> as the host value
  • Added the current 'DKIM host' value (including the DKIM selector) of the selected domain to the 'DKIM DNS record' pop-up window (accessible via 'Domains' overview or DNS editor)
  • Updated existing custom DNS settings that used the default DKIM host value 'default._domainkey' with the new <DKIM_RECORD_HOST> placeholder
  • The default webmail and database administration software URLs are now relative instead of absolute URLs containing the hostname; this allows access to these tools via an IP address if the hostname is not reachable
  • The 'Service/port monitoring' on the admin dashboard now supports monitoring UDP ports as well
  • Improved the column order of the 'Service/port monitoring' on the admin dashboard
  • Added the protocol information to the port column in the 'Service/port monitoring' on the admin dashboard
  • Added the protocol information to the port in the 'keyhelp-toolbox' utility under 'Show system information'
  • Clients can now enable login notification emails for their account through the KeyHelp dashboard
  • Added the new 'A client has successfully logged in' template to the 'Configuration -> Email Notifications' page
  • Added the ##date_time## placeholder for use in custom email notification texts on the 'Configuration -> Email Notifications' page
  • Improved accessibility by enhancing the top right user menu for keyboard navigation
  • Added additional important descriptions and notes to the 'Configuration -> Hostname' page
  • Updated the validation for database names and database usernames to be less restrictive
  • Updated the wording of some technical terms to be consistent with new features of this update
  • Activated Sieve email filtering for SnappyMail
  • Updated the account template dropdown on 'User Administration -> Add/Edit' to better reflect that it does not indicate the currently active account template
  • Enhanced the 'Server Status -> Server Service Management as follows:
    • Added detailed information about the service status, accessible via the 'Details -> Show' button
    • Service status is now gathered asynchronously
    • Improved the labels, descriptions, tooltips, etc.
    • Updated the order of the services to be more logical
    • Added the 'Category' column
  • Added a domain search for 'Client area -> Statistics -> Domain statistics'
  • Removed the hierarchy in the domain dropdown on the 'Client area -> Statistics -> Domain statistics' as it was rather confusing to look at
  • Added a hint to use the CLI utility 'keyhelp login' after the installation routine has finished
  • Added CPU clock speed to the CPU information on the admin dashboard
  • Added CPU clock speed to the CPU information in the CLI utility keyhelp-toolbox
  • Added an option to the CLI utility keyhelp-toolbox: 'Rewrite KeyHelp configuration files (Apache, Bind9, PHP-FPM)'
  • Added a new Backup troubleshooting operation 'Repair index'
  • Improved KeyHelp UI page load speed and responsiveness by 2 - 3% (continuing the work on speed improvement that started with KeyHelp 23.1)
  • Showing KeyHelp Pro features on the 'Configuration' page - however, they cannot be accessed
  • Added a proper footer line to the 'Configuration -> Languages' page, showing the number of available languages
  • Removed the auto-restart of OpenDKIM after a reboot (it was a workaround for Ubuntu 16.04 and is no longer needed)
  • Added a deprecated note to the old backup system on the backup selection page
  • During the update process, if the old backup system is not used and has not been used, the option 'Show alternative backup management' page is set to disabled
  • Streamlined the translations for applications on 'keyhelp-toolbox -> Show system information', 'Admin dashboard' and 'Server Status -> Server Service Management'
  • Streamlined the 2-factor-authentication tab with other tabs of the users profile page
  • When adding a new record in the DNS editor, the focus is set to the first input field of the new record line
  • Updated the DNS editor description texts and layout, highlighting the available placeholders, etc.
  • Updated the DNS editor visuals when the DNS is disabled for a domain
  • Improved the email log viewer on 'System Status -> Mail log', which now uses journalctl to collect log records
  • Previously, shortly after rotating the /var/logs/mail.log, the email log viewer would not have been able to show all records it potentially can - now by using journalctl, this can no longer happen
  • Bulk operations now use a more user-friendly approach to specify the scope of the operation
  • Bulk operations now indicate when 'System (root)' is a valid option for the scope option
  • Removed the unnecessarily complicated 'All except the following user accounts' option from bulk operations scope dropdown
  • Updated the labels/description texts for the domain email options, to minimize possible confusion
  • Roundcube now logs failed login attempts to syslog/journal instead of its own log file
  • Only on new installations | Enabled Fail2ban jails for Roundcube, Postfix, Dovecot, ProFTPD by default
  • Only on new installations | Updated Fail2ban jail 'keyhelp-phpmyadmin' to work with the systemd backend
  • Web server logs on 'Domains -> Show logs' now shows 500 entries per access.log and error.log instead of just 300
  • Added 'Show client ID' to 'User Administration -> Customize view' which adds a new column containing the client ID
  • Added the client ID as a searchable parameter for 'User Administration -> Viewing options'
  • Added the client ID on the delete confirmation page of the clients
  • File manager now highlights .wsdl files in the overview and adds XML syntax highlighting when editing these files
  • Setting the default value for the php-fpm configuration option 'soap.wsdl_cache_dir', which now points to the /home/users/<USERNAME>/tmp/ directory
  • Improved traffic statistic calculation and now using journalctl for Dovecot and Postfix traffic collection
  • Only in admin area | Moved all options regarding email to the new tab 'Email'
  • Added a cleanup job for the Roundcube user database, which deletes email accounts no longer existing on the server from the Roundcube database
  • Added a new bulk operation feature: 'Override the DNS TTL of all domains'
  • The CLI utility 'keyhelp db-login' now also provides an auto-login URL for access via the IP address
  • Updated IonCube loader to version 13.0.1
  • Updated the order of menu items on the 'Configuration' page to be more logical
  • Updated the order of menu items on the 'System Status' page to be more logical
  • Only on new installations | The password for the 'mysqladmin' database user is now 32 characters long (use the 'keyhelp db-login' command as a more convenient alternative for logging in)
  • Moved the 'Prohibited Domain Names' link from the main navigation to the 'Configuration' page
  • Improved the display of installation parameters in the installation menu
  • Enhanced debug capabilities for KeyHelp when running in development mode
  • Improved the display of the configuration parameters in the email account's connection data pop-up window
  • Only on new installations | Ensured that the /etc/sudoers file has the correct settings during the installation routine
  • Only on new installations | ProFTPD now logs failed login attempts to syslog/journal instead of /var/log/proftpd/proftpd.log
  • Improved the display of disk space, memory, and swap consumption on 'keyhelp-toolbox -> Show system information'

API Changes

  • The endpoint '[GET] /server' (property: 'meta') now shows whether the server is running KeyHelp Pro
  • The endpoint '[GET] /server' (property: 'ports') now shows the protocol (tcp/udp)
  • The endpoint '[GET] /server' (property: 'components') now shows Redis and Rspamd (if installed) and omits Amavis and Spamassasin (if not installed)
  • The endpoint '[GET/PUT/POST] /domains' now allow querying and setting a domain's DKIM selector
  • Improved error messages for endpoint '[POST] /ftp-users', instead of informing about missing uid/gid, now the reason for this is better explained and what to do
  • Improved API documentation, added documentation of sorting parameters, corrected spelling and punctuation errors
  • Fixed the endpoint '[POST] /ftp-users' where the error message 'You are not allowed to create new directories at this level of the directory hierarchy.' was issued too early
  • Bump API version to 2.7

Tool Updates

  • Roundcube 1.6.3
  • Snappymail 2.28.4

Vendor Library Updates

  • Restic 0.16.0 (Improvement: Memory consumption reduced by 25%)
  • Rclone 1.64.0
  • Font Awesome 6.4.2
  • Chart.js 4.4.0
  • Twig 3.7.1
  • CodeMirror 5.65.15
  • PHPMailer 6.8.1
  • phpseclib 2.0.44
  • jQuery 3.7.1
  • TinyMCE 6.5.1
  • Handlebars 4.7.8
  • symfony/yaml 5.4.23
  • symfony/polyfill-mbstring 1.28.0
  • symfony/polyfill-ctype 1.28.0

Translations

  • Added Hungarian translation | Thanks to Madarász László
  • Updated Brazilian Portuguese (100%) | Thanks to Rogério Borba
  • Updated Catalan (100%) | Thanks to Otmar Schuster
  • Updated Chinese (traditional) (100%) | Thanks to Wu Ru Kang
  • Updated Dutch (100%) | Thanks to Bas Heijermans
  • Updated English (100%)
  • Updated French (100%) | Thanks to Chris Mehl
  • Updated German (100%)
  • Updated Italian (100%) | Thanks to Alessandro Daniele
  • Updated Norwegian (100%) | Thanks to Eirik Sikveland
  • Updated Portuguese (100%) | Thanks to ID Digital (Marco Ferreira)
  • Updated Spanish (100%) | Thanks to Otmar Schuster
  • Updated Swedish (100%) | Thanks to Marwin Gripenfrost
  • Updated Turkish (100%) | Thanks to Serkan Türkkan

Fixes / Imperfections

  • Fixed an issue where the asterisk on the database overview page (displayed whenever a database name/username needs to be enclosed in backticks) caused the database's description text to have a font size that was too small
  • Fixed an issue where in some places the asterisk for required input fields was displayed both in the labels and in the help text
  • Fixed a PHP warning when trying to apply an account template to a user account with invalid request parameters (-> improved this feature regarding input validation, added indicator when something invalid was passed)
  • Fixed that input sanitization was not applied to input fields on 'Configuration -> Service/Port Monitoring on Dashboard'
  • Fixed the icon for an invalid/unknown backup type on the backup overview
  • Fixed that when performing the 'Unlock repository' backup operation, the end time was not saved and therefore the duration of the operation was not displayed when hovering the mouse cursor over the 'Started on' column on the backup overview page
  • Fixed that the 'Configuration -> Restricted SSH environment' page could be accessed without KeyHelp Pro
  • Fixed the update installation of the additional PHP interpreters, which in rare cases could result in the PHP interpreter not being updated/installed and thus completely removed from the server
  • Fixed an issue that occurred around the turn of the year in 'System Status -> Mail Log' that caused records from the previous year to be listed with an incorrect date
  • Fixed email domain settings where the 'Domain can be used exclusively for sending emails' checkbox remained visible and retained its status when the domain type was changed from the main domain to a subdomain
  • Fixed a PHP deprecated warning when calling the API without specifying an endpoint
  • Fixed the order when sorting by the 'Banned since' column in 'Fail2Ban Management'
  • Fixed an error that could occur when terminating a phpMyAdmin session when being logged in using the KeyHelp database auto-login feature
  • Fixed the error message 'You are not allowed to create new directories at this level of the directory hierarchy' being issued too early when a new FTP user should be added and the corresponding system user was not yet fully set up
  • Fixed the dovecot error 'Command output: doveconf: Fatal: Error in configuration file /etc/dovecot/conf.keyhelp.d/10-ssl.conf line 4: ssl_ca: Can't open file /etc/ssl/keyhelp/mail-ca.crt: Permission denied' by removing the ssl_ca configuration option from /etc/dovecot/conf.keyhelp.d/10-ssl.conf
  • Fixed the issue where HTTPS vhost containers were not generated for domains marked as disabled - accessing such domains would result in a '404 Error' page instead of redirecting to the specified 'Domain not found' URL
  • Fixed an issue where the monitoring cron job could send an email with error messages like 'file_get_contents(/proc/<PID>/stat): failed to open stream: No such file or directory' when trying to collect data from an already terminated process

Miscellaneous

  • Streamlined various database table column types of the KeyHelp database
  • Renamed database column names and PHP function names to indicate that the corresponding features are independent of the software on the server in preparation for upcoming features
  • Updated the welcome message on the admin dashboard
  • Refactored and improved the logical order of the main update cron job
  • Renamed the database table 'domains_log_analyzer' to 'domains_traffic_collector'
  • Improved code and comments quality
  • Renamed 'DNS Zone Editor' to 'DNS Editor' throughout the UI
  • Lowered the license grace period to 7 days
  • The values in the database table 'domains_custom_dns' are no longer stored in the PHP serialized format, instead they are now stored using JSON format
  • Added a separate Bind server config update job to the update cron job (previously it was bundled with server and client configs update)
  • Added a separate PHP-FPM server config update job to the update cron job (previously it was bundled with server and client configs update)
  • Removed obsolete functions
  • Improved the template structure of the login page
  • Removed the double slash in the URL when accessing the webmailer on the 'Client area -> Emails' page
  • Added a new DKIM management system and a new DKIM manager for systems using Rspamd
  • During a hostname change, the custom access URLs for webmail and database administration are now no longer updated; Custom access URLs, which contain the old hostname need to be updated manually
  • Removed Ubuntu 18 from the list of supported systems
    • Prevents installation on Ubuntu 18 systems
    • Removed deprecated Ubuntu 18-specific code
    • Removed workarounds and code maintained for compatibility with PHP 7.2
    • Utilized various features of newer PHP versions that could not be used until now
  • Refactorings (performance improvement, implementation of new features, use of modern language features, streamlining, etc.)
    • Refactored DatabaseAutoLogin class
    • Refactored KeyHelpInstaller class
    • Refactored SetupConfig class
    • Refactored InstallLog class
    • Refactored ResticSoftware class
    • Refactored RcloneSoftware class
    • Refactored ClientTraffic class
    • Refactored AwstatsManager class
    • Refactored CPUInfo class
    • Refactored Fail2BanClient class
    • Refactored TwigRenderer class
    • Refactored VersionNumber class
    • Refactored OpenDKIM class
    • Refactored TlsProtocols class
    • Refactored *LogAnalyzer classes -> TrafficCollector* classes
    • Refactored LogViewer* classes and added a class for Journalctl
23.1.1 09 May 2023

Translations

  • Updated Dutch (100%) | Thanks to Bas Heijermans

Fixes / Imperfections

  • Fixed incorrect path to the .htpasswd file in the .htaccess file of the Awstats statistics - preventing the Awstats statistics from being accessed
  • Fixed formatting issue of ss command output which caused socket statistics and port monitoring not to work properly on some systems
23.1 04 May 2023

New Features / Added Content

  • Added round-the-clock monitoring and graphs for various system metrics (requires KeyHelp-Pro)
  • Added Snappymail as a new webmailer alternative
  • Added socket status / port usage overview page (a representation of commands like 'netstat -tulpen' / 'ss -tulpen')
  • System mail log can now be monitored in real time from the user interface
  • Portuguese translation added - Thanks to ID Digital (Marco Ferreira)

Improvements / Changes

  • Added a nice value (= lowered priority) to the SpamAssassin learn cron job
  • Added columns to show nice and priority values for processes on the process manager page
  • Added an additional vhost container for an HTTPS to HTTP redirect if no HTTPS container exists (= domains without SSL certificate)
  • Moved all status/statistics menu items within the main navigation and combined them under the new menu item 'General -> System Status'
  • Updated the monitoring and eventual restart (in case of an error) of the Amavis service from every 12 hours to now every 6 hours
  • Improved the way real-time monitoring of Apache server status and domain logs works to be more suitable and more efficient for logs with a high number of new records per second
  • When attempting to access KeyHelp files via the web that need to be executed via CLI, a 403 HTTP error is issued and the error message has been formatted to be readable in the web context
  • The KeyHelp Toolbox now shows whether a server restart is recommended
  • Updated file structure in KeyHelp home directory
  • Improved parsing of Apache error.log files for IPv6 addresses and ports
  • Simplified overview table of domains and saving some vertical space
  • Simplified overview table of user administration and saving some vertical space
  • Added option to allow email domains for email sending only
  • Unified the way how paths are displayed in the overview tables (domains, FTP users, directory protections)
  • Adding the option to quickly access the assigned directory in the file manager for domains, ftp users, directory protection pages in the client area of KeyHelp
  • Updated the order of the directory protection columns to better match similar pages
  • Improved the way the icons are generated by the template engine and added new features
  • Improved the KeyHelp autoloader and boosted the page loading speed by 2.5 - 5% (further improvements of up to 10 - 15% are possible with upcoming updates)
  • Added display of disk space reserve on admin dashboard
  • Improved readability for scheduled tasks in dark mode when the command type is PHP
  • Displays PHP interpreter version number of the scheduled task on overview page if command type is PHP
  • Updated the features and flexibility of the template macro element 'Tag'
  • Updated the Select form element to allow full button customization when used in combination with a button
  • Improved method for checking for open ports on the admin dashboard (allows UDP ports to be checked with a later release)
  • In the server service management, the time synchronization service Chrony is displayed, if installed
  • Improved Apache server status, real-time monitoring now visually consistent with other pages with this feature
  • Updated various icons to make them more meaningful
  • Removed redundant duplicate 'Back to overview' button on the 'Web Server Logs' page
  • Updated SourceGuardian loader to version 14.0.1
  • The bulk operation 'Update PHP Version' now also updates the PHP interpreter version for scheduled tasks
  • Improved icon colors for various icons to create a more pleasant overall appearance
  • Shows the usage of each PHP interpreter by PHP-FPM configuration files, by domains and by scheduled tasks
  • Moved all items from the Automation tab during client creation/editing to the new Advanced Settings tab
  • Moved the Suspend Account checkbox to the Advanced Settings tab
  • Moved all items from the Automation tab during domain creation/editing to the new Advanced Settings tab
  • Moved the Disable domain checkbox to the Advanced Settings tab
  • The restriction for FTP accounts that their home directories must be below /www/ or /files/ has been removed (one can now grant access to FTP accounts that can access the entire home directory)
  • Added information since when and how long an IP is banned to the Fail2Ban management (not for Ubuntu 18 / Debian 10)
  • Improved the way unavailable domains / non-existing domains are handled on the server, also removed some workarounds in KeyHelp in the process, resulting in a slight performance optimization
  • Improved creation of new system user accounts - e.g. when errors occur in the quota system, the uid/gid of a user account is now set in the database, which results in a user account being fully usable, as opposed to when the same thing occurred in previous releases
  • On the statistics page in the client area you can now see the traffic distribution of the last 6 months in the traffic statistics
  • Improved and streamlined various labels, description texts and event messages to make them more useful and helpful
  • Email queue
    • Added option to flush email queue
    • Added display of email headers
    • Added new status column that shows in which queue the email is currently held
    • Improved table structure and column order
  • File manager
    • The exchange directory required for various file manager operations is now checked for file remnants every 3 hours and cleared if necessary
    • Changed order of 'Directory / Empty file' in 'File manager -> New' pop-up - also the directory is now preselected
    • The UI element that shows the current file system position is now also displayed when viewing and editing files
    • Improved the way the UI element for current file system position is generated by the template engine
    • Improved some potentially misleading labels and description texts
    • Allows viewing and editing of files with the mime type 'application/octet-stream'
    • Prevents changing file properties for files at the root level of the home directory
  • Backup
    • Added KeyDisc as backup storage type to allow easier integration of KeyDisc remote storages
    • Added option to backup schedules to start them immediately
    • Added hint on how to use the asterisk character in the 'Files and directories' input fields when creating backups
  • PHP-Interpreters
    • Prevent PHP interpreters from being uninstalled when used for scheduled tasks
    • Removed redundant information from the 'Configuration -> PHP Interpreter' tables and saved some vertical space

API Changes

  • Added the is_email_sending_only field to the /domains endpoints
  • The /ftp-clients endpoint can now be used to create FTP users that can access all directories of the user's home directory (previously only the directories /www/ or /files/ and their subdirectories were allowed)
  • Bump API version to 2.6

Tool Updates

  • PhpMyAdmin 5.2.1
  • Roundcube 1.6.1 (not for Ubuntu 18)
  • Snappymail 2.27.3 (not for Ubuntu 18 / Debian 10)

Vendor Library Updates

  • Restic 1.15.2
  • Rclone 1.62.2
  • Font Awesome 6.4.0
  • Chart.js 4.2.1
  • Twig 3.5.1
  • CodeMirror 5.65.12
  • PHPMailer 6.8.0
  • phpseclib 2.0.42
  • jQuery 3.6.4
  • symfony/yaml 5.4.21
  • TinyMCE 6.4.2
  • monolog/monolog 2.9.1

Translations

  • Added Portuguese translation - Thanks to ID Digital (Marco Ferreira)
  • Updated Arabic (100%) | Thanks to Mohammed Al Shamlan
  • Updated Brazilian Portuguese (100%) - Thanks to Rogério Borba
  • Updated Catalan (100%) | Thanks to Otmar Schuster
  • Updated Dutch (100%) | Thanks to Bas Heijermans
  • Updated English (100%)
  • Updated French (100%) | Thanks to Chris Mehl
  • Updated German (100%)
  • Updated Italian (100%) | Thanks to Alessandro Daniele
  • Updated Norwegian (100%) | Thanks to Eirik Sikveland
  • Updated Polish (100%) | Thanks to Grafidea
  • Updated Spanish (100%) | Thanks to Otmar Schuster
  • Updated Turkish (100%) | Thanks to Serkan Türkkan
  • Updated Swedish (100%) | Thanks to Marwin Gripenfrost
  • Marked Indonesian as abandoned

Fixes / Imperfections

  • Fixed a JavaScript error that occurred when using the Firefox/Safari browser and trying to submit the form with the general email notification settings
  • Fixed a JavaScript error that prevented the email notifications test email from being sent with certain browsers versions
  • Fixed an installation error in the Dovecot component when reinstalling KeyHelp on an already installed KeyHelp system
  • Fixed installation error / hanging installation routine in the Bind9 component when a modified /etc/init.d/bind9 file already existed on the server
  • Fixed an issue on the firewall user interface with positioning of firewall rules for outgoing traffic
  • Fixed sorting issue with case sensitivity of directory names on disk usage page
  • Fixed that the additional information icon was displayed on the email queue page even if no additional information was available
  • Fixed that the 'Go to Download' button was hidden on the domain web server logs page
  • Fixed incorrect redirection URL when no checkbox was ticked on the bulk operations page 'Rewrite user configuration files'
  • Fixed that .csv files / files with the mime-type 'application/csv' could not be viewed with the KeyHelp file manager on Debian systems
  • Fixed that a spacer icon took more vertical space than a normal icon, which caused table rows with a spacer icon to be displayed 10-20% larger and resulted in a disharmonious appearance
  • Fixed incorrect command type labeling on the confirmation page for deleting scheduled tasks ('Run PHP script' was labeled as 'Call URL' and vice versa)
  • Fixed a PHP warning on the active session page when an FTP username '(none)' was present
  • Fixed showing/hiding the asterisk character for input fields when no label was set and only the help text was displayed
  • Fixed an issue with DNS that caused AXFR requests to be answered
  • Fixed that when deleting an FTP user, the absolute path of the home directory on the server was displayed instead of a relative path
  • Fixed that the form fields that control the scope of a bulk operation were not displayed
  • Fixed that if only non-existent usernames were entered in the form fields in the area options on the bulk operations page, the operation was performed for all users instead of for no user
  • Fixed that on active session page, when there are connections from multiple IPs below 'Email Server Sessions', the Whois tool could not be used to receive more information about one of the IPs
  • Fixed a JavaScript error that occurred when logged in to the client area with 'Brazilian Portuguese', 'Chinese traditional' or 'Chinese simplified' selected as language, causing various dynamic features in the user interface to not work properly
  • Ubuntu 22
    • Fixed a PHP deprecated notices when trying to set up an SFTP backup remote store with an empty host
    • Fixed a PHP deprecated notices when trying to set up an SFTP backup remote store with an empty user
    • Fixed a PHP deprecated notices when calling the path sanitization routine with an invalid path

Miscellaneous

  • Refactorings (implementation of new features, use of modern language features, streamlining, etc.)
    • Refactored LogParser class
    • Refactored MailQueue class
    • Refactored Autoloader class
    • Refactored Users class
    • Refactored FtpWho class
    • Refactored Process class
    • Refactored ProcessManager class
    • Refactored Backup storage setup JavaScript components
    • Refactored file system functions
    • Various other code improvements
  • Updated database structure and field names for various database tables
  • Updated the way system domains are created
  • Updated IP addresses for support access SSH keys
  • Improved ability to have a non-development server switch to full error reporting
  • Updated options to setup development servers
  • Implemented various smaller improvements for template elements
23.0 19 January 2023
22.2 07 September 2022
22.1.1 18 July 2022
22.1 13 July 2022
22.0.1 03 June 2022
22.0 24 March 2022
21.3 14 December 2021
21.2 14 September 2021
21.1 12 July 2021
21.0 16 March 2021
20.3.2 01 February 2021
20.3.1 03 November 2020
20.3 28 October 2020
20.2 30 July 2020
20.1 19 May 2020
20.0 18 February 2020
19.3.1 05 November 2019
19.3 29 October 2019
19.2.1 24 July 2019
19.2 16 July 2019
19.1 06 May 2019
19.0.1 03 April 2019
19.0 04 March 2019
18.2.1 20 December 2018
18.2 05 December 2018
18.1.1 11 June 2018
18.1 16 May 2018
18.0 12 March 2018
17.2.1 21 November 2017
17.2 14 November 2017
17.1.2 03 August 2017
17.1.1 02 August 2018
17.1 24 July 2017
17.0.0 03 April 2017
14.7.2 29 November 2016
14.7.1 12 October 2016
14.7.0 23 August 2016
14.6.4 29 June 2016
14.6.3 25 May 2016
14.6.2 29 April 2016
14.6.1 21 March 2016
14.6.0 29 February 2016
14.5.3 25 January 2016
14.5.2 07 December 2015
14.5.1 14 October 2015
14.5.0 15 September 2015
14.4.1 26 May 2015
14.4.0 06 May 2015
14.3.1 20 January 2015
14.3.0 02 December 2014
14.2.1 27 August 2014
14.2.0 26 August 2014
14.1.0 08 July 2014
14.0.0 28 May 2014