分123Webは日々進化を続け,目まぐるしく変化し,次々と新しい技術が生まれています。電子メールは昔からさほど変わっておらず,また,メールに取って代わるものも出てきていません。今後も電子メールは生き残って行くと思います。筆者はそんなメールに焦点を当ててバウンスメール(エラーメール)解析専用のシステムを開発し,2010年3月に国産オープンソースソフトウェアとして公開しました。本稿はバウンスメール解析システム“⁠BounceHammer⁠”(バウンスハンマー)を,その役割や特徴,導入方法,構成事例を中心に紹介します。バウンスメールとはバウンスメールとは,配信したメールや配信しようとしたメールが,何らかのエラーによって送信者に差し戻されたメールのことです。バウンスメールの他の表現としてエラーメール,リターンメール,不達メールなどと表記されることもありますが,本稿ではバウンスメールと表記します。Mail⁠”などで返ってきます。バウンスメールを放置すると...その配信する量の大小にかかわらず,バウンスメールは確実に処理すべきであると筆者は考えています。バウンスメール処理を行わず,配信できないアドレスを放置していると,次に挙げるような不都合が生じます。遅延の発生メールサーバ管理者は,管理下のメールサーバにスパムが送られている,あるいは攻撃されていると判断した場合,Tarpitting(注1)やGreylisting(注2⁠)⁠,そして接続の拒否という対応を採ります。多くの宛先不明アドレスに対していつまでも送信し続けると,このような対応を受けることになるでしょう。前述の対策は,いずれも送信元のサーバにとってはメール配信の遅延につながるもので,フリーのWebメールなどでも,宛先不明が多く含まれている場合は,接続がたびたび拒否されることがを確認されています。宛先サーバの管理方針次第では,公開ブラックリスト(DNSBL(注3⁠)⁠)に登録されることもあるでしょう。登録されると遅延の範囲は更に広がります。遅延が発生してしまうと,配送完了までの時間がかかり,サーバリソースを無駄遣いしてしまう結果を招きます(図1⁠)⁠。注1)SMTP応答の遅延です。注2)初回接続時に一時エラーを返し,再接続してきたらメールを受けとるしくみです。List携帯電話宛での遅延/受信ブロック日本国内の携帯電話宛メール配信では事情はもっと厳しくなります。送信するメールの宛先に宛先不明アドレス/ドメイン指定拒否になっているアドレスが一定の数/割合以上であると数分間,酷いときには1時間近くキャリアのメールサーバに接続できないという状況になってしまいます。これは受信ブロックと呼ばれていますが,その結果,大量の遅延が発生し,Webサイトにおけるメールの信頼性の低下,そしてユーザが離れ,売上が下るという事態にもなりかねません。有効なメールアドレスの把握ができない多くのメールを送信するWebサイトやメールマガジンでは,バウンス処理を適切に行い,配信ごとにメールアドレスの状態変化を把握するべきでしょう。なければ,どれほどのユーザにメールが配信できるのかが把握できない,メールサーバでの遅延発生頻度が高くなるといった問題が顕著になってきます。メール本文内に広告を入れている場合は,配信可能なアドレス数が把握できていないと,広告の効果測定に用いる数値自体が信用できなくなります。送信できるアドレスと宛先不明で返ってくるアドレスが混在していると,配信時間もかかって非効率的です。BounceHammerの特徴バウンスメールは確実に処理すべき前節ではバウンスメールを放置したことによるデメリットを述べました。筆者は配信するメール量の多少にかかわらずバウンス処理は確実に行うべきであると考えています。バウンス処理をすることによって,前述のデメリットはかなり解決(注4)できます。注4)遅延や受信ブロックは他にも要因があります。BounceHammerとは?BounceHammerはオープンソースのバウンスメール解析システムです。バウンスメールを解析し,発信者アドレス/宛先アドレス/エラー理由/宛先分類/バウンス時刻などを構造化されたデータとしてYAML形式で書き出し,データベースに蓄積します。ネットワークへの追加が容易バウンスメール処理専用システムなので,ネットワークへの追加はBounceHammerをインストールしたホストを設置してバウンスメールを渡すだけです。オープンソースのMTAに対応BounceHammerはSendmail,Postfix,qmail,Exim,Courier-MTAの生成するバウンスメールに対応しています。これらのMTAは非常に多く使われているので,よほど特殊なMTAでない限り解析可能といえるでしょう。エラー理由が正確にわかるBounceHammerは,一般的なバウンスメールに加えて,日本の携帯電話主要キャリアのバウンスメールに対応(注5)しています。BounceHammerでは,バウンスメールが返ってこない場合はエラーの理由を知ることはできませんが,携帯電話宛の宛先不明とドメイン指定拒否を区別して検出できます。表1では,検出できる10種類以上のエラーのうち,実際の運用で重要なものを挙げています。送信したメールのサイズがメールサーバの許容値を超えた何らかのバウンスメールが返ってきたら,そのメールアドレスを配信不能なアドレスとして扱うという単純なバウンス処理を行った場合,“⁠メールボックスがいっぱい⁠”や“⁠メールが大きすぎる⁠”のようなエラーで宛先アドレスに配信不能フラグを立ててしまうという誤った対処をしてしまう危険性があります。エラーになった理由ごとに適切な対処をすれば,メールアドレスの状態変化を管理しつつ,宛先不明アドレスの割合増加による遅延を回避ができます。検出できるエラーについての詳細は,http://bouncehammer.jp/features/engine/reasonをご覧ください。注5)スマートフォンや著名なWebメールにも対応しています。読みにくいバウンスメールを構造化するBounceHammerは解析したバウンスメールの内容をYAML形式で出力します。YAML形式の解析結果は1行1レコードで書き出しているので,コマンドラインからcatで眺めたり,wcで行数計測することによって手軽に解析済みデータの確認が可能です。広く使われているYAML形式でデータを書き出すので,他のアプリケーションからも容易にバウンスした記録の参照ができます。Webブラウザベースの管理画面BounceHammerは基本的にコマンドライン上ですべての操作を行います。人間の目で内容を確認するには,やや見にくい点もありますし,バウンスの状況を確認するのはサーバにログインしてコマンドラインで操作する人ばかりではありません。そこで図2のようなWebブラウザベースの管理画面(注6)を使えば,サーバにログインしない,あるいはコマンドラインに精通していない人でもバウンスメールの管理ができます。注6)システム上ではWebUIと称しています。HTTPベースのAPIBounceHammerはHTTPベースの簡易なAPIを持っていて,発信者アドレス(From)や宛先アドレス(To⁠)⁠,宛先ドメインやエラー理由などを文字列としてURLに入れてアクセスし,その結果をJSON(注7)形式で受け取れます。図3はcurlコマンドでAPIにアクセスしたときの実行結果です。APIを利用すると,Webサイトにバウンス記録の参照機能を短い開発期間で実装できます。↑実際は1レコード1行で表示される注7)HTTPベースのAPIは,JavaScriptでも処理できるようにYAMLではなくJSONで出力しています。azumakuniyuki)データセンターには行かないインフラエンジニアとプログラマでPerlとRubyを書く。2008年から株式会社Cubicrootに所属,2010年にbounceHammerを開発,2012年は大阪でのPerl入学式お手伝い,2014年にPerl版Sisimaiを,2016年にはRuby版Sisimaiを開発してOSSとして公開,現在も開発中。2018年は迷い猫を保護してお世話をした。一年のうち360日は京都にいる。趣味は外猫の観察と酒場と銭湯。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。