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

qmailというメールのパッケージをインストールします。今までは参考サイトをみてそのままインストールしていましたが、qmailの参考サイトがなくなってしまったのと、殆どのサイトがわかりづらかったりしたので、必要なところだけを書いています。なお、最終的にはバーチャルドメインで使えるようにqmail+vpopmail+qmailadminのようにしています。

参考サイト:http://www.geocities.jp/wakuwakustation/qmail.html

1.qmailインストール準備

qmailインストールに必要なユーザ、グループを作成する

01[root@ns ~]# mkdir /var/qmail ← qmailインストールディレクトリ作成
02 
03[root@ns ~]# groupadd nofiles ← nofilesグループ作成
04 
05[root@ns ~]# useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null ← aliasユーザ作成
06 
07[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild ← qmaildユーザ作成
08 
09[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill ← qmaillユーザ作成
10 
11[root@ns ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp ← qmailpユーザ作成
12 
13[root@ns ~]# groupadd qmail ← qmailグループ作成
14[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq ← qmailqユーザ作成
15 
16[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr ← qmailrユーザ作成
17 
18[root@ns ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails ← qmailsユーザ作成

2.qmailインストール

準備ができたので実際にインストールをします。

01[root@ns ~]# wget ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz ← qmailダウンロード
02 
03[root@ns ~]# tar zxvf qmail-1.03.tar.gz ← qmail展開
04 
05[root@ns ~]# cd qmail-1.03 ← qmail展開先ディレクトリへ移動
06 
07[root@ns qmail-1.03]# wget http://www.filewatcher.com/m/qmail-date-localtime.patch.gz.741.0.0.html ← 日本標準時間対応パッチダウンロード
08 
09[root@ns qmail-1.03]# wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz ← SMTP-Auth対応パッチダウンロード
10 
11[root@ns qmail-1.03]# wget http://www.qmail.org/qmail-smtpd-relay-reject ← 不正中継拒否対応パッチダウンロード
12 
13[root@ns qmail-1.03]# tar zxvf qmail-smtpd-auth-0.31.tar.gz ← SMTP-Auth対応パッチ展開
14 
15[root@ns qmail-1.03]# /bin/mv qmail-smtpd-auth-0.31/* . ← SMTP-Auth対応パッチをqmail展開先ディレクトリへ移動
16 
17[root@ns qmail-1.03]# patch < qmail-date-localtime.patch ← 日本標準時間対応パッチ施行
18patching file date822fmt.c
19 
20[root@ns qmail-1.03]# patch < auth.patch ← SMTP-Auth対応パッチ施行
21patching file Makefile
22patching file TARGETS
23patching file qmail-smtpd.8
24patching file qmail-smtpd.c
25 
26[root@ns qmail-1.03]# patch < qmail-smtpd-relay-reject ← 不正中継拒否対応パッチ施行
27patching file qmail-smtpd.c
28Hunk #1 succeeded at 56 (offset 3 lines).
29Hunk #2 succeeded at 226 (offset 9 lines).
30Hunk #3 succeeded at 277 (offset 11 lines).
31 
32[root@ns qmail-1.03]# vi error.h ← error.h編集
33extern int errno;
34
35#include<errno.h> ← 変更
36[root@ns qmail-1.03]# make setup check ← qmailインストール
37
38
39
40./install
41./instcheck

error.hを編集するのは、以下のエラーを防ぐためになります。

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

3.qmail初期設定

無事にインストールが終わったら、今度は初期設定をします。

01[root@ns qmail-1.03]# ./config-fast `hostname` ← qmail初期設定
02Your fully qualified host name is ns.colorbyte.co.jp.
03Putting ns.wakuwakustation.com into control/me...
04Putting wakuwakustation.com into control/defaultdomain...
05Putting wakuwakustation.com into control/plusdomain...
06Putting ns.wakuwakustation.com into control/locals...
07Putting ns.wakuwakustation.com into control/rcpthosts...
08Now qmail will refuse to accept SMTP messages except to ns.colorbyte.co.jp.
09Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
10 
11[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/me ← 自ドメイン名を送信元ドメイン名にする
12 
13[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/rcpthosts ← 自ドメイン名を受信ドメイン名として追加
14 
15[root@ns qmail-1.03]# echo `hostname -d` >> /var/qmail/control/locals ← 自ドメイン名をローカルドメイン名として追加
16 
17[root@ns qmail-1.03]# cd ← qmail展開先ディレクトリを抜ける
18 
19[root@ns ~]# echo "MANPATH /var/qmail/man" >> /etc/man.config ← manコマンドでqmailコマンドのマニュアルを参照できるようにする
20 
21[root@ns ~]# rm -rf qmail-1.03 ← qmail展開先ディレクトリ削除
22 
23[root@ns ~]# rm -f qmail-1.03.tar.gz ← ダウンロードしたqmail削除

4.checkpasswordのインストール

SMTP認証、POP認証に使用するcheckpasswordをインストール、そして設定します。

01[root@ns ~]# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz ← checkpasswordダウンロード
02 
03[root@ns ~]# tar zxvf checkpassword-0.90.tar.gz ← checkpassword展開
04 
05[root@ns ~]# cd checkpassword-0.90 ← checkpassword展開先ディレクトリへ移動
06 
07[root@ns checkpassword-0.90]# vi error.h ← error.h編集
08extern int errno;
09
10#include<errno.h> ← 変更
11 
12[root@ns checkpassword-0.90]make && make setup check

以下のエラーがでてインストールの失敗をしないようにするためにerror.hを編集します

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

tcpserverインストール

qmailへのSMTP接続制御を行うため、tcpserverが含まれたucspi-tcpをインストールします。

01[root@ns ~]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz ← tcpserverダウンロード
02 
03[root@ns ~]# tar zxvf ucspi-tcp-0.88.tar.gz ← ucspi-tcp展開
04 
05[root@ns ~]# cd ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリへ移動
06 
07[root@ns ucspi-tcp-0.88]# vi error.h ← error.h編集
08extern int errno;
09
10#include<errno.h> ← 変更
11 
12[root@ns ucspi-tcp-0.88]# make setup check ← ucspi-tcpインストール
13
14
15
16./install
17./instcheck
18 
19[root@ns ucspi-tcp-0.88]# cd ← ucspi-tcp展開先ディレクトリを抜ける
20 
21[root@ns ~]# rm -rf ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリ削除
22 
23[root@ns ~]# rm -f ucspi-tcp-0.88.tar.gz ← ダウンロードしたucspi-tcp削除
24 
25[root@ns ~]# echo '127.:allow,RELAYCLIENT=""' > /etc/tcp.smtp ← 中継許可ホストに自ホストを登録
26 
27[root@ns ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp ← /etc/tcp.smtpをcdb形式に変換

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

5.dot-forwardインストール

sendmail用ユーザ別メール転送設定ファイル(~/.forward)をqmailでも利用するのでインストールします。

01[root@ns ~]# wget http://cr.yp.to/software/dot-forward-0.71.tar.gz ← dot-forwardダウンロード
02 
03[root@ns ~]# tar zxvf dot-forward-0.71.tar.gz ← dot-forward展開
04 
05[root@ns ~]# cd dot-forward-0.71 ← dot-forward展開先ディレクトリへ移動
06 
07[root@ns dot-forward-0.71]# vi error.h ← error.h編集
08extern int errno;
09
10#include<errno.h> ← 変更
11 
12[root@ns dot-forward-0.71]# make setup check ← dot-forwardインストール
13
14
15
16./instcheck
17 
18[root@ns dot-forward-0.71]# cd ← dot-forward展開先ディレクトリを抜ける
19 
20[root@ns ~]# rm -rf dot-forward-0.71 ← dot-forward展開先ディレクトリ削除
21 
22[root@ns ~]# rm -f dot-forward-0.71.tar.gz ← ダウンロードしたdot-forward削除

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

6.fastforwardインストール

sendmail用システム共通メール転送設定ファイル(/etc/aliases)をqmailで利用するのに必要なfastforwardをインストールします

01[root@ns ~]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz ← fastforwardダウンロード
02 
03[root@ns ~]# tar zxvf fastforward-0.51.tar.gz ← fastforward展開
04 
05[root@ns ~]# cd fastforward-0.51 ← fastforward展開先ディレクトリへ移動
06 
07[root@ns fastforward-0.51]# vi error.h ← error.h編集
08extern int errno;
09
10#include<errno.h> ← 変更
11 
12[root@ns fastforward-0.51]# make setup check ← fastforwardインストール
13
14
15
16./instcheck
17 
18[root@ns fastforward-0.51]# cd ← fastforward展開先ディレクトリを抜ける
19 
20[root@ns ~]# rm -rf fastforward-0.51 ← fastforward展開先ディレクトリ削除
21 
22[root@ns ~]# rm -f fastforward-0.51.tar.gz ← ダウンロードしたfastforward削除
23 
24[root@ns ~]# chmod 0 /usr/bin/newaliases ← 旧newaliasesコマンド無効化→なかった
25 
26[root@ns ~]# mv /usr/bin/newaliases /usr/bin/newaliases.bak ← 旧newaliasesコマンドをリネーム→やってない
27 
28[root@ns ~]# ln -s /var/qmail/bin/newaliases /usr/bin/newaliases ← newaliasesコマンドをfastforwardに置換え
29 
30[root@ns ~]# newaliases ← /etc/aliasesのcdb形式データベース作成
31 
32[root@ns ~]# ll /etc/aliases.cdb ← /etc/aliasesのcdb形式データベース作成確認
33-rw-r--r-- 1 root root 5093 11月 10 22:52 /etc/aliases.cdb
34 
35[root@ns ~]# echo "|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb" > /var/qmail/alias/.qmail-default ← /etc/aliases.cdbをqmailが参照するように設定

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

8.qmail設定

インストールが終わったのでqmailの設定をしていきます。

1[root@ns ~]# echo "10485760" > /var/qmail/control/databytes ← 送受信可能メールサイズを10MB=10*1024*1024に制限
2※制限を超えた場合、送信元へエラー通知される
3 
4[root@ns ~]# touch /var/qmail/control/doublebounceto ← ダブルバウンスメール※は破棄する
5※ダブルバウンスメールとは、送信者・受信者ともに存在しないメールのこと

9.Maildir形式のメールボックス作成

デフォルトでインストールされているsendmailのメール格納形式は共有ディレクトリ形式(「/var/spool/mail/ユーザ名」というファイルに全てのメールが蓄積されていく形式)だが、アクセス性能改善及びセキュリティ強化の観点からqmailデフォルトのMaildir形式へ移行します。

新規ユーザ追加時に自動でホームディレクトリにMaildir形式のメールボックスが作成されるようにする

1[root@ns ~]# rm -rf /etc/skel/Maildir
2 
3[root@ns ~]# /var/qmail/bin/maildirmake /etc/skel/Maildir

記事は新規でqmailをインストールするのと、Postfix、Sedmailからの移行ではないため、既存ユーザーのメールデータなどの移行は載せておりません。

10.qmail起動

CGI等でメール通知に利用するsendmailコマンドをqmailに置換えます。

01[root@ns ~]# chmod 0 /usr/lib/sendmail ← 旧sendmailコマンド無効化
02 
03[root@ns ~]# chmod 0 /usr/sbin/sendmail ← 旧sendmailコマンド無効化
04 
05[root@ns ~]# mv /usr/lib/sendmail /usr/lib/sendmail.bak ← 旧sendmailコマンドをリネーム
06 
07[root@ns ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak ← 旧sendmailコマンドをリネーム
08 
09[root@ns ~]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail ← sendmailコマンドをqmailに置換え
10 
11[root@ns ~]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail ← sendmailコマンドをqmailに置換え

11.qmail起動スクリプト作成

01[root@ns ~]# cp /var/qmail/boot/home+df /var/qmail/rc
02 ← qmail起動コマンドサンプルを所定の場所へコピー※dot-forward利用する場合
03 
04[root@ns ~]# cp /var/qmail/boot/home /var/qmail/rc
05 ← qmail起動コマンドサンプルを所定の場所へコピー※dot-forward利用しない場合
06 
07[root@ns ~]# sed -i 's/Mailbox/Maildir\//g' /var/qmail/rc ← メールボックス形式をMaildirに変更
08 
09[root@ns ~]# yum -y install tcsh ← cシェルインストール
10 
11[root@ns ~]# vi /etc/rc.d/init.d/qmail ← qmail起動スクリプト作成
12#!/bin/bash
13#
14# qmail
15#
16# chkconfig: 2345 80 30
17# description: qmail start/stop script
18 
19# Source function library.
20. /etc/rc.d/init.d/functions
21 
22PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
23 
24[ -f /var/qmail/rc ] || exit 0
25 
26start() {
27    # Start daemons.
28    if [ -z $(/sbin/pidof qmail-send) ];  then
29        echo -n "Starting qmail"
30 
31        # qmail
32        csh -cf '/var/qmail/rc &' 2>&1 > /dev/null
33 
34        # SMTP
35        tcpserver -qv -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
36        -x /etc/tcp.smtp.cdb 0 smtp \
37        qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
38        splogger smtp &
39 
40        RETVAL=$?
41        echo
42        [ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
43        return $RETVAL
44    else
45        echo "qmail is already started"
46    fi
47}
48 
49stop() {
50    # Stop daemons.
51    if [ ! -z $(/sbin/pidof qmail-send) ];  then
52        echo -n "Shutting down qmail"
53        /bin/kill $(/sbin/pidof tcpserver)
54        /bin/kill $(/sbin/pidof qmail-send)
55        until [ -z $(/sbin/pidof qmail-send) ] && [ -z $(/sbin/pidof tcpserver) ]; do :; done
56        echo
57        rm -f /var/lock/subsys/qmail
58    else
59        echo "qmail is not running"
60    fi
61}
62 
63case "$1" in
64  start)
65        start
66        ;;
67  stop)
68        stop
69        ;;
70  restart)
71        stop
72        start
73        ;;
74  status)
75        if [ ! -z $(/sbin/pidof qmail-send) ] ;  then
76            echo -n "qmail (pid"
77            echo -n " `/sbin/pidof qmail-send`"
78            echo -n " `/sbin/pidof tcpserver`"
79            echo ") is running..."
80        else
81            echo "qmail is stopped"
82        fi
83        ;;
84   *)
85        echo "Usage: qmail {start|stop|restart|status}"
86        exit 1
87esac
88 
89exit 0
90 
91[root@ns ~]# chmod +x /etc/rc.d/init.d/qmail ← qmail起動スクリプトへ実行権限付加

12.qmail起動

qmailの起動ををします

1[root@ns ~]# /etc/rc.d/init.d/qmail start ← qmail起動
2Starting qmail
3 
4[root@ns ~]# chkconfig qmail --add ← qmailをchkconfigへ追加
5 
6[root@ns ~]# chkconfig qmail on ← qmail自動起動設定
7 
8[root@ns ~]# chkconfig --list qmail ← qmail自動起動設定確認
9qmail           0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2~5のonを確認

これで設定は終了になります。受信メールサーバーがPOP3なため、IMAPに関する設定は省いています。

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS