Just to strike a different note in here:
4.1.1.1 says
Explained-literal = address-literal [string]
Capitalization aside, shouldn't this be
Explained-literal = address-literal SP [string]
or
Explained-literal = address-literal 1*SP [string]
? Because I think
EHLO [127.0.0.1]"a horse with no name"
is messy.
This may have been discussed already, but I didn't find it if so.
(Not that I can find many implementations in the wild, other than those
that do no syntax checking at all, that support explained-literal, even
though it was described in the narrative in 2821.)
Unrelatedly, I have a handful of other nitpicky comments that seem
inappropriate for the "one message per issue" request. Maybe somebody
would rather see and vet them off-list?
Yours,
-mm-