Skip to content

Roadmap

Amitai Schleier edited this page Sep 17, 2019 · 47 revisions

The current release is notqmail 1.07, released 19 Aug 2019. notqmail is a fork of netqmail 1.06. The notqmail release roadmap:

1.08

  • #35 FHS (issue #2)
    • split conf-qmail in to conf-qmail-bin, conf-qmail-queue, conf-qmail-man, etc.
    • /var/qmail/DIR unless /var/qmail not in conf-qmail
    • Configuration sugar: ./configure && make && make install (issue #9)
  • Debian (deb), RedHat (rpm), and /package packaging
    • #76 binary builds on openSUSE build service and locally
      • deb and rpm builds. (was issue #59)
    • FHS-aware (default on): /var/qmail contains symlinks to FHS-compatible paths
    • FHS-strict (default off): /var/qmail does not exist
    • make packaging documentation optional. (#56 Don't install catted manpages)
    • #61 Extract an "instqueue" program from instpackage.
    • issue #91 Include support for slashpackage-format packages
  • bugfixes
  • code standardization
    • Refactor the C code, by replacing valid K&R (The C Programming Language first edition) constructs with valid C89 (ANSI, The C Programming Language second edition) constructs, when there is a C89 feature that supersedes a construct in K&R. (e.g., function signatures, adding int type specifiers.) Even when a K&R construct is legal in C89.
      • headers
        • #65 fix usage of most POSIX functions
        • #79 include unistd.h in exit.h.
      • types
        • #45, #72 remove HASSHORTSETGROUPS test, use system headers and types instead.
        • #70 remove register storage class declaration from codebase.
        • #84 use ssize_t in substdio library.
    • Fix all compiler warnings generated by warning settings consistent with the codebase being legal C89, and possibly informed by later C standards, to include at least the default conf-cc.
      • correctness (undeclared function)
        • #77 use ANSI/C89 function signatures.
        • issue #7 Stop redeclaring system functions
      • C89 v C99
        • issue #7 Stop redeclaring system functions
    • issue #48 Make regular use of code analysis tools development
  • documentation modernization
    • #54 replace many pobox.com URLs
    • #36 Append .md suffix to text docs. Adjust references.
    • #56 Don't install catted manpages
      • groff, mandoc, mdoc.
  • code cleanup
    • #30 use <stdint.h> to get a really portable 32 bit unsigned type
    • #70 remove register storage class declaration from codebase.

1.9

Remove 1.08's "intent to remove" programs

  • Unless any of them make sense as extensions

Use the latest DJB libraries

  • 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

Introduce new programming interfaces for use by extensions

  • Custom error strings for qmail-queue
  • Extension interface
    • #50 This adds spawn-filter binary for filtering message passed to qmail-remote/qmail-local
  • Extension API for qmail-smtpd
  • Tiny changes to qmail-smtpd for optionally running under a qmail-popup-alike SMTP AUTH parent program
  • Refactor qmail-remote to call an admin-configurable tcpclient.
  • Publish qmail-popup, qmail-pop3d, qmail-qmtpd, and qmail-qmtpc as extensions.
  • code standardization
    • Refactor the C code, by replacing valid K&R (The C Programming Language first edition) constructs with valid C89 (ANSI, The C Programming Language second edition) constructs, when there is a C89 feature that supersedes a construct in K&R. (e.g., function signatures, adding int type specifiers.) Even when a K&R construct is legal in C89.
      • headers
        • #43 cleanup: remove readwrite.h, use unistd.h instead.
        • #44 cleanup: remove exit.h, use unistd.h instead.
        • cleanup: remove fork.h, use unistd.h instead.

2.0

queue-breaker release

  • 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, issue #23
  • merge netqmail-big-concurrency
  • qmail-ldap, or enough interfaces to let extensions provide LDAP integration
  • make sure everything works with vmailmgr, vpopmail, other approaches to "virtual users"
  • Merge changes for high-volume installations that are harmless defaults in 2019 (taking care to migrate smoothly)
  • remove deprecated code
    • #71 remove install script.

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 plugins
You can’t perform that action at this time.