MediaWikiでConoHaのメールサーバーを使う


メモ書きに.

ここでも明記されているように,ConoHaのメールサーバーは共用SSL証明書を使っているので,場合によってはエラーを吐かれてしまう.

最近MediaWikiをインストールしたのだが,こいつも共用SSLを使っているとエラーを吐くようだ.(というか,PHPが5.6.xからピア証明書とホスト名の検証をデフォで有効にしたから.詳しくはここで)

authentication failure [SMTP: STARTTLS failed (code: 220, response: Ready to start TLS)]

↑のエラーが出ているので証明書の問題なのだが,MediaWikiのマニュアルを見ると

��オメーの証明書が悪いんじゃ.なんとかしろよ.」

との仰せ.GMOさんに文句言えばいいすかね?

そんなことも言ってられないので,モジュールの設定を無理やり書き換えて対処することに.

PHP5.6でSMTP送れない件 - ド忘れ防止雑記帳

このへんを参考にしてMediaWikiのnet_socketの設定を書き換える.

/path/to/mediawiki/vendor/pear/net_socket/Net/Socket.phpの694行付近が,
public function enableCrypto($enabled, $type)
{
if (version_compare(phpversion(), '5.1.0', '>=')) {
if (!is_resource($this->fp)) {
return $this->raiseError('not connected');
}

return @stream_socket_enable_crypto($this->fp, $enabled, $type);
} else {
$msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';705
return $this->raiseError($msg);
}
}

こんな感じになっているので,

701行付近に↓を挿入する.
stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);

修正後はこんな感じ.
public function enableCrypto($enabled, $type)
{
if (version_compare(phpversion(), '5.1.0', '>=')) {
if (!is_resource($this->fp)) {
return $this->raiseError('not connected');
}

stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);
return @stream_socket_enable_crypto($this->fp, $enabled, $type);
} else {
$msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';705
return $this->raiseError($msg);
}
}

一応Apacheを再起動すればMediaWikiからメール送信が出来るようになってるはず.少なくともメールアドレス認証のメールぐらいは送れるので,ユーザー作成にメアド必須設定もできるようになります.

とりあえずここまで

コメント