ブログ ランキング
インターネットサーバー設定・運用
HOME  | MYBlog  | MAIL 

sendmailのインストール

必要なソフト

 
BerkeleyDB
(4.1.25)
alias 等からバイナリデータベースを作成するライブラリです。
Solaris には標準で ndb ライブラリがインストールされるが性能面から BerkeleyDB ライブラリを使用することにします。
sendmail
(8.12.10)
sendmail 8.12.9 以前にはアドレス・プレスキャン機能にバッファオーバーフローの脆弱があるので最新の8.12.10(2003/10/19 現在)をインストールします。

BerkeleyDB のインストール

sendmail のRELEASE_NOTES によるとsendmail 8.12.7 から BerkeleyDB 4.1 がサポートされたと書いてあるので BerkeleyDB 4.1.25 を 入れることにします。

ここ からdb-4.1.25.tar.gzをダウンロード

$gzip -dc db-4.1.25.tar.gz | tar xvf    …… 適当なディレクトリで展開
$cd db-4.1.25/build_unix
$../dist/configure 
$make        …… make が成功したら root ユーザーになってインストール
$su
#make install

※ configure 時に -prefix を指定しない場合 /usr/local/BerkeleyDB.4.1 にインストールされる

sendmail のインストール

前準備

・smmsp ユーザーとsmmsp グループを作成
sendmail-8.12 ではセキュリティ強化のため、rootにset-user-ID されたバイナリとしてインストールされません。 デフォルトではsendmail用のグループsmmspにset-group-IDされるため、smmspユーザとsmmspグループを作成します。

#groupadd -g 25 smmsp
#useradd -u 25 -g 25 -s /bin/false smmsp

コンパイル

devtools/Site/site.config.m4 の作成

APPENDDEF(`confENVDEF', `-DNEWDB')
APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.1/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.1/lib')
1行目 BerkeleyDB (-NEWDB) ライブラリとリンクさせる
Redhat 9 の場合
define(`confMAPDEF', `-DNEWDB')
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.1/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.1/include')
APPENDDEF(`confLIBS', `-ldb')
APPENDDEF(`conf_sendmail_LIBS', `-ldb-4')
APPENDDEF(`conf_sendmail_LIBS', `-lpthread')
APPENDDEF(`confLIBS', `-lpthread')

sendmail-8.12.10/sendmail に移動して sh Buid を実行

$sh Build
Configuration: pfx=, os=SunOS, rel=5.8, rbase=5, rroot=5.8, arch=sun4, sfx=, \
variant=optimized
Making in /export/home/msaito/src/sendmail-8.12.10/obj.SunOS.5.8.sun4/sendmail
gcc -O -I. -I../../include  -I/usr/local/BerkeleyDB.4.1/include -DNEWDB \
-DNDBM -
DNIS -DNISPLUS -DMAP_REGEX -DSOLARIS=20800 -DNETINET6 -DNEWDB   -c  main.c
gcc -O -I. -I../../include  -I/usr/local/BerkeleyDB.4.1/include -DNEWDB \
-DNDBM -
DNIS -DNISPLUS -DMAP_REGEX -DSOLARIS=20800 -DNETINET6 -DNEWDB   -c  alias.c

※上記のようにビルド時に "-DNEWDB" が表示されればOK。

※ビルド時に BerkeleyDB ライブラリが見つからない旨のエラーがでたら LD_LIBRARY_PATH 環境変数に追加する。

#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/BerkeleyDB.4.1/lib
#export LD_LIBRARY_PATH

問題なくビルドできたら 出来たばかりのsendmail に-d0.11 オプションをつけて実行すると組み込まれたオプション群を確認できます。

>sendmail -d0.11

を実行してみる。
次のエラーが出た。BerkeleyDB ライブラリが読み込めないらしい・・・


./t-event
ld.so.1: ./t-event: fatal: libdb-4.1.so: open failed: No such file or directory
*** Signal 9
make: Fatal error: Command failed for target `t-event'
Current working directory /export/home/msaito/src/sendmail-8.12.10/obj.SunOS.5.8
.sun4/libsm
*** Error code 1
make: Fatal error: Command failed for target `/export/home/msaito/src/sendmail-8
.12.10/obj.SunOS.5.8.sun4/libsm/libsm.a'

次のように環境変数 LD_LIBRARY_PATH にBerkeleyDB.4.1/lib を追加するが状況変わらず。

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/BerkeleyDB.4.1/lib

調べてみるとset-uid やset-gid された実行ファイルにはLD_LIBRARY_PATH は効かないらしい。
Solaris 8 では共有ライブラリサーチパスをシステムに登録するコマンド crle があるので BerkeleyDB ライブラリを以下の手順で追加します。

#crle -u -l /usr/local/BerkeleyDB.4.1/lib

Build install の実行

#sh Build install