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スポット解析・解析済みデータ提供

databasectl/解析済データのDB登録

 

databasectl - バウンス記録のデータベース操作

databasectlコマンドは、bounceHammerデータベースのバウンス記録テーブル (BounceLogs)の更新などを行うコマンドです。 mailboxparserlogger が作ったログファイルをデータベースに記録または新しい値で更新します。

このコマンドはインストールしたディレクトリ/bin/databasectlにあります。

コマンドの使用例

databasectlは、tablectlと同様、 bounceHammerのデータベース/マスターテーブルに対してSQL文を発行せずともある程度の操作が 出来るようになっています。

また、databasectlコマンドよりも範囲は限定されていますが、管理画面(WebUI)でも一部の操作が可能です。 databasectlコマンドは毎時・毎日のバッチ処理で解析したデータをデータベースに登録する用途で使用されます。

今日のログファイルの内容をデータベースに登録・更新
# databasectl --update --today
 
昨日のログファイルの内容をデータベースに登録・更新
# databasectl -Uy
 
指定したログファイルの内容を強制的にデータベースに登録・更新
# databasectl --force -U /tmp/log.dat
 
標準入力から入ってきたデータをデータベースに登録・更新
# cat 2009-12-31.log | databasectl --update
 
解析結果をログに保存しつつ直ちにデータベースに登録
# mailboxparser -2 /var/mail/user1 | databasectl --update
 
ヘルプを表示
# databasectl --help

利用可能なオプション

データベース制御用オプション

-U, --update
databasectlコマンドの引数に指定したファイルの内容でデータベースを更新します。
--force
databasectlは指定されたログファイルの内容をデータベースに書き込みます。 書き込もうとするデータの発信者アドレス(addresser)と受信者アドレス(recipient)の 組み合わせがデータベースに既に存在した場合、日付を照合して新しければログファイルの 内容でデータベースの内容を上書きします。

ただし、データベースにある更新対象となるデータの差戻理由がwhitelist である場合は、ログファイルの内容がデータベースの内容よりも新しくてもdatabasectlは 上書きしません。

この--forceオプションを指定すると、 データベースの更新すべきデータの差戻理由がwhitelistであっても、 強制的にログファイルの新しい内容で上書きをします。
--remove (ver.2.4.0以降)
後述の--id, --tokenオプションで指定する識別子に一致するデータを データベースから削除します。このオプションを使うには、--id, --token のいずれかの引数に削除対象のデータを指定する必要があります。
--disable (ver.2.4.0以降)
後述の--id, --tokenオプションで指定する識別子に一致する データのdisabledカラムの値を1にします。 データベース上で無効フラグを立てるこのオプションを使うには、 --id, --tokenのいずれかの引数に対象となるデータを指定する必要があります。
--id 識別子(ID) (ver.2.4.0以降)
前述の--remove, --disableオプションが実行する対象データを指定します。 このオプションは識別子としてデータベース上のIDを引数として要求します。
--token 識別子(トークン) (ver.2.4.0以降)
前述の--remove, --disableオプションが実行する対象データを 指定します。このオプションは識別子としてデータベース上にある記録の メッセージトークンを引数として要求します。

更新用オプション

-b, --before 日数
databasectlは、-U(--update)オプションのみで起動された場合、 設定ファイル(etc/bouncehammer.cf)のdirectory->logディレクトリで 定義したディレクトリの中から、実行した日のログファイル (2009/12/31に実行したらhammer.2009-12-31.logというファイル)の内容を データベースに書き込みます。

ログが集積されているディレクトリにあるログファイルのうち、 今日以外のログファイルをデータベースに書き込みたい場合はこの --beforeオプションで遡る日数を指定します。

--before 2 で一昨日、--before 10 で 10日前のログファイルをデータベースに書き込みます。 --before 1は後述の--yesterdayと等価です。
-y, --yesterday
設定ファイル(etc/bouncehammer.cf)のdirectory->logで定義される 集積用ディレクトリにある、昨日(databasectl実行日からみて)のログファイルを データベースに書き込みます。主にバッチ処理で昨日のファイルを書き込むのに 有用(特に月をまたぐ場合)です。 このオプションは--before 1と等価です。
-t, --today
設定ファイル(etc/bouncehammer.cf)のdirectory->logで定義される集積用 ディレクトリにある、今日(databasectl実行日)のログファイルをデータベースに書き込みます。 このオプションは省略してもかまいません。databasectlが今日のログファイルを 書き込むという事を明示するぐらいの役割です。
Version 2.7.0から、-t,-y,-bの いずれかまたは引数に処理すべきファイルのPATHを指定する必要があります。 --before 0と等価です。
-d, --date 日付文字列 (ver.2.5.0以降)
処理対象のバウンス記録ファイルを日付の形式で指定可能です。 -t(--today), -y(--yesterday)以外の過去で、-b(--bofore) を使用した何日前という計算しにくい日付を指定する場合に有用です。

有効な日付フォーマットは 2009/04/29 または 2009-04-29 です。

その他のオプション

-B, --batch (ver.2.3.1以降)
バッチモードで起動します。コマンド実行結果の概要をYAML形式で出力します。 パイプでメールにして送信したりするときに便利でしょう。
-C, --conf 設定ファイル
読み込む設定ファイルを指定します。このオプションを使用しない場合、 インストール先/etc/bouncehammer.cfが使用されます。 複数の設定ファイルを処理毎に使い分ける場合などでは有用でしょう。
-T, --test
テストモードで動作します。通常は動作に必要な設定値を インストール先/etc/bouncehammer.cfから読出しますが、 このオプションを指定するとbouncehammer.cfが無くても動作します。 -C test-run.cf と等価です。
--silent (ver.2.1.0以降)
このオプションを付けると、次の-v, --verboseオプションの有無にかかわらず 冗長なメッセージおよびエラーの出力がなくなります。 また、コマンドをsendmail等のデーモンが実行した場合、エラーが起きても exit(0)=成功で終了します。

--silentオプションを付けずにsendmail等MTAがコマンドを起動し、 エラーが発生した場合はexit(75)=EX_TEMPFAILで終了します。
-v, --verbose
処理過程が冗長に表示されます。
--help
コマンドのヘルプが表示されます。
--version
バージョン番号が表示されます。

コマンド実行結果のスクリーンショットでの説明

下記のスクリーンショットは、昨日(コマンド実行日の前日)にバウンスした 解析済みログファイルをデータベースに登録・更新するコマンドと出力内容の説明です。