SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
バウンスメールを自動解析するシステム
bounceHammerというのを作りました
Perl and eMail
azumakuniyuki
株式会社キュービックルート
Kansai.pm#13
in Kyoto, 2010/11/20(Sat)
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
自己紹介
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer ✏ なまえ = azumakuniyuki
✏ しごと = サーバ管理者 > 10 年
✏ しごと = プログラマー < 2⅛ 年
✏ おうち = 上京区
✏ ねっと = @azumakuniyuki
✏ はてな = id:azumakuniyuki
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
E PowerBookG4
E iPhone3G
E NOKIA NM705i
ふつうのぼうし
わりときたないふく
スニーカー
E ふゆようのスーツ
E かわのくつ
そうび
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
/usr/bin/perl -w
/bin/sh
/bin/tcsh
OpenBSD
Ubuntu
MacVim
/usr/bin/vi
/usr/lib/sendmail
LaTeX2e
どうぐ
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
本題
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
YAPC::Asia Tokyo 2010
で発表した内容の改訂版です
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
バウンスメールを処理、解析、
蓄積、出力する専用システムを
作りました
Perlで
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
bounceHammer
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
bounceHammer?
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ ばうんすはんまーと読む
✏ バウンスメール解析専用
✏ 配信システムではない
✏ 基本的にコマンドラインツール
✏ Webの管理画面もあります
bouncehammer?
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
bounceMail?
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ エラーで返ってきたメール
✏ 中身はだいたい英語
✏ 日本語のものもある
✏ リターンメール
✏ 不達メール
bounce mail?
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
From:
✏ Mailer-Daemon
✏ Mail Delivery Subsystem
✏ Mail Delivery System
✏ Postmaster@...
✏ だいたい↑のどれか
http://d.hatena.ne.jp/keyword/メーラーダエモン
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
Subject:
✏ Returned mail: see transcript ...
✏ failure notice
✏ Undelivered Mail Returned to ...
✏ Mail delivery failed: returning...
✏メールサーバによっていろいろ
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
できること
bounceHammerが
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ バウンスメールを解析する
✏ バウンス理由特定(宛先不明/拒否...)
✏ 宛先分類(携帯/Webメール/PC...)
✏ 解析したらデータベースに蓄積
✏ 解析済みデータはYAMLで出力
Can ...
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
バウンス理由
bounceHammerが検出する
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 宛先不明/ドメイン指定拒否
✏ メールボックスいっぱい
✏ メールが大きすぎる
✏ セキュリティ的なエラー
✏ 配送時間切れで差戻し
✏ ほかいろいろ(16種類ぐらい)
Reasons
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
何の役に立つ?
bounceHammerは
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 一般的なMTAで配信している所
✏ でもバウンス処理はしていない
✏ そこそこ沢山配信している所
✏ でもバウンス処理はしていない
Where
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ コンテンツプロバイダさん
✏ メールマガジンスタンドさん
✏ メール配信しているところ全部
✏ まだバウンス処理をしていない人
Who
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
放置すると...
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 携帯宛はブロックされる → 困る
✏ 有効配信数がわからない → 困る
✏ 遅延で配信時間がかかる → 困る
✏ 遅延でサーバが負荷上昇 → 困る
Block & Delay
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
とにかく困る
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
バウンス処理は
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 確実にやるべき
✏ 配信数が少なくてもやるべき
✏ メール1通でも送るならやるべき
Bounce handling
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
処理をすると
bounceHammerで
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ バウンスの理由が正確にわかる
✏ バウンス記録を構造化して保存
✏ ウェブ管理画面でアドレス管理
✏ メール配信の合理化と健全化に
✏ 自前でバウンス処理の実装不要
use bouncehammer;
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
動作環境
bounceHammerの
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ LAMPならなんでも動く
✏ Perl 5.8.1以上
✏ *BSD, Linux, MacOS X
✏ PostgreSQL, MySQL, SQLite
✏ Apache(CGI, mod_perl2)
Environment
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
対応MTA
bounceHammerの
http://d.hatena.ne.jp/keyword/MTA
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ Sendmail (たぶん商用も)
✏ Postfix
✏ qmail
✏ Exim
✏ Courier(近日対応予定)
✏ OpenSMTPD(近日対応予定)
MTAs
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
構築
bounceHammerの
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ Perlモジュールを入れる
✏ /bin/sh ./configure && make
✏ make test && make install
✏ データベースの準備
✏ 設定ファイルの編集
Build
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
動かす
bounceHammerを
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 解析はmbox ¦¦ Maildir/を引数に
✏ STDINからも読む(/etc/aliases)
✏ /etc/crontabで定時処理させる
✏ 必要に応じて解析済みデータ取得
Operation
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
解析コマンド
bounceHammerの
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
# 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", ... }
bin/mailboxparser*
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ Linode512(Xeon L5520x4 2.27GHz, 512MB RAM)
✏ 約2000通のバウンスメールを解析
✏ mbox = 約500通/秒
✏ Maildir/ = 約200通/秒
Benchmark
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
出力コマンド
bounceHammerの
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
% datadumper --howrecent 1y # 1年以内の記録
% datadumper --reason 'userunknown' # 宛先不明だけ
% datadumper --hostgroup 'cellphone' # 携帯だけ
% datadumper --format csv --destination gmail.com
✏ DBに蓄積された記録を出力
✏ YAML, JSON, CSVで出力する
✏いろいろ条件指定ができます
bin/datadumper*
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
解析済データ
bounceHammerの
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ 解析済みデータはYAML ¦¦ JSON
✏ CSVでも出力できます
✏ サーバでバウンスの照合→削除
✏ 配信プログラムでバウンス照合
✏ ウェブサイトでバウンスの照合
Parsed data
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
MTAと協調
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ たぶん一番手っ取り早い利用方法
✏ 配信プログラムはいじりたくない
✏ 配信側をいじる期間の確保が無理
✏ でもバウンスした宛先に送るの嫌
✏ バウンスした宛先はMTAが削除 !
at MTA
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
# 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
✏ datadumperで解析結果を得る
✏ DISCARDで宛先不明は破棄する
/etc/mail/access
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
配信側で照合
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ たとえばユーザ宛にお知らせ送信
✏ メール配信プログラムで宛先照合
✏ YAMLで出力した宛先一覧を読む
✏ 一致した宛先は送信対象から外す
✏ YAMLが読めるなら言語を問わず
Read YAML
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
#!/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 ){
バウンス記録に一致しないので配信する;
}
}
# datadumper > /tmp/bounce.yaml
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
サイト上で照合
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ HTTPベースのAPIを使う
✏ ユーザ毎のページに状態を表示
✏「登録されているアドレスは...」
✏ 受け取れるアドレスに変更催促
✏ JSONが読めるなら言語を問わず
use HTTP-API;
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer #!/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 ){ 内容を取得; }
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
✏ なるべく国産モジュール使いたい
✏ ORMは国産化完了(DBIC→Skinny)
✏ CGI::Application::.+ → ? + ?
✏ APIで書き込み可能にする
✏ 商用MTA・アプライアンスに対応?
TODOs
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
http://bouncehammer.jp/
詳細はWebで
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
http://gihyo.jp/magazine/SD
Software Design 2010年11月号
創刊20周年記念号に載りました
Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd.
bounceHammer
御静聴あり
がとうござ
いました・

Contenu connexe

En vedette

Walvissen Foto\'s
Walvissen Foto\'sWalvissen Foto\'s
Walvissen Foto\'sTom Kuipers
 
Esei stella
Esei stellaEsei stella
Esei stellaSya Ella
 
Η γέννηση του χριστού
Η γέννηση του χριστούΗ γέννηση του χριστού
Η γέννηση του χριστούteo70
 
Fehlerkorrektur 2
Fehlerkorrektur 2Fehlerkorrektur 2
Fehlerkorrektur 2jerobel
 
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 #5azumakuniyuki 🐈
 
Monaco Boatsofthe Grand Prix Racing
Monaco  Boatsofthe Grand Prix RacingMonaco  Boatsofthe Grand Prix Racing
Monaco Boatsofthe Grand Prix RacingTom Kuipers
 
Flash americanbloger
Flash americanblogerFlash americanbloger
Flash americanblogerLuis Barreiro
 
αρκουδα
αρκουδααρκουδα
αρκουδαteo70
 
δρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωδρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωteo70
 
Informatica inleiding
Informatica   inleidingInformatica   inleiding
Informatica inleidingbonejp
 
Slide pbl ict
Slide pbl ictSlide pbl ict
Slide pbl ictSya Ella
 
Presentación peonzas
Presentación peonzasPresentación peonzas
Presentación peonzasstraid
 
bounceHammerその後、導入事例、これから。
bounceHammerその後、導入事例、これから。bounceHammerその後、導入事例、これから。
bounceHammerその後、導入事例、これから。azumakuniyuki 🐈
 

En vedette (20)

Walvissen Foto\'s
Walvissen Foto\'sWalvissen Foto\'s
Walvissen Foto\'s
 
Qltg thv
Qltg thvQltg thv
Qltg thv
 
Esei stella
Esei stellaEsei stella
Esei stella
 
Η γέννηση του χριστού
Η γέννηση του χριστούΗ γέννηση του χριστού
Η γέννηση του χριστού
 
Fehlerkorrektur 2
Fehlerkorrektur 2Fehlerkorrektur 2
Fehlerkorrektur 2
 
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
 
Anna kvittar Hyper
Anna kvittar HyperAnna kvittar Hyper
Anna kvittar Hyper
 
Monaco Boatsofthe Grand Prix Racing
Monaco  Boatsofthe Grand Prix RacingMonaco  Boatsofthe Grand Prix Racing
Monaco Boatsofthe Grand Prix Racing
 
Flash americanbloger
Flash americanblogerFlash americanbloger
Flash americanbloger
 
αρκουδα
αρκουδααρκουδα
αρκουδα
 
δρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνωδρομο παιρνω ... δρομο αφηνω
δρομο παιρνω ... δρομο αφηνω
 
Boiler junction
Boiler junctionBoiler junction
Boiler junction
 
Informatica inleiding
Informatica   inleidingInformatica   inleiding
Informatica inleiding
 
Slide pbl ict
Slide pbl ictSlide pbl ict
Slide pbl ict
 
Presentación peonzas
Presentación peonzasPresentación peonzas
Presentación peonzas
 
How to create the right startup ecosystem?
How to create the right startup ecosystem?How to create the right startup ecosystem?
How to create the right startup ecosystem?
 
bounceHammerその後、導入事例、これから。
bounceHammerその後、導入事例、これから。bounceHammerその後、導入事例、これから。
bounceHammerその後、導入事例、これから。
 
Big Ships
Big ShipsBig Ships
Big Ships
 
PBL ICT
PBL ICTPBL ICT
PBL ICT
 
Mn final slides
Mn final slidesMn final slides
Mn final slides
 

Similaire à Perl and eMail at Kansai.pm #13 Meeting in Kyoto

バウンスメール解析システム BounceHammer
バウンスメール解析システム BounceHammerバウンスメール解析システム BounceHammer
バウンスメール解析システム BounceHammerazumakuniyuki 🐈
 
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 Day2azumakuniyuki 🐈
 
Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都azumakuniyuki 🐈
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつazumakuniyuki 🐈
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践LINE Corporation
 
とあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコードとあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコードYuya Taki
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみたkinneko
 
Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法Shunsuke Kikuchi
 

Similaire à Perl and eMail at Kansai.pm #13 Meeting in Kyoto (13)

バウンスメール解析システム BounceHammer
バウンスメール解析システム BounceHammerバウンスメール解析システム BounceHammer
バウンスメール解析システム BounceHammer
 
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
 
Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都
 
Haikara
HaikaraHaikara
Haikara
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
 
とあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコードとあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコード
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
Let's make your CDN with RUBY
Let's make your CDN with RUBYLet's make your CDN with RUBY
Let's make your CDN with RUBY
 
Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法
 

Plus de 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 🐈
 
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4azumakuniyuki 🐈
 
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2azumakuniyuki 🐈
 
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 Osakaazumakuniyuki 🐈
 
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAメールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAazumakuniyuki 🐈
 
僕と北海道と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-monitoringazumakuniyuki 🐈
 
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) / KOF2013azumakuniyuki 🐈
 
猫と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::Tinyazumakuniyuki 🐈
 
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」azumakuniyuki 🐈
 
KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術azumakuniyuki 🐈
 

Plus de 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
 
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資料
 
KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術
 

Perl and eMail at Kansai.pm #13 Meeting in Kyoto

  • 1. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer バウンスメールを自動解析するシステム bounceHammerというのを作りました Perl and eMail azumakuniyuki 株式会社キュービックルート Kansai.pm#13 in Kyoto, 2010/11/20(Sat)
  • 2. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 自己紹介
  • 3. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ なまえ = azumakuniyuki ✏ しごと = サーバ管理者 > 10 年 ✏ しごと = プログラマー < 2⅛ 年 ✏ おうち = 上京区 ✏ ねっと = @azumakuniyuki ✏ はてな = id:azumakuniyuki
  • 4. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer E PowerBookG4 E iPhone3G E NOKIA NM705i ふつうのぼうし わりときたないふく スニーカー E ふゆようのスーツ E かわのくつ そうび
  • 5. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer /usr/bin/perl -w /bin/sh /bin/tcsh OpenBSD Ubuntu MacVim /usr/bin/vi /usr/lib/sendmail LaTeX2e どうぐ
  • 6. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 本題
  • 7. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer YAPC::Asia Tokyo 2010 で発表した内容の改訂版です
  • 8. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer バウンスメールを処理、解析、 蓄積、出力する専用システムを 作りました Perlで
  • 9. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer bounceHammer
  • 10. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer bounceHammer?
  • 11. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ ばうんすはんまーと読む ✏ バウンスメール解析専用 ✏ 配信システムではない ✏ 基本的にコマンドラインツール ✏ Webの管理画面もあります bouncehammer?
  • 12. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer bounceMail?
  • 13. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ エラーで返ってきたメール ✏ 中身はだいたい英語 ✏ 日本語のものもある ✏ リターンメール ✏ 不達メール bounce mail?
  • 14. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer From: ✏ Mailer-Daemon ✏ Mail Delivery Subsystem ✏ Mail Delivery System ✏ Postmaster@... ✏ だいたい↑のどれか http://d.hatena.ne.jp/keyword/メーラーダエモン
  • 15. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer Subject: ✏ Returned mail: see transcript ... ✏ failure notice ✏ Undelivered Mail Returned to ... ✏ Mail delivery failed: returning... ✏メールサーバによっていろいろ
  • 16. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer できること bounceHammerが
  • 17. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ バウンスメールを解析する ✏ バウンス理由特定(宛先不明/拒否...) ✏ 宛先分類(携帯/Webメール/PC...) ✏ 解析したらデータベースに蓄積 ✏ 解析済みデータはYAMLで出力 Can ...
  • 18. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer バウンス理由 bounceHammerが検出する
  • 19. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 宛先不明/ドメイン指定拒否 ✏ メールボックスいっぱい ✏ メールが大きすぎる ✏ セキュリティ的なエラー ✏ 配送時間切れで差戻し ✏ ほかいろいろ(16種類ぐらい) Reasons
  • 20. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 何の役に立つ? bounceHammerは
  • 21. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 一般的なMTAで配信している所 ✏ でもバウンス処理はしていない ✏ そこそこ沢山配信している所 ✏ でもバウンス処理はしていない Where
  • 22. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ コンテンツプロバイダさん ✏ メールマガジンスタンドさん ✏ メール配信しているところ全部 ✏ まだバウンス処理をしていない人 Who
  • 23. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 放置すると...
  • 24. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 携帯宛はブロックされる → 困る ✏ 有効配信数がわからない → 困る ✏ 遅延で配信時間がかかる → 困る ✏ 遅延でサーバが負荷上昇 → 困る Block & Delay
  • 25. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer とにかく困る
  • 26. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer バウンス処理は
  • 27. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 確実にやるべき ✏ 配信数が少なくてもやるべき ✏ メール1通でも送るならやるべき Bounce handling
  • 28. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 処理をすると bounceHammerで
  • 29. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ バウンスの理由が正確にわかる ✏ バウンス記録を構造化して保存 ✏ ウェブ管理画面でアドレス管理 ✏ メール配信の合理化と健全化に ✏ 自前でバウンス処理の実装不要 use bouncehammer;
  • 30. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer
  • 31. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer
  • 32. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 動作環境 bounceHammerの
  • 33. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ LAMPならなんでも動く ✏ Perl 5.8.1以上 ✏ *BSD, Linux, MacOS X ✏ PostgreSQL, MySQL, SQLite ✏ Apache(CGI, mod_perl2) Environment
  • 34. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 対応MTA bounceHammerの http://d.hatena.ne.jp/keyword/MTA
  • 35. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ Sendmail (たぶん商用も) ✏ Postfix ✏ qmail ✏ Exim ✏ Courier(近日対応予定) ✏ OpenSMTPD(近日対応予定) MTAs
  • 36. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 構築 bounceHammerの
  • 37. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ Perlモジュールを入れる ✏ /bin/sh ./configure && make ✏ make test && make install ✏ データベースの準備 ✏ 設定ファイルの編集 Build
  • 38. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 動かす bounceHammerを
  • 39. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 解析はmbox ¦¦ Maildir/を引数に ✏ STDINからも読む(/etc/aliases) ✏ /etc/crontabで定時処理させる ✏ 必要に応じて解析済みデータ取得 Operation
  • 40. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 解析コマンド bounceHammerの
  • 41. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer # 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", ... } bin/mailboxparser*
  • 42. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ Linode512(Xeon L5520x4 2.27GHz, 512MB RAM) ✏ 約2000通のバウンスメールを解析 ✏ mbox = 約500通/秒 ✏ Maildir/ = 約200通/秒 Benchmark
  • 43. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 出力コマンド bounceHammerの
  • 44. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer % datadumper --howrecent 1y # 1年以内の記録 % datadumper --reason 'userunknown' # 宛先不明だけ % datadumper --hostgroup 'cellphone' # 携帯だけ % datadumper --format csv --destination gmail.com ✏ DBに蓄積された記録を出力 ✏ YAML, JSON, CSVで出力する ✏いろいろ条件指定ができます bin/datadumper*
  • 45. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 解析済データ bounceHammerの
  • 46. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ 解析済みデータはYAML ¦¦ JSON ✏ CSVでも出力できます ✏ サーバでバウンスの照合→削除 ✏ 配信プログラムでバウンス照合 ✏ ウェブサイトでバウンスの照合 Parsed data
  • 47. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer MTAと協調
  • 48. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ たぶん一番手っ取り早い利用方法 ✏ 配信プログラムはいじりたくない ✏ 配信側をいじる期間の確保が無理 ✏ でもバウンスした宛先に送るの嫌 ✏ バウンスした宛先はMTAが削除 ! at MTA
  • 49. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer # 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 ✏ datadumperで解析結果を得る ✏ DISCARDで宛先不明は破棄する /etc/mail/access
  • 50. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 配信側で照合
  • 51. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ たとえばユーザ宛にお知らせ送信 ✏ メール配信プログラムで宛先照合 ✏ YAMLで出力した宛先一覧を読む ✏ 一致した宛先は送信対象から外す ✏ YAMLが読めるなら言語を問わず Read YAML
  • 52. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer #!/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 ){ バウンス記録に一致しないので配信する; } } # datadumper > /tmp/bounce.yaml
  • 53. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer サイト上で照合
  • 54. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ HTTPベースのAPIを使う ✏ ユーザ毎のページに状態を表示 ✏「登録されているアドレスは...」 ✏ 受け取れるアドレスに変更催促 ✏ JSONが読めるなら言語を問わず use HTTP-API;
  • 55. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer #!/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 ){ 内容を取得; }
  • 56. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer ✏ なるべく国産モジュール使いたい ✏ ORMは国産化完了(DBIC→Skinny) ✏ CGI::Application::.+ → ? + ? ✏ APIで書き込み可能にする ✏ 商用MTA・アプライアンスに対応? TODOs
  • 57. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer http://bouncehammer.jp/ 詳細はWebで
  • 58. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer http://gihyo.jp/magazine/SD Software Design 2010年11月号 創刊20周年記念号に載りました
  • 59. Kansai.pm #13@京都 / Perl and eMail - bounceHammerっていうのを作りました / Developed by Cubicroot Co. Ltd. bounceHammer 御静聴あり がとうござ いました・