For example, the check_spamhelo plugin returns a 550 error if we received "helo aol.com", even though only the following are supposedly valid: 250, 500, 501, 504, 521, and 421.
You're looking at RFC821 and not RFC2821, I think. The currently applicable section of RFC2821 is "4.3.2 Command-Reply Sequences," which states this:
Each command is listed with its usual possible replies.
^^^^^ and goes on to list the following:
EHLO or HELO
S: 250
E: 504, 550so qpsmtpd is perfectly fine.
John
