みなさん、こんにちは。はらぼう(@blog4harabo)です。
今日は AWS のサービスの一つである Workmail で、メールが受信できるが送信者にMAILER-DAEMON が届いてしまうという事象を解消するための方法をご案内いたします。

まず、整理しておきたいのが、どのような事象であるかということ。
この事象は、GMAIL 等で Workmail へ E-mail を送信すると、MAILER-DAEMON がGMAIL 側に返ってきてしまうという事象になります。
MAILER-DAEMON が何かというと、簡単に言うとGMAIL 側でメール送ったけど、受信する人がいないぜ!ってやつです。
ただ、私の Workmail の環境では、メールの受信ができているにも関わらず、メール送信側に MAILER-DAEMON が送りつけられるという事象になります。
これがかなり厄介でしたので、こちらに備忘録として残しておこうと思います。
この事象についての調査
色々調べたのですが、事象に合致して解決策を紹介してくれるようなサイトがありませんでした。
ただし、Amazon SES 経由で S3 にメールを連携すると直ったぜ!という海外の投稿はありましたが、原因は不明のままでした。
そのため、私も SES 経由でS3 にメールを連携してみようと下記を対応しました。
ただし、結論としては、Amazon SES を経由して S3 にデータを流さなくても事象を回避する方法が見つかりましたが、こちらの手順についても備忘録として残しますので、事象回避だけを実施したい人は、「Amazon SES でE メール受信の設定」から読んでください。
S3 バケットを作成して、Amazon SES からのアクセスを許可する
S3 のバケット作成は簡単なので省略しますが、Amazon SES からのアクセスを許可するために、下記の JSON をパケットポリシーとして設定しました。
以外と「AWS:Referer」に入れるデータをサンプルとして書いている人が少なかったので、サンプルも書いておきますね。
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “AllowSESPuts”,
“Effect”: “Allow”,
“Principal”: {
“Service”: “ses.amazonaws.com”
},
“Action”: “s3:PutObject”,
“Resource”: “arn:aws:s3:::<bucket名>/*”,
“Condition”: {
“StringEquals”: {
“AWS:Referer”: “<12桁のアカウントID>”
}
}
}
]
}
※Resource とAWS:Referer は環境に併せて修正しましょう。
以下、サンプルです。IAM アカウントでログインすれば、ブラウザの右上にアカウントID は記載がありますので、そちらを確認しましょう。
“StringEquals”: {
“AWS:Referer”: “123456789123”
}
設定は以下の箇所からしましょう。

上記手順を完了して、Workmail のアカウント宛にメールを送信すれば、S3 バケットの中にメールのデータが確認できますので、ダウンロードして開くことで中身の確認をすることが可能です。
Amazon SES でE メール受信の設定
さて、ここからが本番です。
準備として Workmail を生成したときに自動で生成されるE メール受信のルールセットを控えておきます。
初めに、以下の画像のように「default-rule-set」を選択しましょう。

次に、「すべての受信ルール」からランダムな文字列のルールがあり、これがWorkmail で利用されているルールになっていますので、一覧から探してクリックしましょう。

Workmail のルールを開いたら、まず受信者の条件をメモ帳などに控えておきましょう。

次に、「アクション」から、「アクションタイプ」が「Amazon Workmail との統合」であることを確認して、「編集」を押しましょう。

「アクションの追加」画面で、「組織の ARN」という箇所にある ARN をメモ帳などに控えておきます。控えたら、下記画面でキャンセルを押しましょう。

一度、「E メール受信」画面まで戻り、「ルールセットの作成」を押します。

新規ルールセットにはルールが存在しないので、「ルールの作成」を押しましょう。

ルール名を入力して、ステータスは「有効化」にチェックをいれましょう。
「スパムとウイルススキャン」については、お好みで。

「受信者の条件の追加」画面で、先ほど控えた受信者の条件を追加します。
通常、2つ条件があるはずですので、その場合は、下側の「新しい受信者の条件の追加」で追加しましょう。

「アクションの追加」画面へ行くと、「新しいアクションの追加」という箇所があるので、こちらをクリックすると、一番下に「Amazon Workmail との統合」がありますので、こちらを選択して「次へ」を押しましょう。

こちらに先ほど控えたARN を入力して、ルールの作成を完了しましょう。

ここまで来たら、あとはルールを有効化するだけです。
下記の画面で作成したルールにチェックを入れると「有効として設定」が活性化するので、こちらをクリックして有効化しましょう。
有効化すると、緑で「有効」というアイコンが表示されます。

総論
手順は以上です。
いかがでしたでしょうか。以外とここまでたどり着くのに時間がかかりました。
実施したこととしては、既定のルールで「Amazon Workmail との統合」ルールを利用するのではなく、カスタムで作成したルールで「Amazon Workmail との統合」を生成する、というものとなります。
その手順の中で、受信者の条件も設定しました。
何故か既定の「Amazon Workmail との統合」では MAILER-DAEMON が発生し、カスタムしたルールで同じ「Amazon Workmail との統合」を生成して有効化すると MAILER-DAEMON がでないようにできるという謎な事象ですが、上記で回避できると思いますので、ぜひ、お試しくださいませ。