Amazon WorkMailに移行する

公開日:2021年11月07日
最終更新日:2021年11月07日
レベル:★★★☆☆
PostfixとDovecotで動かしていたメールサーバをAmazon WorkMailに移行してみましたので、その際に行った方法をご紹介します。

今までPostfixとDovecotで稼働させていたユーザメール送受信システムをAmazon WorkMail(& Amazon Simple Email Service)への移行をおこないました。以降はその際のログの抜粋からAmazon WorkMail(以降、単にWorkMailと記します)のセットアップ方法をご紹介します。

以降の設定で、ウェブブラウザやデスクトップメーラを使ったメールの送受信をするためのWorkMailのセットアップができます。
ですが、EC2などサーバからのメール送信にはこれだけでは対応できません。別途Amazon Simple Email Service(SES)の設定が必要です。

前提条件

  1. 現状のメールシステムではメール受信にはIMAPを使用。WorkMailへ変更の際、サーバに蓄積されているユーザのメールデータを移行する。
  2. DNSはAmazon Route 53を使用せず、現状のまま運用する(現状、Value DomainのDNSを使用している)。
  3. 現状Postfixのエイリアス指定しているものを極力移行する。

難しかったところ

Amazon Route 53を使用しなかったためか、やはりメール関連のDNS設定部分がやや難航しました。DNSに関する知識が必要な部分です。

その他の部分は、画面の指示に従っていけば比較的スムーズに進みます。

初期設定

WorkMailの管理コンソールに入る前にリージョンを選択します。
2021年11月現在、WorkMailを提供しているのは「欧州(アイルランド)」「米国東部(バージニア北部)」「米国西部(オレゴン)」の3リージョンです。
今回は「米国西部(オレゴン)」を選択しました。

Create organization」ボタンをクリックします。

Amazon Route 53を使用せず、既に取得済み・運用中のDNSを使用するので「External domain」を選択します。
Enter your domain name」に今回設定するメールのドメイン名を入力します。
Alias」には識別しやすい名前を設定します。

Organizationが作成されました。Alias名をクリックします。

Manage domains」ボタンをクリックします。

設定するドメインのリンクをクリックします。

DNSに設定する必要がある諸設定が表示されるので「Copy all」ボタンをクリックして内容をクリップボードにコピーします。

こんな内容がコピーされます(内容はダミーです)。

_amazonses.abc.com. 300 TXT "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
abc.com. 300 MX 10 inbound-smtp.us-west-2.amazonaws.com.
autodiscover.abc.com. 300 CNAME autodiscover.mail.us-west-2.awsapps.com.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx._domainkey.abc.com. 300 CNAME xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.dkim.amazonses.com.
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww._domainkey.abc.com. 300 CNAME wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.dkim.amazonses.com.
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy._domainkey.abc.com. 300 CNAME yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.dkim.amazonses.com.
abc.com. 300 TXT "v=spf1 include:amazonses.com ~all"
_dmarc.abc.com. 300 TXT "v=DMARC1;p=quarantine;pct=100;fo=1"

この内容をDNSに登録していきます。

Value Domainの場合は下図のようなページから登録します。
単に上の内容を貼り付ければ良いというものではなく、Value DomainのDNS設定文法に則って書いていく必要があります。
主な注意点は次のようなものです。

  • TXTレコードのダブルクォーテーションは省く
  • TXT, CNAME, MX は小文字で先頭に記述
  • TTLは省く

DNSへの設定が確認でき次第、「Pending」「Missing」から「Verified」に変わっていきます。
ここで MAIL FROMを設定するために「Amazon SES」のリンクをクリックします。

Amazon SESの管理コンソールに移るので左側ペインの「Verified identities」をクリックします。

コメント

設定するドメインのリンクをクリックします。

Edit」ボタンをクリックします。

Use a custom MAIL FROM domain」にチェックをつけると以降の入力欄が表示されます。

MAIL FROM domain」にメールサーバのFQDNを設定します。今回はドメインの前に「mail」を設定しました(ドメインがabc.comである場合、mail.abc.comとなります)。
Use default MAIL FROM domain」を選択し、「Save changes」ボタンをクリックします。

Download .csv record set」のリンクをクリックして、DNSに追加で登録するための値が記載されたCSVファイルを取得します。

こんな内容(内容は例です)がCSVファイルに記載されているので、DNSレコードを追記します。

MX,mail.abc.com,10 feedback-smtp.us-west-2.amazonses.com
TXT,mail.abc.com,"v=spf1 include:amazonses.com ~all"

正しく設定されればAWSアカウントのメールアドレス宛にAmazonから次のようなメールが届きます。

チェック項目が全て緑色(Verified)になったことを確認します。

以上で初期設定は終了です。

ユーザの作成

WorkMailの初期設定が終了したので、次にメールユーザを設定していきます。
残念ながら現在のメール環境にある複数ユーザを一気に移行する仕組みはないようですので、1件ずつ入力していくしかないのでしょう...

WorkMail管理コンソールの左側ペインから「Users」を選択し、「Create user」ボタンをクリックします。

User name」「Display name」を入力し「Next Step」ボタンをクリックします。

Email address」「Password」を設定し「Add user」ボタンをクリックします。

ユーザが作成されたことを確認します。

グループの作成

PostfixなどのSMTPサーバでいうところの「Alias」はWorkMailの「Groups」機能で実現できます。
Groupsで「admin」や「team1」などを作成し、そこにユーザを所属させていく仕組みです。

WorkMail管理コンソールの左側ペインから「Groups」を選択し「Create group」ボタンをクリックします。

Group name」「Email address」を入力し「Add group members」ボタンをクリックします。
この例では「alert@abc.com」というメールアドレスの「alert」グループを作成しています。

グループに所属するユーザを選択します。
左側から対象ユーザを選択し、「>>」ボタンをクリックしてグループメンバーに加えます。
この例ではalertグループにユーザ「kazu」をメンバーとして追加しました。

メンバーが設定できたら「Finish」ボタンをクリックします。

以上でグループの作成は完了です。
上の例では、「alert@abc.com」宛のメールは「kazu@abc.com」に届きます。

デフォルトドメインの設定

ここまでのWorkMailの設定では、ユーザやグループを作成する際のデフォルトのドメインが「xxx.awsapps.com」になっています。
これを正しいドメインに設定します。

メインで使用するドメインを選択し、Set as default」ボタンをクリックします。

対象ドメインの「Default domain」欄が「Default」になったことを確認します。

メールログの設定

WorkMailで送受信したメールのログをAmazon CloudWatchに出力するように設定します。

WorkMail管理コンソール左側ペインの「Organization settings」を選択し、「Monitiring」タブに切り替え、「Edit」ボタンをクリックします。

Enable mail events(〜)」のチェックをONにします。

Use default settings」「I authorize WorkMail to 〜」の項目が表示されるので、チェックをONにし「Save」ボタンをクリックします。

View Logs in CloudWatch」のリンクをクリックするとAmazon CloudWatchの管理コンソールに移りメールのログが確認できます。

Amazon CloudWatch管理コンソールが開くので、左側ペインから「ロググループ」を選択し、作成したOrganizationのAlias名のついたロググループのリンクをクリックします。

ログストリームから参照したい日時のログストリームのリンクをクリックします。

メール送受信のログが確認できます。

Webメールの利用

WorkMailではWebサーバを別途用意する必要なく標準でWebメールが利用できます。ただし、2021年11月現在インターフェースは英語です。

WorkMail管理コンソール左側ペインから「Organization settings」を選択し、「General」タブの「Web Application」のリンクをクリックするとwebメールが開きます。

下図のようなログインページが開くので作成したユーザとパスワードでサインインします。

レスポンシブデザインでスマートフォンにも対応しています。

メールの転送設定

PostfixなどのSMTPでは「alias」や「.forward」を使うことで、あるメールアドレス宛のメールを他のドメインのメールアドレスに転送することができました。

WorkMailの「Groups」機能では自分のドメイン内のメンバーへのメール転送はできますが、他ドメインのメールアドレスへの転送はできません。例えば、自分宛のメールを自分の携帯メールへ転送することは「Groups」ではできないようです。

WorkMailでは、他ドメインのメールアドレスへのメール転送は、WorkMailのWebメール機能で行うことができます。

以下の例では、ユーザ「kazu」が所属するグループ「alert」(メールアドレス「alert@abc.com」)として受信したメールを、自分の携帯メールにも転送するための設定を行ってみます。

WorkMailのWebメールにサインインし、右上の歯車マークをクリックします。

Email rules」を選択し「New」をクリックします。

Rule name」にわかりやすい名称を設定します。
Conditions」に「includes these words in the message header ...」を選択し、「select word(s)」をクリックします。

受信するメールアドレス「alert@abc.com」を入力し「add」ボタンをクリックします。
「Ok」ボタンをクリックします。

Actions」から「Forward the message to ...」を選択します。

「To」の欄に自分の携帯メールアドレスを入力し「Ok」ボタンをクリックします。

「Ok」ボタンをクリックします。

ルール「alert」が一覧に表示されていることを確認し「Save changes」をクリックします。

以上で転送ルールが作成できました。

IMAPメールの移行

2021年11月現在、AWSからはメールの移行ツールは提供されていません。ですので、今回はIMAPのメールボックスをWorkMailへ移行するために「imapsync」を使います。

まずは移行元メールサーバへimapsyncをインストールします。
今回、移行元のメールサーバはCentOS 7だったのでyumでimapsyncをインストールします。

# yum install imapsync

imapsyncコマンドの書式は次のとおりです。

  • 移行元サーバ:
    ホスト名「test1.abc.com」のIMAP993番 LOGIN認証 のユーザ「taro」パスワード「secret1」
  • 移行先サーバ:
    ホスト名「test2.xyz.com」のIMAP993番 LOGIN認証のユーザ「jiro」パスワード「secret2」

 とした場合

imapsync \
--host1 test1.abc.com --port 993 --ssl1 --authmech1 LOGIN --user1 taro --password1 secret1
--host2 test2.xyz.com --port 993 --ssl2 --authmech2 LOGIN --user2 jiro --password2 secret2

となります。詳細はimapsyncのREADMEを参照してください。

なので、次の項目を調べておきます。
※カッコ()内は今回の例

  • 移行元メールサーバのホスト名(imapsyncをメールサーバにインストールした場合はlocalhost)
  • 移行元メールサーバIMAPのポート番号(993)
  • 移行元メールサーバIMAPの認証方法(LOGIN)
  • 移行するメールユーザ名(kazu)
  • 移行するメールユーザのパスワード(abc123)
  • WorkMailのホスト名(imap.mail.us-west-2.awsapps.com)
  • WorkMailのIMAPポート番号(993)
  • WorkMailのIMAP認証方法(LOGIN)
  • 移行先ユーザのメールアドレス(kazu@abc.com)
  • 移行先ユーザのパスワード(zzz999)

この例の場合、imapsyncのコマンド書式は次のようになります。

# imapsync --host1 localhost --port1 993 --ssl1 --authmech1 LOGIN --user1 kazu  --password1 abc123 --host2 imap.mail.us-west-2.awsapps.com --port2 993 --ssl2 --authmech2 LOGIN --user2 kazu@abc.com --password2 zzz999

WorkMailのホスト名などの情報はAmazon WorkMail User GuideのSetting up IMAP for Amazon WorkMailを参照してください。

imapsyncコマンドが正常終了したら、このユーザのメールデータの移行は完了です。
移行の必要があるユーザ数分この操作を繰り返します。

ー 以上 ー

 CMSを使ったホームページ制作
 VPS, AWS等クラウドシステム構築
等々のご依頼承っております

Contents