エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。

      2017/06/04

WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生

 

X Serverで PHPを 7.0にアップすると WP Mail SMTPでメールが送信できなくなった

 
月極駐車場検索エース」のサイトは、WordPressで構築していまして、メールの送信には、メール送信プラグイン「WP Mail SMTP」を使っていました。
そして、2016年の年末にこのブログも含めて SSL化の対応を行いましたが、その際に PHPのバージョンを 7.0系にアップデートする対応をしていました。
 
X Serverでは、PHPのバージョンを変更することが非常に簡単に実行することができます。
 
で、PHP 7.0にアップしたところ、メールが送信されなくなるというエラーが発生しました。
 
これは、PHP 5.6から OPEN SSLに関するアップデートがあったために、ピア証明書が正しく設定されていないサーバからメールを送信する際にエラーとなり、SMTP経由でメールが送信できなくなる、という不具合でした。
詳細は、最後に書いていますので合わせて参考にしてみてください。
 
 
というわけで、この不具合を回避する方法を紹介します。
 
 

functions.phpに不具合回避の処理を追加する

 
PHPのバージョンが 5.6以上(7.0系を含む)になると、OPEN SSLのピア証明書を検証する処理がデフォルトで有効になりましたので、ピア証明書が正しくない場合にエラーとなり、メールが送信できなくなる、という問題でした。
 
そのための対処方法として、PHP 5.5までと同じように、「ピア証明書の検証をしない」という処理に戻す方法を採ります。
 
 
具体的には、下記を functions.phpに編集します。
 
functions.phpのある場所は、下記になります。
/{WordPressのインストール場所}/wp-content/themes/{テーマ名}/functions.php
 
functions.phpのある場所についての詳細は、「WordPressの functions.phpがある場所」に解説をしていますので合わせて参考にしてください。
 
functions.phpのファイルの中のどこかに追記すればいいんですが、ファイルの一番最後に追記する方法が無難でしょう。
 

 
 

WP Mail SMTPのプラグインのファイルを直接修正はダメ

 
前項の解説で、functions.phpに処理を記述しています。
これは、プラグインのファイルを直接メンテナンスをしないための処理です。
 
 
前項で解説した処理は、下記の様に、プラグインのファイルを直接メンテナンスする方法と同じ処理になります。
 
/wp-content/plugins/wp-mail-smtp/wp_mail_smtp.php
の 150行目付近
 

 
この方法であれば、6行目の 1行を追加するだけで対応が可能です。
そのため、この方が一見簡単に見えますが、プラグインのアップデートが行われた場合は、修正したファイルは更新されてしまいますので、その都度修正をやり直す必要が発生します。(プラグインをアップデートすると、プラグインフォルダの中身は、「削除→新規追加」の処理が実行されるため、プラグインフォルダの中身は全く別物になります。)
 
そのため、プラグインのファイルを直接メンテナンスしてしまうと、プラグインのアップデートを気軽にできなくなりますので、避けるべき対応方法です。
 
 

「SMTP Mailer」というプラグインを使う

 
これまで解説した方法は、functions.php、もしくは、wp_mail_smtp.phpのファイルに対して、プログラムの改修を行う、というものです。
 
私はエンジニアですので、プログラムを触ることに抵抗はありませんが、なるべくならプログラムに触らずに何とかしたい、という方もいるでしょう。
 
ということで、サクッと新しいプラグインを導入するという方法もありますので、ご紹介します。
 
「SMTP Mailer」というプラグインを使う方法です。
 
「WP Mail SMTP」を「停止」させて、「SMTP Mailer」というプラグインをインストールして、利用します。
 
詳細な利用方法については、「SMTP Mailerでスパム判定回避。WP Mail SMTPで発生する送信エラーも対応」に解説記事を書きましたので、そちらを参考にしてください。
 
「SMTP Mailer」の設定のポイントは、「Disable SSL Certificate Verification」にはチェックを入れるようにする、というところですね。
 
 

WP Mail SMTPで PHP 5.6、7.0にするとエラーが出る理由を詳細解説

 
PHPが 5.6にバージョンアップする際、OPEN SSLに関する処理に変更がありました。
 
その変更とは、「ピア証明書」を検証する「ピア検証」が、デフォルトで有効になりました。
それによって、「ピア証明書」が正しくないサーバを利用していた場合は、PHPのバージョンを 5.6(7.0系を含む)にバージョンアップすることで、SMTPサーバへの接続がエラーとなり、SMTPサーバ経由でメールを送信する処理がエラーになるようになりました。
 
つまりは、「WP Mail SMTP」プラグインを使って、SMTPサーバ経由で送信していたメールがエラーになるようになった、というわけです。
 
「ピア証明書」は、通信相手から受け取った相手側の証明書で、この証明書を使って通信相手の身元を確認したり、暗号化のための公開キーを入手することができます。
 
また、「ピア証明書」の別名を「対向マシンのX.509v3証明書」といいます。
「X.509」は、電気通信標準化部門(ITU-T)が規定する公開鍵基盤(PKI)の規格で、公開鍵証明書の標準形式や、証明書パス検証アルゴリズムなどを定めています。
その規格のバージョン 3が、「X.509v3証明書」です。
 
 
ざっくり説明すると、SSLの認証には複数の手順で実現されていますが、その一つ一つにチェックする仕組みがあるわけですが、その一つが「ピア証明書」を検証する「ピア検証」で、PHP 5.6からはその「ピア検証」がデフォルトで有効になりました。
ということです。
 
 
ということですので、対処方法としては、下記のようなものがあります。
 ・ピア認証を無効にする
 ・ピア認証の対処がされているプラグインを利用する
 ・PHPのバージョンを 5.5以下にする
 
3項目目は、選択肢としてとりえないので解説はしません。
理由は、すでに PHP 5.5以下は推奨されないバージョンであるためです。
 
また、本来の対応方法としては、正しいピア証明書を使っている SMTPサーバを利用する、という方法なわけですが、利用しているレンタルサーバ(私の場合は X serverですが)が正しく実装されていないのだとすると、ユーザ側では対処療法で対処するしかないわけです。
 
あとは、X serverに連絡をして、連絡をして、連絡をして、対応してもらう、という方法でしょうか。

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Basic認証をファイル単位・URL単位で設定する方法の解説

Basic認証はフォルダ単位だけでなくファイル単位での設定もできるためログイン画面だけにBasic認証を設定することもできます。その解説です。

WordPressの画像ファイルアップロード・メディアの使い方解説

画像ファイルをアップロードするメディアの使い方解説。アップロードしたファイルの管理や編集、ファイルのURL、アップロード先の解説。

WordPressのウィジェットにGoogle+ページのバッジ編集方法

Google+ページの特徴(Facebook、Mixiとの違い)や構築のメリット(Google対策)、登録、バッジの編集方法の解説。

Custom Post Type UIでカスタム投稿を設定・バージョン1.4対応解説

カスタム投稿をプラグインCustom Post Type UIを使って設定する方法を解説。バージョンアップにより設定する項目も増え、より柔軟な設定ができます。

Category Order and Taxonomy Terms Orderでカテゴリ・タクソノミーのタームの順番を並び替える

標準機能では行えないカテゴリやタクソノミーの並び替えを行うプラグインCategory Order and Taxonomy Terms Orderの紹介です。

WordPress データベースを管理するための強い味方のプラグイン WP-DBMANAGER

データベースを管理するための強い見方のプラグイン「WP-DBMANAGER」の使い方の説明です。

Custom Post Type UIでカスタム投稿を設定し編集する方法解説

カスタム投稿を追加、管理するプラグインCustom Post Type UIの使い方の解説です。プラグインの解説ではあるものの、カスタム投稿の仕様の解説でもあります。

Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説

カスタムタクソノミーを追加、管理するプラグインCustom Post Type UIの使い方の解説。プラグインの解説ではあるものの、カスタムタクソノミーの仕様の解説でもある。

技術ブログの悲劇。複数ブログをWordPressに引越して分かったこと

ブログによってユーザ層が違う。ユーザ層が違えば検索エンジンやブラウザ等が違うため、まずアクセス解析をやってみることが大事。一つの分析方法を紹介。

WordPressで使うおススメ FTP、テキストエディタ、圧縮解凍ソフト

WordPressサイトを構築、運用するために必要となるFTPソフト、テキストエディタ、圧縮解凍ソフトのオススメソフトを紹介。