One user reported one day last week that an email replied to her customer got bounced back with 550 error code in it. After checking everything at our end without any luck I ended up asking the other party to check what has happened. It turned out the email got bounced because of the wrong value in the HELO on our Exchange based email server. The IT guy explained that the HELO should be using the real domain name rather than using the internal domain name, and claimed that they check HELO for RFC compliance due to the volume of spam they got with the following link.
http://www.freesoft.org/CIE/RFC/1123/90.htm
This is kind something new to me as I never had any trouble sending email from this 5-year-old mail server because of invalid value in HELO. Yes, I did use internal domain name in HELO but, according to what the link he referred to me, it shouldn't be the reason why the email was rejected.
5.2.5 HELO Command: RFC-821 Section 3.5
The sender-SMTP MUST ensure that the <domain> parameter in a HELO command is a valid principal host domain name for the client host. As a result, the receiver-SMTP will not have to perform MX resolution on this name in order to validate the HELO parameter.
The HELO receiver MAY verify that the HELO parameter really corresponds to the IP address of the sender. However, the receiver MUST NOT refuse to accept a message, even if the sender's HELO command fails verification.
Anyway, in order to avoid the trouble like this and follow the RFC compliance, I took the advice and changed our HELO to the valid domain name.