I have built an event-driven TLS proxy for postscreen(8). This addresses the problem that postscreen(8) could not be used when SMTP clients require STARTTLS support.
The new daemon is called starttlsd(8). When a non-whitelisted (*) SMTP client sends a STARTTLS command, postscreen(8) will hand off the connection to starttlsd(8) and read/write the plaintext to/from starttlsd(8). The challenge was that one starttlsd(8) must be able to handle the TLS <=> plaintext translation for more than one SMTP client, but thanks to careful planning, it worked out of the box. Next on the agenda is AUTH support, and that is a lot simpler. Wietse (*) A complete stranger, or a known client whose whitelisting needs to be renewed.