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')
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 ライブラリが読み込めないらしい・・・
|
次のように環境変数 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