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

mailboxparser/バウンスメールの解析

 

mailboxparser - バウンスメールの解析器

bounceHammerのmaiboxparserコマンドは、 元データ(バウンスメールが含まれるメールボックスのファイルまたはメールフォルダにある電子メールファイル) からエラー理由(宛先不明、メールボックスがいっぱい、存在しないドメイン等に加えて 携帯電話に特有のドメイン指定拒否、ほか多数)と 宛先分類(携帯電話、スマートフォン、Webメール、PC)を抽出します。

抽出したデータは構造化され、 処理毎にYAML/JSON形式のファイルとして保存されます。

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

コマンドの使用例

mailboxparserは、引数に解析したいメールボックスのファイルまたは メールが含まれるディレクトリを指定するだけです。

オプションなしでmailboxparserを起動した場合、解析結果は標準出力へ書き出されます。 利用可能なオプションは、--helpを付けて起動すると表示されます。

引数にメールボックス(mbox)を一つ指定
# mailboxparser /var/mail/user1
 
引数にメールボックス(mbox)を複数指定
# mailboxparser /var/mail/user1 /var/mail/user2 /var/mail/root
 
引数にメールディレクトリ(Maildir)を指定
# mailboxparser /home/user1/Maildir/cur
 
標準入力から元データを読み込む(/etc/mail/aliases等から呼び出し可能)
# cat /var/mail/user3 | mailboxparser
 
ヘルプを表示
# mailboxparser --help

利用可能なオプション

解析用オプション

-g, --greed
解析対象のバウンスメールを貪欲に精査します。 あまり一般的でないヘッダーからも電子メールアドレスを抽出しようとしますので、 このオプションを使うと多少速度が低下します。
-S, --safe
解析対象のバウンスメールから、データをとり出す際に、 処理毎に中間ファイルをディスクに保存します。低速です。
ver.2.3.2から廃止になりました。このオプションを指定しても無視されます。
-s, --skip
あまり重要でないエラーで返ってきたバウンスメールの解析処理を飛ばし、 解析結果に含めません。 --skip-norelaying, --skip-mailererror, --skip-hostunknown, --skip-temperror を全て指定した事になります。
--skip-norelaying
バウンスの理由が、リレー拒否(Relaying Denied)であるものを解析対象から除外し、 解析結果に含めません。このオプションは、多くはSMTPサーバの設定ミスによって 起こるさほど重要でないエラーを記録しないためにあります。
--skip-mailererror
バウンスの理由が、メーラーエラー(Mailer Error)であるものを解析対象から除外し、 解析結果に含めません。このオプションは、多くはSMTPサーバの配信エージェントの 設定ミスまたは配信先で起動されるプログラムのバグによって起こる、 さほど重要でないエラーを記録しないためにあります。
--skip-hostunknown
バウンスの理由が、不明なホスト(Host Unknown)であるものを解析対象から除外し、 解析結果に含めません。このオプションは、多くは宛先メールアドレスドメイン部分の スペルを間違った事よって起こるさほど重要でないエラーを記録しないためにあります。
--skip-temperror (ver.2.2.0以降)
バウンスの理由が一時エラー(エラーコードが400番台)であるものを解析対象から除外し、 解析結果に含めません。このオプションは、宛先アドレスの存在とあまり関係のない エラーを除外する事を目的としています。

ログ用オプション

-2, --two-way (ver.2.1.0以降)
解析結果をログファイル(YAML)と標準出力の双方に書き出します。 書出されるログファイルについては次の -l, --logオプションと同じ動作です。

このオプションは、/etc/mail/aliases等で、パイプ経由でバウンスメールをmailboxparserに渡し、 解析結果をログファイルに記録しつつ、標準出力にも書出される解析結果を databasectl コマンドに渡す事によって、バウンス発生とほぼ同時にその記録をデータベースに書き込む リアルタイム更新を目的としています。
-l, --log
解析結果をログファイル(YAML)に書き出します。 書き出される場所はetc/bouncehammer.cfのdirectory->spoolで定義されるディレクトリです。 ログのファイル名はlogger コマンドが処理しやすい名前になります。

mailboxparserの実行ユーザが、ログ用のディレクトリに書き込み権限をもっている必要があります。
-o, --output ディレクトリ名
解析結果をログ(YAML/JSON)に書き出します。 書き出される場所はこのオプションの引数で指定されるディレクトリです。 ログのファイル名はlogger コマンドが処理しやすい名前になります。

-l,--logとほぼ同じですが、ログファイルが書き出される場所を変更する 場合に使用します。

mailboxparserの実行ユーザが、引数で指定するディレクトリに書き込み権限をもっている必要があります。
--truncate
解析が完了した後に、元データのファイルサイズを0にします。 /var/mail/bounce等にバウンスメールだけを蓄積していて、解析が終わったら元データは要らないが、 ファイルのみ残しておきたい場合に有用です。
--remove
解析が完了した後に、元データのファイルを削除します。
--backup ディレクトリ名 (ver.2.2.0以降)
解析が完了した後に、指定したディレクトリに本データのファイル (メールボックスやMaildir内のメール)を移動します。
--save-failed-mesg (ver.2.7.7以降)
解析が完了した後に、解析できなかったメールを1メール1ファイルで書き出します。 書き出される場所はetc/bouncehammer.cfのdirectory->spoolで定義されるディレクトリで、 ファイル名はfailed.メッセージIDまたはメール全体のMD5.emlです。

その他のオプション

-B, --batch (ver.2.3.1以降)
バッチモードで起動します。--log(-l)オプションを付けているときのみ、 解析結果の概要をYAML形式で出力します。パイプでメールにして送信したりするときに便利でしょう。
-C, --conf 設定ファイル
読み込む設定ファイルを指定します。このオプションを使用しない場合、 インストール先/etc/bouncehammer.cfが使用されます。 複数の設定ファイルを処理毎に使い分ける場合などでは有用でしょう。
-T, --test
テストモードで動作します。通常は動作に必要な設定値を インストール先/etc/bouncehammer.cfから読出しますが、 このオプションを指定するとbouncehammer.cfが無くても動作します。 -C test-run.cf と等価です。
-F, --format 文字
解析結果を指定したフォーマットで出力します。このオプションを指定しない場合は、YAML形式で出力されます。 利用可能なフォーマットは次の通りです。
文字 説明
y YAML形式 | e.g.) -Fy
j JSON形式 | e.g.) -Fj
c CSV形式(2.4.0から) | -Fc
a アスキーテーブル | -Fa
--silent
このオプションを付けると、次の-v, --verboseオプションの有無にかかわらず 冗長なメッセージおよびエラーの出力がなくなります。 また、コマンドをsendmail等のデーモンが実行した場合、エラーが起きてもexit(0)=成功で終了します。 --silentオプションを付けずにsendmail等MTAがコマンドを起動し、 エラーが発生した場合はexit(75)=EX_TEMPFAILで終了します。
-v, --verbose
処理過程が冗長に表示されます。
--help
コマンドのヘルプが表示されます。
--version
バージョン番号が表示されます。

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

mailboxparser --format a -vvvv Maildir/new

下記のスクリーンショットは、コマンド実行ユーザのMaildir/newの中にあるバウンスメールを解析し、 その解析結果を標準出力にアスキーテーブルで表示するコマンドと出力内容の説明です。

mailboxparser -vvvv Maildir/new --log --batch

下記のスクリーンショットは、コマンド実行ユーザのMaildir/newの中にあるバウンスメールを解析し、 その解析結果を標準の出力先ディレクトリ(/usr/local/bouncehammer/var/spool)に 書き出すコマンドと出力内容の説明です。