経緯
ユーザーからメールが届かないとの報告を受け、あれこれやってみたがなにをどうしても届かない。サーバーはロリポップ。
ロリポップのお試し期間を使って管理人が同じファイルをサーバーにアップしたところ、正常に送信、受信できた。
そもそもロリポップでは動作に問題のないことは確認済でした。
原因
この時点でPHPプログラム側ではなく設置サーバー側に原因があることが確定しました。
ロリポップ側に問い合わせを行ったところログに下記エラーがあるとのこと。
said: 554 5.7.1 Service unavailable; Client host [サーバのIPアドレス]
blocked using xbl.spamhaus.org;
これは下記サイトでブラックリストに載ったために受信側のサーバーでブロックされているということらしいです。
http://www.spamhaus.org/
※2014/12/25 追記 再び他のユーザーで同じくロリポップでのブラックリスト登録を確認しました。
※2015/7/7 追記 ヘテムルサーバーでも確認しました。
※2015/10/19 追記 再び他のユーザーで同じくロリポップでのブラックリスト登録を確認しました。
これ以外にも何度かユーザーからの報告によって確認しています。
というかロリポップ系がとにかく多いです。。というか私が確認できているのはロリポップ系だけです。
ここはGMOになってからさらになんか色々変ですw(正直もうここは借りないほうが無難です)
ロリポップのプランはロリポプラン。(プランは特に関係ないと思いますが)
もちろんその他のサーバーでも登録される可能性はあると思います。
ブラックリストに載ってしまった理由はおそらく他のユーザの誰かがスパム行為(迷惑メールの大量送信等)を行っていたなどが考えられます。
※ただ、ほとんどのサーバー(ロリポップでも行っている)では送信制限を行い大量送信はできないような仕様となっていると思いますが。
今まで同様の経験、及び報告もありませんので、かなりレアなケースかと思いますが(追記 ロリポップではレアではありませんでした)、送信できない原因がどうしても分からない場合にはブラックリストに登録されている可能性があります。
ブラックリストに登録されているかどうかをチェックする方法
ブラックリストに登録されているかどうかは簡単にチェック可能です。
以下のURLのパラメータにサーバーのIPアドレスを追記するだけです。
例 IPアドレスが「111.222.333.444」だった場合
http://www.spamhaus.org/query/bl?ip=111.222.333.444
is not listed in the ○○○
となっていればリストには登録されていないということでしょう。
逆に登録されている場合の文言は分かりません・・・。
※追記 リストに載った場合には以下の様なページになります。
登録されてしまっても解除申請を行えば解除してくれるそうです。
今回の場合もすぐに解除されました。(数分~数時間程度らしい)
解除方法は私は分かりません。サーバー会社に依頼するのが手っ取り早いでしょう。
自力でも可能だと思います。
追記(重要)
上記サイトだけでは精度が低いため、以下サイトでもチェックしてみて下さい。
※上記サイトではブラックリスト入りしていないが以下サイトでは入っていたというケースがありました。
(IPアドレスを入力してチェックするだけです)
mxtoolbox.com
や
blacklistalert.org
「OK」で問題なし、「Listed」となっていたらブラックリスト入りです。
これらのサイトの通り、実際には相当な数のブラックリスト化するサイトがあります。
ここはOKだけど、ここはNGのようなことがあります。(ありました)
実際に「mxtoolbox.com」の1箇所だけに掲載されていてGmail宛のメールが迷惑メールに振り分けられるというケースがありました。
IPアドレスの確認方法
サーバーのIPアドレスが分からない場合には、簡単に調べることができます。
FTPソフトで接続した際にページ下部の画像のようにIPアドレスが表示されるはずです。
IPアドレスは○○.○○.○○.○○.
のように3桁~1桁の数字で4つの組み合わせからなります。
※6つになっている場合は、最初の4つだけでOKです。
※(21)がある場合、これはポート番号なので無視して下さい。
※コマンドプロンプトで「nslookup」で調べる方法もありますが、設置サーバのIPアドレスを調べるには経験上確実ではないかもしれません。
※サーバー管理画面で確認できるサーバーもあります。
※ドメインツールズなどのサイトでも調べられます(ただしサブドメインの場合は正確で無い可能性が高いです)
ブラックリスト入りした場合の解除方法について
ブラックリストを提供しているサイト側には基本的には必ず解除申請のためのページなどがありますので、そちらで申請すればOKだと思います。
ただ、自力でやるのはちょっと大変だと思いますので、サーバーにその旨問い合わせすることで解除してもらえることが多いと思います。
実際にロリポップとエックスサーバーでは問い合わせただけで解除申請してもらえました。(特にエックスサーバーは大変親切でした)
逆に対応してくれないようなサーバーは使うべきでないかもしれません。
※これでそのサーバーのスタンスが分かるとも言えます。
問題点
これが問題なのは、共有サーバーの場合には同一サーバー内のすべてのユーザ(サイト)に影響があるということ。
まぁこれはほんとにシャレにならんです(笑)
なんか最近問い合わせこないな~っと思ったらブラックリストに載っていて届いてなかった~!となるわけですね。
リストから解除されてもその間に送信していたメールはもう届くことはありません・・・し、確認するすべもありません。無かったことになります。
受信サーバー側で弾かれてしまってますのでサーバー内にメールデータ自体が無いことを意味します。(すべての環境でどうかは定かではありませんが)
クライアントのサイトであれば責任問題にもなりかねませんね。
また解除されてもまた同じように登録されるリスクは当然あります。
※原因を作ったユーザーを特定、または必要な対策をサーバー側が取らない限り。
ちなみにブラックリストに載っても、ブラックリストに登録されたサーバーで作成したメールアドレスの場合には受信出来ました。
また、契約しているレンタルサーバーによっては受信できるようです。
今回の場合、
1,ロリポップのメールアドレスでは受信出来た。
2,エックスサーバー作成のメールアドレス、Gmail、Hotmailでは受信できませんでした。
3,KAGOYAで作成のメールアドレスの場合に受信出来ました。
要するに上記のブラックリストを参照しているレンタルサーバー会社と参照していないレンタルサーバー会社があるということになります。
いずれにせよ問題であることには変わりありません。
逆にこのほうが厄介かもしれませんね・・・。
対応策
1,定期的に上記URLでチェックする。または定期的に送信テストを行うのが最も有効でしょう。
問い合わせはサイトにとって最も重要な機能の一つです。この問題に限らず意図せずファイルの上書きなども考えられるため、定期的に送信テストは行ったほうが良いでしょう。(そもそも大事な機能なのでクライアント自身でも定期的に行うべきとも考えていますが。私がクライアントでWebの知識がなかったとしてもそうしますがね)
2,契約しているサーバーで作成したメールアドレスで受信する。
たとえばロリポップで契約している場合に同じドメインのメールアドレス(info@ドメイン等)を使用する。
他のサーバーで作成したメールアドレス(他のサーバーで運用しているドメインなど)、Gmailなどでは受信しない。
※ただし、この方法は確実ではないかもしれませんので悪しからず。
3,送信データをCSVファイルにも保存する
当サイトで配布しているCSV保存版であれば、フォームの送信データがCSVファイルにも保存されるので、
仮にメールが送信できていなかったとしても問い合わせ内容すべてがCSVファイルには保存されるので最悪のケースは回避できます。
CSVファイルの内容を元に個別にメールソフトで対応いただけます。