2013前回はEximには独自にコンテンツスキャンを拡張する仕組みがあること、Debian版Eximはソースコードからビルドしなくても利用できることを説明しました。今回は実際にどうやって作るのかを説明したいと思います。Exim本体のリビルドは不要ですが、機能拡張部分のC言語で書かなければならない事は変わりありません。オリジナルで有ればlocal_scanという名前のC言語関数を書いてリビルドするだけですが、Exim版ではもう一手間かけてダイナミックリンクライブラリにする必要があります。local_scan関数だけでは動作しません。src/local_scan.cを読めば分かるのですがABIの互換性チェックのための関数が必要です。Worldの作成(hello-exim.c)さっそくソースコード見て下さい。二つ関数が追加されていますが、これが先ほど出てきたABIに関連する関数で、それぞれメジャーとマイナーのバージョン番号を返すだけの簡単な関数です。LOCAL_SCAN_ACCEPT;}コンパイルするために必要なパッケージを入れます。exim4-devコンパイルして配置します。libHelloExim.soEximに設定を追加して再起動します。/usr/lib/exim4/local_sacn/libHelloExim.so届いたメールにヘッダーX-Hello-Eximが追加されていればオッケーです。ここまで出来たら後はデータベースでもなんでも、お好きな機能を実装して下さい。実行時間が長すぎるとタイムアウトしますのでご注意を。注意!!気楽に導入するとエライことになりますこの記事の対象者に改めて書く必要もないとは思いますが、まるっきりプリミティブなC言語処理なので、書き方によってはメールが壊れて、全てスプール行きなどの事態を引き起こします。テスト無しで実動中のサーバーに入れるような勇敢(無謀)な行為はしないで下さい。