Although the package itself builds when pkgsrc is bootstrapped in
unprivileged mode, the pkgsrc +INSTALL/+DEINSTALL scripts fail, causing
bulk build noise:
=> Creating binary package /wrk/mail/qmail/work/.packages/qmail-1.03nb49.tgz
fatal: unable to find user alias
===========================================================================
ERROR: instchown exited 111.
Permissions are likely wrong, and/or the queue may be uninitialized.
===========================================================================
pkg_add: install script returned error status
pkg_add: 1 package addition failed
Instead:
1. Package makefiles including their own options.mk
2. Packages say "SUBST_CLASSES+=djberrno" to get the hack, if needed
3. Packages adjust SUBST_FILES.djberrno, if needed
Should fix bulk build failures due to multiple inclusions of options.mk
and/or incorrect definitions of DJB_ERRNO_HACK.
Approved during the freeze by wiz@.
## Fix bugs
- Vulnerabilities we've inherited from qmail 1.03, reported by Qualys.
- CVE-2005-1515: fix signedness wraparound in `substdio_{put,bput}()`.
- CVE-2005-1514: fix possible signed integer overflow in `commands()`.
- CVE-2005-1513: fix integer overflow in `stralloc_readyplus()`.
- Fix several other places where variables could overflow.
- `qmail-pop3d`: instead of running as root if root authenticates (and
being a vector for a dictionary attack on the root password), exit 1
to look just like a failed `checkpassword` login.
- `qmail-inject`: do not parse header recipients if `-a` is given.
- Correctly detect multiple IP addresses on the same interface.
- Remove workaround for ancient DNS servers that do not properly
support CNAME.
- Fix possible integer overflow in `alloc()`.
## Reduce bug likelihood
- Remove `dnscname` and `dnsmxip` programs that were being built but not
installed.
- Remove `systype` and related platform detection.
- Remove unused variable in `maildir.c`.
- Reduce variable scope in `tcpto.c`.
- Avoid local variables shadowing same-named globals.
- Avoid needing `exit.h` in named-pipe bug check.
- Add a `test` target and some unit tests, using Check.
- Add missing function declarations in `cdbmss.h`, `scan.h`.
- Add missing return types to `main()`.
- Add `hier.h` for inclusion in `instcheck.c`, `instchown.c`, `instpackage.c`.
- Use system headers and types instead of the `HASSHORTSETGROUPS` check.
- Use system headers instead of redeclaring `exit()`, `read()`,
`write()`, `malloc()`, `free()`, `fork()`, `uint32_t`.
- Use C89 function signatures for code we've touched so far.
- Automated builds:
- TravisCI: move setting `MAKEFLAGS` out of the script and into
the matrix.
- Add FreeBSD builds with CirrusCI.
- Add a GitHub Actions build.
## Other changes
- Remove DJB's TODO.
- Replace many `pobox.com` URLs.
- Acknowledge Erik Sjölund's `qmail-local.c` bugfix that we've
inherited from netqmail.
- Avoid generating catted manpages by building with `NROFF=true`.
- Optionally create a `systemd` service file.
- Run an alternate `qmail-remote` by setting `QMAILREMOTE` in
`qmail-send`'s environment.
## Intent to remove
In the course of developing this release, we found programs that we
intend to remove in the next release. We believe none of these remains
necessary or useful enough to be worth the cost of maintaining. If you
disagree, please let us know!
- Remove `qsmhook`, long since replaced by `preline`.
- Remove inefficient `maildirwatch`.
- Remove obsolete mail client wrappers.
- Remove `qmail-pop3d`, since Maildir is well supported by actively
maintained POP3 servers.
the changelog:
- code: remove incorrect usage of vfork()
- code: detect and prefer utmpx where available
- code: removed idedit, install-big. var-qmail packages are no more
- portability problem: explicitly initialize strerr_sys and
define BIND_8_COMPAT to work around Mac OS X
- code: add instchown to set ownership and mode on installed files
- code: add instpackage to install without root access
- doc: rename INSTALL, SENDMAIL to INSTALL.md, SENDMAIL.md to
support building on case-insensitive filesystems
- code: lookup uid/gid at runtime
- code: use DESTDIR environment variable as root directory in install
pkgsrc changes:
- If hostname isn't FQDN, config-fast-pkgsrc wouldn't produce a working
config, so don't run it; tell user what to do instead
- Stage QMAIL_QUEUE_DIR into DESTDIR/tmp, to be more obvious that it's
not being packaged up (and is not how a queue gets created at
pkg_add time)
- Drop custom destdir, qbiffutmpx, and Darwin patches
- Rebase TLS-onlyremote, QMAILREMOTE, and SRS patches
- Require latest ucspi-ssl and ucspi-tcp6 for IPv4 fixes
- Move MESSAGE.tls to README.tls, and remove other MESSAGE*
- Set PKG_HOME even for non-default values of QMAIL_ALIAS_USER
- Check whether alias/.qmail-foo exist before trying to remove
Bump PKGREVISION.
when the system clock is set to TAI (and a libtai dependency to get
leapsecs.dat). While here, catch up to his latest maildiruniq patch.
Let an installed ucspi-tcp6 satisfy the ucspi-tcp dependency for
non-'inet6' builds.
Bump PKGREVISION.
installs the generated files elsewhere, so we can simulate
CONF_FILES-like behavior. qmail-run will switch to config-fast-pkgsrc.
We'll take advantage to deinstall these config files (as well as the
three basic .qmail files in ~alias) provided they haven't been changed.
Both of these commands stop leaving leftovers in ${PKG_SYSCONFDIR}:
# pkg_add qmail && pkg_delete qmail
# pkg_add qmail-run && pkg_delete -r qmail
While here, warn if the queue directory is on a case-insensitive
filesystem. Probably not gonna work perfectly.
Bump PKGREVISION.
qmail-smtpd (tweaked to tolerate the absence of a config file).
The RCPTCHECK patch is a logical subset of SPP with a slightly different
interface, and conflicts with SPP. Remove RCPTCHECK.
Bump PKGREVISION.
20181108 implements STARTTLS in fixsmtpio(8). Rebase EAI patch onto
TLS-onlyremote. Switch back to upstream for RCPTCHECK, which applies
cleanly again. Bump PKGREVISION.
patch and the AUTH patch conflict, nobody else has published a newer
hand-merged combo patch, and as it happens, I'd apparently rather
write a pile of new DJB-style C than make myself responsible for
hand-merging other people's security-sensitive code every time there's
a new TLS patch.
Now that we have AUTH without patching (see mail/qmail-acceptutils), the
"sasl" option goes away, we're finally on the most recent TLS patch
available, and when it's updated it'll be easy for us to keep up.
Rebase RCPTCHECK and EAI patches onto netqmail-with-TLS-and-no-AUTH.
Bump PKGREVISION.
can (by itself depending on pkgtools/pkg_alternatives) expect to find
"nbcheckpassword".
Remove 'qmail-rejectutils' option, which will become an unconditional
dependency in qmail-run.
Bump PKGREVISION.
Performing substitutions during post-patch breaks tools such as mkpatches,
making it very difficult to regenerate correct patches after making changes,
and often leading to substituted string replacements being committed.
Unsorted entries in PLIST files have generated a pkglint warning for at
least 12 years. Somewhat more recently, pkglint has learned to sort
PLIST files automatically. Since pkglint 5.4.23, the sorting is only
done in obvious, simple cases. These have been applied by running:
pkglint -Cnone,PLIST -Wnone,plist-sort -r -F
- Apply the qbiff-utmpx patch to (probably) fix build on FreeBSD
- Enable "qmail-srs" by default
- Add "qmail-customerror", enabled by default
- Move TLS config steps from INSTALL to MESSAGE.tls