携帯電話宛バウンスの見分け

日本の携帯電話、例えばNTT docomo(ドコモ)にメールを送ってバウンスしてくる場合、 その多くが宛先不明かドメイン指定拒否によるものです。 宛先不明もドメイン指定拒否も、どちらのバウンスメールも内容は Unknown User と書かれていて、一見しただけでは判別しにくいのですが、よく観察すると僅かな違いがあります。

戻ってきたバウンスメールが、どのMTA(メールサーバ)で作られたものであるかは 文面や構造をよく見ないと判別できませんので、より詳細な解析結果が必要な場合は Sisimaiによる解析をお試しください。

Sisimaiは携帯電話宛バウンスメールの宛先不明を userunknownと、 ドメイン指定拒否をfiltered として自動で区別して検出しますが、ここでは目視による簡単な判別方法を紹介します。


初出: bouncehammer.jp/.../distinguish-between-the-unknown-and-the-filtered

Sendmailの場合

送信するメールサーバがSendmailの場合、宛先不明(userunknown)と ドメイン指定拒否(filtered)を見分ける方法は非常に容易で、 バウンスメールの本文内Status:の値を見ます。 後述のメールサーバと比べて最も目視で判別がしやすい構造、文面となっています。

宛先不明(userunknown)の応答

Final-Recipient: RFC822; *********@docomo.ne.jp
Action: failed
Status: 5.1.1 ←ここを見る
Remote-MTA: DNS; mfsmax.docomo.ne.jp
Diagnostic-Code: SMTP; 550 Unknown user *********@docomo.ne.jp
Last-Attempt-Date: Fri, 2 Apr 2010 01:23:45 +0900
                

ドメイン指定拒否(filtered)の応答

Final-Recipient: RFC822; *********@docomo.ne.jp
Action: failed
Status: 5.2.0 ←ここを見る
Remote-MTA: DNS; mfsmax.docomo.ne.jp
Diagnostic-Code: SMTP; 550 Unknown user *********@docomo.ne.jp
Last-Attempt-Date: Fri, 2 Apr 2010 01:24:09 +0900
                

Status:の値が5.1.1 なら宛先不明(userunknown)です。 一方Status:の値が5.2.0 ならドメイン指定拒否(filtered)です。まとめると次のようになります。

  • Status: 5.1.1 = 宛先不明(SMTPのRCPT TO:コマンドでエラーが出た)
  • Status: 5.2.0 = ドメイン指定拒否(SMTPのDATAコマンド以降でエラーが出た)

Postfixの場合

送信するメールサーバがPostfixの場合は、どのエラーであっても前述の Status:の値は概ね5.0.0 となっていて判別ができません。そこでバウンスメールの本文に書かれている、 エラーの発生したSMTPコマンドを読み取って判断します。 Sendmailと比べると多少英語で書かれたエラーメッセージの単語を追いかける必要があります。

宛先不明(userunknown)の応答

        The mail system

<*******@docomo.ne.jp>: host mfsmax.docomo.ne.jp[203.138.180.112] said: 550
    Unknown user *****@docomo.ne.jp (in reply to RCPT TO command)
                

ドメイン指定拒否(filtered)の応答

        The mail system

<*******@docomo.ne.jp>: host mfsmax.docomo.ne.jp[203.138.180.112] said: 550
    Unknown user *****@docomo.ne.jp (in reply to end of DATA command)
                

Status:の値を見る事に比べて一見しただけでは分かりにくいのですが、 in reply to RCPT TO Commandと書いていれば 宛先不明(userunknown)で、 in reply to end of DATA Command と書いていればドメイン指定拒否(filtered) という事になります。纏めると次のようになります。

  • in reply to RCPT TO command = 宛先不明(SMTPのRCPT TO:コマンドでエラーが出た)
  • in reply to end of DATA command =ドメイン指定拒否(SMTPのDATAコマンド以降でエラーが出た)

qmailの場合

送信するメールサーバがqmailの場合は更に判別が難しく、 バウンスメール本文の文章における表現の違いを読み取ります。 ここまで来ると最早簡易な判別ではないかもしれませんが、 qmailもそこそこユーザのいるMTAなので同じように紹介します。

宛先不明(userunknown)の応答

<*****@docomo.ne.jp>:
203.138.180.240 does not like recipient. ←ここを見る
Remote host said: 550 Unknown user ******@docomo.ne.jp
Giving up on 203.138.180.240.
                

ドメイン指定拒否(filtered)の応答

<*****@docomo.ne.jp>:
203.138.180.112 failed after I sent the message. ←ここを見る
Remote host said: 550 Unknown user *****@docomo.ne.jp
                

qmailはエラーメッセージの文面で判別します。 上記のようにdoes not like recipient と書いていれば宛先不明(userunknown)であり、 failed after I sent the messageと書いていれば ドメイン指定拒否(filtered)となります。 纏めると次のようになります。

  • does not like recipient = 宛先不明(SMTPのRCPT TO:コマンドでエラーが出た)
  • failed after I sent the message =ドメイン指定拒否(SMTPのDATAコマンド以降でエラーが出た)

非常に見分けにくいのですが、無理やり解釈するならば、 does not like recipientは正しい受信者ではない=SMTPの RCPT TOコマンドでエラーが発生した、 failed after I sent the message はメッセージ送信後に失敗した=メッセージの送信はSMTPのDATAコマンドを使う=SMTPのDATAコマンドでエラーが発生した、ということでしょう。

Eximの場合

送信するメールサーバがEximの場合は、 Postfixと同じくバウンスメールの文面からエラーの発生したコマンドを読み取るだけです。

宛先不明(userunknown)の応答

 *******@docomo.ne.jp
   SMTP error from remote mail server after RCPT TO:<*****@docomo.ne.jp>:←この行を見る
   host mfsmax.docomo.ne.jp [203.138.180.112]: 550 Unknown user *****@docomo.ne.jp
                

ドメイン指定拒否(filtered)の応答

 *******@docomo.ne.jp
   SMTP error from remote mail server after end of data:<*****@docomo.ne.jp>:←この行を見る
   host mfsmax.docomo.ne.jp [203.138.180.112]: 550 Unknown user *****@docomo.ne.jp
                

Eximのバウンスメールは、エラーが発生したSMTPコマンドが書かれているので qmailと比較すると判別がしやすいでしょう。纏めると次のようになります。

  • after RCPT TO = 宛先不明(SMTPのRCPT TO:コマンドでエラーが出た)
  • after end of data =ドメイン指定拒否(SMTPのDATAコマンド以降でエラーが出た)

Courier-MTAの場合

送信するメールサーバがCourier-MTAの場合は、 PostfixやEximと同じくバウンスメールの文面からエラーの発生したコマンドを読み取るだけです。

宛先不明(userunknown)の応答

        UNDELIVERABLE MAIL

Your message to the following recipients cannot be delivered:

<********@docomo.ne.jp>:
    mfsmax.docomo.ne.jp [203.138.180.240]:
>>> RCPT TO:<******@docomo.ne.jp> ←この行を見る
<<< 550 Unknown user ****@docomo.ne.jp
                

ドメイン指定拒否(filtered)の応答

        UNDELIVERABLE MAIL

Your message to the following recipients cannot be delivered:

<********@docomo.ne.jp>:
    mfsmax.docomo.ne.jp [203.138.181.112]:
>>> DATA ←この行を見る
<<< 550 Unknown user ****@docomo.ne.jp
                

Courier-MTAのバウンスメールは、PostfixやEximと同様にエラーが発生したSMTPコマンドが 書かれているのでqmailと比較すると判別がしやすいでしょう。纏めると次のようになります。

  • <<< RCPT TO = 宛先不明(SMTPのRCPT TO:コマンドでエラーが出た)
  • <<< DATA =ドメイン指定拒否(SMTPのDATAコマンド以降でエラーが出た)

シシマイでの解析

この文書では一例として、日本の携帯電話宛、特にドコモ宛で発生したバウンスメールの、 宛先不明(userunknown)とドメイン指定拒否(filtered) を見分ける方法を紹介しました。

Sisimaiは、自動でこの区別を行うだけでなく、メールボックスがいっぱい、 メールが大きすぎるなど 他のエラー理由(合計34種類)も検出し、 また携帯電話だけでなくGmailやYahoo!などのメールサービスのエラー解析にも対応しています。