On Thu, 2008-06-19 at 12:43 -0700, Matthew Elvey wrote:
This is how a conforming system implementation would work:
Step 1) SMTP client connects to receiving system, which consists of an
ingress MTA sitting on the Internet in front of (and protecting) an MDA
(store) with which it communicates over LMTP. The system (the MDA in
particular) contains and processes Sieve scripts.
Step 2) SMTP client continues the SMTP conversation to the point that
the system receives a message to one recipient and the character
sequence "<CRLF>.<CRLF>". (See 4.1.1.4 DATA (DATA) of RFC 2821)
"one recipient". check. do you have a document where best practice for
ensuring this is documented? (please don't say "Everyone switch to
Qmail" :-)
Step 3) The system does NOT need to IMMEDIATELY reply, instead, it may
perform some processing, as RFC 2821 indicates. RFC 2821 says
specifically that the SMTP client SHOULD wait a minimum of at least 10
minutes for the "250 OK" reply. This processing should include:
Step 4) The MTA immediately connects to the MDA and attempts to pass on
the message. If the MDA decides to 'ereject' the message, the MTA will
pass along the message to the SMTP client by sending a failure message,
instead of "250 OK".
I believe all or at least nearly all multi-component implementations can
and should work this way.
I'm not aware of any open source systems where this is possible, so
please enlighten me. I was going to extend Exim's callout mechanism to
do a full body callout so that it could be combined with Cyrus' LMTP,
but didn't get that far before switching to non-mail related employment.
--
regards,
Kjetil T.