メールはなぜ届かなかったのか?ActivityのREASONから原因を特定する方法

メールはなぜ届かなかったのか?ActivityのREASONから原因を特定する方法

SendGridサポート&マーケティング担当の関口です。
今回は、SendGridユーザにはお馴染みの「Activity」機能について、少し掘り下げてみたいと思います。

Activityの中には「REASON」という項目があるのですが、確認したことはありますか?これは送信関連のイベント(Delivered・Bounce・Block・Deferred・Drop)にのみ含まれる情報で、メール不達時にどこで何が起きているのかを知る上での大きな手掛かりとなるものです。

以下、イベント別のよくあるケースと、その際のREASONの内容をあわせて解説していきます。

REASONの確認方法

まずは確認方法です。

Activity(※ログインが必要)にアクセスし、Delivered・Bounce・Block・Deferred・Dropのいずれかのイベントの右端にある「i」マークをクリックしてください。表示された吹き出し部分の中に、REASONという項目があるかと思います。

イベントの右端にある「i」マークをクリック

よくあるREASONの例

REASONには大きく分けて、以下の2種類があります。

  • 宛先への送信を試みたメールの場合
    宛先メールサーバからの応答メッセージがそのままREASONとして格納されます。
  • 宛先への送信を行うことなく、SendGrid側で破棄した場合
    SendGridが生成したメッセージがREASONとして格納されます。

以下、イベントの種類ごとに詳しく見ていきます。

Delivered(正常受付)

Deliveredは、宛先メールサーバが正常にメールを受け付けた時に発生するイベントです。

Delivered(正常受付)

このとき宛先メールサーバは、正常応答を示す「250 OK」を返した上で、問題がなければ宛先のメールボックスへとメールを配送します。

REASONには宛先メールサーバから返された「250 OK」が格納されます。

Delivered時のREASON

Deliveredが発生しているのに宛先のメールボックスに届いていないという場合、
・宛先メールサーバ側の判断により破棄された
・迷惑メールフォルダに振り分けられている
といった原因が考えられます。宛先メールサーバの管理者に状況を確認してください。

Bounce(バウンス)

Bounceは、宛先メールサーバから「恒久的なエラー」を示す応答コードが返された時に発生するイベントです。

Bounce

このときREASONには宛先メールサーバから返された応答内容がそのまま格納されます。

多くの場合、Bounceの原因は「宛先メールアドレスが存在しないため」であり、そのことを示す以下のようなメッセージがREASONに格納されることになります。
・550 User unknown
・550 The email account that you tried to reach does not exist
・554 This account has been disabled or discontinued
・550 Recipient address rejected: User unknown

なお、REASONの内容は宛先メールサーバが返したもののため、REASONに十分な情報がない場合や不明点がある場合は宛先メールサーバの管理者に確認する必要があります。

Deferred(遅延)

Deferredは、宛先メールサーバから「一時的なエラー」を示す応答コードが返された時に発生するイベントです。

Deferred(遅延)

このときREASONには宛先メールサーバから返された応答内容がそのまま格納されます。

Deferredの原因としては、「メールボックスが一杯になっている」「一時的なネットワーク障害が発生している」「メールの送信量が多すぎる」などが挙げられます。こういった問題はしばらく待つことで解消することが多いため、SendGridでは自動的に再送を繰り返します(最大72時間)。

<イベント発生の流れ>
Processed → Deferred → Deferred → … → Delivered(もしくはBlock)

基本的には間隔を徐々に広げながら再送していきますが、宛先メールサーバからの応答内容によっては、通常よりも大きく間隔をとったり、72時間を待たずに再送を中断したりすることもあります。なお、再送処理はSendGridによって自動的に行われ、再送間隔の制御やキャンセルはできません

IPウォームアップの必要性

送信実績のない状態で大量のメールを送信した際に、
・error dialing remote address: dial tcp xxx.xxx.xxx.xxx: i/o timeout
のようなタイムアウト系のDeferredが出た場合は、宛先サーバ側にスロットリング(流量制限)されている可能性があります。(※宛先サーバによってメッセージの内容は異なります)

スロットリングが疑われる場合は新たな送信を控え、Deferredが落ち着くまで様子を見てください。その後、IPウォームアップを実施してください。

Block(ブロック)

Blockは、以下のような時に発生するイベントです。
・Deferredが解消されず、SendGridが再送を諦めた
ブラックリスト(ブロックリスト)に掲載されている(この場合、Deferredすることなく即時Blockイベントが発生します)

REASONには、宛先メールサーバからの応答内容がそのまま格納されます。

Drop(破棄)

送信すべきではない宛先へメールを送信しようとした場合、SendGridによって自動的にメールが破棄され、Dropイベントが発生します。

Drop(破棄)

このときREASONにはSendGridが生成した以下のようなメッセージが格納されます。
・Bounced Address
・Unsubscribed Address
・Spam Reporting Address
・Invalid

例えば「Bounced Address」であれば、バウンスリストにそのメールアドレスが掲載されているために自動的に破棄したということを示しています。

詳しくは、FAQ「メールがドロップしてしまったのですが、なぜでしょうか?どう対処すればいいですか?」を確認してください。

さいごに

REASONの情報は、不達の原因がどこにあるかを切り分ける上で非常に大きな手掛かりとなります。イベントの種類だけでなく、REASONにも注意してみてください。

Activityの使い方やよくあるケースについて、チュートリアルでも詳しくご紹介しています。こちらもぜひチェックしてみてください。