[Twisted-Python] Mail content filter: How to avoid SMTP client finishing sending message before SMTP server finishes receiving it?

Struggling little bit to write a Postfix content filter [1] with Twisted Mail. The content filter will eventually add a cookie to the "from" address, identifying the address that the message was sent to Here's my attempt so far [2] The problem is that the SMTP client finishes sending the message before the SMTP server finishes receiving it - i.e. Client.sentMail() is called before Message.eomReceived() To fix this, I want SMTPClient.smtpState_data() [3], which uses FileSender [4], to wait for the server to finish receiving the message before proceeding to smtpState_msgSent() Is this possible? The only alternative I can think of is to not start sending the message until after the server finishes receiving it - i.e. start sending the message after Message.eomReceived() is called. But this seems to me like it would have worse performance than sending messages at the same time as they're being received - especially for a message with a large attachment How can I avoid the client finishing sending the message before the server finishes receiving it? [1] http://www.postfix.org/SMTPD_PROXY_README.html [2] https://github.com/jablko/cookie/blob/master/cookie [3] http://twistedmatrix.com/trac/browser/tags/releases/twisted-10.2.0/twisted/m... [4] http://twistedmatrix.com/documents/current/api/twisted.protocols.basic.FileS...
participants (1)
-
Jack Bates