pear Net_SMTPからメールが送れなくなる

TNKで管理しているシステムの中で、
2年以上前に開発した、ちょっと古めのシステムでは、
pearライブラリを活用した自社ライブラリを結構な率で使っています。

先日、そのシステムで、メールが飛ばなくなるという障害がありました。

ただ、同じ自社ライブラリを使っているシステムでも、
送信できるシステムと出来ないシステムがあることがわかりました。

エラーログを出力するようにコードを書き換えて
内容を見てみると「SMTP認証に失敗」していました。

おそらくはOpenSSL関連の問題ではないかな、と予測しています。

殆どのプロジェクトでは、pearライブラリの管理をcomposerを使って行っています。
なので、composerのアップデートを行えば、pearライブラリは
すべて同じバージョンになっていると思えます。

調査を進めて行くと、サーバー毎に症状が異なることが分かりました。
自社サーバーの1台だけが、この障害が発生していました。

そこで、Googleを調べてたらありました。
原因は、PHPのバージョンといいますか、
これを誤魔化すことで回避出来そうです。

PHP5.6以降の場合、この問題が起こるようです。

検索して対処方法を調べていたのですが、
すぐに行える対処方法は、
強引にNet_SMTP/SMTP.php を書き換えるものでした。

593行目の、

if ($tls && version_compare(PHP_VERSION, ‘6.1.0’, ‘>=’) &&

PHP_VERSION, ‘5.1.0′

PHP_VERSION, ‘6.1.0’

に書き換えたらSMTP認証が出来るようになりました。

強引な方法ですが、応急処置です。
原因は調べておかないといけませんね。

いま Pearの公式サイトを確認してみたら、
https://pear.php.net/package/Net_SMTP/download/

「1.6.3 (stable) was released on 2015-08-02 (Changelog)」

とあり、

Changelog:

– Fix redundant CRLF terminator sequence.
– Add a note about $socket_options and OpenSSL.
– Add Composer support.

とありますので、最新版では直っているかも知れません。