sendmailを特定のディレクトリ以下に配置するには

川俣吉広, kaw@on.rim.or.jp
2002年 6月 25日

sendmailは、ソースパッケージからデフォルトでインストールすると、

  • 設定ファイル関係 ... /etc/mail/*
  • 実行ファイル ... /usr/sbin/*, /usr/bin/*
  • 取り扱うデータ ... /var/spool/*

に置かれるようになっています。

ところが、場合によってはインストール先をこれらのデフォルト値から変更してインストールしたい 場合があります。例えば、既存の運用環境を壊さずに、新しいバージョンのsendmailをテストしたい、 などの理由からです。

このページでは、sendmailの環境を/usr/local/sendmail以下にインストールするケースを例にとり、 sendmailを特定のディレクトリ以下に配置する方法を説明します。

なお、このページの記述内容は、Plamo Linux 2.0 , sendmail-8.12.4 で確認を行いました。

おことわり

このページで解説する内容は、川俣吉広が独自に調査した結果を公開したものです。
ページの記述内容は正確を期すように努めておりますが、 記述内容を実行したことにより損害が発生しても当方では責任を負いかねますので、 実際の作業については各自の責任で行って下さい。

また、以下の説明はsendmailのインストールと設定についてソースパッケージからデフォルトでの インストールが行える程度の技術スキルを前提としています。

コンパイル前の準備

現在動作しているsendmailを停止します。

killall -TERM sendmail

現在の設定のバックアップを取ります。

mkdir /etc/mail.bak
cd /etc/mail.bak
(cd /etc/mail && tar cf - .) | tar xpvf -

mail.bakディレクトリ以下は、 新しいsendmail環境が/etc/mail以下の設定ファイルを上書きしてしまった 時の保険です。

コンパイルとインストール

sendmailのソースパッケージを展開します。

cd (作業用ディレクトリ)
tar xvzf sendmail.8.12.4.tar.gz

sendmail-8.12.4/devtools/Site/site.config.m4を作成します。

site.config.m4の内容;

define(`confEBINDIR',       `/usr/local/sendmail/libexec')dnl
define(`confENVDEF',        `-D_DIR_SENDMAILCF=\"/usr/local/sendmail/etc/\" ↓
-D_PATH_SENDMAILCF=\"/usr/local/sendmail/etc/sendmail.cf\"')dnl
define(`confMSP_QUEUE_DIR', `/usr/local/sendmail/spool/clientmqueue')dnl
define(`confHFDIR',         `/usr/local/sendmail/etc')dnl
define(`confINCLUDEDIR',    `/usr/local/sendmail/include')dnl
define(`confLIBDIR',        `/usr/local/sendmail/lib')dnl
define(`confMANROOT',       `/usr/local/sendmail/man/cat')dnl
define(`confMANROOTMAN',    `/usr/local/sendmail/man/man')dnl
define(`confMBINDIR',       `/usr/local/sendmail/sbin')dnl
define(`confSBINDIR',       `/usr/local/sendmail/sbin')dnl
define(`confSHAREDLIBDIR',  `/usr/local/sendmail/lib')dnl
define(`confSTDIR',         `/usr/local/sendmail/etc')dnl
define(`confUBINDIR',       `/usr/local/sendmail/bin')dnl
(↓の行は折り返してますが、実際は1行です)

コンパイルします。

cd (作業用ディレクトリ)/sendmail-8.12.4
sh Build

ディレクトリを作成し、パーミッション等を設定します。

mkdir -p /usr/local/sendmail/bin
mkdir /usr/local/sendmail/sbin
mkdir /usr/local/sendmail/etc
mkdir /usr/local/sendmail/include
mkdir /usr/local/sendmail/lib
mkdir /usr/local/sendmail/libexec
mkdir -p /usr/local/sendmail/man/cat1
mkdir /usr/local/sendmail/man/cat5
mkdir /usr/local/sendmail/man/cat8
mkdir -p /usr/local/sendmail/spool/clientmqueue
mkdir /usr/local/sendmail/spool/mqueue

chmod 0770 /usr/local/sendmail/spool/clientmqueue
chown smmsp:smmsp /usr/local/sendmail/spool/clientmqueue
chmod 0700 /usr/local/sendmail/spool/mqueue

sendmail-8.12.4/cf/cf/Makefile を編集します。

----[Makefileの内容]----
   :
   :
# name of source for sendmail.cf (without extension)
CF=	sendmail
# name of source for submit.cf (without extension)
SUBMIT=	submit
# directory for .cf files
MAILDIR=/usr/local/sendmail/etc    ←この部分を修正
M4=	m4
CFDIR=	..
CHMOD=	chmod
   :
   :

cf/cf/sendmail.mc, cf/cf/submit.mcを編集します。

これらの設定ファイルの作成方法は通常の場合と同じですが、 sendmail.mcの各種定義に先立ち、

define(`MAIL_SETTINGS_DIR', `/usr/local/sendmail/etc/')dnl
define(`QUEUE_DIR', `/usr/local/sendmail/spool/mqueue')dnl

を書いておきます。

divert(0)dnl

VERSIONID(`$Id$')dnl

の間くらいが適当と思われます。また、sendmail.cf中で、ファイルの位置を指定している部分があれば、それも併せて書き換えておきます。

submit.mcも同様に、

define(`MAIL_SETTINGS_DIR', `/usr/local/sendmail/etc/')dnl
define(`QUEUE_DIR', `/usr/local/sendmail/spool/mqueue')dnl
define(`MSP_QUEUE_DIR', `/usr/local/sendmail/spool/clientmqueue')dnl

を書いておき、これで sendmail.cf と submit.cf を作成します。

make sendmail.cf
make submit.cf

sh Build installを実行します。

cd (作業用ディレクトリ)/sendmail-8.12.4
sh Build install

動作確認と実行の設定

通常の手順と変わりありませんので、項目のみ列挙します。

  • Address Test Modeで実行し、動作を確認します。
  • 手動でsendmailを立ち上げ、送受信の動作を確認します。
  • syslogを検査し、異常のないことを確認します。
  • システム起動時に立ち上がるように、設定ファイルを記述します。

参考リンク

川俣吉広, kaw@on.rim.or.jp
2002年 6月 25日

FrontPageに戻る。


Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2007-03-29 (Thu) 22:30:09 (4225d)