Postfixのパッケージ作成手順 for Solaris 10

(更新した情報を SYの技術情報備忘録Postfixのパッケージ作成手順 for Solaris 10 に掲載)
最終更新日:2005年06月21日

パッケージ作成

準備するもの

準備ができたら作業開始

Postfixを展開して展開したディレクトリに移動
(2005年06月17日時点での最新版は、2.2 Patchlevel 3)
$ cd /usr/local/src/mail
$ gtar zxf postfix-2.2.2.tar.gz
$ cd postfix-2.2.2
日本語のページが http://www.postfix-jp.info/ にあるのでそこを参考にして、
まずは、付属のドキュメントに従ってPostfixの make まで実施
そして、必要なユーザーとグループを登録(UID, GID は環境に合わせて決める)

・作成するグループ:postfix, postdrop
・作成するユーザー:postfix(グループは postfix)
# groupadd -g 60100 postfix
# groupadd -g 60110 postdrop
# useradd -c "Postfix" -d /var/empty -g postfix -u 60100 -s /bin/false postfix
その後、/usr/local/src/mail/postfix-pkg にパッケージ作成用のファイルを展開(場所は任意)
※ ドキュメントに特権ユーザーで行うなと書いてあるので一般ユーザーで実行
$ gmake non-interactive-package install_root=/usr/local/src/mail/postfix-pkg
ファイルの所有者を root:root に変更
# cd /usr/local/src/mail/postfix-pkg
# chown -R root:root *
ファイルのパーミッションを変更するために設定ファイル一式をコピー
# cp -pR etc/postfix ../postfix-conf
コピーした main.cf(../postfix-conf/main.cf) を編集して以下の行を変更
queue_directory = /usr/local/src/mail/postfix-pkg/var/spool/postfix
command_directory = /usr/local/src/mail/postfix-pkg/usr/sbin
daemon_directory = /usr/local/src/mail/postfix-pkg/usr/libexec/postfix
sendmail_path = /usr/local/src/mail/postfix-pkg/usr/lib/sendmail
newaliases_path = /usr/local/src/mail/postfix-pkg/usr/bin/newaliases
mailq_path = /usr/local/src/mail/postfix-pkg/usr/bin/mailq
manpage_directory = /usr/local/src/mail/postfix-pkg/usr/local/man
sample_directory = /usr/local/src/mail/postfix-pkg/etc/postfix
ファイルのパーミッション設定変更実施
# usr/sbin/postfix -c /usr/local/src/mail/postfix-conf set-permissions
aliasesファイルのコピーとリンク作成
# cd etc
# mkdir mail
# cp postfix/aliases mail
# ln -s ./mail/aliases aliases
# cd ..

SMF(Service Management Facility)用の設定

SUNWsndmrのファイルを参考に以下のファイルを作成
var/svc/manifest/network/smtp-postfix.xml
lib/svc/method/smtp-postfix
etc/init.d/postfix
作成した各ファイル:smtp-postfix.xml, smtp-postfix, postfix

prototypeファイルの作成と編集

prototypeファイル作成
# pkgproto . > prototype
作成したprototypeファイルの編集

・以下の行を追加
i pkginfo
i depend
i i.initd
i i.manifest
i i.preserve
i i.renamenew
i i.renameold
i r.manifest
・prototypeの定義を削除
f none prototype 0644 root root
・SUNWsndmrの pkgmap を参考に形式やクラスの設定などを変更
(詳細は割愛)
出来上がったprototypeファイルはこれ

各定義ファイルの準備と作成

SUNWsndmrから以下のファイルをコピー
pkginfo
depend
i.initd
i.manifest
i.preserve
i.renamenew
i.renameold
r.manifest
pkginfoファイルを編集(内容は参考程度に)
PKG=SYpostfix
NAME=Postfix 2.2.2
ARCH=i86pc
VERSION=2.2.2
CATEGORY=application
DESC=Postfix Mail system
VENDOR="SY"
CLASSES=none initd preserve renamenew renameold manifest
BASEDIR="/"

パッケージ作成

# pkgmk -r `pwd`
# cd /var/spool/pkg/
# pkgtrans -s . SYpostfix.pkg

以上でパッケージの完成


パッケージのインストール

Sendmailパッケージ削除

Solaris 10 標準のSendmailパッケージ(SUNWsndmr, SUNWsndmu)がインストールされている場合は、Postfixをインストールする前に削除しておく
※ aliasesファイル等も削除されてしまうので、必要に応じて設定ファイル(/etc/mail 配下)をコピーしておく
# pkgrm SUNWsndmu
# pkgrm SUNWsndmr

インストール

Postfixのパッケージ(SYpostfix.pkg)が置いてあるディレクトリに移動して以下のコマンドを実行
# pkgadd -d SYpostfix.pkg

注1:インストール前に、以下のユーザーとグループが存在するか確認し、ない場合は作成しておく
(作成済みの zone も忘れないように。UID, GID は、global zone と同じにする)

・グループ:postfix, postdrop
・ユーザー:postfix(グループは postfix)
# groupadd -g 60100 postfix
# groupadd -g 60110 postdrop
# useradd -c "Postfix" -d /var/empty -g postfix -u 60100 -s /bin/false postfix

注2:インストール後に新たに zone を作成した場合は、その zone でユーザー/グループを作成する
(UID, GID は、global zone と同じにする)
# groupadd -g 60100 postfix
# groupadd -g 60110 postdrop
# useradd -c "Postfix" -d /var/empty -g postfix -u 60100 -s /bin/false postfix

注3:キューディレクトリのパーミッションが正しく設定されていない時は、キューディレクトリの再作成を行う

・チェック方法
# /usr/sbin/postfix check
postsuper: fatal: scan_dir_push: open directory defer: Permission denied

上のようなメッセージが表示されたら問題あり。キューディレクトリの再作成を行う。
何も表示されなければ正常(もしくは、見つからなかったディレクトリが作成された)。
・キューディレクトリの再作成
# rm -rf /var/spool/postfix/
# /etc/postfix/post-install create-missing

インストールの自動化

インストール(pkgadd)時に確認を行わないようにして、インストールを自動化する方法

以下のようなインストール管理ファイルを作成し、/var/sadm/install/admin/fullauto として保存
mail=
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=default
自動インストールの実行
# pkgadd -a fullauto -d SYpostfix.pkg


起動/停止の方法

ブート時に自動起動

# svcadm enable postfix

ブート時の自動起動停止

# svcadm disable postfix

一時的に起動

# /etc/init.d/postfix start

一時的に停止

# /etc/init.d/postfix stop

設定ファイルの再読み込み

# /etc/init.d/postfix restart

状態の確認

# svcs -l postfix


Copyright (C) 2005 SY. All rights reserved.