Releases: dbmail/dbmail
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
v3.3.0
DBMail is a Message Delivery Agent speaking IMAP, POP, ManageSieve and LMTP using industry standard PostgreSQL, MySQL and Oracle for secure scaleable storage.
This release bumps gmime to version 3.0 (3.2), all other requirements are the same.
- Database: Current versions of MySQL, PostgreSQL, Sqlite3 and Oracle
- Glib: (>= 2.16)
- GMime: (>= 3 (3.2))
- OpenSSL
- libmhash
- libzdb (http://www.tildeslash.com/libzdb/)
libevent: (>= 2.1) - Optional: libsieve (>= 2.2.1) (https://github.com/sodabrew/libsieve)
- Optional: jemalloc
v3.2.6
[3.2.6] - 2022-01-09
WARNING
- the maintenance(dbmail-util) process should be issues in a maintenance window do to massive changes on database, see [#108]
- compatibility compiler standard was raised to C17
Added
- IMAP Daemon: added switch to control the sequence update strategy
- IMAP Daemon: added switch to control the sync between \DELETE flag and the actual state of the message (deleted), see also mailbox_sync_batch_size.
- Build: automatic installation script (v 0.5), #104
- Maintenance(dbmail-util): added option to upgrade to utf8mb4(MariaDB/MySQL), --upgrade, beaware, this is an intensive process (depending on you database), a backup is advised [#108]
Optimizations
- IMAP: optimizing differential state
Issues
- fixing Outlook issue found on making a message read [#139]
- fixing duplicate key by adding necessary handlers [#134]
- fixing deleting forwards and aliases when deleting a user [#129]
- fixing LMTP delivery in case of disabled users [#122]
- fixing compilation issue on alpine and SmartOS [#123] [#124]
- fixing sql issues related to MODSEQ [#111]
- fixing LMTP segmentation fault on sieve error [#106]
- fixing invalid utf-8 character adding sql conversion [#108]
- fixing other sql issues (upgrade process) [#103] [#102] [#99] [#97] [#105] [#93]
- fixing SIEVE crash on error [#106]
- fixing debian build [#91]