The problem is by the time the message is deemed to be spam it's too late to reject the mail.
Ie. The first step verifies the from/to addresses, then the message body is sent. So, if the message body is clearly spam and you reject the message body all you've done is confirmed to the spammer that they are sending to a legit email address and they need to change their message so it no longer is rejected as spam.
As bad as the current system is it leaves spammers with uncertainty over whether their message made it through the spam filter.
What's stopping spammers from just having a GMail account they can use to test if the message made it through?
I mean; I have to assume the engineers in charge of this @ Google are making the right call, but the cynic in me can't help but worry they are making the call in a way that benefits them at the cost of a healthier SMTP ecosystem. (ie, "Lets make email just unreliable enough that folks switch to Google Email 100%, or use some other Google Product for messaging ...")
You can reject the message anytime after TO/FROM/DATA w/o signaling which of those 3 caused it the message to be rejected.
Yes, but unless that error is used frequently for other situations then it now becomes an obvious signal to spammers that their message has been flagged as spam.
I don't agree. There are servers and domains that only send spam. There's no point in passing those through a computationally-expensive filter system; we already know they are spam.
> I'd love to never have to ask
Yeah, me too. But email is a best-efforts delivery system; email delivery can fail for reasons other than spam-filters.
You don't have to send it through the filter. You can decide @ accept() time that the message will rejected. If you intended to blackhole it; you were planning on burning bandwidth and letting the sender send their bytes entirely, and then responding "2xx OK, whatever"
Instead, just simply say "500 FOAD." after DATA and be done with it on the non-zero chance the sender actually has something important to say, and needs to decide if they need to use another channel.
I'd love to never have to ask "did you get my email message?"