カスタム検索
CentOS/Linuxqmailインストール 〜CentOS4 サーバ編〜


実施環境はCentOS4ですが、通常のLinuxであれば、ほぼ同様の手法でインストールは出来るはずです。



Index 〜qmailインストール〜

1. ダウンロードと展開 | 2. ユーザ、グループの作成(qmaild,qmaill,qmailp,qmailq,qmailr,qmails,qmail,nofiles) | 3. パッチあて作業(qmail-date-localtime,qmail-smtpd-relay-reject) | 4. qmailインストール(error.h修正,config-fast) | 5. エイリアス作成 | 6. checkpasswordインストール | 7. tcpserverインストール | 8. 起動用 rcファイルの作成 | 9. 既存MTA(sendmail)関連ファイルの停止、修正 | 10. 新規ユーザ登録対応(Maildir自動生成,maildirmake) | 11. 起動スクリプト作成 | 12. 起動準備(chkconfig,service)


1. ダウンロードと展開
〜qmailインストール〜

ダウンロード、展開については、/usr/local/src配下で行います。

# cd /usr/local/src
# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
# tar zxf qmail-1.03.tar.gz


2. ユーザ、グループの作成(qmaild,qmaill,qmailp,qmailq,qmailr,qmails,qmail,nofiles)
〜qmailインストール〜
 
qmail は、配送の過程で複数のプロセスに分けられているMTAであり、それらを実施するうえで、必要となるユーザ(グループ)を事前に登録しておきます。

# groupadd nofiles
# useradd -g nofiles -s /sbin/nologin alias -m \
> -d /var/qmail/alias -k /dev/null
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails


3. パッチあ て作業(qmail-date-localtime,qmail-smtpd-relay-reject)
〜qmailインストール〜
 
特にパッチをあてなくてもインストールできますが、必要そうなのをインストールしておきます。
今回は、localtime用、不正中継対策用だけあてておきます。

# cd /usr/local/src
# wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/\
> local-distfiles/sada/qmail-date-localtime.patch.gz
# wget http://www.qmail.org/qmail-smtpd-relay-reject
# gunzip qmail-date-localtime.patch.gz
# patch -d qmail-1.03 < qmail-date-localtime.patch
# patch -d qmail-1.03 < qmail-smtpd-relay-reject


4. qmailインストール(error.h修正,config-fast)
〜qmailインストール〜
 
いよいよインストールですが、コンパイルしようとすると、以下のエラーメッセージが表示されます。

/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1


その為、先に以下修正をしてからインストールを行います。

# cat /usr/local/src/ucspi-tcp-0.88/error.h
-省略-
extern int errno;
#include <errno.h>
<-追加
-省略-


修正後、実際にインストールしてみます。

# cd /usr/local/src/qmail-1.03
# make
# make setup check


今度は、問題なく終了しました。

次に基本的なcontrol ファイルは作成しておきたいので、
以下コマンドにて、/var/qmail/control/配下のファイルを作成しておきます。

# ./config-fast `hostname -d`


これにより、me,defaultdomain,plusdomain,locals,rcpthosts ファイルが作成されます。


5. エイリアス作成
〜qmailインストール〜
 
ここでは、通常必要となるpostmaster,mailer-daemon,root 用の.qmailファイルを作成しておきます。

# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*


次にpostmaster,mailer-daemon 宛てのメールはrootで受ける設定を行います。
 ※rootからの転送先は適宜設定が必要です。

# echo 'root' > /var/qmail/alias/.qmail-mailer-daemon
# echo 'root' > /var/qmail/alias/.qmail-postmaster
# echo '"管理者メールアドレス適宜入力"' > \
> /var/qmail/alias/.qmail-root


6. checkpasswordインストール
〜qmailインストール〜
 
vpopmail をインストールする場合は、vchkpw で認証される為、本インストールは不要ですが、
vpopmailをインストールしない場合は、checkpassword のインストールを参照してください。


7. tcpserverインストール
〜qmailインストール〜
 
tcpserverは、サーバ制御ツールで ucspi-tcpというパッケージに入っています。
インストール方法は、tcpserverインストールを参照してください。


8. 起動用 rcファイルの作成
〜qmailインストール〜
 
起動のサンプルファイルが用意されているのでそれをcopyして利用します。

# cp /var/qmail/boot/home /var/qmail/rc


サンプルファイルはMailbox形式となっている為、Maildir形式に変更します。

# vi /var/qmail/rc
qmail-start ./Mailbox splogger qmail を

qmail-start ./Maildir/ splogger qmail に変更します。


9. 既存MTA(sendmail)関連ファイルの停止、修正
〜qmailインストール〜
 
本環境では、sendmail関連のファイルが存在した為、実行権限を外し、念の為バックアップを作成し、qmail用にリンクをはっておきます。設定は以下の順で進んでください。

sendmail の無効化

# chmod 0 /usr/sbin/sendmail
# chmod 0 /usr/lib/sendmail


sendmailファイルのバックアップ

# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# mv /usr/lib/sendmail /usr/lib/sendmail.bak


リンク作成

# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# chmod 755 /var/qmail/bin/sendmail


alias用のMaildir作成

# /var/qmail/bin/maildirmake /var/qmail/alias/Maildir
# chown -R alias /var/qmail/alias/Maildir


sendmailの停止(アクティブ用と再起動時用)

# service sendmail stop
# chkconfig sendmail off


vpopmail導入を考えている場合は、ここから先の設定は不要です。vpopmailインストールへ進んでください。
vpopmailを導入しない場合は、下に進みます。


10. 新規ユーザ登録対応(Maildir自動生成,maildirmake)
〜qmailインストール〜
 
ユーザ新規登録の度に、Maildirを手動で作成するのは大変なので、その手間を省く為に実施した方がよい作業です。
/etc/skel 配下にmaildirmakeでMaildirを作成すれば、ユーザ新規登録の際のMaildirは不要となります。

設定方法は以下の通りです。

# /var/qmail/bin/maildirmake /etc/skel/Maildir


11. 起動スクリプト作成
〜qmailインストール〜
 
以下のようなスクリプトを作成し、実行します。

# cat /etc/rc.d/init.d/qmail
#!/bin/bash
#
# qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script
# Source function library.
. /etc/rc.d/init.d/functions
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
[ -f /var/qmail/rc ] || exit 0
start() {
  # Start daemons.
  if [ -z $(/sbin/pidof qmail-send) ]; then
    echo -n "Starting qmail"
    # qmail
    csh -cf '/var/qmail/rc &' 2>&1 > /dev/null
    # SMTP
    tcpserver -qv -l0 -HR -u `id -u qmaild` -g \
    `id -g \qmaild` -x /etc/tcp/smtp.cdb 0 smtp \
    qmail-smtpd `hostname` /bin/checkpassword \
    /bin/true 2>&1 | splogger smtp &
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
    return $RETVAL
  else
    echo "qmail is already started"
  fi
}
stop() {
  # Stop daemons.
  if [ ! -z $(/sbin/pidof qmail-send) ]; then
    echo -n "Shutting down qmail"
    /bin/kill $(/sbin/pidof tcpserver)
    /bin/kill $(/sbin/pidof qmail-send)
    until [ -z $(/sbin/pidof qmail-send) ] && \
    [ -z $(/sbin/pidof tcpserver) ]; do :; done
    echo
    rm -f /var/lock/subsys/qmail
   else
    echo "qmail is not running"

   fi
}
case "$1" in
   start)
     start
     ;;
   stop)
     stop
      ;;
   restart)
     stop
    start
    ;;
  status)
    if [ ! -z $(/sbin/pidof qmail-send) ] ; then
      echo -n "qmail (pid"
      echo -n " `/sbin/pidof qmail-send`"
      echo -n " `/sbin/pidof tcpserver`"

      echo ") is running..."
    else
      echo "qmail is stoped"
    fi
    ;;
  *)
    echo "Usage: qmail {start|stop|restart|status}"
    exit 1
esac
exit 0
    
    ※POPも起動させたい場合は、上記スクリプトに追加で記載してください。



12. 起動準備(chkconfig,service)
〜qmailインストール〜
 
chkconfig コマンドで次回起動時から自動で立ち上がるように設定します。

# chkconfig --add qmail
# chkconfig qmail on


その場で起動させたい場合は、以下コマンドを実行してください。

# service qmail start




インストールは以上で終了です。