[PHP] メールが拒否される原因は発信元ホスト名にあった件

開発中の会員システムにおいて、自動送信した会員向けメールが「Undeliverable」で戻ってくる問題が発覚。会員向けメール全てが戻ってくるわけではなく、特定ドメイン宛てだけが常に戻ってくる模様。試しに、同じメールアドレスへメールソフトから手動でメールを送ったら問題なく届く。サーバーの sendmail 設定の問題か?

戻ってきたエラーメールには以下の記述がある。

アクセス拒否の原因は「不適切なHELOネーム」。RFCによれば、HELOコマンドにはSMTPクライアントの完全修飾ドメイン名(TLDの指定を含めた完全なドメイン名)か、もしそれが利用できない場合にはIPアドレスを指定しなければならないとのこと。

RFC 2821 – I-D Tag:
http://tools.ietf.org/html/rfc2821#section-4.1.1.1

The argument field contains the fully-qualified domain name of the SMTP client if one is available. In situations in which the SMTP client system does not have a meaningful domain name (e.g., when its address is dynamically allocated and no reverse mapping record is available), the client SHOULD send an address literal (see section 4.1.3), optionally followed by information that will help to identify the client system.

参考: HELO/EHLOコマンドとその応答|メール配信技術用語
http://www.cuenote.jp/documents/smtp/000197.html

何か追加情報が無いかと、戻ってきたメールに添付されている「Delivery report」を開くと、以下の記述あり。

すぐ目に付いたのは先頭行の www。これはローカルなサーバー名に過ぎず、完全なドメイン名とは言えない。もしかしてHELOコマンドにwwwをクライアントホスト名として指定しているの?確信は無いものの念のため管理者に問い合わせたらビンゴ。PHPのモジュールPHPMailerの設定に不備があったとのこと。困ったものだ。