2011/05/04

bounceHammer一周年記念式典

bounceHammerを2010年3月にオープンソース化して一年と少しが経過しました。式典は執り行っていません。公開から二、三ヶ月の間は深刻なバグがあってリリースした数日後に修正版をリリースしたりしていましたが、やっと落ち着いてきた感じではあります。自分のブログを再開した最初のエンジニア的な記事なので、bounceHammerの事を少し書いてみます。

bounceHammer開発のきっかけ

bounceHammerは2008年の秋ごろに開発を開始しました。世の中はどちらかといえばWeb系(HTTP)の方が華やかで情報もソフトウェアもライブラリも多い感じですが、電子メール(SMTP)も重要な技術としてまだまだ健在です。

僕は10年以上サーバ管理者として、特にメールサーバやDNSサーバを中心に構築や設定・運用の仕事をしてきました。エラーになった電子メール(=バウンスメール)を解析して理由の特定と分類をするという作業は、メールアドレスの管理という観点から重要な作業です。なんらかのWebサイトを運営していれば量の大小はあれメールを送信する事は皆無ではないでしょう。

かつて勤めていた会社でMTAの面倒を見ていましたが、その時開発した一枚のPerlスクリプトは、自社のMTA (Sendmail)と大多数を占める送信先(携帯電話・Webメール)のバウンスメールだけに対応していました。

あれから時が経って、誰かが汎用的なバウンスメール処理のプログラムかライブラリを公開しているかな、と思って探してみましたが見つかりませんでした。

以前の会社で開発したスクリプトは数千行の1ファイルPerlスクリプトですが、辞めた時に持ち出してないので手元にはなく「ないのであれば自分で作るか」と一念発起して0から開発をする事にしました。

Perlを選んだ理由

僕は職業プログラマは未経験で、何かプログラムを書くとなると/bin/shが一番慣れています。しかし電子メールの文章解析で細かな正規表現を使う必要があるので、Shellスクリプト以外の言語を使う事にしました。

Perlを選んだ理由はPerlであれば多少古いサーバであっても/usr/binに入っている(最近使ってないので現状を知りませんがFreeBSDのadduserはPerl)やろうという点です。

PHPはPHP/FIかPHP3以降触れていなくて頻繁に仕様が変わっている感じ、JavaもJDK1.0以降触ってないから多分分からない、Python, Rubyは触った事もないので、やはりPerlしかないやろうという感じです。

開発開始!

翔泳社/モダンPerl入門/牧大輔さん
長年Sendmailと付き合ってきた(一度Postfixに浮気はした)おかげもあってSMTPはHTTPよりもよく分かっているつもりやったので、面倒な電子メール・SMTP・バウンス処理を扱うソフトウェアを開発する、という心理的な抵抗はありませんでした。

また10年以上前ですが、Javaを学んだ時にオブジェクト指向についても多少は知っていたので、先ずはPerlの流儀を身に付けるというところから始めました。

開発開始から二、三ヶ月で最初の動くバージョンができ上がりました。

あとは解析できるバウンスメールのパターンを増やしたり、効率の悪い部分をリファクタリングしたり、Devel::NYTProfモジュールで測定→改善の繰り返しです。ラクダの本も勿論ですが、『モダンPerl入門』で知ったテストの書き方が非常に勉強になりました。


オープンソースソフトウェアとして

PowerBook Image from morgueFile.com
ソフトウェアが動く状態として一旦完成しても、公開するにあたりWebサイトやドキュメント、他のプラットフォームでの動作検証、ライセンス、インストーラの作成、ソフトウェアの名称、ロゴマーク的なもの作成などを本業のサーバ管理者の合間に少しずつ進めて、2010年3月にやっと公開する事ができました。

先ずは公開するという事を念頭に置いていたので、派手なプロモーションや根回し済の宣伝は特にせず、bouncehammer.jp と SourceForge.JP で公開している、という程度でした。

暫くの間は反応なんぞ皆無やろうと思っていましたが、公開から一週間ぐらいで早速問合せや質問を貰ったり、導入に際しての追加開発や保守の仕事、そこから発展したサーバ構築の仕事を頂いたりしました。

できる営業マンbounceHammerの誕生です。

bounceHammerの開発・公開方針

bounceHammerをオープンソースで公開して一年と少しが経過しました。今後変わる可能性はありますが、現在は下記のような方針で開発・公開しています。

  • オープンソースのMTAが作るバウンスメールはいずれ全部対応する(次はjamesOpenSMTPd)
  • 商用MTA(Exchangeとか)のバウンスメールは対応を予定(実装済開発版はあるけど公開方法は未定)
  • 積極的アップデート: 致命的なバグはパッチを出す、なるべく毎月なんらかの最新版を公開
  • make installだけでよい最新リリース版は、version x.y.z の"z"の値が増える
  • make install以外のアップグレード作業が必要なリリースは、version x.y.z の"y"の値が増える
  • 下位互換のないリリースは、version x.y.zの"x"の値が増える(次にあるとすればver 3.0.0)
  • 対応するMTA、Webメールサービスは厳正且つ公正に選んでいるわけではない
  • 管理画面(WebUI)はInternet Explorer 6系には対応しない
  • コマンドラインツール内に日本語ヘルプ(--help option)を実装する予定はない

bounceHammerのユーザさん、メールサーバの管理者さん、サイトの管理者さん、バウンスメールに興味のないみなさん、うちのbounceHammerをよろしくおねがいします。


0 件のコメント:

コメントを投稿