qmailのインストールから初期設定
qmailというメールのパッケージをインストールします。今までは参考サイトをみてそのままインストールしていましたが、qmailの参考サイトがなくなってしまったのと、殆どのサイトがわかりづらかったりしたので、必要なところだけを書いています。なお、最終的にはバーチャルドメインで使えるようにqmail+vpopmail+qmailadminのようにしています。
参考サイト:http://www.geocities.jp/wakuwakustation/qmail.html
1.qmailインストール準備
qmailインストールに必要なユーザ、グループを作成する
[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ユーザ作成
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
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削除
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
以下のエラーがでてインストールの失敗をしないようにするために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形式に変換
/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削除
/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が参照するように設定
/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 ← ダブルバウンスメール※は破棄する ※ダブルバウンスメールとは、送信者・受信者ともに存在しないメールのこと
9.Maildir形式のメールボックス作成
デフォルトでインストールされているsendmailのメール格納形式は共有ディレクトリ形式(「/var/spool/mail/ユーザ名」というファイルに全てのメールが蓄積されていく形式)だが、アクセス性能改善及びセキュリティ強化の観点からqmailデフォルトのMaildir形式へ移行します。
新規ユーザ追加時に自動でホームディレクトリにMaildir形式のメールボックスが作成されるようにする
[root@ns ~]# rm -rf /etc/skel/Maildir [root@ns ~]# /var/qmail/bin/maildirmake /etc/skel/Maildir
記事は新規で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に置換え
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起動スクリプトへ実行権限付加
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を確認
これで設定は終了になります。受信メールサーバーがPOP3なため、IMAPに関する設定は省いています。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS