bounceHammer has been EOL'ed on February 29, 2016

製品ライフサイクルの終了

2010年3月にオープンソースソフトウェアとして公開して以来、多くのユーザ様・企業様にダウンロードし、 ご利用いただきましたbounceHammerは、2016年2月29日(月)を持ちまして製品ライフサイクルの終了(EOL: End Of Life) となりました。長きにわたりbounceHammerをご使用いただき誠に有り難う御座いました。 開発元では後継となるバウンスメール解析ライブラリとして、より高精度で高速なSisimai(シシマイ) を二条項BSDライセンスで公開しています。

Sisimai
商用サポート

  • 1一式導入・設定・保守・開発の補助
  • 2独自MTA用解析モジュールの開発
  • 3個別案件の対応とメールサポート
  • 4バウンス管理・運用コンサルティング
  • 5スポット解析・解析済みデータ提供

HTTP-API/SELECT

一件の記録を取得するAPI

select - メッセージトークンまたはIDでデータを取得

API(select)は、bounceHammer 2.4.0から実装された メッセージトークン の値またはデータベース上のIDをキーにして該当するデータを取得するものです。

この機能の用途は、例えばモバイルサイトにおいて、各ユーザの登録済みメールアドレスの 状態をbounceHammerサーバに照会し、その結果を各ユーザのログインしたページで 表示する、といったアクセスがさほど集中しない問合せに向いています。

大量アクセスがある場合は

一方、大量にメールを配信する際に個々のアドレスを bounceHammerに照会する、あるいは、一日一回サイトのデータベースにある メールアドレスとbounceHammerにあるそれらを照会する、という大量のアクセスが 発生する用途では、 datadumper コマンドで先に照合用データを取得しておいたほうが合理的かもしれません。

selectの使い方

メッセージトークンまたはIDでデータを取得するAPIのURLは、 http://bounceHammerのホスト/APIのCGIファイル名/select/メッセージトークンまたはID という形式です。

PerlとPythonでの簡単な実装例

Perl

メッセージトークンによるAPI問合せのPerlでの簡易な実装例です。エラーや例外処理は入れていません。 サイトの各所でデータ形式はYAMLであると記述していますが、 APIはJSON形式でデータを出力するのでJSONパーサ(JSON::Syck)を使用しています。

#!/usr/local/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON::Syck;
use Digest::MD5;

my $addresser = q{sender01@example.jp};
my $recipient = q{user01@example.org};
my $queryhost = q{http://apitest.bouncehammer.jp/index.cgi/query/};
my $mesgtoken = Digest::MD5::md5_hex(
                  sprintf('\x02%s\x1e%s\x03',$addresser,$recipient));
my $useragent = new LWP::UserAgent();
my $response = $useragent->request(
                 HTTP::Request->new( GET => $queryhost.$mesgtoken ));
my $metadata = JSON::Syck::Load($response->content()) || [];

foreach my $j ( @$metadata )
{
  printf( '%s: %s\n', $j->{recipient}, $j->{reason} );
}

Python

メッセージトークンによるAPI問合せのPython 2.5での簡易な実装例です。 上記のPerlでの例と同様エラーや例外処理は入れていません。 サイトの各所でデータ形式はYAMLであると記述していますが、 APIはJSON形式でデータを出力するのでJSONパーサ(simplejson)を使用しています。

#!/usr/bin/python
# coding: utf-8
import urllib2
import simplejson
import md5

addresser = 'sender01@example.jp'
recipient = 'user01@example.org'
mesgtoken = md5.new('\x02%s\x1e%s\x03' % (addresser,recipient))
queryhost = 'http://apitest.bouncehammer.jp/index.cgi/query/'
response = urllib2.urlopen( queryhost + mesgtoken.hexdigest() )
metadata = simplejson.load(response)

for j in metadata:
  print j['recipient'] + ': ' + j['reason']

ここではPerlとPythonの簡単な実装例を紹介していますが、 bounceHammerのソースコード内、examples/ディレクトリに PHPとRuby(1.9)用のサンプルスクリプト(examples/request-to-api.(pl|py|php|rb) を同梱しています。