Gmailのバウンスメールに書かれているstateの値9種類
昨年、"携帯電話宛バウンスの宛先不明とドメイン指定拒否を見分ける"
という記事で、携帯電話に送ってエラーで返ってきたメールのうち宛先不明とドメイン指定拒否(どちらもUnknown Userと書いているのに)をどのように見分けるか、
という方法を紹介しましたが、主にSendmail,Postfix,qmailなど著名なMTAが作ったバウンスメールのみで、最も著名なWebメールの一つであるGmailについては
言及していませんでした。
Kenichi MaehashiさんのBlogでの記事 " DoCoMo SMTP のバウンスから宛先不明とドメイン拒否を区別する (Gmail 編) - Kenichi Maehashi's Blog" で、``state の一覧があれば便利なのですが、見当たりませんでした。''と仰っていましたので、 Gmailのバウンスメールにおけるstateの値を纏めてみました。
Gmailのバウンスメール
Gmailから返ってくるバウンスメールは他のMTAやメールサービスのそれとはまた違ったフォーマットになっています。
バウンスの理由を機械的に判別するためには、バウンスメールの文章の最後の方にあるstateの値
を見て判断しなくてはなりません。
bounceHammerの開発過程で集めたサンプルでは、stateの値は9種類まで見つける事が出来ましたが、もっと他にも あるかもしれません。ここでは発見した9種類のstateの値をそれぞれ解説します。
bounceHammerはGmailのバウンスメール解析にも対応済ですので、bounceHammerのソースコードが手元にある方、 既にインストール済の方はlib/Kanadzuchi/MTA/US/Google.pmを見てもらってもよいでしょう。
stateの値一覧
下記の表はそれぞれstateの値、エラーが発生したSMTPコマンド、 bounceHammerが検出するエラー理由、 エラーの説明 の順で記述しています。
state | SMTPコマンド | エラー理由 | 補足 |
---|---|---|---|
6 | systemerror | 恒久エラー: メールサーバはTLSをサポートしていない | |
8 | AUTH | systemerror | 恒久エラー: メールサーバのSMTP認証が失敗した |
9 | AUTH | systemerror | 一時エラー: TLSの証明書が読み込めなかった |
12 | AUTH | systemerror | 恒久エラー: SMTP認証後のリレーをサポートしていない |
13 | rejected | 恒久エラー: エンベロープFromのメールアドレスが拒否された | |
14 | RCPT | userunknown mailboxfull |
恒久エラー: 宛先不明またはメールボックス一杯 |
15 | DATA以降 | filtered | 恒久エラー: SPF内容による拒否またはヘッダのToが存在しない(受信できない状態) |
17 | DATA以降 | filtered | 恒久エラー: ヘッダ内容か本文内容による拒否またはヘッダのToが存在しない(受信できない状態) |
18 | DATA以降 | filtered | 恒久エラー: ヘッダのToが存在しない(受信できない状態) |
具体的な見分け方
携帯電話(NTT DoCoMo)宛で注意すべき事
bounceHammer開発元にあるGmailからのバウンスメールのサンプル数からも、
携帯電話宛に送って返ってきたバウンスメールはほとんどが(state 14), (state 18)
になっています。
Kenichi MaehashiさんのBlogでの記事 "
DoCoMo SMTP のバウンスから宛先不明とドメイン拒否を区別する (Gmail 編) - Kenichi Maehashi's Blog"
でも解説されている通り、state 14 = 宛先不明、state 18 = ドメイン指定拒否の類と判断してもよいでしょう。
しかし、宛先不明に比べると割合は低いのですが、メールボックス一杯(mailboxfull)で返ってくるバウンスメール
のstateの値も、宛先不明のそれと同じく(state 14)となっています。ですので、stateの値だけで
なく、その直前の文章も読んで何のエラーであるかを把握する必要があります。
また、ドメイン指定拒否はstate 18以外でも返ってくる可能性もありますし、state 18でもドメイン指定拒否
ではなく本文に書かれたURLが問題の在るコンテンツとして登録されている(URLフィルタ)為にバウンスしたと
いう可能性も在りますのでご注意下さい。
宛先不明の場合
Google tried to deliver your message, but it was rejected by the recipient domain.
We recommend contacting the other email provider for further information about the
cause of this error. The error that the other server returned was:
550 550 5.1.1 <******@docomo.ne.jp>... User Unknown (state 14).
メールボックス一杯の場合
Google tried to deliver your message, but it was rejected by the recipient domain.
We recommend contacting the other email provider for further information about the
cause of this error. The error that the other server returned was:
550 550 5.2.2 <*****@docomo.ne.jp>... Mailbox Full (state 14).
stateの値別サンプル
2011/04/26: 少し物足りない気がしたので追記しました
Googleから返ってくるバウンスメールの文言で、stateの値毎に異なるメッセージを抜粋して
紹介します。
state 6
500 Remote server does not support TLS (state 6).
state 8
535 SMTP AUTH failed with the remote server. (state 8).
state 9
454 454 TLS missing certificate: error:0200100D:system library:fopen:Permission denied (#4.3.0) (state 9).
state 12
500 Remote server does not support SMTP Authenticated Relay (state 12).
state 13
550 550 5.7.1 <****@gmail.com>... Access denied (state 13).
state 14(二種類観測しています)
550 550 5.1.1 <******@*********.**>... User Unknown (state 14).
550 550 5.2.2 <*****@****.**>... Mailbox Full (state 14).
state 15(二種類観測しています)
550 550 5.7.1 SPF unauthorized mail is prohibited. (state 15).
554 554 Error: no valid recipients (state 15).
state 17(二種類観測しています)
550 550 <****@***.**> No such user here (state 17). 550 550 #5.1.0 Address rejected ***@***.*** (state 17).
state 18
550 550 Unknown user *****@***.**.*** (state 18).
未知のstate値
この記事ではGmailから返ってくるバウンスメール末尾のstateの値をそれぞれ紹介しました。
bounceHammerは、ここで言及した9種類のエラーコード
と直前の文章を解析して、適切なエラー理由を検出・決定します。
しかし、他のstateの値(1,2,3,4,5,7,10,11,16,19以上)は存在するのかどうかも分かりませんし、
ここで取り上げたstateの値でも、14のように複数のパターンがあるかもしれません。もしも
他のパターンを発見された場合は、その情報をお知らせ頂けると幸いです。
Leave a comment