「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
    
  2. /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
    >
    
  3. /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 # ファイルの存在・日時を確認
    
  4. /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 # ファイルの存在・日時を確認
    
  5. postfixの設定の構文チェックをしたあと、postfixを再起動する

    $ sudo postfix check
    (エラーがなければなにも表示されない)
    
    $ sudo systemctl restart postfix
    $ sudo systemctl status postfix # 起動状態を確認
    
  6. 新メールサーバ上で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
    .
    
  7. 上記の送信テストでローカルメールの配送「status=sent」が確認できたあと、DNSのMXレコードを切り替える

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

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

    DNS名タイプTTL(秒)データ
    mail-idcf.remoteroom.jp.A86400AAA.AAA.AAA.AAA
    mail-webarena.remoteroom.jp.A86400BBB.BBB.BBB.BBB

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

    DNS名タイプTTL(秒)データ
    変更前remoteroom.jp.MX8640010 mail-idcf.remoteroom.jp.
    変更後remoteroom.jp.MX8640010 mail-webarena.remoteroom.jp.

メールサーバ切り替え後

  1. しばらくの間、旧メールサーバと新メールサーバでのメールの配送状況を$ sudo tail -f /var/log/mail.logで確認する

  2. 数日後、旧メールサーバへ完全にメールが配送されなくなったら、旧メールサーバ (のpostfix) を停止する

本日の一枚

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