Releases: dbmail/dbmail
Release list
Version 3.5.6
DBMail 3.5.6 offers new features and a few bug fixes, including improvements to managing the database pool.
DBMail is a fully featured IMAP server running on Linux and Unix servers, it can be installed on a single physical machine, a virtual server or multiple servers for high availability. DBMail is highly scalable and configurable and can be reconfigured with little or no impact making it easy to scale up or down as required.
Certificates
The Full Certificate Chain is now sent with the tls connection improving support for Letsencrypt.
Authentication
Improved consistency between auth = sql and ldap. When using auth=ldap, login also checks for dbmail_users = active making it easier to temporarily deactivate a user.
Load balancing
Allow multiple loadbalanced dbmail processes on the same port with reuseport=yes, with thanks to benibr.
Database pool
Database pool logs more information helping to track issues when unable to get a new connection, and exit dbmail cleanly if a connection can't be established within 90 (configurable) seconds using connection_pool_timeout = 90. Many thanks to mviazovskyi for working on this.
Sieve
dbmail-sievecmd -a now works as expected thanks to cjmayo.
Bugfixes
Thanks to mviazovskyi fixing deletion by non-existent UID.
PLAIN authentication reworked and auth failure logging improved.
Docker
Docker cleaned up by removing EXPOSE ports thanks to svalcken.
Docker is improving though still experimental, a 3.5.6 image is delayed but should be available soon.
See Docker for more information https://dbmail.org/en/install/docker/.
It's thanks to everyone who files bug reports and contributes code that makes DBMail one of the best open source IMAP servers available.
Thanks for using DBMail, your support is appreciated,
Alan
Version 3.5.5
DBMail 3.5.5 offers new features and a few bug fixes, including a new authentication method, improved support for Postfix, logging improvements and listing forwarders.
DBMail is a fully featured IMAP server running on Linux and Unix servers, it can be installed on a single physical machine, a virtual server or multiple servers for high availability. DBMail is highly scalable and configurable and can be reconfigured with little or no impact making it easy to scale up or down as required.
Thanks
Many thanks to Tom Ivar Helbekkmo (tih) for contributing AUTH=PLAIN, NetBSD build and startup scripts, capabilities display management and improvements to logging.
It's thanks to everyone who files bug reports and contributes code that makes DBMail one of the best open source IMAP servers available.
Authentication
When you connect to a DBMail IMAP server you will now see AUTH=LOGIN and AUTH=PLAIN listed as capabilities.
The PLAIN Simple Authentication and Security Layer (SASL) Mechanism (RFC 4616) - AUTH=PLAIN - has landed thanks to tih. This fixes an issue where some clients had difficulty in authenticating.
CRAM-MD5 needs an unencrypted password for authentication and CRAM-MD5 has been recommended for deprecation since 2008. It's not available for LDAP authentication as the password is stored as a salted hash. If you wish to disable it set [IMAP] enable_cram_md5=no. Thanks to tih.
For more information on managing users see https://dbmail.org/en/manage/managing-users/.
For more information on managing users with LDAP see https://dbmail.org/en/install/ldap-active-directory/.
Logging
Understanding what's going on inside a system is essential for auditing and tracking issues. Thanks to tih there are a number of improvements, non debug logging is less noisy and native docker logging works as expected. Set logfile = stderr and DBMail logs will go via docker log.
For more information on logging see https://dbmail.org/en/install/logging/.
For more information on DBMail and Docker see https://dbmail.org/en/install/docker/.
Postfix
DBMail has always supported UTF-8. RFC 6531 clarifies how apps work together and DBMail now adds support for utf-8 with postfix, just add smtputf8_enable = yes to main.cf.
See Installing DBMail with Postfix for more info https://dbmail.org/en/install/installing-dbmail-with-postfix/.
Email forwarding
Although many orgs will use their own authentication system and query sql/ldap directly, forwards are now included when listing users with dbmail-users --list-user(s)
See Managing Users for more information https://dbmail.org/en/manage/managing-users/.
Docker
Docker is improving though still experimental, a 3.5.5 image is now available.
See Docker for more information https://dbmail.org/en/install/docker/.
Integrated Testing
There has always been a more thorough check before release. This release adds an automated bourne shell script for use on the majority of Unix and Linux platforms - check.sh.
In addition to automated function tests as part of the build script (make check), it's useful to check for memory leaks and to ensure the various functions integrate with each other. These integration tests should be run before every release.
More than that, it's common to use a1, a2, a3 as tags whereas if there is an issue it's easier to identify the test within the logs if it's labelled with a prefix, for example:
list1 login testuser1 test
list2 list "" *
list3 create sub1/sub2/sub3
list4 list "" *
list5 list "" %
list6 unsubscribe sub1
list7 list "" *
list8 list "" %
list9 delete sub1/sub2/sub3
list10 delete sub1/sub2
list11 delete sub1
list12 logout
There is always more to do and there are many configuration choices that affect how DBMail behaves. This test script is a start and will be added to as DBMail evolves.
Test script check.sh at https://github.com/dbmail/dbmail/tree/main/test-scripts.
Thanks for using DBMail, your support is appreciated,
Alan
Version 3.5.4
DBMail 3.5.4 is now available.
The main changes are better support for docker and systemd, MySQL compression and an anomaly in how libzdb handles NULLs.
Improved docker and systemd support
Logging is now docker and systemd friendly thanks to Tom Ivar Helbekkmo, just set logfile = stderr and you're good to go. Expect an updated docker image in the next day or so.
Compression to save space
Significant disk space can be saved with compression. Postgres already does this but Sasha Gomanuke highlighted the excessive space used to store emails on MySQL so compression is now the default on dbmail_mimeparts. It's automated as usual, though as the table is read only until the update is complete those with a large or active installation might prefer to handle this manually. See https://dbmail.org/en/architecture/upgrading/ for how upgrades work.
The following SQL queries can be used to discover the disk size
PostgreSQL
SELECT
table_name,
pg_size_pretty(pg_total_relation_size(quote_ident(table_name))),
pg_total_relation_size(quote_ident(table_name))
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'dbmail_mimeparts';
MySQL
SELECT table_schema, table_name, row_format, data_length, index_length
FROM information_schema.tables
WHERE table_name = 'dbmail_mimeparts';
ls -lh /var/db/mysql/dbmail/dbmail_mimeparts.ibd
Aligning PostgreSQL and MySQL/Oracle schemas with libzdb
Although libzdb does an excellent job of ensuring working with the three supported databases is easy, there is one aspect that is different - handling null data. Although often conceptually treated the same, the empty string is a value of zero length, whereas null is the absence of a value and select queries behave differently. As mime parts can be empty, this update aligns the way PostgreSQL and MySQL/Oracle are handled in DBMail.
https://dev.mysql.com/doc/refman/8.4/en/working-with-null.html
https://dev.mysql.com/doc/refman/8.4/en/problems-with-null.html
Version 3.5.3
- Various memory leaks fixed
- Fix invalid free and invalid read
- sieve port changed to 4190 as per rfc5804
Version 3.5.2
This release focuses on ease of use:
- Long options added
- Man pages updated
- Help refactored
Because there were so many options they were sometimes cryptic.
By adding long options and clarifying their use in the help and man pages they should be easier to understand and use.
v3.5.1: Merge pull request #409 from alan-hicks/main
This release has focused on reliability plus making DBMail easier to install and manage with significant improvements in documentation and logging.
Installation is easier and automatically creates and updates the database schema.
Configuration
The configuration file dbmail.conf has been reorganised so the most popular settings are at the top of the file, with improved documentation and examples.
There is a new section on the website to help new users https://dbmail.org/install/install-and-commission/ install and better manage DBMail.
The configuration file dbmail.conf is reorganised into sections making settings easier to find with examples and improved documentation.
Logging
Significant improvements have been made to logging.
Configuring logging is much simplified and uses the standard error, warning ... debug. The previous numeric options are still available if you need fine grained logging, but for most sites the syslog levels will be easier and more intuitive.
Logging is rationalised into a single log file instead of two making it easier to find errors.
The dbmail.conf setting is logfile = dbmail.log and errorlog = dbmail.err has been removed. As log files are essential you'll get an error until the errorlog has been removed from the config file. Logging is in a single place and is summarised as follows:
[DBMAIL]
file_logging_levels = notice
syslog_logging_levels = warning
logfile = /var/log/dbmail/dbmail-lmtpd.log
If you wanted to log debug information for the LMTP daemon, just add the following to the configuration file.
[LMTP]
file_logging_levels = debug
logfile = /var/log/dbmail/dbmail-lmtpd.log
After restarting the daemon all logging at or lower than debug will go to /var/log/dbmail/dbmail-lmtpd.log.
All the dbmail apps can be configured separately for log file and level, and the setting follows the app name.
Although the command line utilities are only used by administrators, they now have some feedback even if it mostly refers to the log file.
The config section names follow the app names making them easier to configure.
Docker
Docker support continues to improve and there are two Ubunto 24.4 Dockerfiles for test/development and a production build. The production build ensures all checks pass whereas development skips checks ensuring an image is built so it can be tested and debugged more easily.
- Dockerfile-amd64-ubuntu2404-350
- Dockerfile-amd64-ubuntu-devel
There is more information at https://dbmail.org/architecture/docker/ on how to build and configure the containers. They have been confirmed to build successfully on Debian.
curl://
Curl makes it easier to use an upstream SMTP server for sending emails.
Sending emails either though forwarding or via a Sieve script is now reliable thanks to curl. Although unlikely and not seen in the wild, it was possible that when using sendmail, it would receive an email for forwarding, but the docker image would be destroyed before it could be delivered. Curl enables an atomic transaction ensuring either guaranteed delivery or failure.
Miscellaneous
Ensuring reliability, automated tests have been refactored and now pass with the latest gmime 213. Production Dockerfiles run checks ensuring a successful build and test to ensure reliability.
Some headernames were missing and they are now checked and added if required.
All daemons use TLS following the removal of dbmail-timsieved, use dbmail-sieved instead.
Following the library version bump from gmime 2.6 to 3, all the failing checks are refactored and now pass. Some checks are also refactored to reflect changes in check v15.2 macros.
A longstanding bug re missing final mime boundary is now fixed.
Thanks,
Alan
v3.5
DBMail 3.5 now has
- automatic table creation on first install
- Improved logging config
- Required header names added if required
- curl library added for SMTP forwarding
- dbmail-sieved for starttls (deprecated dbmail-timsieved removed)
- Checks refactored for gmime3
- dbmail-announce mailing list added for release and other announcements
- dbmail-general mailing list added for general discussion
- Numerous bug fixes
v3.4.1
- Missing flags fixed
- Missing dbmail-sieved.txt added
- Experimental Docker image created
v3.4.0
dbmail-sieved now has STARTTLS
configure scripts updated with autoconf 2.71 automake 1.6.5
v3.3.1
MySQL 8 is supported and fixes an issue with 8.0.31 and libzdb