macro.qmail-remote (2101B)
1 2 # The NightmareMail Pictures » The Macro Picture » qmail-remote 3 4 (This document is prefaced with a newline so that it might be rendered correctly as Headered Markdown. It is regular Markdown, and further, any drawings within are conformed to a 70 character terminal, so that they might be rendered correctly doing `less` on an 80 character terminal.) 5 6 They say those that the gods would destroy, they first would drive insane. The Prophet, Daniel Bernstein, is merciful. (With apologies to the judge in 2013 ONCJ 160) In contrast to the interface he created, intending to be used only internally, for qmail-queue (where both stdin and stdout are input FDs), qmail-remote takes input *exclusively* on stdin. 7 8 We can first visit the subject of the external interface to qmail-remote. This is documented well enough. Argv is thus, from zero (zero is ignored, and should be the binary name, especially in the event that one might like to produce a crunched qmail binary where argv0 is not ignored, or a multifunctional remote tool which also does not ignore argv0): 9 <code> 10 qmail-remote host sender [recipient ...]{1,} 11 </code> 12 One should not use getopt to parse the command line, lest, may the gods forbid it, you have a host, sender, or recipient whose name begins with the hyphen character. 13 14 The input on stdin to qmail-remote is simple enough as well. It's the message. Events to read fd0 (substdio_get(&ssin)) only occur in the function void blast(), which is called only from the function void smtp(), which carries on an SMTP conversation, on a connection opened in main(). 15 16 Lightning figured this out one year ago tomorrow as I write this (Sun Sep 18 2022 10:51:49 UTC). It seems like xe did not develop the model of how one would cut the program down to just mxf-smtpc. It seems in fact like qmail-remote can be very neatly cleft into the part making the connection, and the part that actually sends the message. 17 18 However... what the hell is a tcpto? M. Bhangui tells me on the IRC that a tcpto is a host which times out when it is contacted. This throws a spanner in the idea of using a UCSPI.