「IDCFクラウド個人向けサービス終了」なので、catch allな自ドメインメールサーバを他VPSへ移行した手順

「IDCFクラウド個人向けサービス終了」なので、catch allな自ドメインメールサーバを他VPSへ移行した手順
Page content

IDCFクラウドのVPSで運用していた自ドメインのメールサーバを、2019年3月31日に実施されるIDCFクラウドの個人向けサービス終了に備えて、この度WebARENAのVPSへ引っ越ししました。引越時の手順を簡単に記録しておきます。

なお、このメールサーバは、自ドメインに届くすべてのメールを外部の別メールアドレス (GmailとOutlook.com) に転送するだけの役割です。そのため、メールのサーバへの保存 (スプール) は行わずcatch all的な転送機能を有効化しています。

概要

  • 移行元のサーバサービス: 2017年7月に契約した、IDCFクラウド Light.S1 (1vCPU, Mem 1GB, SSD 5GB, 300円/月)
  • 移行先のサーバサービス: WebARENA VPSクラウド 新1G-SSDタイプ(KVM) (1vCPU, Mem 1GB, SSD 50GB, 360円/月)
  • メールサーバのOS・MTA: 新旧ともに、Ubuntu 18.04 LTS + postfix
  • 対象ドメイン: remoteroom.jp
  • 権威DNSサービス: Google Cloud DNS

私的な余談

上記のメールサーバ用のIDCF Light.S1 (SSD 5GB) のほかに、もう1台、ウェブサーバ用にストレージ大きめのLight.S1 (SSD 15GB, 500円/月) を借りていましたが、私が個人的趣味でやっているウェブサイトに、サーバを別途1台立てておくほどのアクセスや実験需要なんて皆無。この引越を契機に、サーバ2台をWebARENAの1台に集約することにしました。サーバ代は月額300+500円から360円に軽減です。

メールサーバ移行手順

以下、新メールサーバでの作業です。

メールサーバ切り替え前

  1. postfixをインストールする (インストール途中で入力する「System mail name」を間違えた場合は、後ほど /etc/mailname を修正すればよろし)
$ sudo apt install postfix

$ postconf | grep "mail_version ="
mail_version = 3.3.0
  1. /etc/postfix/main.cfに次の設定を追加する
$ sudo vim /etc/postfix/main.cf

$ diff /etc/postfix/main.cf.original /etc/postfix/main.cf
30a31,37
> smtpd_tls_security_level = may
> smtpd_tls_received_header = yes
> smtp_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
> smtp_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
> #smtp_tls_CAfile =
> smtp_use_tls = yes
>
45a53,56
>
> virtual_alias_domains = remoteroom.jp
> virtual_alias_maps = hash:/etc/postfix/virtual_users
>
  1. /etc/postfix/virtual_usersに自ドメインのメール転送設定を追加し、その後にvirtual_usersのデータベースを生成する
$ sudo vim /etc/postfix/virtual_users

$ cat /etc/postfix/virtual_users
@remoteroom.jp	転送先1@gmail.com,転送先2@outlook.com

$ sudo postmap /etc/postfix/virtual_users
$ ls -al /etc/postfix/virtual_users.db # ファイルの存在・日時を確認
  1. /etc/aliasesにローカルユーザのメール転送設定を追加し、その後にaliasesのデータベースを生成する
$ sudo vim /etc/aliases

$ cat /etc/aliases
# See man 5 aliases for format
postmaster:    root

root: mah
mah: 転送先1@gmail.com,転送先2@outlook.com

$ sudo newaliases
$ ls -al /etc/aliases.db # ファイルの存在・日時を確認
  1. postfixの設定の構文チェックをしたあと、postfixを再起動する
$ sudo postfix check
(エラーがなければなにも表示されない)

$ sudo systemctl restart postfix
$ sudo systemctl status postfix # 起動状態を確認
  1. 新メールサーバ上でmah@localhost (mahは存在するユーザアカウントの一例) 宛のローカルなメール送信テストを行い、設定した転送先へのメールの配送「status=sent」を$ sudo tail -f /var/log/mail.logで確認する
$ sendmail mah@localhost
From: anonymous@example.com
To: mah@localhost
Subject: test

hello world
.
  1. 上記の送信テストでローカルメールの配送「status=sent」が確認できたあと、DNSのMXレコードを切り替える

    DNSのMXレコードを切り替えるとインターネットから新メールサーバにメールが届き始めます。したがってMX切り替えの前に、インターネットから新メールサーバへのSMTP通信 (25/tcp) が行えるよう、新メールサーバ側のファイヤウォール設定等を変更しておく必要があります。

    DNSの切り替えは、次のAレコードの設定を予め行っていましたので、

    DNS名タイプTTL(秒)データ
    ��|ail-idcf.remoteroom.jp.||6400|AA.AAA.AAA.AAA|
    ��|ail-webarena.remoteroom.jp.||6400|BB.BBB.BBB.BBB|

    新メールサーバでのローカルメール配送が確認できたあと、MXレコードを次のように変更しました。

    DNS名タイプTTL(秒)データ
    ��更前|emoteroom.jp.|X|6400|0 mail-idcf.remoteroom.jp.|
    ��更後|emoteroom.jp.|X|6400|0 mail-webarena.remoteroom.jp.|

メールサーバ切り替え後

  1. しばらくの間、旧メールサーバと新メールサーバでのメールの配送状況を$ sudo tail -f /var/log/mail.logで確認する
  2. 数日後、旧メールサーバへ完全にメールが配送されなくなったら、旧メールサーバ (のpostfix) を停止する

本日の一枚

ボンボンなチョコレート、美味しいです。