qmailのインストールから初期設定

qmailというメールのパッケージをインストールします。今までは参考サイトをみてそのままインストールしていましたが、qmailの参考サイトがなくなってしまったのと、殆どのサイトがわかりづらかったりしたので、必要なところだけを書いています。なお、最終的にはバーチャルドメインで使えるようにqmail+vpopmail+qmailadminのようにしています。
参考サイト:http://www.geocities.jp/wakuwakustation/qmail.html
1.qmailインストール準備
qmailインストールに必要なユーザ、グループを作成する
[html]
[root@ns ~]# mkdir /var/qmail ← qmailインストールディレクトリ作成
[root@ns ~]# groupadd nofiles ← nofilesグループ作成
[root@ns ~]# useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null ← aliasユーザ作成
[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild ← qmaildユーザ作成
[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill ← qmaillユーザ作成
[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp ← qmailpユーザ作成
[root@ns ~]# groupadd qmail ← qmailグループ作成
[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq ← qmailqユーザ作成
[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr ← qmailrユーザ作成
[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails ← qmailsユーザ作成
[/html]
2.qmailインストール
準備ができたので実際にインストールをします。
[root@ns ~]# wget ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz ← qmailダウンロード
[root@ns ~]# tar zxvf qmail-1.03.tar.gz ← qmail展開
[root@ns ~]# cd qmail-1.03 ← qmail展開先ディレクトリへ移動
[root@ns qmail-1.03]# wget http://www.filewatcher.com/m/qmail-date-localtime.patch.gz.741.0.0.html ← 日本標準時間対応パッチダウンロード
[root@ns qmail-1.03]# wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz ← SMTP-Auth対応パッチダウンロード
[root@ns qmail-1.03]# wget http://www.qmail.org/qmail-smtpd-relay-reject ← 不正中継拒否対応パッチダウンロード
[root@ns qmail-1.03]# tar zxvf qmail-smtpd-auth-0.31.tar.gz ← SMTP-Auth対応パッチ展開
[root@ns qmail-1.03]# /bin/mv qmail-smtpd-auth-0.31/* . ← SMTP-Auth対応パッチをqmail展開先ディレクトリへ移動
[root@ns qmail-1.03]# patch < qmail-date-localtime.patch ← 日本標準時間対応パッチ施行
patching file date822fmt.c
[root@ns qmail-1.03]# patch < auth.patch ← SMTP-Auth対応パッチ施行
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
[root@ns qmail-1.03]# patch < qmail-smtpd-relay-reject ← 不正中継拒否対応パッチ施行
patching file qmail-smtpd.c
Hunk #1 succeeded at 56 (offset 3 lines).
Hunk #2 succeeded at 226 (offset 9 lines).
Hunk #3 succeeded at 277 (offset 11 lines).
[root@ns qmail-1.03]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更
[root@ns qmail-1.03]# make setup check ← qmailインストール
・
・
・
./install
./instcheck
[/html]
error.hを編集するのは、以下のエラーを防ぐためになります。
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1
3.qmail初期設定
無事にインストールが終わったら、今度は初期設定をします。
[root@ns qmail-1.03]# ./config-fast `hostname` ← qmail初期設定
Your fully qualified host name is ns.colorbyte.co.jp.
Putting ns.wakuwakustation.com into control/me...
Putting wakuwakustation.com into control/defaultdomain...
Putting wakuwakustation.com into control/plusdomain...
Putting ns.wakuwakustation.com into control/locals...
Putting ns.wakuwakustation.com into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to ns.colorbyte.co.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/me ← 自ドメイン名を送信元ドメイン名にする
[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/rcpthosts ← 自ドメイン名を受信ドメイン名として追加
[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/locals ← 自ドメイン名をローカルドメイン名として追加
[root@ns qmail-1.03]# cd ← qmail展開先ディレクトリを抜ける
[root@ns ~]# echo "MANPATH /var/qmail/man" >> /etc/man.config ← manコマンドでqmailコマンドのマニュアルを参照できるようにする
[root@ns ~]# rm -rf qmail-1.03 ← qmail展開先ディレクトリ削除
[root@ns ~]# rm -f qmail-1.03.tar.gz ← ダウンロードしたqmail削除
[/html]
4.checkpasswordのインストール
SMTP認証、POP認証に使用するcheckpasswordをインストール、そして設定します。
[root@ns ~]# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz ← checkpasswordダウンロード
[root@ns ~]# tar zxvf checkpassword-0.90.tar.gz ← checkpassword展開
[root@ns ~]# cd checkpassword-0.90 ← checkpassword展開先ディレクトリへ移動
[root@ns checkpassword-0.90]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更
[root@ns checkpassword-0.90]make && make setup check
[/html]
以下のエラーがでてインストールの失敗をしないようにするためにerror.hを編集します
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1
tcpserverインストール
qmailへのSMTP接続制御を行うため、tcpserverが含まれたucspi-tcpをインストールします。
[root@ns ~]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz ← tcpserverダウンロード
[root@ns ~]# tar zxvf ucspi-tcp-0.88.tar.gz ← ucspi-tcp展開
[root@ns ~]# cd ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリへ移動
[root@ns ucspi-tcp-0.88]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更
[root@ns ucspi-tcp-0.88]# make setup check ← ucspi-tcpインストール
・
・
・
./install
./instcheck
[root@ns ucspi-tcp-0.88]# cd ← ucspi-tcp展開先ディレクトリを抜ける
[root@ns ~]# rm -rf ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリ削除
[root@ns ~]# rm -f ucspi-tcp-0.88.tar.gz ← ダウンロードしたucspi-tcp削除
[root@ns ~]# echo '127.:allow,RELAYCLIENT=""' > /etc/tcp.smtp ← 中継許可ホストに自ホストを登録
[root@ns ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp ← /etc/tcp.smtpをcdb形式に変換
[/html]
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1
5.dot-forwardインストール
sendmail用ユーザ別メール転送設定ファイル(~/.forward)をqmailでも利用するのでインストールします。
[root@ns ~]# wget http://cr.yp.to/software/dot-forward-0.71.tar.gz ← dot-forwardダウンロード
[root@ns ~]# tar zxvf dot-forward-0.71.tar.gz ← dot-forward展開
[root@ns ~]# cd dot-forward-0.71 ← dot-forward展開先ディレクトリへ移動
[root@ns dot-forward-0.71]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更
[root@ns dot-forward-0.71]# make setup check ← dot-forwardインストール
・
・
・
./instcheck
[root@ns dot-forward-0.71]# cd ← dot-forward展開先ディレクトリを抜ける
[root@ns ~]# rm -rf dot-forward-0.71 ← dot-forward展開先ディレクトリ削除
[root@ns ~]# rm -f dot-forward-0.71.tar.gz ← ダウンロードしたdot-forward削除
[/html]
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1
6.fastforwardインストール
sendmail用システム共通メール転送設定ファイル(/etc/aliases)をqmailで利用するのに必要なfastforwardをインストールします
[root@ns ~]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz ← fastforwardダウンロード
[root@ns ~]# tar zxvf fastforward-0.51.tar.gz ← fastforward展開
[root@ns ~]# cd fastforward-0.51 ← fastforward展開先ディレクトリへ移動
[root@ns fastforward-0.51]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更
[root@ns fastforward-0.51]# make setup check ← fastforwardインストール
・
・
・
./instcheck
[root@ns fastforward-0.51]# cd ← fastforward展開先ディレクトリを抜ける
[root@ns ~]# rm -rf fastforward-0.51 ← fastforward展開先ディレクトリ削除
[root@ns ~]# rm -f fastforward-0.51.tar.gz ← ダウンロードしたfastforward削除
[root@ns ~]# chmod 0 /usr/bin/newaliases ← 旧newaliasesコマンド無効化→なかった
[root@ns ~]# mv /usr/bin/newaliases /usr/bin/newaliases.bak ← 旧newaliasesコマンドをリネーム→やってない
[root@ns ~]# ln -s /var/qmail/bin/newaliases /usr/bin/newaliases ← newaliasesコマンドをfastforwardに置換え
[root@ns ~]# newaliases ← /etc/aliasesのcdb形式データベース作成
[root@ns ~]# ll /etc/aliases.cdb ← /etc/aliasesのcdb形式データベース作成確認
-rw-r--r-- 1 root root 5093 11月 10 22:52 /etc/aliases.cdb
[root@ns ~]# echo "|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb" > /var/qmail/alias/.qmail-default ← /etc/aliases.cdbをqmailが参照するように設定
[/html]
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1
8.qmail設定
インストールが終わったのでqmailの設定をしていきます。
[root@ns ~]# echo "10485760" > /var/qmail/control/databytes ← 送受信可能メールサイズを10MB=10*1024*1024に制限
※制限を超えた場合、送信元へエラー通知される
[root@ns ~]# touch /var/qmail/control/doublebounceto ← ダブルバウンスメール※は破棄する
※ダブルバウンスメールとは、送信者・受信者ともに存在しないメールのこと
[/html]
9.Maildir形式のメールボックス作成
デフォルトでインストールされているsendmailのメール格納形式は共有ディレクトリ形式(「/var/spool/mail/ユーザ名」というファイルに全てのメールが蓄積されていく形式)だが、アクセス性能改善及びセキュリティ強化の観点からqmailデフォルトのMaildir形式へ移行します。
新規ユーザ追加時に自動でホームディレクトリにMaildir形式のメールボックスが作成されるようにする
[html]
[root@ns ~]# rm -rf /etc/skel/Maildir
[root@ns ~]# /var/qmail/bin/maildirmake /etc/skel/Maildir
[/html]
記事は新規でqmailをインストールするのと、Postfix、Sedmailからの移行ではないため、既存ユーザーのメールデータなどの移行は載せておりません。
10.qmail起動
CGI等でメール通知に利用するsendmailコマンドをqmailに置換えます。
[root@ns ~]# chmod 0 /usr/lib/sendmail ← 旧sendmailコマンド無効化
[root@ns ~]# chmod 0 /usr/sbin/sendmail ← 旧sendmailコマンド無効化
[root@ns ~]# mv /usr/lib/sendmail /usr/lib/sendmail.bak ← 旧sendmailコマンドをリネーム
[root@ns ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak ← 旧sendmailコマンドをリネーム
[root@ns ~]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail ← sendmailコマンドをqmailに置換え
[root@ns ~]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail ← sendmailコマンドをqmailに置換え
[/html]
11.qmail起動スクリプト作成
[root@ns ~]# cp /var/qmail/boot/home+df /var/qmail/rc
← qmail起動コマンドサンプルを所定の場所へコピー※dot-forward利用する場合
[root@ns ~]# cp /var/qmail/boot/home /var/qmail/rc
← qmail起動コマンドサンプルを所定の場所へコピー※dot-forward利用しない場合
[root@ns ~]# sed -i 's/Mailbox/Maildir\//g' /var/qmail/rc ← メールボックス形式をMaildirに変更
[root@ns ~]# yum -y install tcsh ← cシェルインストール
[root@ns ~]# vi /etc/rc.d/init.d/qmail ← 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 stopped"
fi
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac
exit 0
[root@ns ~]# chmod +x /etc/rc.d/init.d/qmail ← qmail起動スクリプトへ実行権限付加
[/html]
12.qmail起動
qmailの起動ををします
[root@ns ~]# /etc/rc.d/init.d/qmail start ← qmail起動
Starting qmail
[root@ns ~]# chkconfig qmail --add ← qmailをchkconfigへ追加
[root@ns ~]# chkconfig qmail on ← qmail自動起動設定
[root@ns ~]# chkconfig --list qmail ← qmail自動起動設定確認
qmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← ランレベル2~5のonを確認
[/html]
これで設定は終了になります。受信メールサーバーがPOP3なため、IMAPに関する設定は省いています。
この記事に関する技術サポート・ご相談
「手順通りにいかない」「自社環境への構築を代行してほしい」など、
インフラ・サーバー周りでハマった際はお気軽にご相談ください。
※ Googleフォームへ移動します(初回相談無料)
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS