Bug#652731: Fwd: Bug#652731: ITP: extsmail -- enables the robust sending of e-mail to external commands.
> What makes it robust? What happens if the external command fails?
The command is retried (with a delay) until it succeeds. For example the
second scenario on <http://tratt.net/laurie/src/extsmail/scenarios.html>
shows how this can be utilised to achieve fallover between servers.
> How is failure detected?
The exit code of the command run. e.g. if using ssh, exit code != 0 indicates
failure (and a presumption that mail delivery was unsuccessful). extsmail
goes out of its way to detect a number of other unlikely failures (resources
temporarily unavailable etc.). It should never lose mail. The only condition
it can't recover from is a lack of memory (and given that even on a 64 bit
machine it takes well under a Mb of memory, this is not hugely likely to
happen) whereupon it will simply exit (unsent mail will remain unsent until
extsmail is restarted).
I welcome code audits, particularly of the "core" of extsmail which is the
mail sending daemon:
https://github.com/ltratt/extsmail/blob/master/extsmaild.c
Laurie
--
Personal http://tratt.net/laurie/
The Converge programming language http://convergepl.org/
https://github.com/ltratt http://twitter.com/laurencetratt
Reply to: