Some bot clients are smart enough to wait until they've received some data from the server before starting to firehose commands at it; these can be caught by sending the first part of a multi-line banner, then pausing to check for non-compliant writes, then finishing the banner.
write("250-do androids dream of electric sheep?")
write("250-and in that sleep of death what dreams may come")
pause(receive.connection.banner.delay)
write("rugged-odorobiwa.mx.x.mail.umich.edu Simple Internet Message Transfer Agent ready")
Some bot clients are smart enough to wait until they've received some data from the server before starting to firehose commands at it; these can be caught by sending the first part of a multi-line banner, then pausing to check for non-compliant writes, then finishing the banner.