Here's another proposal based on my implementation experiences:
* Client initiates by sending MAIL with an extension.
* RCPT returns normal reply codes.
* DATA and the last BDAT return (in order):
- one reply code per recipient which got a 2yz reply.
- one end of mail reply code (as in the current ESMTP model,
which is the same as the "final" reply code in
draft-hall-deferrals).
This is the approach the causes the least changes to existing code
(at least in the MTAs that I maintain) and does not introduce complex
error handling. Maybe others can take a look at exim, postfix,
qmail, etc?