SlideShare a Scribd company logo
BounceHammer
                 オープンソースのバウンスメール解析システム

                 BounceHammer
                                 株式会社キュービックルート
                                    azumakuniyuki




               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   自己紹介
                                                 東
                                                 邦
                                                 之

                  * なまえ = azumakuniyuki
                  * しごと = サーバ管理者 > 10年
                  * しごと = プログラマー < 2年
                  * おうち = 京都市



               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   BounceHammer?
                  * ばうんすはんまーと読む
                  * バウンスメール解析専用
                  * 配信システムではない
                  * 基本的にコマンドラインツール
                  * もちろんPerl製
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   バウンスメール?
                  * エラーで返ってきたメール

                  * 中身はだいたい英語

                  * リターンメール・不達メール


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   From:
                  * Mailer-Daemon

                  * Mail Delivery Subsystem

                  * Postmaster@...


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   Subject:
                  * Returned mail: see transcript ...

                  * failure notice

                  * Undelivered Mail Returned to ...


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    Bounc
     eHam        できること
     merが

                  * エラーメールを解析する
                  * エラー理由特定(宛先不明/拒否/...)
                  * 宛先分類(携帯/Webメール/PC/...)
                  * 解析したらデータベースに蓄積
                  * 解析済みデータはYAMLで出力
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   エラー理由
                  * 宛先不明
                  * ドメイン指定拒否
                  * メールボックスいっぱい
                  * メールが大きすぎる
                  * セキュリティ的なエラー

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   役立つ場面
                  * 一般的なMTAで配信している

                  * でもバウンス処理はしていない

                  * そこそこ沢山配信している

                  * でもバウンス処理はしていない

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   役立つ人々
                  * コンテンツプロバイダ

                  * メールマガジンスタンド

                  * メール配信しているところ全部

                  * まだバウンス処理をしていない人

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   放置すると...
                  * 携帯宛はブロックされる → 困る

                  * 有効配信数がわからない → 困る

                  * 遅延がひどくて送れない → 困る

                  * 遅延で配信時間がかかる → 困る

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   放置すると...


                とにかく困る

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   バウンス処理は
                  * 確実にやるべき

                  * 配信数が少なくてもやるべき

                  * メール1通でも送るならやるべき


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    B ounc
     eHam        処理すると...
     merで

                  * バウンスの理由が正確にわかる
                  * バウンス記録を構造化して保存
                  * ウェブ管理画面でアドレス管理
                  * メール配信の合理化と健全化に
                  * 自前でバウンス処理実装不必要
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    Bounc
     eHam        処理すると...
     merで




                とにかく良い

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    B ounc
     eHam        インストール
     merの

                  * Perlモジュールを入れる
                  * ./configure && make
                  * make install
                  * データベースの準備
                  * 設定ファイルの編集
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   解析済みデータの利用
                  * 解析済みデータはYAML ¦¦ JSON
                  * CSVでも出力(表計算ソフトで利用)
                  * MTAでバウンス照合→削除
                  * 配信プログラムでバウンス照合
                  * ウェブサイトでバウンス照合
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    B ounc
     eHam        動かしてみる
     merを

                  * 解析はmbox ¦¦ Maildir/を引数に

                  * STDINからも読む(/etc/aliases)

                  * /etc/crontabで定時処理させる

                  * 必要に応じて解析済みデータ取得

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   解析コマンド
                   * mailboxparserというコマンド
               # mailboxparser /var/mail/root

               % mailboxparser ~/Maildir/cur ~/Maildir/new

               % cat /var/mail/azuma | mailboxparser

               - { "bounced": 1221728044, "addresser":
               "user1@example.jp", "recipient": "domain-does-
               not-exist@example.gov", "senderdomain":
               "example.jp", "destination": "example.gov",
               "reason": "hostunknown", ... }
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   解析速度
                   * Linode(Xeon L5520x4 2.27GHz)

                   * mbox = 約500通/秒

                   * Maildir/ = 約200通/秒




               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   出力コマンド
                   * datadumperというコマンド
                   * YAML,JSON,CSVで出力する
                   * いろいろ条件指定ができます
               % datadumper --howrecent 1y 1年以内の記録

               % datadumper --reason 'userunknown' 宛先不明だけ

               % datadumper --hostgroup 'cellphone' 携帯だけ

               % datadumper --format csv --destination gmail.com

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   MTAと協調させる
                  * 配信プログラムはいじりたくない

                  * でもバウンスした宛先に送るの嫌

                  * バウンスした宛先はMTAが削除 !


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
      Send        /etc/mail/access
       mail
                   * DISCARDで宛先不明は破棄する
               # cd /etc/mail

               # datadumper --format csv --reason userunknown 

               > | cut -d, -f3 | grep '@' 

               > | sed 's/^/To:/g;s/$/ DISCARD/g' > ./access

               # makemap hash access.db < access




               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   配信プログラムで照合
                  * 配信プログラムで宛先照合をする

                  * YAMLで出力した宛先一覧を読む

                  * 一致した宛先は送信対象から外す

                  * YAMLが読めるなら言語を問わず

               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   YAMLファイルで照合
               # datadumper > /tmp/bounce.yaml

               #/usr/bin/perl
               use JSON::Syck;
               my @A = 配信対象のメールアドレス配列;
               my @B = JSON::Syck::LoadFile("/tmp/bounce.yaml");
               foreach my $e ( @A ){
                     unless( grep { $e eq $_->{recipient} } @B ){
                           バウンス記録に一致しないので配信する;
                     }
               }
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   ウェブサイトに組み込む
                  * HTTPベースのAPIを使う
                  * ユーザ毎のページに状態を表示
                  * 「登録されているアドレスは...」
                  * メールを受け取れるアドレスに
                  * JSONが読めるなら言語を問わず
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   HTTP-APIで照合
               #/usr/bin/perl
               use JSON::Syck;
               use LWP::UserAgent;
               my $A = 'ユーザのメールアドレス';
               my $H = 'http://127.0.0.1/b.cgi/search/recipient/';
               my $U = new LWP::UserAgent();
               my $R = $U->request( HTTP::Request->new(
                                                 GET => $H.$A ));
               my $J = JSON::Syck::Load( $R->content() ) || [];
               foreach my $e ( @$J ){ 内容を取得; }


               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer
    Bounc
     eHam         今後
     merの

                  * 次の2.6.0でエラーの理由 += 4;
                  * なるべく国産モジュール使いたい
                  * ORMは国産化完了(DBIC→Skinny)
                  * CGI::Application::.+ → ?
                  * APIで書き込み可能にする
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   続きはWebで


                     http://bouncehammer.jp/




               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
BounceHammer   続きは雑誌で
                 http://gihyo.jp/magazine/SD

                                              Software Design 2010年11月号
                                              創刊20周年記念号に載ります!

                                              10月18日発売!
                                              次の月曜日です!
               YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.

More Related Content

Viewers also liked

The Power of Integrated Care: Implementing Health Homes in Medicaid
The Power of Integrated Care: Implementing Health Homes in MedicaidThe Power of Integrated Care: Implementing Health Homes in Medicaid
The Power of Integrated Care: Implementing Health Homes in Medicaid
NASHP HealthPolicy
 
Reading and writing
Reading and writingReading and writing
Reading and writing
Christina McKay
 
Maximizing the business value from social computing
Maximizing the business value from social computingMaximizing the business value from social computing
Maximizing the business value from social computing
SocialKwan
 
Reunion inicial de padres
Reunion inicial de padresReunion inicial de padres
Reunion inicial de padres
La profe
 
Phuong phap luyen tri nao omizumi kagayaki
Phuong phap luyen tri nao omizumi kagayakiPhuong phap luyen tri nao omizumi kagayaki
Phuong phap luyen tri nao omizumi kagayaki
Trần Hà Vĩ
 
Hyper
HyperHyper
Marley
MarleyMarley
“Health Homes” and Behavioral Health/General Medical Care Integration
“Health Homes” and Behavioral Health/General Medical Care Integration“Health Homes” and Behavioral Health/General Medical Care Integration
“Health Homes” and Behavioral Health/General Medical Care Integration
NASHP HealthPolicy
 
Signals & systems
Signals & systemsSignals & systems
Signals & systems
swathichv
 
Flash americanbloger
Flash americanblogerFlash americanbloger
Flash americanbloger
Luis Barreiro
 
δρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωδρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωteo70
 
Sourcing - 101
Sourcing - 101Sourcing - 101
Sourcing - 101
John Schmocker
 
Advancing Health Equity through State Implementation of Health Reform
Advancing Health Equity through State Implementation of Health ReformAdvancing Health Equity through State Implementation of Health Reform
Advancing Health Equity through State Implementation of Health Reform
NASHP HealthPolicy
 
William shakespeare
William shakespeareWilliam shakespeare
William shakespeare
Amilleya
 
Your first year in mba
Your first year in mbaYour first year in mba
Your first year in mba
Shravan Shetty
 
Daring and doing is the new black
Daring and doing is the new blackDaring and doing is the new black
Daring and doing is the new black
Anna Oscarsson
 
Codigo Tributario Boliviano AIT
Codigo Tributario Boliviano AITCodigo Tributario Boliviano AIT
Codigo Tributario Boliviano AIT
Gustavo Mariaca
 
Evaluation Question 6
Evaluation Question 6Evaluation Question 6
Evaluation Question 6
Zac
 
Algoritmiek
AlgoritmiekAlgoritmiek
Algoritmiekbonejp
 
Samenvatting wegcode
Samenvatting wegcodeSamenvatting wegcode
Samenvatting wegcode
Stef
 

Viewers also liked (20)

The Power of Integrated Care: Implementing Health Homes in Medicaid
The Power of Integrated Care: Implementing Health Homes in MedicaidThe Power of Integrated Care: Implementing Health Homes in Medicaid
The Power of Integrated Care: Implementing Health Homes in Medicaid
 
Reading and writing
Reading and writingReading and writing
Reading and writing
 
Maximizing the business value from social computing
Maximizing the business value from social computingMaximizing the business value from social computing
Maximizing the business value from social computing
 
Reunion inicial de padres
Reunion inicial de padresReunion inicial de padres
Reunion inicial de padres
 
Phuong phap luyen tri nao omizumi kagayaki
Phuong phap luyen tri nao omizumi kagayakiPhuong phap luyen tri nao omizumi kagayaki
Phuong phap luyen tri nao omizumi kagayaki
 
Hyper
HyperHyper
Hyper
 
Marley
MarleyMarley
Marley
 
“Health Homes” and Behavioral Health/General Medical Care Integration
“Health Homes” and Behavioral Health/General Medical Care Integration“Health Homes” and Behavioral Health/General Medical Care Integration
“Health Homes” and Behavioral Health/General Medical Care Integration
 
Signals & systems
Signals & systemsSignals & systems
Signals & systems
 
Flash americanbloger
Flash americanblogerFlash americanbloger
Flash americanbloger
 
δρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωδρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνω
 
Sourcing - 101
Sourcing - 101Sourcing - 101
Sourcing - 101
 
Advancing Health Equity through State Implementation of Health Reform
Advancing Health Equity through State Implementation of Health ReformAdvancing Health Equity through State Implementation of Health Reform
Advancing Health Equity through State Implementation of Health Reform
 
William shakespeare
William shakespeareWilliam shakespeare
William shakespeare
 
Your first year in mba
Your first year in mbaYour first year in mba
Your first year in mba
 
Daring and doing is the new black
Daring and doing is the new blackDaring and doing is the new black
Daring and doing is the new black
 
Codigo Tributario Boliviano AIT
Codigo Tributario Boliviano AITCodigo Tributario Boliviano AIT
Codigo Tributario Boliviano AIT
 
Evaluation Question 6
Evaluation Question 6Evaluation Question 6
Evaluation Question 6
 
Algoritmiek
AlgoritmiekAlgoritmiek
Algoritmiek
 
Samenvatting wegcode
Samenvatting wegcodeSamenvatting wegcode
Samenvatting wegcode
 

Similar to バウンスメール解析システム BounceHammer

Perl and eMail at Kansai.pm #13 Meeting in Kyoto
Perl and eMail at Kansai.pm #13 Meeting in KyotoPerl and eMail at Kansai.pm #13 Meeting in Kyoto
Perl and eMail at Kansai.pm #13 Meeting in Kyoto
azumakuniyuki 🐈
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
 
実際に流れているデータを見てみよう
実際に流れているデータを見てみよう実際に流れているデータを見てみよう
実際に流れているデータを見てみよう
彰 村地
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Hironao Sekine
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Next
dynamis
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
mganeko
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)Toru Furukawa
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returns
dynamis
 
BotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングBotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミング
Takashi Yamanoue
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
mganeko
 
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
Takashi Yamanoue
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタRancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Takashi Kanai
 
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo2014 dart flight school in Tokyo
2014 dart flight school in Tokyo
nothingcosmos
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
Junya Yamaguchi
 

Similar to バウンスメール解析システム BounceHammer (19)

Perl and eMail at Kansai.pm #13 Meeting in Kyoto
Perl and eMail at Kansai.pm #13 Meeting in KyotoPerl and eMail at Kansai.pm #13 Meeting in Kyoto
Perl and eMail at Kansai.pm #13 Meeting in Kyoto
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
実際に流れているデータを見てみよう
実際に流れているデータを見てみよう実際に流れているデータを見てみよう
実際に流れているデータを見てみよう
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Next
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returns
 
BotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングBotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミング
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
Boost sg msgpack
Boost sg msgpackBoost sg msgpack
Boost sg msgpack
 
Monit
MonitMonit
Monit
 
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Xampp4wp0211
Xampp4wp0211Xampp4wp0211
Xampp4wp0211
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタRancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタ
 
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo2014 dart flight school in Tokyo
2014 dart flight school in Tokyo
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 

More from azumakuniyuki 🐈

YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
azumakuniyuki 🐈
 
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
azumakuniyuki 🐈
 
Email is Slack
Email is SlackEmail is Slack
Email is Slack
azumakuniyuki 🐈
 
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
azumakuniyuki 🐈
 
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
azumakuniyuki 🐈
 
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 OsakaHokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
azumakuniyuki 🐈
 
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAメールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
 
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
azumakuniyuki 🐈
 
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
azumakuniyuki 🐈
 
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
azumakuniyuki 🐈
 
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中azumakuniyuki 🐈
 
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
azumakuniyuki 🐈
 
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1 Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
azumakuniyuki 🐈
 
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013azumakuniyuki 🐈
 
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
azumakuniyuki 🐈
 
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
azumakuniyuki 🐈
 
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
azumakuniyuki 🐈
 
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」azumakuniyuki 🐈
 

More from azumakuniyuki 🐈 (20)

YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
 
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
 
Email is Slack
Email is SlackEmail is Slack
Email is Slack
 
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
 
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
 
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 OsakaHokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
 
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAメールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
 
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
 
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
 
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
 
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
 
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
 
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1 Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
 
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
 
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
 
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
 
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
 
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
 
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
 
Namba.pm #0 LT資料
Namba.pm #0 LT資料Namba.pm #0 LT資料
Namba.pm #0 LT資料
 

Recently uploaded

一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
OSgeo Japan
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
Osaka University
 
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Hirotaka Kawata
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Takuya Minagawa
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
Hideo Kashioka
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
Seiya Shimabukuro
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
ssuserfcafd1
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
 

Recently uploaded (14)

一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
一般社団法人OSGeo日本支部団体紹介用スライド2024年版。OSGeo日本支部とFOSS4Gの紹介
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
 
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
 

バウンスメール解析システム BounceHammer

  • 1. BounceHammer オープンソースのバウンスメール解析システム BounceHammer 株式会社キュービックルート azumakuniyuki YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 2. BounceHammer 自己紹介 東 邦 之 * なまえ = azumakuniyuki * しごと = サーバ管理者 > 10年 * しごと = プログラマー < 2年 * おうち = 京都市 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 3. BounceHammer BounceHammer? * ばうんすはんまーと読む * バウンスメール解析専用 * 配信システムではない * 基本的にコマンドラインツール * もちろんPerl製 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 4. BounceHammer バウンスメール? * エラーで返ってきたメール * 中身はだいたい英語 * リターンメール・不達メール YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 5. BounceHammer From: * Mailer-Daemon * Mail Delivery Subsystem * Postmaster@... YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 6. BounceHammer Subject: * Returned mail: see transcript ... * failure notice * Undelivered Mail Returned to ... YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 7. BounceHammer Bounc eHam できること merが * エラーメールを解析する * エラー理由特定(宛先不明/拒否/...) * 宛先分類(携帯/Webメール/PC/...) * 解析したらデータベースに蓄積 * 解析済みデータはYAMLで出力 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 8. BounceHammer エラー理由 * 宛先不明 * ドメイン指定拒否 * メールボックスいっぱい * メールが大きすぎる * セキュリティ的なエラー YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 9. BounceHammer 役立つ場面 * 一般的なMTAで配信している * でもバウンス処理はしていない * そこそこ沢山配信している * でもバウンス処理はしていない YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 10. BounceHammer 役立つ人々 * コンテンツプロバイダ * メールマガジンスタンド * メール配信しているところ全部 * まだバウンス処理をしていない人 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 11. BounceHammer 放置すると... * 携帯宛はブロックされる → 困る * 有効配信数がわからない → 困る * 遅延がひどくて送れない → 困る * 遅延で配信時間がかかる → 困る YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 12. BounceHammer 放置すると... とにかく困る YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 13. BounceHammer バウンス処理は * 確実にやるべき * 配信数が少なくてもやるべき * メール1通でも送るならやるべき YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 14. BounceHammer B ounc eHam 処理すると... merで * バウンスの理由が正確にわかる * バウンス記録を構造化して保存 * ウェブ管理画面でアドレス管理 * メール配信の合理化と健全化に * 自前でバウンス処理実装不必要 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 15. BounceHammer Bounc eHam 処理すると... merで とにかく良い YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 16. BounceHammer B ounc eHam インストール merの * Perlモジュールを入れる * ./configure && make * make install * データベースの準備 * 設定ファイルの編集 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 17. BounceHammer 解析済みデータの利用 * 解析済みデータはYAML ¦¦ JSON * CSVでも出力(表計算ソフトで利用) * MTAでバウンス照合→削除 * 配信プログラムでバウンス照合 * ウェブサイトでバウンス照合 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 18. BounceHammer B ounc eHam 動かしてみる merを * 解析はmbox ¦¦ Maildir/を引数に * STDINからも読む(/etc/aliases) * /etc/crontabで定時処理させる * 必要に応じて解析済みデータ取得 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 19. BounceHammer 解析コマンド * mailboxparserというコマンド # mailboxparser /var/mail/root % mailboxparser ~/Maildir/cur ~/Maildir/new % cat /var/mail/azuma | mailboxparser - { "bounced": 1221728044, "addresser": "user1@example.jp", "recipient": "domain-does- not-exist@example.gov", "senderdomain": "example.jp", "destination": "example.gov", "reason": "hostunknown", ... } YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 20. BounceHammer 解析速度 * Linode(Xeon L5520x4 2.27GHz) * mbox = 約500通/秒 * Maildir/ = 約200通/秒 YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 21. BounceHammer 出力コマンド * datadumperというコマンド * YAML,JSON,CSVで出力する * いろいろ条件指定ができます % datadumper --howrecent 1y 1年以内の記録 % datadumper --reason 'userunknown' 宛先不明だけ % datadumper --hostgroup 'cellphone' 携帯だけ % datadumper --format csv --destination gmail.com YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 22. BounceHammer MTAと協調させる * 配信プログラムはいじりたくない * でもバウンスした宛先に送るの嫌 * バウンスした宛先はMTAが削除 ! YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 23. BounceHammer Send /etc/mail/access mail * DISCARDで宛先不明は破棄する # cd /etc/mail # datadumper --format csv --reason userunknown > | cut -d, -f3 | grep '@' > | sed 's/^/To:/g;s/$/ DISCARD/g' > ./access # makemap hash access.db < access YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 24. BounceHammer 配信プログラムで照合 * 配信プログラムで宛先照合をする * YAMLで出力した宛先一覧を読む * 一致した宛先は送信対象から外す * YAMLが読めるなら言語を問わず YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 25. BounceHammer YAMLファイルで照合 # datadumper > /tmp/bounce.yaml #/usr/bin/perl use JSON::Syck; my @A = 配信対象のメールアドレス配列; my @B = JSON::Syck::LoadFile("/tmp/bounce.yaml"); foreach my $e ( @A ){ unless( grep { $e eq $_->{recipient} } @B ){ バウンス記録に一致しないので配信する; } } YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 26. BounceHammer ウェブサイトに組み込む * HTTPベースのAPIを使う * ユーザ毎のページに状態を表示 * 「登録されているアドレスは...」 * メールを受け取れるアドレスに * JSONが読めるなら言語を問わず YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 27. BounceHammer HTTP-APIで照合 #/usr/bin/perl use JSON::Syck; use LWP::UserAgent; my $A = 'ユーザのメールアドレス'; my $H = 'http://127.0.0.1/b.cgi/search/recipient/'; my $U = new LWP::UserAgent(); my $R = $U->request( HTTP::Request->new( GET => $H.$A )); my $J = JSON::Syck::Load( $R->content() ) || []; foreach my $e ( @$J ){ 内容を取得; } YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 28. BounceHammer Bounc eHam 今後 merの * 次の2.6.0でエラーの理由 += 4; * なるべく国産モジュール使いたい * ORMは国産化完了(DBIC→Skinny) * CGI::Application::.+ → ? * APIで書き込み可能にする YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 29. BounceHammer 続きはWebで http://bouncehammer.jp/ YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.
  • 30. BounceHammer 続きは雑誌で http://gihyo.jp/magazine/SD Software Design 2010年11月号 創刊20周年記念号に載ります! 10月18日発売! 次の月曜日です! YAPC::Asia Tokyo 2010 / バウンスメール解析システム BounceHammer / Developed by Cubicroot Co. Ltd.