デザインのあれやこれ
ロリポップでSubscribe2が動かない!?その原因と対策について
メールマガジン登録&配信プラグイン『Subscribe2』が、サーバによってメール送信時にエラーとなる現象が発生するようです。原因はWordPress側のセキュリティによるもので、発生時の解決法などを紹介してみます。
どうやら原因はロリポップではなく、WordPressのアップデートによるもののようです。
(ロリポップサーバは使用者も多く同じ症状が起こっている人も多いと思うので、キーワードとしてロリポを挙げています。別のサーバでも起こりうる事ですので、あしからず!)
今までメルマガに触れた経験が(読む側ではなく配信する側としては)一度も無かったのですが、最近のお仕事でメルマガの登録に関わる機会があり、WordPressでメルマガ登録〜配信できるものはないかな?と思って色々と調べてみたんですね。
Subscribe2というプラグインが人気のようで、基本的に英語UIですが日本語化パッチも出回っており、これを利用できないかと思って動作確認をしていたときの話です。
動いたり動かなかったり、サーバによって動いたりエラーが出たり、もんどりうって七転八倒させられたので、原因や解決方など書き記しておきます。
ちなみに解決方法だけ知りたい方はこの部分だけ見てね!
『Subscribe2』が稼働サーバによってエラーが出る
症状としては『こっちのサーバでは動くのに、こっちのサーバでは動かない』にブチ当たったんですね。またこれか…と数時間もんどりうって試行錯誤を強いられました。とほほ…
症状としては、下記のようなものでした。
- メールアドレスを登録して画面遷移後にエラーメッセージが表示される
- しかし管理画面ではメールアドレスが『未確認』の状態で登録されている
- 未登録のメールアドレスを『登録解除』しようとした時の反応は正常に見える
- しかし登録済みのメールアドレスを『登録解除』しようとすると同じエラーが表示される
このような現象が、ロリポップ上で稼働させているページで発生したんですね。
エラーの原因は『登録確認メールor登録解除確認メールが送信できない』ことですね。
別のサーバでは問題なくメール送信できていたのですが、ロリポップ上ではどのサイトでもこの症状が発生していました。サーバによって動く動かないでは使えないので、原因究明のもんどりうちが始まりました。
原因はWordPressによるメール送信セキュリティの強化
原因究明と解決には、こちらのページを参考にさせて頂きました。
Subscribe2のメルマガが突然送れなくなった件|Spray
メールマガジンプラグイン Subscribe2は簡単で便利に使えそう|ゆうそうとITブログ
ありがとうございます!
『自分の名刺で送りなさい』というWP先生の新ルール
原因はサーバでもプラグインでもなく、WordPress本体のアップデートによるメール送信セキュリティが強化されたためのようですね。
スパムメール送信(ウィルス・ハッキング等)の対策として、WordPressから送信されるメールの『メール送信元アドレス』のチェックが強化され、基本的にメールを送信しようとしているサイトのドメイン以外の送信元から送れなくなったという事です。
例えば、erimaki-house.com内で特設サイト『ドライブ旅行ガイド』みたいなのを立ち上げたとします。
お知らせ用メール『osirase@eh-driveguide.com』という送信元&返信先を指定して送信しようとしても、WordPressが『あれっ?erimaki-house.comサイトなのに、違う名前でメール送ろうとしてんじゃん。これスパムじゃね?』と判断してブロックしてしまう…という仕組みです。
つまり、erimaki-house.com内ではすべて『◯◯◯◯@erimaki-house.com』からメール送信させる形にしなければいけないんですね。
余談ですが、この記事を書いている最中にどこからともなく『他人の名刺で仕事するな、自分の名前で仕事しろ』っていう言葉が聞こえてきました。どことなく昔の師匠の声に似てたような…
今回の原因はスパム対策ということですが、そもそも自分の屋号と違う名前を騙って仕事をするのもスジが通らないでしょ?って事ですよね。違う社名を名乗る・別名を名乗るっていうのも、なんだかキナ臭い話に感じますよね。
グループ等が絡むと様々な名前の名刺を扱うことにもなりますが、可能な限り自分の名前(自社屋号)で信用を得ていくほうが良いよねって感じています。
サーバによって動く・動かないの違いがあるのは?
この点については理解が曖昧なので参考程度に留めて頂きたいのですが、マルチドメインとメールサーバの関係に関するもののようですね。
こっちのサーバではサイトのドメイン名とメールサーバ上のドメイン名を(何らかしらの方法で?)一致させているけど、別のこっちのサーバでは(1台のサーバに複数ドメインを割り当てて共用させているため)サイトのドメイン名とメールサーバ上のドメインが違うものになる…ゆえに、サーバによって動く・動かない等の挙動の違いが出ているようです。
別記事でも述べましたが、この『同じ事をしているのに、場所によって動いたり動かなかったりする』は原因特定が本当に厄介ですね…とほほ。
解決法:フックをかけて送信元&返信先を上書きする
サイトのドメイン名とメール送信元ドメインを一致させてあげれば問題は解決します。
しかし、設定からメールアドレスを指定しても、Subscribe2はこれを豪快に無視してくれます。なんてこった!?
なので、Subscribe2のフックを利用して、メール送信元を上書きしてあげましょう。
functions.phpに、下記のコードを追加します。
// Subscribe2 メール送信元&返信先の上書きフック
function custom_reply_to($header) {
$header['From'] = '好きなメール名@自サイトドメイン';
$header['Reply-To'] = '好きなメール名@自サイトドメイン';
return $header;
}
add_filter('s2_email_headers', 'custom_reply_to');
送信元と一緒に返信先も合わせて書き換えてあげましょう。
前述の例のケースなら『info-eh-driveguide@erimaki-house.com』みたいなカンジで、@以降のドメイン名をサイトと同じものにします。
(ここでは割愛しますが、このフックを利用すれば送信者名なども好きなものに変更できるようですね。Subscribe2標準の設定では件名と本文のみですから、利用してみるのもアリだと思いますよ)
このコードを加えてあげたら、無事ロリポップ上のサイトでもアドレス登録〜送信ができるようになりました。やったね!
数時間もんどりうって煮えた鉛を飲む思いでしたが、原因も判明して問題も無事解決してくれました。
余談ですが、『もんどりうって』は『翻筋斗打って』と書くんですね。
『飜る(ひるがえる)』はわかりますが、『筋斗』とは何だと思って調べたら宙返りの事だと。西遊記の孫悟空が乗る『筋斗雲』は空中で宙返りして呼び寄せることからその名前がついたんですって。
飜って宙返り、ようするにフッ飛んできりきり舞いする様をあらわす語なんですね。
WordPressの問題解決から何の役にも立たないムダ知識まで、幅広く紹介していく当サイトを今後ともよろしくお願いします。