########################################################## # # # 2014年度 Mail サーバ qmail 再構築手順書 (Ver.1.0) # # # # 2015/01/21(三上 峻): 作成 # # 2015/01/22(三上 峻): 電源落とし,HDD 入替作業追加 # # 2015/01/30(三上 峻): 電源落とし,HDD 交換なしver. # # # ########################################################## 本ドキュメントは2014 年度Mail サーバにおいて発生した問題を解決する ために行う作業をまとめたものである.問題の詳細については epcore-ml: 11875,11876,11898 を参照されたし. 大まかな作業としては, * 現 grey のqmail を停止 * qmail のソースに対し適切なパッチをあて,ビルドする * qmail 再起動 のみである.以下ではその事前準備と当日作業の流れ,不具合が生じた際の 対応作業についてまとめた. □ 事前作業 == qmail ソースとパッチの準備 * 作業ディレクトリの作成・移動 mikataka@grey$ mkdir mail_work % 以下作業ディレクトリは省略 $ cd mail_work * ソース・パッチのダウンロード + 必要なものは以下の通りである. * netqmail-1.06 * patch * qmail-103.patch % DNS 応答に関するパッチ * qmail-date-localtime.patch % ローカルタイムに関するパッチ * qmail-smtpd-relay-reject % リレーサーバとして利用させないためのパッチ * qmail-smtpd-auth-0.31.tar.gz % smtp-auth のためのパッチ(smtp over ssl のために必要) $ wget http://qmail.org/netqmail-1.06.tar.gz $ tar zxvf netqmail-1.06.tar.gz $ wget http://www.ckdhr.com/ckd/qmail-103.patch $ wget http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch $ wget http://www.qmail.org/qmail-smtpd-relay-reject $ wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz $ tar zxvf qmail-smtpd-auth-0.31.tar.gz * qmail のパッチあて, ビルド $ cp -r netqmail-1.06 netqmail-1.06_smtp $ cp -r netqmail-1.06 netqmail-1.06_smtps $ cd netqmail-1.06_smtp $ patch -p1 < ../qmail-103.patch $ patch -p1 < ../qmail-date-localtime.patch $ patch -p1 < ../qmail-smtpd-relay-reject $ make man $ make % $ sudo make setup check は当日行う $ cd ../netqmail-1.06_smtps $ patch -p1 < ../qmail-103.patch $ patch -p1 < ../qmail-date-localtime.patch $ patch -p1 < ../qmail-smtpd-relay-reject $ cp -r ../qmail-smtpd-auth-0.31/* ./ $ patch < ./auth.patch $ make % $ sudo cp qmail-smtpd /var/qmail/bin/qmail-smtpd-auth は当日行う * qmail のスタートファイルの修正 + `id -g nobody` => `id -g qmaild` に変更 + /var/run/tcpsrver_ssmtp.pid => /var/run/tcpserver_ssmtp.pid $ sudo cp -pr /etc/init.d/qmail ./ $ sudo emacs qmail * system 領域のバックアップ + /bk にrsync されているが,最低限バックアップが必要なファイルは以下の通り * /etc/ * /var/qmail + 以下作業手順 $ mkdir bak $ cd bak $ sudo cp -pr /etc/ ./ $ sudo cp -pr /var/qmail/ ./ $ cd ../ * qmail のスタートファイルの修正 + `id -g nobody` => `id -g qmaild` に変更 + /var/run/tcpsrver_ssmtp.pid => /var/run/tcpserver_ssmtp.pid $ sudo cp -pr /etc/init.d/qmail ./ $ sudo emacs qmail □ 当日作業 1 ログイン中の全ユーザーのターミナルにメッセージを表示 # wall The system will shutdown at ??:00 Please logout ([Ctrl]+[D]キーを押すとプロンプトが返ってくる) 2 一般ユーザのアクセスを禁止する. # vim /etc/hosts.deny + 編集する追加内容は以下の通り ALL: ALL + 自分だけ入れるようにする # vim /etc/hosts.allow + 編集する追加内容は以下の通り ALL: (入れ換え作業者 PC のグローバルIP) 3 grey の qmail dovecotを停止する. + /, /home のバックアップ + /etc/cron.daily/rsync を実行する. # nohup /etc/cron.daily/rsync & + ログインしているユーザを強制的にログアウト + ログインしているユーザを調べる $ who + who ででたアカウント名のユーザの PID を調べる $ ps aux | grep [who ででたアカウント名] + ユーザを強制的にログアウト $ sudo -s # kill -KILL [先ほどのアカウント名のPID] + qmail dovecot の停止 # /etc/init.d/qmail stop # ps aux | grep qmail # /etc/init.d/dovecot stop # ps aux | grep dovecot + メールキュー内のメールを確認する # /var/qmail/bin/qmail-qstat 4 ep ドメイン宛のメールがセカンダリメールサーバである www へ配送 されているか確認する. + www サーバで以下を実行して, qmail のキューが時間とともに増加して いることを確認する. root@orange:# /var/qmail/bin/qmail-qstat 詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2014/dvlop/www.html#secondary を参照. 7 qmail のビルド mikataka@grey$ cd mail_work $ cd netqmail-1.06_smtp $ sudo make setup check $ cd ../netqmail-1.06_smtps $ sudo cp qmail-smtpd /var/qmail/bin/qmail-smtpd-auth $ cd ../ 9 スタートファイルの移動 $ sudo cp qmail /etc/init.d/qmail 10 ネットワーク接続・qmail dovecot再起動 + ネットワーク線を繋ぐ + qmail, dovecot 起動 # /etc/init.d/qmail start # /etc/init.d/dovecot start + 起動確認 # ps aux | grep qmail # ps aux | grep dovecot 11 /etc/hosts.deny, /etc/hosts.allow の編集 + /etc/hosts.deny "ALL: ALL" の行を削除 + /etc/hosts.allow から "ALL: (作業用ホストの IP アドレス)" の行を削除 12 メーラでメール配送ができているか確認 + pop, pops, imap, imaps, smtp, smtps の確認 + 海外へメール配送できるか確認 - 鎌田さんなどにメール送ってみる 13 www (secondary) からの配送確認 orange:# /var/qmail/bin/qmail-qstat を実行し,qmail のキューが時間と共に減少していることを確認する. 14 再構築完了をメールで報告, MAIL サーバ再開 15 手引き集の改訂 ###################################################################### ※ 新 grey が上手く動作しなかった場合には旧 system に入れ替え直し, 後日その 原因及び対策を考える. 以下にその時の手順を書く □ 旧system への入替直し 1 新 grey に入っているユーザがいるかもしれないのでターミナルにメッセー ジを表示 # wall The system will shutdown at ??:?? Please logout ([Ctrl]+[D]キーを押すとプロンプトが返ってくる)  2 一般ユーザのアクセスを禁止する. 作業中に誤って一般ユーザがサーバにアクセスできないようにする. 編集するファイルと追加内容は以下の通り # vim /etc/hosts.deny ALL: ALL <-- を追加 他の行はコメントアウト # vim /etc/hosts.allow ALL: GIP <-- を追加 他の行はコメントアウト 3 新 grey の qmail と imap を停止する. + qmail の停止 # /etc/init.d/qmail stop + imap プロセスの停止 # /etc/init.d/dovecot stop + メールキュー内のメールが 0 になったことを 確認. # /var/qmail/bin/qmail-qstat + ネットワーク線を抜く + ep ドメイン宛のメールがセカンダリメールサーバである www へ配送され ているか確認する. www サーバで orange:# /var/qmail/bin/qmail-qstat qmail のキューが時間ともに増加していることを確認. 4 旧 system へ変更 # cd /home/mikataka/mail_work/bak/ # cp -r qmail /var/qmail 5 qmail dovecot 起動 # /etc/init.d/qmail start # /etc/init.d/dovecot start 6 /etc/hosts.deny, /etc/hosts.allow の編集 + /etc/hosts.deny "ALL: ALL" の行を削除 + /etc/hosts.allow から "ALL: (作業用ホストの IP アドレス)" の行を削除 7 www サーバで orange:# /var/qmail/bin/qmail-qstat qmail のキューが時間ともに減少していることを確認. 8 自機で メールが使えるか確認 9 報告メールを投げる 10 トラブルの原因及び対策の調査 ######################################################################