########################################################## # # # 2012年度 Mail サーバ 再構築手順書 (Ver.1.0) # # # # 2012/10/04 (三上 峻): 作成 # # # ########################################################## □ 構築ドキュメントとインストールするもの ・OS - Debian GNU/Linux 6.0 (squeese) ・サーバソフト - qmail + imap + apop + tcpserver + ezmlm + ezmlm-idx + mess822 (iftocc) + qmailanalog ・その他 - gate - mew - etc... http://www.ep.sci.hokudai.ac.jp/~epmail/ □ メモ ・入れ換え日までに OS、qmail、gate その他ツール群の インストールを済ませておく. ・入れ替え当日に入れ換え担当者の作業 PC に グローバル IP アドレスをとっておく. ・入れ換え日はサーバの入れ替え、細かな設定の調整を行う. ・全作業が完了したらメールで報告して mail サーバ再開. ・細かな作業が多いのでサーバ入れ替えの流れを良く 理解し混乱しないようにする □ 作業内容 ※ 番号の前に * がついているものは現行の grey での作業 [ 入れ換え日前日まで ] ※ 入れ替え日前日までの内容は書いているアドレスのページに 従って行い詳しく書かない. 1. OS のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/basic/index.html 留意点 + Debian GNU/Linux 6.0 (squeese) のインストール 2. qmail のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/qmail.html 留意点 +「qmailのパッケージ」 今回は qmail-src は src でなくパッケージを使う. +「制御ファイル」 /var/qmail/control/ 以下の制御ファイルの設定に注意. ・一旦 usuzumi にて制御ファイルの作成を行い、後で書き換え. ・この時点の usuzumi に ep.sci.hokudai.ac.jp の   MX は向けられていない. +「tcpserver」 /etc/init.d/ の起動スクリプトに注意. ・ 2010 年までの設定の仕方だと init.d が動かない. 対処としては, 次のようにした. qmail-src のパッケージをインストールすると 自動で/etc/init.d/qmail ができるので その中に smtp, pop3, の設定を書く. このときしっかり作法に乗って書く     +「dovecot imap」      以前使っていた uw-imap が動かないので dovecot imap に変更. それに合わせた設定ファイル等の設定を行う. +「受信テスト」 メールアドレスのホスト名はフルドメイン (usuzumi.ep.sci.hokudai.ac.jp) で行う. +「ezmlm-0.53 インストール時」 エラーがでるため, ezmlm-manage.c, 及び ezmlm-return.c に 「#include "log.h"」 を書き加えることで一応インストールできる. 3. quota のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/basic/quota-guide.html 留意点 + quota のインストール確認だけ行う + /etc/fstab を書き換えは 当日 外付け HD を取り付けてから行う。 4. qmailanalog のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/qmailanalog.html 5. mess822 (iftocc) のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/iftocc.html 6. gate のインストール http://www.ep.sci.hokudai.ac.jp/~gate/dvlop/y2012/gate-reconfig.html 7. usuzumi の qmail 停止 http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/qmail_stop.html ※ dovecot に変更したことに伴う変化に注意する 8. mondo* のホームディレクトリ変更 (/etc/passwd) ※ /home に mondo* のホームディレクトリがあると, ※ 付け替え後見えなくなってしまう # mkdir /work # usermod -d /work -m mondo4 # usermod -d /work2 -m mondo10 ※ usermod はアカウントの情報を変更するコマンド ※ -d はホームディレクトリをそのあとの引数に変更する ※ -m は以前のディレクトリを移動する(-m は -d と一緒に使われる) 9. シャットダウン + ネットワーク線を抜く + 電源を落とす # halt [ 入れ換え当日 ] ※ 番号の前に * がついているものは現行の grey での作業 *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) 詳細は http://www.ep.sci.hokudai.ac.jp/~inex/y2008/0627/jitsugi/security.html#hosts を参照. *3 grey の qmail を停止する. + /, /home のバックアップ + /etc/cron.daily/rsync を実行する. # nohup /etc/cron.daily/rsync & + ログインしているユーザを強制的にログアウト + ログインしているユーザを調べる $ who + who ででたアカウント名のユーザの PID を調べる $ ps aux | grep [who ででたアカウント名] + ユーザを強制的にログアウト $ sudo -s # kill -KILL [先ほどのアカウント名のPID] + tcpserver の停止 + tcpserver 関連の PID を確認する $ ps aux | grep tcpserver + 調べた PID を停止する # kill -TERM [PID] + tcpserver プロセスが停止したことを確認する $ ps aux | grep tcpserver + imap 関連の PID を確認する $ ps aux | grep imap + 調べた PID を停止する # kill -TERM [PID] + imap のプロセスが停止したことを確認する $ ps aux | grep imap + メールキュー内のメールを排出. 同時に qmail のプロセスを 停止する + qmail の PID を調べる $ ps aux | grep qmail-send + 調べた PID を停止する # kill -TERM [PID] + メールキュー内のメールを確認する # /var/qmail/bin/qmail-qstat + qmail が停止したことを確認する $ ps aux | grep qmail 手順の詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/qmail_stop.html を参照. 4 ep ドメイン宛のメールがセカンダリメールサーバである www へ配送 されているか確認する. + www サーバで以下を実行して, qmail のキューが時間とともに増加して いることを確認する. root@orange:# /var/qmail/bin/qmail-qstat 詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/www.html#secondary を参照. *5 現 grey 内の重要ファイルをバックアップ + バックアップをとるファイルは以下の通り. - /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/ssh/ /etc/skel/ /etc/cron.daily/rsync /var/spool/cron/ /var/lib/canna/dic/user/ + バックアップする.(今回のバックアップ先は 以下の自分の領域) # mkdir /home/mikataka/mailwork/grey_set # cp -pr /etc/passwd /home/mikataka/mailwork/grey_set/ # cp -pr /etc/shadow /home/mikataka/mailwork/grey_set/ # cp -pr /etc/group /home/mikataka/mailwork/grey_set/ # cp -pr /etc/sudoers /home/mikataka/mailwork/grey_set/ # cp -pr /etc/ssh/ /home/mikataka/mailwork/grey_set/ # cp -pr /etc/skel/ /home/mikataka/mailwork/grey_set/ # cp -pr /etc/cron.daily/rsync /home/mikataka/mailwork/grey_set/ # cp -pr /var/spool/cron/ /home/mikataka/mailwork/grey_set/ # cp -pr /var/lib/canna/dic/user/ /home/mikataka/mailwork/grey_set/ - 再構築終了後, 問題がないことを確認したら削除する *6 5 でバックアップした shadow ファイルから usuzumi に 移すためのファイルを作成する + /etc/shadow の gate で生成される部分だけをコピーした ファイルを作る(今回は /home/mikataka/mailwork/grey_set にバックアップ ファイルを作成したとしてやる) + 入れ替え前のgreyの /etc/shadow を別ファイルにコピー root@grey:# cp /home/mikataka/mailwork/grey_set/shadow /home/mikataka/mailwork/grey_set/shadow.tmp + エディタでひらいて実際に不必要な部分の削除 root@grey:# vim /home/mikataka/mailwork/grey_set/shadow.tmp        + 最初から gate までと最後の nobady を消す (つまり UID 1000 -- 29999 以外のすべてを消す) *7 現 grey をシャットダウン + ネットワーク線をはずしておく + grey シャットダウン後、外付けの HDD の電源を切ってすべて外す. 8 usuzumi シャットダウン + 外付けの HD (/home) を接続 + 外付けの HD (/home.bk) を接続 ※ 旧 grey で /bk として使っていたディスクが壊れたのでつけただけ ※ なので新 grey ではもともと使っていた内臓のものをつかうことにし ※ てsys-bk-out の外付けHD(buffalo)は変えない. + usuzumi (新 grey) をネットワーク線を抜いたまま起動 ※ これ以降の作業でアカウントが書いてないものは usuzumi(新 grey )で行っているコマンドとする. 9 外付け HD のデバイスファイルの確認 + デバイスが認識した確認する. # dmesg | grep sd ※ sd が付いているものを探す. + 見つけた sd のラベルを確認する(今仮にそれが sdc1 と sdd1 だとする) # e2label /dev/sdc1 /home # e2label /dev/sdd1 /home.bk ※ この場合は sdc1 が /home で, ※ sdd1 が /home.bk となる. ※ これ以降は sdc1 が /home で, ※ sdd1 が /home.bk と仮定して話を進める. ※ 実際にやる場合この作業で分かったデバイスファイルでやる 10 仮マウント + 仮のマウントポジションを作る # mkdir /mnt/home/ + 仮マウントする # mount -t ext3 /dev/sdc1 /mnt/home 11 usuzumi へ設定ファイルのコピー + 外付けのHD(/mnt/home)から設定ファイルを移す. - 移すファイルは以下の通り. /etc/shadow /etc/ssh/ /etc/skel/ /var/spool/cron/ /var/lib/canna/dic/user/ + usuzumi(新grey) の移すファイルをバックアップ # mkdir /work/mondo4/backup # cp -pr /etc/shadow /work/mondo4/backup/ # cp -pr /etc/ssh/ /work/mondo4/backup/ # cp -pr /etc/skel/ /work/mondo4/backup/ # cp -pr /var/spool/cron/ /work/mondo4/backup/ # cp -pr /var/lib/canna/dic/user/ /work/mondo4/backup/ + usuzumi(新grey) の /etc/shadow から User UID1000 -- 29999 のユーザ部分を削除する # vim /etc/shadow + usuzumi(新grey) の /etc/shadow へペースト # cat /mnt/home/mikataka/grey_set/shadow.tmp >> /etc/shadow ※ nobady の場所が途中になってしまうので nobady だけ手動で最後の 行に移す + 他のファイルをコピーする. # cp -pr /mnt/home/mikataka/grey_set/ssh/* /etc/ssh/ # cp -pr /mnt/home/mikataka/grey_set/skel/* /etc/skel/ # cp -pr /mnt/home/mikataka/grey_set/rsync /etc/cron.daily/rsync # cp -pr /mnt/home/mikataka/grey_set/cron/* /var/spool/cron/ # cp -pr /mnt/home/mikataka/grey_set/user/* /var/lib/canna/dic/user/ + 仮マウントをアンマウントする # umount /dev/sdb1 12 quota の設定 詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2012/dvlop/basic/quota-guide.html http://www.ep.sci.hokudai.ac.jp/~epwww/dvlop/quota.html を参照 + /etc/fstab の編集 + /home, /home.bk のためのエントリを追加 # vim /etc/fstab + 以下のように追加する LABEL=root / ext4 errors=remount-ro 0 1 LABEL=sys-bk /bk ext4 defaults 0 2 LABEL=/home /home ext3 defaults,usrquota 0 2 LABEL=/home.bk /home.bk ext3 defaults 0 2 + マウントポイントの作成 # mkdir /home.bk # mkdir /bk + マウントする # mount -a + aquota.user を作成する # rm /etc/quota.user # quotaoff -a # rm /home/quota.user # quotacheck -a ※ quotacheck -a を使うとquota.user とaquota.user がないときは ※ aquota.user を作ってくれる. + quota を再起動する # /etc/init.d/quota restart + ユーザにディスク使用制限を掛ける # edquota gate + gate に quota を掛ければ gate によって 登録される者はすべて quota を掛けられる + nano が起動されるので blocks の後の soft と hard を以下 のようにする ※ soft は一定時間の猶予を与える. hard は直ちに停止する ※ soft 10 G, hard 10.8 G とする - 変更後 filetype blocks soft hard inodes soft hard /dev/sdc1: 19568 10000000 10800000 4170 0 0 ※ block はディスクの制限, ※ inode はフィルシステムに作成可能なファイル数の制限となる.       ※ 今回は block にかける. + quota がかけられたか確認する # repquota -u -a | less 13 ホスト名、IP アドレスの変更 + 設定ファイルに記述されているホスト名を "usuzumi" から "grey" へ変更する - 変更するファイルは以下 /etc/hosts /etc/hostname /etc/motd /etc/im/SiteConfig /etc/mailname /etc/init.d/qmail /etc/exim4/update-exim4.conf.conf /var/qmail/control/locals /var/qmail/control/me /var/qmail/control/rcpthosts # vim /etc/hosts ※ ip アドレスをusuzumi: 133.50.160.52 から grey:133.50.160.50 へusuzumi      ※ usuzumi とついているところはgrey へ変更      # vim /etc/hostname # vim /etc/motd # vim /etc/im/SiteConfig # vim /etc/mailname # vim /etc/exim4/update-exim4.conf.conf ※ usuzumi から grey へ # vim /var/qmail/control/locals # vim /var/qmail/control/me # vim /var/qmail/control/rcpthosts # vim /etc/init.d/qmail ※ pop のところが usuzumi のときは grey に変える + IP アドレスを usuzumi: 133.50.160.52 から grey:133.50.160.50 へ # vim /etc/network/interfaces 詳細は http://www.ep.sci.hokudai.ac.jp/~epcore/dvlop/y2012/iplist.html を参照 14 usuzumi (新 grey) を shutdown # halt 15 ネットワークカードの差し替え 16 usuzumi (新 grey) を起動 + BIOS を立ち上げてオンボードのネットワークカードが立ち上がらないよ うにする + 起動後に以下の作業を行う. + qmail 停止 ※ 3 と同様にやる + ネットワーク接続 + ネットワーク線を grey <=> usuzumi のように付け替える  ※ ip と 大計ハブポートの対応に注意      ※  ※ grey: 133.50.160.50 G0916.09  ※ usuzumi: 133.50.160.52 G0916.11 + HDD が正しく認識されているか確認する. $ df -h + ネットワークがつながっている確認する $ ping 133.87.1.11 17 /, /home 領域のバックアップコピー + /etc/cron.daily/rsync を実行する. # cd /var/log # mkdir rsync-log # nohup /etc/cron.daily/rsync & ※ これは時間がかかるので終るのを待たずに次の作業へ 18 gate の公開鍵の更新 + www サーバから新 grey に ssh してもらって公開鍵を更新する.    (www サーバの管理者か gate 管理者にやってもらう) gate@orange:$ ssh grey.ep.sci.hokudai.ac.jp Are you sure want to continue connecting (yes/no)? [yes] 19 gate を動かして, /etc/passwd と /etc/tcp.smtp を生成する. + gate.conf の設定で本気モードにする # vim /etc/gate.conf + 以下のようにする $DEBUG_CONFIG = 1 → $DEBUG_CONFIG = 0 + gate で /etc/passwd と /etc/tcp.smtp を生成する $ ssh orange.ep.sci.hokudai.ac.jp orange:$ telnet grey.ep.sci.hokudai.ac.jp 8888 ※ www に入るのはどのアカウントでもよい 詳細は http://www.ep.sci.hokudai.ac.jp/~gate/dvlop/y2012/gate-reconfig.html#test_use 20 qmail と gate の動作確認 + usuzumi 再起動 (qmail を起動させるため) # reboot + gate の動作確認 $ date $ ls -l /etc/passwd /etc/shadow ※ date ででた時間になっていればよい + gate-daily が動いている確認する $ ps aux | grep gate ※ gate-daily が動いていなければ, 転送は完了している. + /etc/passwd が gate-daily によって更新されているか確認する $ ssh orange.ep.sci.hokudai.ac.jp orange:$ ls -lt /etc/passwd ※ 表示される時間が数分前であればよい + 転送されているか確認する # ls /home/gate/userdv/stable /home/gate/ipdb/stable 詳細は http://www.ep.sci.hokudai.ac.jp/~gate/dvlop/y2012/gate-reconfig.html#test_use 参照 + quota の確認 repquota -u -a | less + qmail の動作試験 + 自分に送ってみる $ echo "to:mikataka@ep.sci.hokudai.ac.jp"| /var/qmail/bin/qmail-inject + 自機などから pop でメールを送信/確認 + 自機などから imap でメール受信確認 メールの送り方の詳細は http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-mail/config/remote.html http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-mail/usage/mew-use.html 参照 21 www (secondary) からの配送確認 orange:# /var/qmail/bin/qmail-qstat を実行し,qmail のキューが時間と共に減少していることを確認する. 22 作業アカウントおよび, 作業ディレクトリ, 設定ファイルのバックアップを削除する. # rm -r /ETC /HOME /home/ogihara/gery_set/ /work/mondo4/backup/ # userdel -r mondo4 # userdel -r mondo10 23 再構築完了をメールで報告, MAIL サーバ再開 24 サーバのテプラ張替え 27 手引き集の改訂 ###################################################################### ※ 新 grey が上手く動作しなかった場合には旧 grey に入れ替え直し, 後日その 原因及び対策を考える. 以下にその時の手順を書く [旧 grey への入れ替え直し] 1 新 grey に入っているユーザがいるかもしれないのでターミナルにメッセー ジを表示 # wall The system will shutdown at ??:?? Please logout ([Ctrl]+[D]キーを押すとプロンプトが返ってくる)  2 一般ユーザのアクセスを禁止する. 作業中に誤って一般ユーザがサーバにアクセスできないようにする. 編集するファイルと追加内容は以下の通り # vim /etc/hosts.deny ALL: ALL <-- を追加 他の行はコメントアウト # vim /etc/hosts.allow ALL: 133.87.45.37 <-- を追加 他の行はコメントアウト 3 新 grey の qmail と imap を停止する. + tcpserver の停止 + tcpserver 関連の PID を確認 (左から 2 つ目に表示されるものが PID) $ ps aux | grep tcpserver + tcpserver の停止 # kill -TERM # kill -TERM # kill -TERM + tcpserver プロセスが停止したことを確認 $ ps aux | grep tcpserver + imap プロセスを確認 $ ps aux | grep imap + imap 関連の停止 # kill -TERM + メールキュー内のメールを排出. 同時にqmail のプロセス停止. $ ps aux | grep qmail # kill -TERM + メールキュー内のメールが 0 になったことを 確認. # /var/qmail/bin/qmail-qstat + qmail プロセスが停止したことを確認. $ ps aux | grep qmail + ネットワーク線を抜く + ep ドメイン宛のメールがセカンダリメールサーバである www へ配送され ているか確認する. www サーバで orange:# /var/qmail/bin/qmail-qstat qmail のキューが時間ともに増加していることを確認. 4 新 grey を shutdown # shutdown -h now 5 ネットワークカードを usuzumi (旧 grey) と交換し, 外付け HDD を usuzumi (旧 grey) に接続. また, メモリも抜いてあるのでメモリも挿す. 6 ネットワークケーブルを抜いた状態で usuzumi (旧 grey) を再起動 ※ ホスト名, IP アドレスは変更されていないので, そのまま用いる 7 usuzumi (旧 grey) の qmail を停止 手順は 新 grey のときと同じ 8 ネットワークケーブルをつなぎ, ネットワーク接続が確立しているか ping コマンド, host コマンドで確認 9 usuzumi (旧 grey) を再起動 10 /etc/hosts.deny, /etc/hosts.allow の編集 + /etc/hosts.deny "ALL: ALL" の行を削除 + /etc/hosts.allow から "ALL: (作業用ホストの IP アドレス)" の行を削除 11 www サーバで orange:# /var/qmail/bin/qmail-qstat qmail のキューが時間ともに減少していることを確認. 12 自機で imap などが使える確認 13 報告メールを投げる 14 テプラを張り直す 15 トラブルの原因及び対策の調査 ######################################################################