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