The excerpt you cited is extracted verbatim from current 2821 text.
The opportunity to be stupid comes in the text I added, although I will
point out that it is a MAY not a SHOULD. Operators MAY be as dumb as they
want to be.
not in the all caps sense, i.e. not as a matter of protocol compliance.
while we've traditionally given a fair amount of latitude to operators
to reject messages for almost any reason, this is something that should
probably be revisited in light of recent experience. poorly chosen
countermeasures for spam and viruses are now a huge problem.
we shouldn't pretend that we can stop operators from doing whatever they
want, but neither should we be encouraging implementors to give them hooks
to do stupid things - and in some cases we would do well to discourage
specific hooks that have no practical use.
checking EHLO for validity is just one of those - others include
checking whether there is an A record for the domain in the return-path,
refusing to accept mail with a return-path of <>, and refusing to accept
mail with more than N recipients (as opposed to just rejecting those
recipients with a 4xx code).