WordPressのマルチサイトでユーザー追加時に500エラー

概要

マルチサイトでユーザーを追加したところ、ネットワーク管理者の画面から追加しても、各サイトから追加しても、新規の場合は500 Internal Server Errorになります。

エラーが出ていますが、ユーザーは登録されていました。
メールは管理者には届いているけれど、登録されたユーザには届きませんでした。

条件を整理して、何が原因かをつきとめて対応しました。

簡単にまとめると、こんな感じです。
Webサーバはさくらインターネット、メールサーバはGoogle Appsを利用しています。
ユーザが追加されると、管理者と本人にメールを出します。
Webサーバから同じドメイン名(マルチドメインで利用している場合はそのドメインも)を持つメールアドレスにメールを出すときに、DNSを参照せずに内部処理を行っていると思われます(ログ見ていませんが状況から)。
さくらのサーバ内には該当するメールアドレスが無いので、sendmailでエラーが出て、500 Internal Server Errorとなりました。

管理者のメールアドレスはGoogle Appsの管理外だったので、メールが届いていました。

目次

  1. サイト構成
  2. ユーザ登録するメールアドレスによって現象が異なる
  3. “Google Apps” “PHPMailer” “さくら”で調べてみると
  4. プラグインを入れる

1.システム構成

WordPress
3.1.3 マルチサイト(サブドメディレクトリ型、サブドメイン型の両方とも現象が出ました)
Webサーバ
さくらのレンタルサーバ スタンダードを独自ドメインで運用
ドメイン管理
お名前.com
メール
ユーザーとして追加したのはGoogle Apps,Gmail

2.登録するメールアドレスによって現象が異なる

Gmail(ドメインが@gmail.com)のメールアドレスや、携帯メールのアドレスを登録するときは、エラーは発生せずユーザー登録が完了し、登録されたアドレスにメールが届きました。

WordPressで作ったサイトのURLを「http://example1.com」として、メールアドレス「user@example1.com」をGoogle Appsで管理しているとすると、「user@example1.com」を登録するときに500 Internal Server Errorとなりました。

また、さくらのレンタルサーバ内で「http://example2.com」をマルチドメインとして管理していて、「user@example2.com」をGoogle Appsで管理しているとすると、WordPressで作ったサイト「http://example1.com」に「user@example2.com」を登録するときにも500 Internal Server Errorとなりました。

3.”Google Apps” “PHPMailer” “さくら”で調べてみると

こちらのページを見つけました。

PHPMailerでGmailのメール送信

確かに「dead.letter」に送信されなかったメールの情報が書き込まれています。

まず、wp-includes/pluggable.phpをエディタで開き、次のように修正します。

381行目あたりの$phpmailer->IsMail();を$phpmailer->IsSMTP();に変更します。

      中略

そして、wp-includes/class-phpmailer.phpを開き、165行目から始まるSMTP設定の変数を次のように変更します。

に従って修正すると、エラーが発生することなくユーザ登録が完了しました。
登録したメールアドレスにメールも届いてます。

Pleskでサーバ管理していたときも、確かにこういう現象が発生していました。
共有サーバなのでログを自分で見たりはできないし、サポートにも確認していませんが、恐らく似たようなことが起こっていると想像できます。

4.プラグインを入れる

とりあえずコアファイルをいじりましたが、アップグレードで戻ってしまうのを避けるため、プラグインを探しました。

Cimy Swift SMTP

情報源はこちら。

さくらインターネットのPHPでMail関数を使うとInternal Server Errorになってしまう

マルチサイトの場合、各サイトごとにプラグインを有効化して「設定 > Cimy Swift SMTP」で設定を行います。
ネットワークにユーザを追加する場合は、blogid=1のサイトのCimy Swift SMTP設定が適用されます。

3件のコメント

  1. 今 試作中のサイトが全く同じ環境で(さくら、googleApps、マルチ)同じ事象がおこり困っていたので、とても参考になりました ありがとうございます

コメントはできません。