I find myself wondering how valuable deferred RCPT responses really are.
Here's why I say that: because of a race condition documented in RFC
1047, SMTP servers should try to minimize delay between the receipt of
CRLF.CRLF to end the message and the sending of a reply. This further
implies that servers shouldn't be waiting to actually deliver the
message to recipients, running procmail scripts, etc. before they
respond. Having the capability to report separate status for each of
several recipients doesn't eliminate the race condition.
SMTP's current design handles two kinds of per-recipient errors:
- those are cheap to test for and can be done with the information
available at RCPT time
- those that are expensive to test for or which cannot really be tested
until after you see the message
I suppose there is a third kind - those that can be caught on-the-fly,
while the message is being received, but which due to SMTP limitations
cannot be reported until after the message is received. Still I have
to wonder how many MTAs are going to get restructured so that all of
the testing for each of the recipients is done concurrently while the
message is being received. To do this and still minimize the potential
for races strikes me as a coding nightmare unless you seriously
constrain what kinds of criteria can be applied on a per-recipient
basis.
Keith