メール送信エラー発生~Spamhaus PBLにIPアドレスが登録されていたので解除申請で解決

isdはじめに

2021年4月下旬、僕が管理しているIDCFクラウドのサーバーについて
「Webサイトに設置したメールフォームからメールが届かない」
というご連絡がありました。

結論からいいますと、スパムメールの送信元ブラックリストを提供するSpamhausのPBLに当該サーバーのIPアドレスが登録されていたので、解除申請を行うことで、解決しました。

Spamhausの解除申請には、IDCFクラウドのFAQを参考にしました。

・Spamhaus PBLにIPアドレスが登録され、特定の宛先にメールが届かなくなった。 – IDCFクラウドFAQ
https://www.faq.idcf.jp/app/answers/detail/a_id/1123/

以下、調査と対処方法を記載します。
ログやキャプチャ画像において、IPアドレス、メールアドレスなど、一部をマスクしています。

isd調査と対処方法

送信エラーとなったメールの、メールログ上の status= 以降は以下のとおりでした。
(見やすいよう、改行を加えています。)

status=bounced (host aspmx.l.google.com[74.xxx.xxx.xxx] said: 
550-5.7.1 [210.xxx.xxx.xxx] The IP you're using to send mail 
is not authorized to 550-5.7.1 send email directly to our servers. 
Please use the SMTP relay at your 550-5.7.1 service provider instead. 
Learn more at 550 5.7.1 https://support.google.com/mail/?p=NotAuthorizedError 
29si7026133pgv.136 - gsmtp (in reply to end of DATA command))

 

「宛先のGoogleのメールサーバーが、このIPアドレスからのメールを拒否している」
ということですね。

Googleの(に限らずメールサーバーの)判定ルールは非公開だろうから難しいな、と思ったのですが、ふと思いついて、サーバーのIPアドレスが、ブラックリストに登録されていないか、BLACKLISTALERT.ORG で確認してみたところ、、、

以下のとおり、Spamhaus に登録されていることがわかりました。


 

BLACKLISTALERT.ORG の「Listed!」の隣にある「See why」のリンクをたどって、改めて SpamhausのIPアドレスチェックページ で確認すると、、、


 

↑PBLに登録されていることがわかりました。
メールを送信したときに、受信側のメールサーバーで、このSpamhaus PBLを参照してスパムメールの判定を行っていれば、メール配送が拒否される確率が非常に高いということですね。

SpamhausのIPアドレスチェックページの下のほうに

If you run your own mail server, and require removal from the PBL,
please click on “Show Details“

とあるので、解除申請をするため、右下の「Show Details」をクリックします。

遷移後のページには、以下のように、、、


 

  • このIPアドレスに対する、Spamhaus Projectのメール送信ポリシー(どうとらえているか)。
  • PBLとは?
  • 解除の手続きについて。

などが記載されています。

「Next Steps」をクリックして、次のページに進みます。


 

↑ここでは、解除申請情報を入力します。

名前、メールアドレス、解除申請が必要な理由を記載します。
解除申請が必要な理由のところは、何を書くのか悩ましいところですが、僕は、以下のような、AWS EC2の送信制限解除申請と同じようなことを英語で記載しました。

  • このIPアドレスからメールを送信できなくて困っているので、解除してほしい。
  • メールはWebアプリケーションからのみ送信し、バウンスメールはきちんと管理し、インバウンドのTCP/25ポートは閉じ、SPFを設定している、など、スパムメールを送信しないための対策を実施している。

すべて入力して「Submit」をクリックすると、以下のページに遷移します。


 

すぐに、入力したメールアドレスに、以下のような確認のためのメールが届きます。

送信元(From)は、noreply@spamhaus.org
件名は「Spamhaus removal verification for (IPアドレス)」で、
本文は以下のような内容です。


 

↑メールに書かれているとおり、メール本文内のリンクをクリックします。

すると、Webブラウザで以下のページが表示されます。


 

これで、一連の解除申請は完了です。

その後、Spamhausのシステム全体に反映されるのは少し時間がかかるのか、当該サーバーではしばらく同じように送信エラーが発生しましたが、1時間40分後に、同じ宛先への送信が成功するようになりました。

isd補足情報

Spamhaus PBLに登録されたことについて、いくつか補足します。

いつPBLに登録された?

一番古いログでは、2020年4月から発生していました。
2021年4月上旬あたりから、それまでは正しく送信できていた、Google Workspace(旧G suite)宛てのメールが送信できなくなり、、送信エラー件数が一気に増えていました。

メールログ (/var/log/maillog) のメッセージを抜粋します。
ステータスは、bounced と deferred のケースがありました。

・status=bouncedの場合

550 5.7.1 IP address blacklisted by recipient

550 5.7.1 Service unavailable, Client host [210.xxx.xxx.xxx] blocked using Spamhaus. To request removal from this list see https://www.spamhaus.org/query/ip/210.xxx.xxx.xxx AS(xxxx) 

550 zen.mimecast.org https://www.spamhaus.org/query/ip/210.xxx.xxx.xxx. - https://community.mimecast.com/docs/DOC-1369#550 [K9xxxxxxxxxxxxxxxxx-YQ.uk228]

550 5.1.0 ETP202 Your IP 210.xxx.xxx.xxx is listed by Spamhaus. Please see http://www.spamhaus.org/query/ if you feel this is in error

550 5.7.0 DT:SPM .For more information, please visit https://fb.qiye.xxx.com/static/feedback/#/bounce/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

550-5.7.1 [210.xxx.xxx.xxx] The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1  https://support.google.com/mail/?p=NotAuthorizedError

550 5.7.1 Mail from IP 210.xxx.xxx.xxx was rejected due to listing in Spamhaus PBL. For details please see http://www.spamhaus.org/query/bl?ip=210.xxx.xxx.xxx

 

・status=deferredの場合

550 5.7.0 Blocked - see https://support.proofpoint.com/dnsbl-lookup.cgi?ip=210.xxx.xxx.xxx)

421 4.7.1 Intrusion prevention active for [210.xxx.xxx.xxx][D]

554 5.7.1 Service unavailable; Client host [210.xxx.xxx.xxx] ; https://www.spamhaus.org/query/ip/210.xxx.xxx.xxx)

554-irmxvxxx.secure.ne.jp 554 Your access to this mail system has been rejected due to the sending MTA's poor reputation. If you believe that this failure is in error, please contact the intended recipient via alternate means.)

 

PBLから削除されたあとは?

解除申請の過程でのメッセージでは
「Exclusions are only valid for 1 year.」
と記載がありました。
つまり、この解除申請では、1年後にクリアされて、またPBLに登録されてしまう可能性があります。

(2021.11.2追記)
このとき削除申請したIPアドレスは、ちょうど6ヶ月後に、PBLに登録されてしまいました。
再度、同じ手順で解除申請を行い、PBLから削除されました。
PBLのしくみが変わらない限り、6ヶ月おきに、解除申請を行う必要がありそうです。
(2021.11.2追記ここまで)

実は、Spamhausでは、
「IPアドレスがSpamhausのブラックリストに登録されているかどうか」
をDNSクエリで確認できる、ZENというサービスを提供しています。

・zen.spamhaus.org – Spamhaus
https://www.spamhaus.org/zen/

このことは、以下のブログ記事で知りました。

・SPAMHAUSのPBLから自分のメールサーバを解除する方法 – U君のブログ
https://ameblo.jp/u-kun-win/entry-11989391713.html

IPアドレス 201.AAA.BBB.CCC について確認するなら、CCC.BBB.AAA.210.zen.spamhaus.org について、DNSのAレコードが存在するかどうか調べます。
レコードが存在しなければ登録されておらず、127.0.0.x が返れば、Spamhausの何らかのブラックリストに登録されています。

 $ dig +short CCC.BBB.AAA.210.zen.spamhaus.org

127.0.0.11

 

先ほどのブログ記事で、このサービスを利用して、ブラックリストに登録されたらメールで通知するスクリプトが紹介されています。
すばらしい!

これを参考にさせていただいて、複数のIPアドレスをまとめてチェックするようアレンジしてみました。
IPLIST のところで、調査したいIPアドレスをスペース区切りで指定します。

!/bin/bash
IPLIST='210.AAA.BBB.CCC DDD.EEE.FFF.GGG'

MAILTO=<メール通知先アドレス>

echo "===== Check SPAMHAUS Blacklist  ====="
echo "`date` Check SPAMHAUS Blacklist start"

for IP in ${IPLIST}
do
  IFS='.'
  set -- $IP
  ret=`dig +short $4.$3.$2.$1.zen.spamhaus.org.`

  IFS=''

  message=""
  if [ $? -ne 0 ]; then
    message="dig command error: $IP"
  fi

  if [ -n "$ret" ]; then
    message="server $IP is listed in the SPAMHOUS Blacklist !!"
  fi

  if [[ -n "$message" ]]; then
    echo $message |\
    mail -s "Check SPAMHAUS Blacklist (`hostname`)" ${MAILTO}

    echo $message
  fi
done

echo "`date` Check SPAMHAUS Blacklist end"

# EOF

 

毎日5時にチェックする場合のcronエントリーはこんな感じ。
メールで通知するだけではなく、ログにも書き出すようにしています。

# Check SPAMHAUS Blacklist
0 5 * * * /root/bin/check_spamhaus.sh 1>> /var/log/check_spamhaus.log 2>&1

 

スクリプトを実行するサーバーは、Spamhaus PBLに登録されたことのないIPアドレスのサーバーを使用したほうが安心ですね。
もし登録されると、せっかくブラックリストに登録されたことを検知したのに、その通知メールが正しく届かない可能性があります。

、、、と、スクリプトを用意したところで気づいたのですが、Spamhaus ZENによるDNSクエリサービスには利用規約がありました。

・Spamhaus Public Mirrors – Terms of Use
https://www.spamhaus.org/organization/dnsblusage/

The DNSBL Public Mirror is provided free of charge for non-commercial use by small and medium sized organisations.

「中小組織による非商用利用向けに、無償で提供される」
ということで、お客様のサーバー管理では利用できないことがわかりました。
残念です。

PBLに登録されたIPアドレスについて

僕が管理しているIDCFクラウドのサーバーでは、canderaゾーンの1つ、faradゾーンの2つ、kelvinゾーンの2つのIPアドレスが、PBLに登録されていました。
weberゾーンの2つは登録されていませんでした。
それ以外のゾーンは、使用していないのでわかりません。

IDCFクラウドの一部アドレス範囲が、登録されているようですが、登録されていないゾーンが存在するのは不思議ですね。

IDCFクラウドのFAQページは、つい最近、4月27日に更新されたので、おそらくこの問題に関する問い合わせがいくつかあったのだと思います。

isdおわりに

Spamhaus PBLにIPアドレスが登録されていたことが原因で、メール送信エラーが発生したことと、その対処方法についてまとめました。

メールが正しく送信されていることの確認が抜けていて、気づくのが遅くなってしまったことは反省点です。
2021年に入って、Googleなど、メール受信時にSpamhaus PBLを参照するメールサーバーが増えたのかもしれません。

IaaSでいえば、Alibaba Cloud上のサーバーからは一切、外部への直接のメール送信はできませんし、AWS EC2はもともとメール送信解除申請が必要で、2019年あたりから、審査も厳しくなった印象があります。

もう、個別にメール送信サーバーを用意する時代ではなく、ホワイトリストに載っているような外部のメールサービスを経由して送信すべきということでしょう。
そもそも、Spamhaus PBLの趣旨が、
「エンドユーザーは、認証されていないSMTPサーバーからメールを送信すべきではない」
というもののようです。

だったら、ISPやクラウドサービス業者が、SMTPサーバーを用意してくれるとよいのですが、IDCFクラウドでは、SendGridを使うのが正解なのでしょう。
IDCFクラウドはSendGridと提携していて、「IDCFクラウドユーザー特典プラン」により、月間25,000通まで無料で使用できます。

・クラウドメール配信サービス「SendGrid」 – IDCFクラウド
https://www.idcf.jp/cloud/sendgrid/

さくらのクラウドでも、ユーザー向け特別プランとして、SendGridが月間25,000通まで無料で使用できます。

・さくらのクラウド オプションサービス SendGrid
https://cloud.sakura.ad.jp/specification/option/#sendgrid

 

(関連記事)
・Postfixによるメール送信設定
https://inaba-serverdesign.jp/blog/20160620/postfix_send_mail.html
 

Follow me!