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