bounceHammer has been EOL'ed on February 29, 2016

製品ライフサイクルの終了

2010年3月にオープンソースソフトウェアとして公開して以来、多くのユーザ様・企業様にダウンロードし、 ご利用いただきましたbounceHammerは、2016年2月29日(月)を持ちまして製品ライフサイクルの終了(EOL: End Of Life) となりました。長きにわたりbounceHammerをご使用いただき誠に有り難う御座いました。 開発元では後継となるバウンスメール解析ライブラリとして、より高精度で高速なSisimai(シシマイ) を二条項BSDライセンスで公開しています。

Sisimai
商用サポート

  • 1一式導入・設定・保守・開発の補助
  • 2独自MTA用解析モジュールの開発
  • 3個別案件の対応とメールサポート
  • 4バウンス管理・運用コンサルティング
  • 5スポット解析・解析済みデータ提供

Gmailのバウンスメールにあるstateの値9種類を見る

2011/04/26

Gmailのバウンスメールに書かれているstateの値9種類

昨年、" 携帯電話宛バウンスの宛先不明とドメイン指定拒否を見分ける " という記事で、携帯電話に送ってエラーで返ってきたメールのうち宛先不明とドメイン指定拒否 (どちらもUnknown Userと書いているのに)をどのように見分けるか、という方法を紹介しましたが、 主にSendmail,Postfix,qmailなど著名なMTAが作ったバウンスメールのみで、 最も著名なWebメールの一つであるGmailについては言及していませんでした。


Kenichi MaehashiさんのBlogでの記事 " DoCoMo SMTP のバウンスから宛先不明とドメイン拒否を区別する (Gmail 編) - Kenichi Maehashi's Blog " で、``state の一覧があれば便利なのですが、見当たりませんでした。''と仰っていましたので、 Gmailのバウンスメールにおけるstateの値を纏めてみました。

2013/04/27 追記

2013年の春ごろから、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コマンド エラー理由 補足
6MAILsystemerror 恒久エラー:
メールサーバはTLSをサポートしていない
8AUTHsystemerror 恒久エラー:
メールサーバのSMTP認証が失敗した
9AUTHsystemerror 一時エラー:
TLSの証明書が読み込めなかった
12AUTHsystemerror 恒久エラー:
SMTP認証後のリレーをサポートしていない
13MAILrejected 恒久エラー:
エンベロープFromのメールアドレスが拒否された
14RCPTuserunknown
mailboxfull
恒久エラー:
宛先不明またはメールボックス一杯
15DATA以降filtered 恒久エラー:
SPF内容による拒否またはヘッダのToが存在しない(受信できない状態)
17DATA以降filtered 恒久エラー:
ヘッダ内容か本文内容による拒否またはヘッダのToが存在しない(受信できない状態)
18DATA以降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フィルタ)為にバウンスしたと いう可能性も在りますのでご注意下さい。

宛先不明の場合

Technical details of permanent failure:
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).

メールボックス一杯の場合

Technical details of permanent failure:
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のように複数のパターンがあるかもしれません。もしも 他のパターンを発見された場合は、その情報をお知らせ頂けると幸いです。