PHPエラー「mail(): SMTP server response: 554〜Client host rejected: Access denied」の原因と解決方法
Windows 7のコマンドプロンプト等でPHP 5のメール関数「mail()」でメール送信を実行すると、以下のようなエラーが表示されることがある。
Warning: mail(): SMTP server response: 554 <KD略〜.ppp-bb.dion.ne.jp[略.略.略.略]>: Client host rejected: Access denied in Command line code on line1
※「略」の箇所には、送信元のIPアドレスの数値が記載される。
このエラーの原因は、メール送信先のメールサーバにアクセス拒否をされていることにある。
php.iniで
;SMTP = localhost
という初期設定ではなく
SMTP = メール送信先サーバのIPアドレス(またはホスト名)
といったような設定になっている場合において、上記のようなエラーになってしまった場合は、エラーを解決するには、メール送信先サーバが送信元(PHPを実行するWindowsマシン等)からの接続を拒否していないかどうかを確認する必要がある。
送信先のメールサーバがPostfixの場合、Postfix側の設定で接続元ホストのIPアドレスを拒絶する設定ができたりするので、そういったあたりを調べていくことになると思う。
※php.iniのSMTPで指定する送信先のメールサーバ(リレー先のメールサーバ)は、見ず知らずのサーバを指定するべきではなく、自分の管理下にあるサーバ、または、メールサーバの管理者に許可をもらってから指定するべき。