Ensure that fallbacks in externals are always tried correctly.
Deal correctly with poll returning due to a timeout.
Fix permissions checks for the spool dir.
Fix memory leak when a line cannot be read.
Fix bugs in the handling of extsmaild -e.
Fix bug where a child’s stderr could be only partly read.
Fix bug where stderr could be closed twice.
Introduce a test suite for (unusual) child process failure modes.
Ensure that all of a child processes’s stderr output is read, even if another failure (e.g. the child prematurely closing stdin) occurs beforehand. This makes debugging failing child processes easier.
Treat child processes killed by a signal as unsuccessful.
Introduce a timeout for child processes that, after seemingly processing a file correctly (e.g. consuming all input, closing the relevant file descriptors), then stall before exiting.
Have autoconf decide whether to use lex/yacc or flex/bison.
Add pledge support for extsmail and extsmaild on OS’s that support it.
If a child process fails, but doesn’t print anything to stderr, then format the result more nicely.
Build correctly on Linux distributions that identify as GNU rather than Linux.
extsmaild -v now prints extsmail’s version number.
Suggest using “-t” with sendmail in examples (some sendmail clones require this switch).
Use “-z,now” when linking.
Fix two minor compiler warnings.
Reload configuration file when SIGHUP is received.
Added -t option to check a configuration file without running extsmaild.
Be more careful to free all file handles.
Fix bug which caused extsmaild to consume larger amounts of CPU than strictly necessary (a normal user should now be able to run extsmaild for several days before exceeding 1 second of CPU usage).
Fix reporting of sent mail on Linux (which previously sent mail correctly, but incorrectly reported failure even when the send was successful).
Various fixes to make OS packager’s lives easier.
Significant code reorganisation to improve readability.
Several minor bug fixes spotted by static analysis tools (including memory leaks).
More robust handling of corrupt message files.
Ensure that all messages which can be sent are sent. Some messages may temporarily be unsendable (e.g. because of size) and shouldn’t hold up others.
Use exponential backoff when retrying. Quite often, a send failure is just a brief blip, so retry quickly, and as retries fail, increase the length of time until the next retry.
Add user-configurable notifications for successful / unsuccessful sends. Allows users to easily be notified (e.g. via xosd) if mail has been sent and, if not, how long it has been since everything was sent.
Various portability improvements.
Improvements to batch mode to bring it in line with daemon mode.
Minor bug fixes.
Documentation fixes.
OS X compile fixes.
Fix overly-restrictive configuration permissions check.
Recover gracefully from some errors that were previously fatal.
Fix build error when using bison.
Minor documentation fixes.
extsmaild’s modes are now specified via the “-m
More intelligent detection of whether a previous instance of extsmaild is running or not.
Systematically use syslog.
Fix possible race condition between extsmail and extsmaild.
Correctly handle SIGPIPE.
Make Linux support on a par with BSD (using inotify).
Minor error handling / reporting changes.
Adds ‘timeout’ feature to externals.
Fixes bug where exec’d externals first parameter was not correctly set.