1.09.1
Process improvements
Website
- Discuss: historically remove many/most/all DJB-era
.md
docs from the source tree and preserve them on the website- Possibly false assumption: we were never going to update them
- Possibly false assumption: they're not needed to grok/navigate the code
- Start a
next-release
page (excluding it from the releases feed)
Git
- Redo patch branches (where needed) like so:
- Commit (if needed) to restore context we've changed
- Commit-with-attribution: upstream patch, as verbatim as possible
- Commit (if needed) to fix compilation, style, etc.
Smoother PRs
- Focus for a while on automating sources of confidence:
- Integrate #225 (the patch checker) into GitHub Actions
- Make sure automatically that
Makefile
rules listing dependencies on local include files are accurate- Also that
"foo.h"
includes come before<foo.h>
- Also that
- #189 Turn up warnings in local builds,
fix everything that doesn't break patches, ratchet CI
conf-cc
-Wthis -Wthat
to match - #48 Make regular use of code analysis tools
- Reconsider alternatives to
check,
now that warnings are no longer rampant
- For instance, AceUnit
- Write more tests
- Integrated tests, too (such as swaks)
- Discuss whether to keep maintaining an in-tree
CHANGES.md
- If yes, make PRs fail checks when we forget
- Eike: let's keep
CHANGES.md
for changes that are user-facing, e.g.- autobuild workflow changes
- information about how we made it that isn't information about what's in there
Smoother releases
- Make a small change, then cut another release, for the sole purpose of smoothing out the release process
1.10
Cleanups
- #7 Stop redeclaring system functions
- Remove everything from 1.09 "What's going away?" that we're sure now is the time
Patches to merge
- #89 Fix leap second handling on systems running TAI (original patch)
- #90 Improve Maildir file uniqueness in qmail-local.c (original patch)
- Sergio Gelato's fixed version of Andy Repton's outgoingip patch to configure qmail-remote's IP in
control/outgoingip
- RCPTCHECK or qmail-spp (or both?)
Ideas to merge
- #94 Sprinkle
fsync()
to makesyncdir
unnecessary - Tiny changes to
qmail-smtpd
to support running under aqmail-popup
-alike SMTP AUTH parent program
Programs to merge
- #227 Import
qmail-qfilter
- #232 Test qmail-inject recipient address qualification
- #233 Import
qmail-rcptcheck
,qmail-rcptcheck-realrcptto
, andqmail-rcptcheck-badrcptto
- Enable
realrcptto
by default?
- Enable
- Import qmail-spp-spf
Other
- #35 FHS (#2)
- split conf-qmail in to conf-qmail-bin, conf-qmail-queue, conf-qmail-man, etc.
/var/qmail/DIR
unless/var/qmail
not inconf-qmail
- Configuration sugar:
./configure && make && make install
(#9)
- Debian (deb), RedHat (rpm), and /package packaging
1.11 and onward
- Incrementally integrate inbound STARTTLS and AUTH
- Incrementally redesign
qmail-remote
for outbound TLS, AUTH, SIZE, PIPELINING, SMTPUTF8, IPv6 - #50 Add
spawn-filter
for filtering messages fromqmail-remote
andqmail-local
- Add SRS and DKIM filters
- (see Designs)
1.19
Publish some "extensions", if that still makes sense
qmail-popup
qmail-pop3d
qmail-qmtpd
qmail-qmtpc
2.0
Breaking changes to the queue
- new build time defaults for on-disk queue
- add queue repair tool
- #67 remove qmail-upq
- including the ability to upgrade a 1.x queue to 2.x in-place
- merge big-todo (changes queue layout)
- increase default conf-split to 31 (changes queue layout)
- merge ext-todo
- add a qmail-todo manpage, #23
- merge netqmail-big-concurrency
Other breaking changes
- Merge changes for high-volume installations that are harmless defaults in 2020 (taking care to migrate smoothly)
- qmail-ldap, or enough interfaces to let extensions provide LDAP integration
- make sure everything works with vmailmgr, vpopmail, other approaches to "virtual users"
- remove deprecated code
- #71 remove install script
Breaking changes to (some) patches
- #43 cleanup: remove
readwrite.h
, useunistd.h
instead - #44 cleanup: remove
exit.h
, useunistd.h
instead - cleanup: remove
fork.h
, useunistd.h
instead
Port to the latest DJB libraries. Remove local copies. Depend on external libowfat or skalibs.
- Replace stralloc with array
- Replace substdio with buffer
- Replace time-handling code with libtai
- Replace DNS resolver code with djbdns's
- #88 Use mess822
- Replace poll/select with iopause
- Possibly add kqueue and/or epoll support to iopause
- Replace exec (and related env_puts) with pathexec
- Update to latest cdb
- Use socket for any remaining networking code that's still necessary
2.1
Port unmerged, blessed netqmail patches to the extension interface
2.2
Extensions for postmaster interfaces
- Help developers adapt some code of theirs and get it merged
2.3
Extensions for email clients
- Help developers convert more of their existing code to extensions