1.09.1
Process improvements
Website
- Discuss: historically remove many/most/all DJB-era
.mddocs 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-releasepage (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
Makefilerules 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 -Wthatto 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.mdfor 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 makesyncdirunnecessary - Tiny changes to
qmail-smtpdto 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
realrcpttoby 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/DIRunless/var/qmailnot 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-remotefor outbound TLS, AUTH, SIZE, PIPELINING, SMTPUTF8, IPv6 - #50 Add
spawn-filterfor filtering messages fromqmail-remoteandqmail-local - Add SRS and DKIM filters
- (see Designs)
1.19
Publish some "extensions", if that still makes sense
qmail-popupqmail-pop3dqmail-qmtpdqmail-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.hinstead - #44 cleanup: remove
exit.h, useunistd.hinstead - cleanup: remove
fork.h, useunistd.hinstead
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