########################################################## # # # 2023 年度 Mail サーバ 再構築手順書 (Ver.1.0) # # # # 2023/12/25(髙橋 聖輝): 2015 年度手順書を基に作成 # # # ########################################################## □ 構築ドキュメントとインストールするもの * OS - Debian GNU/Linux 11.0 (Bullseye) * サーバソフト - qmail + apop + tcpserver + ezmlm + ezmlm-idx + mess822 (iftocc) - dovecot + imap * その他 - gate - mew - etc... http://www.ep.sci.hokudai.ac.jp/~epmail/ □ メモ 作業予定日 01/13(土) 13:30-01/14(日) 21:00 =>新たなネットワークカードが届いてから * 入れ換え日までに OS、qmail、gate その他ツール群の インストールを済ませておく.(済) * 入れ替え当日に入れ換え担当者の作業 PC に グローバル IP アドレスをとっておく.(済) * 入れ換え日はサーバの入れ替え、細かな設定の調整を行う. * 全作業が完了したらメールで報告して mail サーバ再開.(了) * 細かな作業が多いのでサーバ入れ替えの流れを良く 理解し混乱しないようにする(了) * 当日行う作業のうち特記すべきもの(どこまで設定したかは後で確認 2023/12/25 13:30) - quota の設定 - install(済) - /etc/fstab の書き換え等 - 事前にLABEL 付け - root, sys-bk, swap - 先に書き込んでおいてコメントアウトしておく □ 作業内容 ※ 番号の前に * がついているものは現行の grey での作業 [ 入れ換え日数前日まで ] 0. accountholder宛にネットワークカード交換の告知.   1. 新規購入したPCIeネットワークカードのMACアドレスを調べる. 2. 情報基盤センターにMACアドレス変更申請を出す. 3. grey を落として,新規購入したPCIeネットワークカードを挿す.   4. ネットワーク線を新規購入したPCIeネットワークカードに接続する.   5. ネットワークがつながっている確認する. $ ping 133.87.1.11   6. メールの送受信ができるかチェックする. [ 入れ換え日前日まで ] ※ 入れ替え日前日までの内容は書いているアドレスのページに 従って行い詳しく書かない. 1. OS のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/basic/index.html 留意点 + Debian GNU/Linux 11.0 (bullseye) のインストール 2. メールサーバのインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/qmail.html 留意点 + qmail 今回は netqmailをパッケージからではなくソースから入れた. パッケージからだとsmtp-auth 等のパッチをあてることができないため + 制御ファイル /var/qmail/control/ 以下の制御ファイルの設定に注意. * 一旦 silver にて制御ファイルの作成を行い、後で書き換え. * この時点の silver に ep.sci.hokudai.ac.jp の MX は向けられていない. + dovecot パスワードの暗号化に今まで使っていたdovecotpw が使えなくなったためdoveadom の使用に変更(2014 年度から) + ssl http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/ssl.html + 2015 年度からUPKI 証明書を導入 + 受信テスト メールアドレスのホスト名はフルドメイン (silver.ep.sci.hokudai.ac.jp) で行った. 3. quota のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/basic/quota-guide.html 留意点 + quota のインストール確認 + /etc/fstab の書き換え + コメントアウトだけするように設定 + コメントインは当日外付けHDD を付けてから行う(home, home.bk) + デバイスに適切にLABEL をつけておく + root, sys-bk, swap 4. mess822 (iftocc) のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/iftocc.html 5. gate のインストール http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/gate-reconfig.html 6. silver の qmail 停止 http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/qmail_stop.html 7. mondo* のホームディレクトリ変更 (/etc/passwd) (まだやっていない mondo3,5,7) ※ /home に mondo* のホームディレクトリがあると, ※ 付け替え後見えなくなってしまう # mkdir /work # usermod -d /work -m mondo4 ※ usermod はアカウントの情報を変更するコマンド ※ -d はホームディレクトリをそのあとの引数に変更する ※ -m は以前のディレクトリを移動する(-m は -d と一緒に使われる)   8. シャットダウン + ネットワーク線を抜く + 電源を落とす # halt -p 9. DNSサーバにおけるMXレコードの順位確認     + WWWがセカンダリになっているか確認 [ 入れ換え当日 ] ※ 番号の前に * がついているものは現行の 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) *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 の停止 + qmail 関連のプロセスの動作を確認する $ ps aux | grep qmail + qmail を停止する # service qmail stop + qmail が停止したか確認 $ ps aux | grep qmail + 停止していない場合は, PID を確認して, kill する $ ps aux | grep qmail + 調べた PID を停止する # kill -TERM [PID] + 再度qmail が停止したか確認 $ ps aux | grep qmail + メールキュー内のメールを排出. 同時に qmail のプロセスを 停止する + メールキュー内のメールを確認する # /var/qmail/bin/qmail-qstat # /var/qmail/bin/qmail-qread + queue に溜まったメールを強制的に排出 # kill -ALRM `ps ax | grep qmail-send | grep -v grep | awk '{print $1}'` + qmail が停止したことを確認する # ps aux | grep qmail + dovecot の停止 + dovecot 関連のプロセスの動作を確認する $ ps aux | grep dovecot + dovecot を停止する # service dovecot stop + dovecot が停止したか確認 $ ps aux | grep dovecot + 停止していない場合は, PID を確認して, kill する $ ps aux | grep dovecot + 調べた PID を停止する # kill -TERM [PID] + 再度dovecot が停止したか確認 $ ps aux | grep dovecot 手順の詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/qmail_stop.html を参照. 4 ep ドメイン宛のメールがセカンダリメールサーバである www へ配送 されているか確認する. + www サーバで以下を実行して, qmail のキューが時間とともに増加して いることを確認する. root@orange:# /var/qmail/bin/qmail-qstat root@orange:# /var/qmail/bin/qmail-qread 詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/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/ + バックアップする.(今回は/etc/,/var/をすべてバックアップ取る) # mkdir /home/epmail/backup_y2023_replacement # rsync -avh /etc /home/epmail/backup_y2023_replacement # rsync -avh /var /home/epmail/backup_y2023_replacement - 再構築終了後, 問題がないことを確認したら削除する *6 5 でバックアップした shadow ファイルから silver に 移すためのファイルを作成する(ここまで2023/12/25ミーティング) + /etc/shadow の gate で生成される部分だけをコピーした ファイルを作る + 入れ替え前のgreyの /etc/shadow を別ファイルにコピー root@grey:# mkdir /home/epmail/etc_backup_y2023 root@grey:# cp /etc/shadow /home/epmail/etc_backup_y2023/shadow.tmp + エディタでひらいて実際に不必要な部分の削除 root@grey:# vim /home/epmail/etc_backup_y2023/shadow.tmp + 最初から gate までと最後の nobody を消す (つまり UID 1000 -- 29999 以外のすべてを消す) *7 現 grey をシャットダウン + ネットワーク線をはずしておく + grey シャットダウン後、外付けの HDD の電源を切ってすべて外す. # halt -p 8 silver 起動 + 外付けの HD (/home) を接続 + 外付けの HD (/home.bk) を接続 + silver (新 grey) をネットワーク線を抜いたまま起動 ※ これ以降の作業でアカウントが書いてないものは silver(新 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 silver へ設定ファイルのコピー + 外付けのHD(/mnt/home)から設定ファイルを移す. - 移すファイルは以下の通り. /etc/shadow /etc/ssh/ /etc/skel/ /var/spool/cron/ /var/lib/canna/dic/user/ + silver(新grey) の移すファイルをバックアップ # mkdir /work/mondo7/backup_y2023 # rsync -av /etc/shadow /work/mondo7/backup_y2023/ # rsync -av /etc/ssh/ /work/mondo7/backup_y2023/ # rsync -av /etc/skel/ /work/mondo7/backup_y2023/ # rsync -av /var/spool/cron/ /work/mondo7/backup_y2023/ # rsync -av /var/lib/canna/dic/user/ /work/mondo7/backup_y2023/ + silver(新grey) の /etc/shadow から User UID1000 -- 29999 のユーザ部分を削除する # vim /etc/shadow + silver(新grey) の /etc/shadow へペースト # cat /mnt/home/epmail/etc_backup_y2023/shadow.tmp >> /etc/shadow ※ nobody の場所が途中になってしまうので nobody だけ手動で最後の 行に移す + 他のファイルをコピーする. # rsync -av /mnt/home/epmail/backup_y2023_replacement/etc/ssh/* /etc/ssh/ # rsync -av /mnt/home/epmail/backup_y2023_replacement/etc/skel/* /etc/skel/ # rsync -av /mnt/home/epmail/backup_y2023_replacement/etc/cron.daily/rsync /etc/cron.daily/rsync # rsync -av /mnt/home/epmail/backup_y2023_replacement/var/spool/cron/* /var/spool/cron/ # rsync -av /mnt/home/epmail/backup_y2023_replacement/var/lib/canna/dic/user/* /var/lib/canna/dic/user/ + 仮マウントをアンマウントする # umount /dev/sdc1 12 quota の設定 詳細は http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/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=swap none ext4 swap 0 0 LABEL=/home /home ext3 defaults,usrquota 0 2 LABEL=/home.bk /home.bk ext4 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 12 G とする - 変更後 filetype blocks soft hard inodes soft hard /dev/sdc1: 19568 10000000 12000000 4170 0 0 ※ block はディスクの制限, ※ inode はフィルシステムに作成可能なファイル数の制限となる. ※ 今回は block にかける. + 全ユーザへのquota 制限の適用 # edquota -p gate `gate-user-list stable ` + 一部のユーザ(hogehoge)のみquota 制限を外すときは以下のように行う # edquota hogehoge + soft hard を 0 にする  - 下記ユーザーの制限を外す   matryo seiko fujimori nagano + quota が適切にかけられたか確認する # repquota -u -a | lv 13 ホスト名、IP アドレスの変更 + 設定ファイルに記述されているホスト名を "silver" から "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 アドレスをsilver: 133.87.45.23 から grey:133.50.160.50 へ ※ silver とついているところはgrey へ変更 # vim /etc/hostname # vim /etc/motd # vim /etc/im/SiteConfig # vim /etc/mailname # vim /etc/exim4/update-exim4.conf.conf ※ silver から grey へ # vim /var/qmail/control/locals # vim /var/qmail/control/me # vim /var/qmail/control/rcpthosts # vim /etc/init.d/qmail ※ silver から grey へ + IP アドレスを silver: 133.87.45.23 から grey:133.50.160.50 へ ネットマスクをsilver: 255.255.255.0 から grey: 255.255.254.0 へ networkをsilver: 133.87.45.0 から grey: 133.50.160.0 へ broadcastをsilver: 133.87.45.255 から grey: 133.50.161.255 へ gatewayをsilver: 133.87.45.1 から grey: 133.50.160.1 へ # vim /etc/network/interfaces 詳細は http://www.ep.sci.hokudai.ac.jp/~epcore/dvlop/y2015/iplist.html を参照 14 silver (新 grey) を shutdown し,ネットワークカードを差し替える # halt -p 15 silver (新 grey) を起動 + BIOS を立ち上げてオンボードのネットワークカードが立ち上がらないよ うにする + 起動後に以下の作業を行う. + qmail/dovecot 停止 ※ 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 16 SSL 証明書の更新 + 事前に証明書の結合・秘密鍵のパスフレーズ削除は終わらせておく + qmail: host証明書 + 中間証明書 + 秘密鍵 の結合証明書(qmail.pem)を取得 + dovecot: それぞれ別々に取得 + 今回はsilverで取得した証明書とgreyの証明書を入れ替える + silver・greyの証明書を自身のwwwサーバにアップロード,silver・greyからsftpで証明書を取得 サーバー証明書・秘密鍵 + qmail /var/qmail/server.key/qmail.pem + dovecot /etc/dovecot/dovecot.cer /etc/dovecot/nii-odca4g7rsa.cer /etc/dovecot/private/dovecot_key.pem をwwwサーバにアップロード.具体的にはgreyの証明書・秘密鍵は/home/tmasa/mail_work/upki_ssl_greyに, silverの証明書・秘密鍵は/home/tmasa/mail_work/upki_ssl_silverにアップロードする. + qmail + 結合証明書を取得 # sftp tmasa@www:~/mail_work/upki_ssl_grey/qmail.pem ./qmail.pem + これまでのファイルと置き換え # cp qmail.pem /var/qmail/server.key/ + 権限変更 # chmod 700 /var/qmail/server.key/qmail.pem + dovecot + 証明書,秘密鍵の取得 # sftp tmasa@www:~/mail_work/upki_ssl_grey/dovecot.cer ./ # sftp tmasa@www:~/mail_work/upki_ssl_grey/nii-odca4g7rsa.cer ./ # sftp tmasa@www:~/mail_work/upki_ssl_grey/dovecot_key.pem ./ + これまでのファイルと置き換え # cp dovecot.cer /etc/dovecot/dovecot.cer # cp nii-odca4g7rsa.cer /etc/dovecot/ # cp dovecot_key.pem /etc/dovecot/private/dovecot_key.pem # chmod 700 /etc/dovecot/private/dovecot_key.pem ここまで完了するとsilver(新grey)に旧greyの証明書を入れたことになる. 17 /, /home 領域のバックアップコピー + /etc/cron.daily/rsync を実行する. # cd /var/log # mkdir rsync-log # nohup /etc/cron.daily/rsync & ※ これは時間がかかるので終るのを待たずに次の作業へ 18 gate の公開鍵の更新 + www サーバから新 grey に ssh してもらって公開鍵を更新する. gate@orange:$ ssh-keygen -R grey.ep.sci.hokudai.ac.jp gate@orange:$ ssh-keygen -R 133.50.160.50 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/y2011/gate-reconfig.html#test_use 20 gate/quota/qmail/dovecot の動作確認 + silver 再起動 (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/y2011/gate-reconfig.html#test_use 参照 + quota の確認 # repquota -u -a | less + qmail の動作試験 + メーラから pop でメールを受信確認 + pop, pop over ssl + メーラから smtp でメールを送信確認 + smtp, smtp over ssl + dovecot の動作試験 + メーラから imap でメールを受信確認 + imap, imap over ssl 詳細は 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/mikataka/grey_set/ /work/mondo4/backup/ # userdel -r mondo4 # userdel -r mondo4 23 再構築完了をメールで報告, MAIL サーバ再開 24 サーバのテプラ張替え 25 手引き集の改訂 ###################################################################### ※ 新 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.XX <-- 入替担当者のグローバルIP を追加 他の行はコメントアウト 3 新 grey の qmail と dovecot を停止する. + dovecot 停止 # service dovecot stop + qmail 停止 # service qmail stop + 停止確認 # ps aux | grep qmail + メールキュー内のメール数の確認. # /var/qmail/bin/qmail-qstat # /var/qmail/bin/qmail-qread + メールキュー内のメールを排出. 同時にqmail のプロセス停止. # kill -ALRM `ps ax | grep qmail-send | grep -v grep | awk '{print $1}'` + qmail プロセスが停止したことを確認. # ps aux | grep qmail + ネットワーク線を抜く + ep ドメイン宛のメールがセカンダリメールサーバである www へ配送されているか確認する. orange:# /var/qmail/bin/qmail-qstat qmail のキューが時間ともに増加していることを確認. 4 新 grey を shutdown # halt -p 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 トラブルの原因及び対策の調査 ######################################################################