qmailのインストール

バージョン

qmail-1.03

本体 & patchダウンロード

# cd /usr/local/src/
// qmail本体
# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
// tcpserver
# wget http://www.qmail.org/rpms/SRPMS/ucspi-tcp-0.88-112memphis.src.rpm
// bounceメッセージのサイズを制限するパッチ
# wget http://www9.jp.qmail.org/www.jedi.claranet.fr/qmail-bounce.patch
// 日本標準時間対応パッチ
# wget http://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/qmail-date-localtime.patch.gz
// glibのバージョン依存による、configエラー回避パッチ
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
// Mailアドレスのユーザ名部分に"@"、"!"、"%"が含まれているメールを拒否するパッチ
# wget http://qmail.org/qmail-smtpd-relay-reject
// 512バイト以上のDNS応答パケットに対応するパッチ
# wget http://www.ckdhr.com/ckd/qmail-103.patch
※ パッチは解凍して、qmail本体を展開したディレクトリ /usr/local/src/qmail-1.03 に格納

qmailパッチ適用

# cd /usr/local/src/
# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03


# patch -p1 < qmail-bounce.patch
patching file qmail-send.c


# patch -p1 < qmail-date-localtime.patch
missing header for unified diff at line 7 of patch
patching file date822fmt.c


# patch -p1 < qmail-1.03.errno.patch
patching file cdb_seek.c
patching file dns.c
patching file error.3
patching file error.h


# patch -p1 < qmail-smtpd-relay-reject.patch
missing header for unified diff at line 3 of patch
patching file qmail-smtpd.c


# patch -p1 < qmail-103.patch
patching file dns.c

sendmailの無効化

// サービス停止、自動起動停止
# /etc/init.d/sendmail stop
# chkconfig sendmail off
// sendmail実行ファイルをリネームして権限を無くす
# cd /usr/sbin
# mv sendmail.sendmail sendmail.sendmail.bak
# chmod 0 sendmail.sendmail.bak
# ls -la sendmail.sendmail.bak  # 権限が無いことを確認

インストールdir & グループ・ユーザ作成

# mkdir /var/qmail
# chmod 755 /var/qmail/
// group作成
# groupadd -g 600 nofiles
# groupadd -g 601 qmail
// user作成 (-m: ホームディレクトリ作成、uid,gidは重複しないように)
# useradd -u 600 -g nofiles -d /var/qmail/alias -m -k /dev/null -s /sbin/nologin alias
# useradd -u 601 -g nofiles -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmaild
# useradd -u 602 -g nofiles -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmaill
# useradd -u 603 -g nofiles -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmailp
# useradd -u 604 -g qmail -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmailq
# useradd -u 605 -g qmail -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmailr
# useradd -u 606 -g qmail -d /var/qmail/ -m -k /dev/null -s /sbin/nologin qmails

インストール

// qmail本体
# cd /usr/local/src/qmail-1.03
# make setup check
# make check
# ./config-fast hostname(FQDN)
// tcpserver
# rpmbuild --rebuild ucspi-tcp-0.88-112memphis.src.rpm
# cd /usr/src/redhat/RPMS/i386
# rpm -Uvh ucspi-tcp-0.88-112memphis.i386.rpm

起動設定

// 起動ファイルのコピー
# cp -p /var/qmail/boot/home /var/qmail/rc
// sendmail Wrapper の設定
# rm /usr/sbin/sendmail
# rm /usr/lib/sendmail
# rm /etc/alternatives/mta
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /etc/alternatives/mta

起動スクリプト作成

/etc/init.d/qmail

#!/bin/sh
#
# qmail: /var/qmail
# chkconfig: 2345 99 99
# description: qmail with tcpserver
#
# Source function library.
#. /dev/rc.d/init.d/functions

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in
  start)
        # Start daemons.
        echo 'Starting qmail.'
        csh -cf '/var/qmail/rc &'
        tcpserver -v -u 601 -g 600 -x /etc/tcp.smtp.cdb \
        0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
        echo
        touch /var/lock/qmail
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down."
        PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
        if [ ! -z "$PID" ] ;  then
            /bin/kill ${PID} 1> /dev/null 2>&1
        fi
        echo
        rm -f /var/lock/qmail
        ;;
  *)
        echo "Usage: S99qmail {start|stop}"
        exit 1
esac

exit 0

パーミッション変更 & 自動起動

# chmod +x /etc/init.d/qmail
# chkconfig --add qmail
# chkconfig qmail on
# chkconfig qmail --list
  qmail  0:off  1:off  2:on  3:on  4:on  5:on  6:off  # となっていればOK

alias設定

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