FreeBSD 上で Ruby を使って milter を書きたいときは

Ruby を使って milter を書く場合、milter manager の Ruby バインディングを利用するのが手っ取り早い。 しかし、FreeBSD の ports / packages ではこれが無効化されている(というか、milter manager 自体がデフォルトで有効化していない)ため、ソースを取得して自前でビルドしてやる必要がある。

milter-manager の公式配布元は OSDN のようだが(ちなみに公式サイトにはなぜかダウンロードページや配布元へのリンクというものが存在しない)、例によって接続が極めて不安定な状態。なので ports / packages は github から取得するようになっている。この ports の distfile を利用してもいいのだが、ports のほうもすっかり放置プレイのようでビルド対象が大分古い。せっかくなので、最新版(といってもリリースは 2023 年 1 月だが……)の 2.2.7 を取得する。

milter-manager.2.2.7.tar.gz をダウンロードしたらこれを展開し、configure を実行する。この時、オプションを付けてやらないと Ruby バインディングがビルド・インストールされない。

./configure --enable-ruby-milter

ports / packages からインストールしてあって、これを上書きしたくない場合は、インストール先を変更してやった方がいいかも。

それが終わったら、gmake でビルド。丸々インストールしてしまっていい場合はいきなり gmake install でもいい。 Ruby バインディングだけインストールする場合、一旦全体を make したあと、Ruby バインディングの在処まで潜って gmake install を実行する。

cd binding/ruby/
gmake install

なんか pkg upgrade したら milter が動かなくなってたんですが?!

上記の手順でインストールした gem は、インストール時に使用した Ruby のバージョンに依存した場所に配置される。そのため、Ruby をバージョンアップすると動かなくなってしまう。

pkg upgrade 等でソフトウェアをアップデートする際は、その対象に Ruby が含まれていないか確認し、含まれていた場合はアップデート後に上記手順を再度実行して gem を再インストールしましょうね。うっかりすると、「ある時からメールが一切送受信できなくなってた」とか恐ろしい事態が…… :-?