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

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円に軽減です。
メールサーバ移行手順
以下、新メールサーバでの作業です。
メールサーバ切り替え前
- postfixをインストールする (インストール途中で入力する「System mail name」を間違えた場合は、後ほど /etc/mailname を修正すればよろし)
$ sudo apt install postfix $ postconf | grep "mail_version =" mail_version = 3.3.0
- /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 >
- /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 # ファイルの存在・日時を確認
- /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 # ファイルの存在・日時を確認
- postfixの設定の構文チェックをしたあと、postfixを再起動する
$ sudo postfix check (エラーがなければなにも表示されない) $ sudo systemctl restart postfix $ sudo systemctl status postfix # 起動状態を確認
- 新メールサーバ上で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 .
上記の送信テストでローカルメールの配送「status=sent」が確認できたあと、DNSのMXレコードを切り替える
DNSのMXレコードを切り替えるとインターネットから新メールサーバにメールが届き始めます。したがってMX切り替えの前に、インターネットから新メールサーバへのSMTP通信 (25/tcp) が行えるよう、新メールサーバ側のファイヤウォール設定等を変更しておく必要があります。
DNSの切り替えは、次のAレコードの設定を予め行っていましたので、
DNS名 タイプ TTL(秒) データ 旧 mail-idcf.remoteroom.jp. A 86400 AAA.AAA.AAA.AAA 新 mail-webarena.remoteroom.jp. A 86400 BBB.BBB.BBB.BBB 新メールサーバでのローカルメール配送が確認できたあと、MXレコードを次のように変更しました。
DNS名 タイプ TTL(秒) データ 変更前 remoteroom.jp. MX 86400 10 mail-idcf.remoteroom.jp. 変更後 remoteroom.jp. MX 86400 10 mail-webarena.remoteroom.jp.
メールサーバ切り替え後
- しばらくの間、旧メールサーバと新メールサーバでのメールの配送状況を
$ sudo tail -f /var/log/mail.log
で確認する - 数日後、旧メールサーバへ完全にメールが配送されなくなったら、旧メールサーバ (のpostfix) を停止する
本日の一枚
ボンボンなチョコレート、美味しいです。