DNS,メールサーバの移行手順

DNS, メール, POP サーバが動いているマシン(以下「旧マシン」)を、 新しいマシン(以下「新マシン」)に移行する手順である。

稼働中のマシンで OS のアップグレードやパッチ適用を行うと、サービスの停止時間が長くなる。 新しいマシンを用意して移行する方法では、事前に設定とテストを済ませられる。 また、問題が起きたときに旧マシンでの稼働に戻せる。

準備

新マシンの準備を行う。

移行作業

移行作業で問題が起きたときは、新マシンへの移行を取りやめて旧マシンの稼働に戻す。 そのため、旧マシンの設定は変更しない(実際、旧マシン側の設定変更は必要ない)。

旧マシンをシャットダウンし、その後に必要なファイル(pop.auth, /var/spool/mail)を 新マシンに移す(オーナーとタイムスタンプを保ったまま移す)。 同時に、新マシンのIPアドレスを旧マシンのIPアドレスに付け替える。 その後に動作チェックを行い、正常に動作しないときは元の状態に戻す。

POP サーバの移行では、pop.auth(POP のパスワードが入ったファイル)をそのまま使い続けられる。 ただし、旧マシンと新マシンで、qpopper の make 時のオプション(GNU gdbm を使う/使わない)を 一致させておく必要がある。オプションが違うと pop.auth が読めない。

同じIPアドレスのマシンを同時に稼働させない。 旧マシンのシャットダウンを確認してから、新マシンのIPアドレスを付け替える。 サービスの停止時間を短くするため、事前に数回の練習を行う。

sendmail の起動設定

Solaris 10 以降では、sendmail は SMF のサービス svc:/network/smtp:sendmail として管理する。起動、停止、状態確認は次のコマンドで行う。

svcadm enable smtp:sendmail
svcadm disable smtp:sendmail
svcs smtp:sendmail

Solaris 9 以前では、起動スクリプト /etc/rc2.d/S88sendmail を使う。 旧マシンからコピーする。

新マシンにおけるバックアップ

sendmail に関する設定ファイル(下記)は、事前に設定とテストが済んでいれば、 バックアップしておく。以降の手順で上書きされる可能性があるためである。

sendmail, POP 関係のファイルの移行

sendmail, POP 関係のファイルを、旧マシンから新マシンに移行する。

[旧マシンでの作業]
cd /var/spool/mail
tar -cvpf /var/spool/all.tar ./*
chown root /var/spool/all.tar
chmod 700 /var/spool/all.tar
# sftp で /var/spool/all.tar と /etc/pop.auth を新マシンへ転送
sftp 「新マシン」
password ****
cd /etc/
lcd /etc/
put pop.auth
cd /var/spool/
lcd /var/spool/
put all.tar
quit
# 旧マシンのシャットダウン
# シャットダウンの前に、sendmail が停止したことを確認
ps -e | grep sendmail
[新マシンでの作業]
chown pop /etc/pop.auth
chmod 600 /etc/pop.auth
chown root /var/spool/all.tar
chmod 700 /var/spool/all.tar
cd /var/spool/mail
tar -xvpf /var/spool/all.tar

この時点で、新マシンにおいて次の確認を行う。

DNS 関係

DNS に関する設定ファイル(下記)は、事前に設定(あるいは移行)とテストが済んでいるものとして説明する。

Solaris 10 以降では、named は SMF のサービス svc:/network/dns/server として管理する。

svcadm enable dns/server
svcs dns/server

IPアドレス関係

新マシンのIPアドレスだけを、旧マシンが使っていたIPアドレスに変更する。マシン名は変更しない。

Solaris 11 では ipadm コマンドを使う。net0 は実際のインタフェース名に読み替える。

ipadm show-addr
ipadm delete-addr net0/v4
ipadm create-addr -T static -a 「IPアドレス」/「プレフィックス長」 net0/v4

新マシンの /usr/named/db.zone

次のように変更する。

変更前

「旧マシン名」  IN A 「IPアドレス」
「新マシン名」  IN A 「仮のIPアドレス」

変更後

「新マシン名」  IN A 「IPアドレス」

同時に、次の1行を追加する。

「旧マシン名」       IN CNAME 「新マシン名」

db.zone の中に旧マシン名が残っていたら、1つずつ確認しながら新マシン名で置き換える。 シリアル番号の更新も必要である。

変更例は次の通り。

2c2
<       2004031712      ; Serial
---
>       2004032301      ; Serial
51c51
< oldmachine               IN      A       133.5.18.160
---
> newmachine               IN      A       133.5.18.160
55c55
< newmachine               IN      A       133.5.18.163
---
> ;newmachine              IN      A       133.5.18.163
85c85
< ; oldmachine             IN      CNAME   newmachine
---
> oldmachine               IN      CNAME   newmachine

新マシンの /usr/named/dbrev.rev

次のように変更する。

変更前

「アドレス」     IN PTR 「旧マシン名」
「仮のアドレス」 IN PTR 「新マシン名」

変更後

「アドレス」     IN PTR 「新マシン名」

dbrev.rev の中に旧マシン名が残っていたら、1つずつ確認しながら新マシン名で置き換える。 シリアル番号の更新も必要である。

2c2
<       2004031702      ; Serial
---
>       2004032301      ; Serial
18c18
< 160           IN      PTR     oldmachine.domainname.jp.
---
> 160           IN      PTR     newmachine.domainname.jp.
22c22
< 163           IN      PTR     newmachine.domainname.jp.
---
> ;163          IN      PTR     newmachine.domainname.jp.

新マシンの /etc/hosts に書かれたIPアドレス

/etc/hosts のIPアドレスを書き換える。

テスト

書き換えが終わったら、named と sendmail に設定を読み込ませて、名前解決を確認する。

rndc reload
svcadm restart smtp:sendmail
dig 「新マシン名」
dig -x 「IPアドレス」

Solaris 9 以前では、次のコマンドを使う。

kill -HUP `cat /var/run/named.pid`
/etc/rc2.d/S88sendmail stop
/etc/rc2.d/S88sendmail start
nslookup 「新マシン名」
nslookup 「IPアドレス」

NIS サーバ

NIS を使っていて、移行作業のために仮のマシン名を NIS サーバに登録していたときは、その登録を削除する。 NIS サーバの hosts ファイル(/var/yp/nis.inputs/hosts)を書き換えて make を実行し、その後に動作チェックを行う。

NIS は Oracle Solaris 11.4 で削除された。Solaris 11.4 以降では、ホスト名の解決は DNS または LDAP で行う。