2016/03/08

メールが戻ってくる理由のたとえ話

もはやライフワークみたいになっているわけですが、二月にバウンスメールを解析して構造化するライブラリ"Sisimai"(シシマイ)Ruby版(Gemも)をリリースしました。bounceHammerの後継者として開発したPerl版シシマイの妹分みたいな存在です。

Ruby版はいろんなPaaSでも動かしたいという要望と、僕がRubyにも慣れておきたいという願望のもと開発をしました。Ruby版を作ったのでPerl版は捨てるということはなく、現在も新機能や精度の向上に関する実装は、Perl版で実装してからRuby版に移植する形で開発をしています。

さて、今日の記事はバウンスメールが戻ってきた理由のたとえ話です。送信したメールが戻ってくる理由は「宛先不明」「メールボックスが一杯」「スパム判定を食らった」あたりが殆どですが、僕が把握している且つある程度の量のサンプルが確認出来ているバウンス理由を入れると、現時点で27種類(3/16にリリースするSisimai v4.17.0で27個目を実装)ほどあります。

バウンス理由を明確にする理由は、同じ宛先に対して再送しても大丈夫かどうかを判断する一因として重要であるからです。アドレスに起因する理由、ネットワークに起因する理由、宛先側のバックエンドに起因する理由など様々ですが、身近な例で例えると分かり易いんちゃうかと思いまして。

以下では、シシマイが検出可能な27種類のバウンス理由をとある一軒家あての郵便配達に例えてみます、あくまでたとえ話です。

メールアドレスが原因で戻ってくる場合

Host Unknown | 番地がない

@の右側、ドメインパートが存在しないエラーですが、郵便配達に行ったら宛先住所に書いてある番地が無かったので郵便物が戻ってきた状態です。あるいは存在しない地名(京都市鴨川区)もそうです。日本郵政なら多少番地が間違っていても届けてくれるのですが、SMTPはエラー補正をすることもなく、冷たく差し戻してきます。何度も送ると郵便局から目をつけられるので差出人は二度とこの住所へは送らない方が賢明です。

User Unknown | 宛名の人物はそこに住んでいない

@の左側、ローカルパートが存在しないエラーです。郵便配達に行ったら「うちにはこんな人住んでませんけど」で返された状態です。日本郵政なら宛名の漢字が間違っていても、宛先が犬宛・猫宛であっても届けてくれます(経験談)が、SMTPはそこまでしてくれません。

何度も送るとその家の住人や郵便局に目をつけられるので、差出人はこの宛先へは二度と送らないほうが賢明です。

Filtered | 郵便的居留守

今でもユーザはいますが、一昔前のガラケーにおけるドメイン指定拒否の類いです。郵便配達に行ったら差出人の住所や名前をチラッと見て「この宛先の名前ですけど、うちにはこんな人住んでませんわ」で返された状態です。

もちろん受けとりたい相手からの手紙であれば「あ、こっちの郵便はもろときます」で受けとります。この場合も二度と送らないほうが賢明です。

Has Moved | 引っ越してました

郵便配達に行ったら「あーこの前までは住んでたんやけど、どこぞに引越していきましたわ」で郵便物が返ってきた状態です。息子や娘が実家を出て別のところに引越した感じですね。

このバウンス理由のポイントは届けた先の住人が「ほなうちの方で届けときましょか」とは言わない点です。引越先の住所を教えてもらえた場合は次からそっちへ送るようにしたほうが良いです。

Rejected | 差出人レベルで受け取り拒否

郵便配達に行ったら「あーこの人ねぇ、いっつもしょーもない手紙ばっかり寄越してきはるし、うちはよう受けとりませんわ」で突っ返された状態です。何回送っても同じように差出人の名前を見て突っ返されるので、もう送らないほうが良いです。

Mailbox Full | 郵便受けが一杯になってる

誰も郵便物を確認していないのか、郵便受けが一杯になっててハガキ一枚すら入らない状態です。

何週間も留守にしてて郵便受けに大量の新聞が突っ込まれて溢れている感じですね。この場合は時間をおいてから再送すればOKです。

Suspend | 料金未納とか

いつも切手を貼らずに郵便物を投函する家の人宛なので郵便局から差し戻されたケースです。差出人としてはどうにもならない問題なのでしばらく待ってから送るしかありません

Vacation | 旅行に行ってます

郵便物を配達しに行ったら「今ちょうど旅行中でして、郵便物は受けとりますけど、4/29まで帰ってきませんってお返事だけ渡しといてもらえます?」という感じです。厳密には郵便物が突っ返されたわけではないのですが、宛先の人がしばらく手紙の内容を確認出来ないという状態です。

メールの内容が原因で戻ってくる場合

Content Error | 超達筆な草書体で書かれた宛名

古文書を読める人でないと判別出来ないような凄まじい達筆の草書体で書かれた宛名は郵便局で「いや、これは読めないので無理です」と配達拒否されます。

ちゃんと現代の人が読める書体で宛名を書き直して郵便局に持っていきましょう。

Exceed Limit | スルメが大き過ぎる

例えばスルメに切手を貼って投函すると定形外郵便として届けてくれるのですが、スルメが大き過ぎて届け先の郵便受けに入らなかったため、戻ってきた状態です。そもそも手渡しをしようにも玄関の幅よりも広いスルメなので無理なもんは無理です。何度送り直しても郵便受けに入らないので、小さいスルメを買い直して送るのが良いです。

Feedback | 苦情が来た

配達先の人が「もうダイレクトメール送らんといて」と最寄りの郵便局経由で苦情を寄越したケースです。苦情が来たので次からは送らないようにしないとあきませんし、苦情を無視してたら最寄りの郵便局が他の郵便物も配達してくれなくなります。

Mesg Too Big | スルメが大き過ぎる

定形外郵便物でスルメを送ったけど、大きなイカを使っているので郵便受けにスルメが入らなかったケースです。

和歌山県の漁協で売っているスルメであれば問題なく郵便受けに入ると思いますので、小さいするめを買い直すのが良いです。これは前述のExceed Limitと同じですが、D.S.N.の値が異なるので別のバウンス理由としています。

Security Error | 郵便物に大腸菌が付いてる

配達した先で家の人が手紙をつまみ、光で透かしてみたところ「なんや大腸菌が中の手紙に付いてますし、よう受けとりませんわ」と突っ返してきた感じです。勿論、カビが生えてても突っ返されます。キレイな紙で書き直してから送るのが良いです。

Spam Detected | ロレックスは大丸で買う

配達した先で家の人が手紙をつまみ、光で透かしてみたところ「ロレックスは大丸で買いますさかい、こないな広告はよう受けとりませんわ」で突っ返された状態です。

同じ内容の手紙は何度送っても突っ返されますし、しつこいと他の郵便物も受けとってもらえなくなったり、配達してもらえなくなります。

送信側または宛先側MTAが原因で戻ってくる場合

Blocked | 配達で来た郵便屋が気に入らない

郵便物を配達しに行ったところ「あんた、いっつも愛想悪いし人相も悪いし手紙の扱いが雑で、ほれ、この手紙見てみ、端っこの方がクシャっとなっとるやろ? 配達するの、誰か別の人に変わってもろて」で突っ返されたケースです。日頃の行いが悪いとこうなりますので、別の配達員がその家を担当するしかなさそうです。

Expired | 犬が居て配達出来なかった

おとなしい柴犬が居るだけなのですが、玄関横にある郵便受けに辿り着くには手前の犬をなんとかする必要があります。犬に噛まれないようギリギリを通って郵便受けに手紙を入れようと努力したのですが、無理でしたってことで手紙が戻ってきた状態です。

犬が好きな配達員に交代するか、犬よりも手前に郵便受けを設置してもらうか、ですね。

Mailer Error | 郵便受けが爆発した

郵便受けの裏側から家に向かってベルトコンベア的な装置がついていて、郵便受けに入れた手紙はそれに流されて家の中に自動で運ばれていきます。ところが、郵便物を入れた途端、郵便受けが爆発して、さっき入れた手紙が吹き飛ばされる形で戻ってきた状態です。何回入れても爆発するので、差出人に郵便物を返すしかありません。郵便受けの修理が終ってから配達するのがよいです。

Network Error | 途中の橋が落ちてる

配達先に通じる唯一の橋が、この前の洪水で落ちたままになっていて配達が出来なかった状態です。流石にいつまでも橋が落ちたままではないので、しばらく経って橋が直ってから配達すると良いです。

No Relaying | 自分で届けなアカンで

配達した先の家に「この他の郵便物、住所は違いますけど同じ苗字ですし近所みたいですし、かわりに届けてくださいよ」「そないなもん、自分で届けなアカン、あんたの仕事やろ、横着せんとき」で突っ返された例です。そもそも渡そうとした郵便物がその家宛では無かったわけです。

Not Accept | 家が立て替え工事中

家が立て替え工事中で、新しい家が完成するまでは郵便物を受けとらない(郵便受けが無い)状態です。配達に行っても大工さんしか居ないので手渡しする事も出来ず、とりあえず郵便物を持って帰るしかありません。しばらく経って家が完成してから配達すると良いです。

System Error | 奥の方で何かが爆発した

郵便物を郵便受けに入れると、後ろからベルトコンベアに乗って郵便物が家の中に流れていくのですが、入れた手紙が原因で家の奥で何かが爆発し、轟音と共にさっき入れた郵便物が吹き飛ばされる形で戻ってきた例です。何度入れても郵便物が吹き飛んで来るので、持って帰って差出人に返すしかありません。しばらく待ってから送り直すと良いですね。

System Full | ゴミ屋敷

郵便受けが玄関横の壁に埋め込まれているタイプの家なのですが、家がゴミ屋敷すぎて、郵便受けからもゴミがはみ出している有り様故、郵便物を入れる事が出来ませんでした。ごみ捨てが終ってからもう一度配達すると良いでしょう。

Too Many Conn | 郵便配達の人が列を作ってる

どういうわけか、配達に行った先の家には人気ラーメン店のごとく多くの郵便屋さんが列を作っていました。30人ぐらいは並んでいて、なかなか順番が回ってこないと思ってたら「今ちょっとたくさん並んではるし、また後で持ってきて」と家の人から言われて帰ってきた状態です。しばらく待てば行列も解消されているので、言われた通り後で再配達するのが良いです。

その他の理由で戻ってくる場合

Delivered | 配達出来た!

書留郵便を持っていった先で受領のサインを貰った配達証明が差出人のところに届いた状態です。書留でもないタダのハガキを持っていっても「ちょっと受けとりましたの受領証用意してるし、渡しといて」って言われるケースもあります。

Syntax Error | 配達完了の舞

郵便配達員は郵便物を配達した先で「配達完了の舞」を舞うので住人は笛を鳴らしながら鼓を打ちながら「ィヨー」とか「ホォ」とか掛け声を入れなければなりません。そして、舞がキレイに終ったところで郵便物が渡されます。「いや、そんな舞とか要らんし、うちには鼓も笛も無いし、はよ郵便物渡してや」と配達完了の舞に参加出来ない場合は郵便物は配達されず、差出人に戻されます。

On Hold | よくわらない理由で突っ返された

ここまで列挙したバウンス理由は想定の範囲内ですが、よくわからない理由で郵便物を受けとってもらえない事もあります。配達に行ったら奥の方から「人が風呂入ってるときに郵便配達こんといて!」とか「ちょっとお腹痛くてトイレ入ってるし、また今度持ってきて」とか「うちの猫ちゃんの機嫌悪いし帰って!」とかです。

Sisimaiのコード内部では何らかのエラーメッセージが書いているけど、シシマイが把握していないパターンのエラーメッセージであったので、明確なバウンス理由を決定出来なかったものになります。

Undefined | 無言で突っ返された

配達先の郵便受けに手紙を入れても入れても郵便物が吹き飛ばされて戻ってくる、手渡しをしようとしたら住人が無言で受けとり拒否を示すしぐさと共に家に入っていく、とにかく何故か分からんけど配達が出来なかった状態です。

Sisimai内部のコードではエラーメッセージが無い、エラーメッセージがうまく取り出せなかった場合にシシマイはバウンス理由を"undefined"とします。

あくまで例え話です。他にもっと良いたとえ話があれば教えてください。

0 件のコメント:

コメントを投稿