[Memo2014][ITPASS] qmail のインストールと設定
qmail のインストールと設定
ソース・パッチの取得
ディレクトリを作成した.
# mkdir /var/qmail
- ユーザ・グループを追加した.
このときに, 以下のようなレスポンスが返ってくるが問題ないので先へ進めた.
# adduser --system --ingroup nofiles --home /var/qmail qmaild 警告: 指定されたホームディレクトリ /var/qmail はすでに存在しています。 システムユーザ `qmaild' (UID 119) を追加しています... 新しいユーザ `qmaild' (UID 119) をグループ `nofiles' に追加しています... ホームディレクトリ `/var/qmail' はすでに存在します。`/etc/skel' からのコピーを行いません。 adduser: 警告: ホームディレクトリ `/var/qmail' は、現在作成中のユーザの所属になっていません。 # groupadd -g 200 nofiles # adduser --system --ingroup nofiles --home /var/qmail/alias alias # adduser --system --ingroup nofiles --home /var/qmail qmaild # adduser --system --ingroup nofiles --home /var/qmail qmaill # adduser --system --ingroup nofiles --home /var/qmail qmailp # groupadd -g 201 qmail # adduser --system --ingroup qmail --home /var/qmail qmailq # adduser --system --ingroup qmail --home /var/qmail qmailr # adduser --system --ingroup qmail --home /var/qmail qmails
ソース, glib 2.3.1 以降用のパッチの取得と展開を行った.
# cd /usr/local/src # wget http://cr.yp.to/software/qmail-1.03.tar.gz # tar xvfz qmail-1.03.tar.gz # wget http://www.stackasterisk.jp/tech/systemConstruction/qmail01/qmail-glibc.patch # wget -U test http://www.ksknet.net/sample/qmail-date-localtime.patch
二つ目の wget コマンドを実行した際に, パッチファイルの中身が正しくなかったので, 以下のコマンドを実行した,
# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2012/qmail/qmail-glibc.patch
qmail-localに対するパッチ, 存在しないユーザ宛のメールを受け取らないようにするパッチ, DNS サーバーからのレスポンスが 512 バイトを超える場合にも正しく取り扱えるようにするためのパッチをそれぞれ入手した.
# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2012/qmail/qmail-local.patch # wget http://code.dogmap.org./qmail/qmail-1.03-realrcptto-2006.12.10.patch # wget http://www.ckdhr.com/ckd/qmail-103.patch
パッチの適用とコンパイル
展開したディレクトリに移動した後, 上で取得したパッチを当てビルドする. ビルドとチェックを行った.
# cd qmail-1.03 # patch < ../qmail-glibc.patch # patch -p1 < ../qmail-date-localtime.patch # patch -p1 < ../qmail-1.03-realrcptto-2006.12.10.patch # patch < ../qmail-local.patch # patch < ../qmail-103.patch # /etc/init.d/qmail stop # /etc/init.d/tcpserver stop # make # make man # make setup # make check
/etc/init.d/qmail stop と /etc/init.d/tcpserver stop の行について以下の様なエラーが出るが問題はないので先に進めた.
bash: /etc/init.d/qmail: そのようなファイルやディレクトリはありません bash: /etc/init.d/tcpserver: そのようなファイルやディレクトリはありません
設定
config スクリプトを実行した.
# ./config
cat コマンドで以下のように正しく情報が書き込まれているか確認した.
# cat /var/qmail/control/defaultdomain scitec.kobe-u.ac.jp # cat /var/qmail/control/locals localhost tako-itpass.scitec.kobe-u.ac.jp # cat /var/qmail/control/me tako-itpass.scitec.kobe-u.ac.jp # cat /var/qmail/control/plusdomain ac.jp # cat /var/qmail/control/rcpthosts localhost tako-itpass.scitec.kobe-u.ac.jp
以下の項目についても確認が必要と書かれていたが, のちの作業で作成されるため, 確認は不要と思われる.
/var/qmail/control/databytes 100000000 /var/qmail/control/defaulthost tako-itpass.scitec.kobe-u.ac.jp
メールの容量制限をするため, 以下のように設定した.
# echo 100000000 >> /var/qmail/control/databytes # chmod 644 /var/qmail/control/databytes
以下の作業を行った.
# echo itpass.scitec.kobe-u.ac.jp >> /var/qmail/control/locals # echo itpass.scitec.kobe-u.ac.jp >> /var/qmail/control/rcpthosts # echo tako-itpass.scitec.kobe-u.ac.jp >> /var/qmail/control/defaulthost # chmod 644 /var/qmail/control/defaulthost
また, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp のメールも受け取れるようにした.
# echo epa.scitec.kobe-u.ac.jp >> /var/qmail/control/locals # echo epa.scitec.kobe-u.ac.jp >> /var/qmail/control/rcpthosts # echo aoe.scitec.kobe-u.ac.jp >> /var/qmail/control/locals # echo aoe.scitec.kobe-u.ac.jp >> /var/qmail/control/rcpthosts
これらの情報を qmail-showctl(8) で確認する.
# /var/qmail/bin/qmail-showctl
システムのメールアドレスの転送先設定
root 宛のメールをフォワードする先に itpadmin を指定した. なお, これ以降ログでは"_at_" は "@" に読み替える.
# cd /var/qmail/alias # echo '&itpadmin_at_itpass.scitec.kobe-u.ac.jp' > .qmail-root # echo '&root' > .qmail-postmaster # echo '&root' > .qmail-mailer-daemon # echo '&root' > .qmail-bin # echo '&root' > .qmail-daemon # echo '&root' > .qmail-games # echo '&root' > .qmail-ingres # echo '&root' > .qmail-nobody # echo '&root' > .qmail-sys # echo '&root' > .qmail-uucp # echo '&root' > .qmail-mail # echo '&root' > .qmail-anonymous # echo '&root' > .qmail-www-data # chmod 644 .qmail-*
インストールした実行ファイルへのパスの設定
- インストールした qmail の実行ファイル群へパスを通した.
インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する.
MANDATORY_MANPATH /var/qmail/man MANPATH_MAP /var/qmail/bin /var/qmail/man MANDB_MAP /var/qmail/man /var/qmail/man
メールの配送先設定
/etc/profileに以下を追記する.
MAIL="$HOME/Mailbox" MAILDROP="$HOME/Mailbox" export MAIL MAILDROP
/etc/csh.cshrcに以下を追記する.
setenv MAIL $HOME/Mailbox setenv MAILDROP $HOME/Mailbox
起動
以下のコマンドを実行する.
# cp /var/qmail/boot/home /var/qmail/rc
- Debian の qmail パッケージから起動スクリプトを大幅に書き換えたものが
<URL:../server/2012/qmail/qmail> から入手できるので, /etc /init.d/ 以下に cp し, パーミッションを設定した.
# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2012/qmail/qmail # cp ./qmail /etc/init.d/ # cd /etc/init.d # chown root:root /etc/init.d/qmail # chmod 755 /etc/init.d/qmail
さらに, vi などで /etc/init.d/qmail の QMAIL=/var/qmail の上に以下を追記しなければならないが, 元から書かれていたため追記しなかった.
### BEGIN INIT INFO # Provides: qmail # Required-Start: $remote_fs # Required-Stop: $remote_fs # Should-Start: $network $syslog # Should-Stop: $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start and stop qmail # Description: qmail is qmail ### END INIT INFO
ブート時に自動的に起動させるため, 以下のコマンドで各 /etc/rc.X ディレクトリからシンボリックリンクを貼った.
# insserv qmail
qmailを起動した.
# /etc/init.d/qmail start
配送テスト
[テスト 1] ローカル配送テスト part1
以下のコマンドを実行した後で, ~chikuwa4/Mailbox にメールが送られることを確認した.
$ echo to: chikuwa4 | /var/qmail/bin/qmail-inject
[テスト 2] ローカル配送テスト part2
存在しない宛先に送り, バウンスメールが ~chikuwa4/Mailbox に送られてくることを確認した.
$ echo to: nonexistent | /var/qmail/bin/qmail-inject
- itpadmin グループが存在しないので triple bounce となった
[テスト 3] リモート送り出しテスト part1
他のホスト上のアカウントへ送って, 届いていることを確認した.
$ echo to: ryohori_at_gfd-dennou.org | /var/qmail/bin/qmail-inject
[テスト 4] リモート送り出しテスト part2
他のホスト上の存在しない宛先に送り, f オプションでバウンスの送り先を指定した.
$ echo to: hoge_at_gfd-dennou.org | /var/qmail/bin/qmail-inject -f 1123430s_at_stu.kobe-u.ac.jp
- 1123430s_at_stu.kobe-u.ac.jp にバウンスが来ていることを確認した.
sendmail の「置き換え」
まず, exim4 を起動停止した.
# /etc/init.d/exim4 stop
exim のブートスクリプトは, /etc/init.d/exim4 で, /etc/rc[2-5].d/S20exim, /etc/rc{1,6}.d/K20exim からリンクが張られているので, これを無効にした.
# insserv -r exim4 # chmod 000 /etc/init.d/exim4 # mv /etc/init.d/exim4 /etc/init.d/exim4.bak
cron から exim が呼び出される処理を無効にするために, /etc/cron.daily/exim4-base の先頭の方に次の行を書き足した.
#!/bin/sh # by Yasuhiro MORIKAWA, 2007-08-10. We need not exim. if [ ! -f /etc/exim.conf ]; then exit 0 fi
sendmailを置き換えた.
# chmod 000 /usr/lib/sendmail # chmod 000 /usr/sbin/sendmail # mv /usr/lib/sendmail /usr/lib/sendmail.bak # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
exim4 関係のパッケージを hold して, 更新されないようにした.
# echo exim4 hold | dpkg --set-selections # echo exim4-base hold | dpkg --set-selections # echo exim4-config hold | dpkg --set-selections # echo exim4-daemon-light hold | dpkg --set-selections
とりあえず用の smtp の設定
/etc/inetd.conf に以下を追加した.
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
/etc/inetd.conf を読み直させるために次を実行した.
# /etc/init.d/openbsd-inetd restart
qmail の設定ファイルを作成する. chikuwa4のアカウントの設定ファイル .qmail を作成し,
/home/ユーザ名/Mailbox
と書いた.
以下のコマンドを実行した.
$ export MAIL=~/Mailbox $ mail
- 他のホストのアドレスで chikuwa4_at_tako-itpass.scitec.kobe-u.ac.jp へメールを送信し, Maildir の中身を確認した.
Keyword(s):
References:[[ITPASS2014]2014年度サーバ構築ログ]