2010年3月にオープンソースソフトウェアとして公開して以来、多くのユーザ様・企業様にダウンロードし、 ご利用いただきましたbounceHammerは、2016年2月29日(月)を持ちまして製品ライフサイクルの終了(EOL: End Of Life) となりました。長きにわたりbounceHammerをご使用いただき誠に有り難う御座いました。 開発元では後継となるバウンスメール解析ライブラリとして、より高精度で高速なSisimai(シシマイ) を二条項BSDライセンスで公開しています。
2011/04/26
昨年、" 携帯電話宛バウンスの宛先不明とドメイン指定拒否を見分ける " という記事で、携帯電話に送ってエラーで返ってきたメールのうち宛先不明とドメイン指定拒否 (どちらもUnknown Userと書いているのに)をどのように見分けるか、という方法を紹介しましたが、 主にSendmail,Postfix,qmailなど著名なMTAが作ったバウンスメールのみで、 最も著名なWebメールの一つであるGmailについては言及していませんでした。
Kenichi MaehashiさんのBlogでの記事 " DoCoMo SMTP のバウンスから宛先不明とドメイン拒否を区別する (Gmail 編) - Kenichi Maehashi's Blog " で、``state の一覧があれば便利なのですが、見当たりませんでした。''と仰っていましたので、 Gmailのバウンスメールにおけるstateの値を纏めてみました。
2013年の春ごろから、Gmailが返すバウンスメールにstateの値とその前後の文章が記載されなくなりました。 この変化によって、国内の携帯電話宛メールで発生したバウンスは宛先不明とドメイン指定拒否の識別が出来なく なっています。
Gmailから返ってくるバウンスメールは他のMTAやメールサービスのそれとはまた違った フォーマットになっています。
バウンスの理由を機械的に判別するためには、バウンスメールの文章の最後の方にある stateの値を見て判断しなくてはなりません。
bounceHammerの開発過程で集めたサンプルでは、 stateの値は9種類まで見つける事が出来ましたが、もっと他にも あるかもしれません。ここでは発見した9種類のstateの値をそれぞれ解説します。
bounceHammerはGmailのバウンスメール解析にも対応済ですので、 bounceHammerのソースコードが手元にある方、既にインストール済の方は lib/Kanadzuchi/MTA/US/Google.pmを見てもらってもよいでしょう。
下記の表はそれぞれ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が存在しない(受信できない状態) |
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フィルタ)為にバウンスしたと いう可能性も在りますのでご注意下さい。
2011/04/26: 少し物足りない気がしたので追記しました。 Googleから返ってくるバウンスメールの文言で、stateの値毎に異なるメッセージを抜粋して 紹介します。
500 Remote server does not support TLS (state 6).
535 SMTP AUTH failed with the remote server. (state 8).
454 454 TLS missing certificate: error:0200100D:system library:fopen:Permission denied (#4.3.0) (state 9).
500 Remote server does not support SMTP Authenticated Relay (state 12).
550 550 5.7.1 <****@gmail.com>... Access denied (state 13).
550 550 5.1.1 <******@*********.**>... User Unknown (state 14).
550 550 5.2.2 <*****@****.**>... Mailbox Full (state 14).
550 550 5.7.1 SPF unauthorized mail is prohibited. (state 15).
554 554 Error: no valid recipients (state 15).
550 550 <****@***.**> No such user here (state 17).
550 550 #5.1.0 Address rejected ***@***.*** (state 17).
550 550 Unknown user *****@***.**.*** (state 18).
この記事ではGmailから返ってくるバウンスメール末尾のstateの値をそれぞれ紹介しました。 bounceHammerは、ここで言及した9種類のエラーコード と直前の文章を解析して、適切なエラー理由を検出・決定します。
しかし、他のstateの値(1,2,3,4,5,7,10,11,16,19以上)は存在するのかどうかも分かりませんし、 ここで取り上げたstateの値でも、14のように複数のパターンがあるかもしれません。もしも 他のパターンを発見された場合は、その情報をお知らせ頂けると幸いです。
BOUNCEHAMMER.JP |
Copyright 2009-2016 Cubicroot Co. Ltd.
(Kyoto, Japan) All Rights Reserved.
Powered by Linode - Xen VPS Hosting.
Blue Retro Rusted Grunge Icons by Icons Etc.