This patch introduces the couriers, which the queue uses to deliver mail.
We have a local courier (using procmail), a remote courier (uses SMTP), and a
router courier that decides which of the two to use based on a list of local
domains.
There are still a few things pending, but they all have their basic
functionality working and tested.
This patch makes the MAIL FROM and RCPT TO commands convert addresses to lower
case. It also makes the commands themselves case-flexible as a side effect.
This patch introduces a basic, in-memory queue that only holds emails for now.
This slows down the benchmarks because we don't yet have a way to wait for
delivery (even if fake), that will come in later patches.
Add a new module for getting listener sockets via systemd's file descriptor
passing (see sd_listen_fds(3) for more details), and make the main daemon use
it when "systemd" is given an address.
This patch introduces a basic on disk configuration, comprised of a main
configuration file and per-domain directories.
It's still not complete, but will be extended in subsequent patches.
This patch introduces a general connection timeout (20m); and a shorter one
(1m) for individual command round-trips.
DATA is excluded from the latter, because it is expected that it takes more
time; we use the general connection timeout for it.
This patch adds some tests that cover the SMTP commands, including STARTTLS
and various correctness checks.
There are also two simple benchmarks, that are not optimized and are more
useful for stress testing and profiling than anything else.