Postfixインストール(ソース編)


「Postfix」のインストールをソースから行います。

(1)「Postfix」をダウンロードする。
[root@mail1 ~]# wget http://ring.riken.jp/archives/net/mail/postfix/official/postfix-2.6.5.tar.gz

)最新版は以下URLで確認すること。
http://www.postfix.org/download.html

(2)デフォルトの「postfix」では、バーチャル環境でMaildir形式のメールボックスを使用する際にうまく動作しないと言う問題がある。その問題を解決するため「VDA」パッチをダウンロードする。
[root@mail1 ~]# wget http://vda.sourceforge.net/VDA/postfix-2.6.5-vda-ng.patch.gz

(3)ダウンロードした「postfix」「postfix-2.6.5-vda-ng.patch.gz」を解凍する。
[root@mail1 ~]# tar zxvf postfix-2.6.5.tar.gz
[root@mail1 ~]# gunzip postfix-2.6.5-vda-ng.patch.gz

(4)「Postfix」に「VDA」パッチを当てる。
[root@mail1 ~]# cd postfix-2.6.5
[root@mail1 postfix-2.6.5]# patch -p1 < ../postfix-2.6.5-vda-ng.patch
patching file README_FILES/VDA_README
patching file src/global/mail_params.h
patching file src/util/file_limit.c
patching file src/virtual/mailbox.c
patching file src/virtual/maildir.c
patching file src/virtual/virtual.c
patching file src/virtual/virtual.h

(5)必要なパッケージをインストールする。
[root@mail1 ~]# yum -y install db4*-devel mysql mysql-devel pcre-devel cyrus-sasl-devel openldap-devel

(6)「Postfix」のインストールを行う。
「postfix」を「MySQL」に対応させるための以下のスクリプトをダウンロードし「postfix-2.6.5」ディレクトリに保存する。 
OSが32bit こちら
OSが64bit こちら
※postfix-2.8での動作確認済み
※openldapにも対応するよう修正(2011/02/19)

 以下の例はwgetコマンドで、32bitのスクリプトをダウンロードし実行しています。 
[root@mail1 postfix-2.6.5]# wget http://www.kurobuti.com/linux_pc/download/sqlsetting_x86.sh
[root@mail1 postfix-2.6.5]# chmod +x sqlsetting_x86.sh
[root@mail1 postfix-2.6.5]# ./sqlsetting_x86.sh


次に、「postfix」をインストールするのに必要なアカウント(postfix,postdrop)を作成する。
[root@mail1 postfix-2.6.5]# groupadd -g 90 postdrop
[root@mail1 postfix-2.6.5]# useradd -u 89 -s /sbin/nologin -d /var/spool/postfix -M postfix


 アカウント作成後、「postfix」のインストールを行う。 
[root@mail1 postfix-2.6.5]# make
[root@mail1 postfix-2.6.5]# make install

インストール中にいくつかの質問があるが、すべて「Enter」を押してデフォルトでインストールする。(環境によっては設定を変える必要がある。) 

インストール後、「MySQL」に対応したか確認する。
[root@mail1 postfix-2.6.5]# postconf -m
btree
cidr
environ
hash
internal
ldap
mysql
nis
pcre
proxy
regexp
static
tcp
texthash
unix

上のように「mysql」が表示されていること。

(7)「Postfix」の起動スクリプトを作成する。
[root@mail1 ~]# vi /etc/rc.d/init.d/postfix
#!/bin/sh
#
# postfix      Postfix Mail Transfer Agent
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -x /usr/local/sbin/postfix ] || exit 0
[ -d /etc/postfix ] || exit 0
[ -d /var/spool/postfix ] || exit 0

RETVAL=0

start() {
        # Start daemons.
        echo -n "Starting postfix: "
        /usr/local/sbin/postfix start 2>/dev/null 1>&2 && success || failure
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
        echo
        return $RETVAL
}

stop() {
        # Stop daemons.
        echo -n "Shutting down postfix: "
        /usr/local/sbin/postfix stop 2>/dev/null 1>&2 && success || failure
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
        echo
        return $RETVAL
}

reload() {
        echo -n "Reloading postfix: "
        /usr/local/sbin/postfix reload 2>/dev/null 1>&2 && success || failure
        RETVAL=$?
        echo
        return $RETVAL
}

abort() {
        /usr/local/sbin/postfix abort 2>/dev/null 1>&2 && success || failure
        return $?
}

flush() {
        /usr/local/sbin/postfix flush 2>/dev/null 1>&2 && success || failure
        return $?
}

check() {
        /usr/local/sbin/postfix check 2>/dev/null 1>&2 && success || failure
        return $?
}

restart() {
        stop
        start
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  reload)
        reload
        ;;
  abort)
        abort
        ;;
  flush)
        flush
        ;;
  check)
        check
        ;;
  status)
        status master
        ;;
  condrestart)
        [ -f /var/lock/subsys/postfix ] && restart || :
        ;;
  *)
        echo "Usage: postfix {start|stop|restart|reload|abort|flush|check|status|condrestart}"
        exit 1
esac

exit $?

(8)起動スクリプトのパーミッションを変更する。
[root@mail1 ~]# chmod 755 /etc/rc.d/init.d/postfix

(9)「Postfix」を起動する。
[root@mail1 ~]# /etc/rc.d/init.d/postfix start
Starting postfix:                                          [  OK  ]
[root@mail1 ~]# chkconfig sendmail off
[root@mail1 ~]# chkconfig postfix on

)「sendmail」が起動していると「postfix」は起動しません。 

(10)シャットダウン時に終了するようにする。
[root@mail1 ~]# ln -s /etc/rc.d/init.d/postfix /etc/rc.d/rc0.d/K30postfix
[root@mail1 ~]# ln -s /etc/rc.d/init.d/postfix /etc/rc.d/rc6.d/K30postfix

Comments are closed.