- Convert all proto modules to use timedout reads. - Add patterns to the remotes file, to allow messages to be delivered to different remotes based on the sender or recipient addresses - Remove "adminaddr" facility from -queue, and add a more general destination address rewriting facility to -inject: - Read a list containing "PATTERN:ADDRESS" lines. - PATTERN can be a literal "user@FQDN" or just "user", in which case it must be matched exactly (before qualification). - PATTERN can be "@FQDN" which matches any user. - Generate DDNs for messages older than a configurable time. - For version 3: three-state queueing? - Queue message partially (tmp -> holding) - Send to smarthost immediately - Remove from holding if sending succeeds - Complete queueing (holding -> queue) if sending is deferred - Return with an error if sending fails (permanently) - Move all from holding -> queue on startup of nullmailer-send