Amazon WorkMailに移行する
今までPostfixとDovecotで稼働させていたユーザメール送受信システムをAmazon WorkMail(& Amazon Simple Email Service)への移行をおこないました。以降はその際のログの抜粋からAmazon WorkMail(以降、単にWorkMailと記します)のセットアップ方法をご紹介します。
以降の設定で、ウェブブラウザやデスクトップメーラを使ったメールの送受信をするためのWorkMailのセットアップができます。
ですが、EC2などサーバからのメール送信にはこれだけでは対応できません。別途Amazon Simple Email Service(SES)の設定が必要です。
前提条件
- 現状のメールシステムではメール受信にはIMAPを使用。WorkMailへ変更の際、サーバに蓄積されているユーザのメールデータを移行する。
- DNSはAmazon Route 53を使用せず、現状のまま運用する(現状、Value DomainのDNSを使用している)。
- 現状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コマンドが正常終了したら、このユーザのメールデータの移行は完了です。
移行の必要があるユーザ数分この操作を繰り返します。