自宅内で運用してたSMTPサーバをさくらのVPSに引っ越した

自宅内のネットワーク環境の見直しの一環で、自宅内の配置していた SMTP & IMAP サーバ(セカンダリ DNS も兼務)を VPS に移動することにしたので、備忘録的なエントリーを書いておく。
移動っていっても、物理的には移動させることはできるわけがないので、既存のサーバと同じサービスを動作させたサーバを VPS 上に用意して、各種サービスは新しく用意したサーバの方を利用するという形。

自宅ネットワークの概要

これで、プロバイダと固定 IP アドレス 8 個のオプション付きで契約しているのが、オプションを外す事ができるようになるのですよ。それでも自宅内で動かしているマシンの台数は大きく減らないんですが…。


さくらの VPS で新規にホストを作成

なにはともあれ、まず移行先になるサーバを用意するということで、さくらの VPS のコントロールパネルからサーバ新規追加を実行。
タイミング良いことに、コントロールパネルβ版からサーバ新規追加すれば 3 ヶ月お試し期間無料というクーポンがあった(さくらの VPS 10 周年キャンペーンのやつ)ので、それを使ってサクサクと申し込み。

さくらのVPSでサーバ新規追加

仮想マシンの用意ができたところで、 カスタム OS として用意されている Debian 10 を選択して、 OS 再インストール。この時点だと、必要最低限のパッケージしかインストールされていない状態なので、/etc/apt/sources.list に以下 2 行を追加して、

deb http://debian-mirror.sakura.ne.jp/debian sid main non-free contrib
deb-src http://debian-mirror.sakura.ne.jp/debian sid main non-free contrib

apt update && apt upgrade で sid へアップグレード。

まずは、これで下準備完了。

既存サーバから設定ファイルとデータを移動

で、こっからがめんどくさい工程なわけですけど、既存サーバから設定ファイルやユーザのファイルを移動。
既存サーバには、各ユーザのメールデータやらなんやらがあるし、apache や postfix などの設定ファイルも流用したいので、それらも移動してやらないといけないんですが、これについては日次でバックアップを作成しているものがあるので、それを新サーバにコピーして展開すれば、ほぼ終わり。実際には、既存サーバから新サーバに切り替えるまではメールデータなどの同期をしておく必要はあるんですけど、そのへんは rsync で同期していけば良いので、まぁそれほど面倒ではない。

実際のところ、 apache や postfix の設定に関しては、ホスト名だったり、 IP アドレスだったりが記述されている部分があるので、既存サーバのものをそのまま上書きしてOK というもんではなかったりするので、注意が必要なんですけどね。

必要な deamon 類をインストールして動作確認

前述の通り、カスタム OS としてインストールされる Debian 10 はホント最低限のパッケージしかインストールされていない状態なので、ここに既存サーバで稼働している daemon の類を、ちまちまと追加インストール。インストールするものの過不足がないかは、既存サーバと新サーバで

# dpkg --get-selections > ~/pkgs.list

のようにインストール済みパッケージのリストを作って、それを diff で比較しながら、インストールを実行。
インストールが終わったら、既存サーバから持ってきた設定ファイルの中を確認して、既存サーバのホスト名や IP アドレスが記述されている部分を書き換えたり、追記した後に新サーバ側の設定ファイルに上書きして、 daemon 再起動。このタイミングでエラーを出力して起動に失敗する daemon は、設定ファイルの再修正や不足パッケージの追加を行って正常に起動することを確認する。(ついでなので、ここで廃止された設定項目の排除なんかもやってしまいます。)

DNS のゾーン情報を書き換えて、サーバを切り替える

ここが、今回のサーバの引っ越しでのキモになるところ。
プライマリ MX の切り替えがあるんで、大まかには以下の通り。

  1. DNS のゾーンファイルの修正を実施。
    • 既存サーバ:A 、 CNAME 、 MX などの各レコードの TTL 短縮( 60秒とか)
    • 新サーバ:A 、CNAME などの各レコードのエントリーを追加
  2. 変更後のゾーンファイルを bind に再読み込み(rndc reload)させて、変更後のエントリの反映させる。念の為、変更した内容通りで名前解決ができるかは確認しておくこと。
  3. 新サーバ用の DV 証明書を Let's Encrypt で取得。(あわせて apache や postfix などに施している TLS 関連の設定を修正する)

と、ここまでは、設定ファイルのコピーとか修正と並行して、実施しておく感じ。
以降のステップは、新サーバ側の用意が終わってから、数日の期間を空けて実施する。何故、ゾーンの TTL を短縮した上で期間を空けるのかというと、色んな所で動作している DNS のコンテンツキャッシュにキャッシュされているであろう自ゾーンの情報の期限切れを狙ってのこと。

  1. MX レコードに記述しているホスト名を既存サーバから新サーバに書き換えて、 bind で設定の再読み込みを実行。この状態で、それぞれのサーバに対するメールの配送状況を確認しつつ、様子見する。
  2. メールの配送が、新サーバの方に切り替わったことが確認できた(≒既存サーバ向けの配送が止まった)ら、再度ユーザのメールスプールの同期を実施。
  3. MUA 側の設定( SMTP や IMAP サーバのホスト名の書き換え)を行って、正しくメールの送受信ができるかを確認。
  4. DNS の設定で、 短縮した TTL を元の値に戻す。

これで、サーバ移動に関する大体の流れ場は掴めるのではないかと思う。移動したいサーバにどんなサービスを割り当ててるのかで、必要な手順が変わってくるので、ここに書いたことはあくまでも参考に、という感じでしょうか?
実際の切り替えも、 各レコードの TTL を予め変更しておいたおかげで、すんなりとメールの配送が切り替わりました。

あとは、プロバイダの方の固定 IP オプションの解約やらなんやらが残ってるので、それもおいおい対応しなくては…。

トラックバック(0)

コメントする