SMTPでメールが送信できない場合
いつもお世話になっております。a-blog cmsでSMTP経由でフォームなどのメール送信をしようとするとメールが送信できない場合があることが確認されています。
対象
- a-blog cms Ver. 2.6.1.4 以下
- php5.6.0以上
- 管理ページ > コンフィグ > メール設定 > SMTP設定 が設定されている
原因
php5.6で SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応したことにより、環境によって検証が失敗してメールが送信できない状態。
対策
- 対策方法1: a-blog cms Ver. 2.7.0 以上にアップデートする(推奨)
- 対策方法2: 以下のコード修正を行う
対策方法2
/php/PEAR/Net/Socket.php の 573行目付近のコメントを削除してください。
function enableCrypto($enabled, $type)
{
if (version_compare(phpversion(), "5.1.0", ">=")) {
if (!is_resource($this->fp)) {
return $this->raiseError('not connected');
}
/**
* ピア検証を無効化(php5.6暫定対応)
*/
stream_context_set_option($this->fp, 'ssl', 'verify_peer', false);
stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);
return @stream_socket_enable_crypto($this->fp, $enabled, $type);
} else {
return $this->raiseError('Net_Socket::enableCrypto() requires php version >= 5.1.0');
}
}