Paul,
while taking a break just now I had a heretical thought. Something
that's legal by the RFC, but possibly a little hacky and just a tad
revolting:
C: DATA
S: 354 Go on, send me the mail
C: ...
C: .
S: 250-Virus filtering may take time, please be patient
S: 250-Virus filtering may take time, please be patient
At this point, you've started sending 250, but you haven't sent it. You
have two legal options: Finish sending 250 and not finish sending it.
S: 250 OK. I accept responsibility for the message
The other option is to close the connection abruptly, and keep a note of
the message so you can reject it quickly next time.
(Inspired by uw-imapd's handling of the 'SELECT' command.)
Arnt