web-dev-qa-db-ja.com

PHPMailerスクリプトが不可解なSMTPエラーメッセージの処理を停止しました

PHPMailerライブラリを介してPHPスクリプトでメールを送信しようとしています。次のコードは、過去に警告なしで正常にメールを送信しました。

function mail_attachment($filename, $path, $mailto, $subject, $message) {
  include("PHPMailer_5.2.3/class.phpmailer.php");
  include("PHPMailer_5.2.3/class.smtp.php");

  $email_config = parse_ini_file('email.cfg');
  $from  = $email_config['sender'];
  $alias = $email_config['alias' ];
  $smtp  = $email_config['Host'  ];
  $port  = $email_config['port'  ];

  $mail             = new PHPMailer();
  $mail->SMTPDebug  = 2;
  $mail->IsHTML(false);       // send as HTML?
  $mail->WordWrap   = 50;     // set Word wrap

  $mail->IsSMTP();
  $mail->Host       = $smtp;  // set the Host SMTP server
  $mail->Port       = $port;  // set the Host SMTP port

  $mail->Subject    = $subject;
  $mail->Body       = $message;
  $mail->SetFrom(   $from, $alias);
  $mail->AddReplyTo($from, $alias);
  $mail->AddAddress($mailto);
  $mail->AddAttachment($path, $filename);

  var_dump( $email_config );

  $sent = $mail->Send();
  if(!$sent)
    echo "Mailer Error: " . $mail->ErrorInfo ."\n";
  else
    echo "Message has been sent\n";
  return $sent;
}

突然、自動レポートメールがユーザーの受信トレイに表示されなくなり、次のメッセージが生成されました。

SMTP -> FROM SERVER:220 relay-8.dlfw.twtelecom.net ESMTP Postfix

<br />SMTP -> FROM SERVER: 250-relay-8.dlfw.twtelecom.net
250-PIPELINING
250-SIZE 25600000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

<br />SMTP -> FROM SERVER:250 2.1.0 Ok

<br />SMTP -> FROM SERVER:554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost

<br />SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost

<br />SMTP Error: The following recipients failed: [email protected]
Mailer Error: SMTP Error: The following recipients failed: [email protected]<p>SMTP server error: 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost
</p>

Mail Was NOT Successfully Sent!

コードが機能しなくなった理由について何か考えはありますか?

私の側またはリモートメールサーバーに問題がありますか?

次のホスト名構成があります。

/ etc/hostname

Dev07

/ etc/hosts

127.0.0.1 localhost
127.0.1.1 lamp

#Required for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
1
user143089

リモートサーバーは、送信しているHELO内のlocalhost.localdomainであるとサーバーが報告しているという事実を気に入らないようです。

これは、リモートサーバーが無効なHELOsを拒否するようにSMTPサービスを構成したことが原因である可能性があります。また、ホスト名が正しく構成されていないなど、ローカルサーバーで何かが変更された可能性もあります。

ホスト名の設定 を何かに設定して、sendmaillocalhost.localdomainとして報告されないようにすることをお勧めします。その間、サーバーのIPアドレス、FQDN、およびホスト名で/etc/hostsを更新することも一般的には良い考えです。

チュートリアルがあります ここ それを行う方法について。

/etc/hostname:
hostname.domain.tld


/etc/hosts:
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain

1.2.3.4   hostname.domain.tld hostname

RedHat/CentOSベースのシステムを使用している場合は、/etc/sysconfig/networkを編集して、以下を設定します。

HOSTNAME=hostname.domain.tld
2
Justin Pearce