How to build Internet Server with Solaris 2.6

last update: 29 Sep 2004

home |index |contents |next |previous

sendmail-8.9.1



5.1 ソフトの入手
"sendmail-8.9.1"を入手します。例えば以下のサイトから入手できます:
ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.9.1.tar.gz

またpatchが出ていますので、それも入手します:
ftp://ftp.kyoto.wide.ad.jp/sendmail/sendmail.8.9.1a.patch
ftp://ftp.kyoto.wide.ad.jp/sendmail/sendmail.8.9.1a.unofficial.patch

注意: コンパイルにはm4が必要です。 (実はm4無しでもコンパイルできるのですが、面倒なのでm4を入れましょう。)

5.2 インストール
  1. ソースの展開
    ファイルを展開するディレクトリ$Workに移動してバイナリパッケージを展開し、 patchをあてます。作業ディレクトリ$Workは任意のディレクトリです。
    次にディレクトリ$Work/sendmail-8.9.1/srcに移動します。
      % cd $Work
      % gzip -cd sendmail-8.9.1.tgz | tar xvf -

      % cd $Work/sendmail-8.9.1/src
      % patch < sendmail-8.9.1a.patch
      % patch < sendmail-8.9.1a.unoffical.patch

      % cd $Work/sendmail-8.9.1/src

  2. マクロファイルの作成
    コンパイルの前にいくつかのコンパイルオプションを設定します。このときマクロ言語"m4"による 設定ファイルを使います。
    たくさんの設定項目がありますが、以下の項目を設定すれば"ほぼ"大丈夫でしょう。
    • confMAPDEF
      sendmailがアドレスなどを解決する時に利用するデータベース・ライブラリを指定します。 ここでいうデータベース・ライブラリには"NIS"も含まれます。
      以下にオプションの説明をします。
      • -DNDBM
        ndbmデータベース・ライブラリを使う場合に用います。
      • -DNEWDB
        db(Berkeley-db)を利用する場合に用います。
        なお、ライブラリのディレクトリパス以下に"libdb.a"という ファイルがあった場合には、ここで定義するしないに関わらずBerkeley-dbを利用する sendmailの実行ファイルが作られます。
      • -DNIS, -DNISPLUS
        NIS、もしくはNIS+を利用する場合に用います。

    • confLIBS
      コンパイル時に利用するライブラリを指定します。
      デフォルトは以下の通りです:
      LIBS= -lresolv -l44bsd -lsocket -lnsl -kstat
      

      confLIBSのデフォルト


      • -l44bsd
        bindのversion.4系列を利用している時のみ必要です。 bindのversion.4系列以外を利用している場合には、このオプションは削除して下さい。
      • -ldb
        デフォルトではありませんが、confMAPDEFで"-DNEWDB"を指定している場合には、このオプションを 指定して下さい。

    • confLIBDIRS
      コンパイル時に利用するライブラリのディレクトリを指定します。
    • confINCDIRS
      コンパイル時に利用するインクルードファイルのディレクトリを指定します。

    これらは併用することも可能です。例えばBerkeley-dbとNISを利用する場合には以下のように 指定します。

    define(`confMAPDEF', `-DNDBM -DNIS')
    

    Berkeley-dbとNISを利用する場合


    それ以外の設定項目についてはファイル$Work/sendmail-8.9.1/BuildTools/READMEを参考にして下さい。


    以下に当サイトの"site.config.m4"ファイルを示します。
    define(`confMAPDEF', `-DNDBM')
    
    APENDDEF(`confINCDIRS', `-I/usr/include -I/usr/local/include \
    	-I/usr/local/lib/gcc-lib/sparc-sun_solaris2.6/2.8.1/include')
    

    site.config.m4


    このように、たった2つの項目しか設定していません。
  3. コンパイルとインストール
    "site.config.m4"ファイルを書いたら、以下の手順でコンパイルとインストールを行ないます。
      % sh Build -f site.config.m4
      % sh Build install

    以上で"sendmail-8.9.1"のインストールは終了です。


    コンパイルに失敗するようならば、エラーメッセージを参考に"site.config.m4"を書き換えて 再コンパイルを行なって下さい。
    その際、ディレクトリ$Work/sendmail-8.9.1/src/obj.SunOS.Version.Machine (Version、machineには実際の値が入る)を削除してから再コンパイルを行なって下さい。 例えば:
      % /bin/rm -rf $Work/sendmail-8.9.1/src/obj.SunOS.5.6.sun4


5.3 コンフィギュレーション
sendmailの設定ファイルは悪名高い/etc/sendmail.cfです。 詳しくは参考文献を見て下さい。
sendmail.cfをほぼ自動で生成するための"CF"というツールがあります。 これの使い方は、例えば"CFのインストールと運用"にあります。

5.4 運用
boot時に起動できるようにディレクトリ/etc/rc2.d/以下に次のファイル"S99sendmail"をおきます。

#!/sbin/sh
#
# start-up and stop script for sendmail
# 
# Usage: S99sendmail {start|stop}
#

PATH=/usr/bin:/bin

case $1 in 
'start')
	if [ -f /usr/lib/sendmail -a -f /etc/sendmail.cf ]; then
		if [ ! -d /var/spool/mqueue ]
		then
			mkdir /var/spool/mqueue
			chown root /var/spool/mqueue
			chgrp staff /var/spool/mqueue
			chmod 750 /var/spool/mqueue
		fi
		/usr/lib/sendmail -bd -q15m; 
		echo "sendmail started.";
	fi	

'stop')
	pid=`/usr/bin/ps -eo pid,comm | /usr/bin/awk '{ if ($2 == "/usr/lib/sendmail") print $1 }'`
	if test "$pid"
	then
		kill $pid;
		echo "sendmail stoped.";
	fi
*)
	echo "usage: /etc/rc2.d/S99sendmail {start|stop}"
esac

/etc/rc2.d/S99sendmail


注意: Solarisの起動ファイルは、大文字"S"に続いて番号とソフト名という形式になっており、 番号の小さい順に起動を行ないます。
"sendmail"の起動時に、すでに"bind"が起動していなければなりませんので、 "sendmail"の起動スクリプトの"S"に続く番号は必ず"bind"起動スクリプトの番号よりも 大きな番号にして下さい。

5.5 参考文献
  1. 書籍
    以下の2冊がお勧めです。
    ・O'Reilly "sendmail" by B.Costals, E.Allman, N.Rickert
    ・O'Reilly "TCP/IPネットワーク管理" by Craig Hunt

  2. 雑誌
    お馴染みUNIXマガジンにsendmailに関連したいくつかの記事があります。

    ・UNIX MAGAZINE 98.11 コミュニケーション用サーバのインストールと運用 (p.p.19-29)
    ・UNIX MAGAZINE 97.9 電子メール爆撃とSPAMに対抗する方法 (p.p.54-60)
    ・UNIX MAGAZINE 97.5 UNIX知恵袋 (p.p. 62-65)
    ・UNIX MAGAZINE 97.7 UNIX知恵袋 (p.p. 62-71)



home |index |contents |next |previous