はじめに
今回はMicrosoft 365(要はExchnage)でメール転送がされたときに検知する方法です。
管理者側の自動転送禁止は以下の手順で設定できます。
自動転送禁止設定
- Exchange管理センターを開きます。
- 「メールフロー」→「リモートドメイン」→【Default】をクリックします。

- 【返信の種類を編集】をクリックします。

- 「自動転送を許可する」のチェックを外し、【保存】をクリックします。

転送検知アラートを作成する
ここからアラートを作成していきますが、こちらを設定するにはExchange Onlineのライセンスのみではできず。
以下のいずれかのライセンスが必要になります。
必要ライセンス
- E5/G5 サブスクリプション
- 次のいずれかの機能を含む E1/F1/G1 または E3/G3 サブスクリプション。
- Office 365 Advanced Threat Protection プラン 2
- Microsoft 365 E5 Compliance
- Microsoft 365 電子情報開示および監査アドオン ライセンス
アラート設定
- 「メールフロー」→「アラートポリシー」→【新しいアラートポリシー】をクリックします。

- ポリシーの名前を入力し、【次へ】をクリックします。

- アラートの重要度を選択し、通知する分析情報から「New users forwarding」を選択し、【次へ】をクリックします。

- 通知先の電子メールアドレスを入力し、通知の上限を設定し、【次へ】をクリックします。

- 内容を確認し、【作成】をクリックします。

検知テスト
- Outlookのルールで、簡単な転送ルールを作成します。
ここでは、以下のように作成しました。

- 外部ドメインから、Exchangeにルールに指定した内容にマッチするメールを送信します。
- ルールが一致し、転送されたことを確認します。
- しばらくすると、アラートルールで指定したメールアドレスに以下のようなメールが届きます。

これで誰が転送しているのかを把握することができますね。
レポートで確認する
Exchangeには自動転送されたメッセージのレポート機能があります。
こちらでも確認してみます。
- Exchange管理センターへアクセスします。
- 「レポート」→「メールフロー」→【自動転送されたメッセージのレポート】をクリックします。

- 以下のようなレポートが出力されます。

どのユーザーがどのドメインあてにメール転送をしているかを一覧で確認することができます。
が、Microsoft あるあるで転送がされてから24時間〜48時間以上たたないとこちらのレポートに反映されてこないそうです。
ログレポートなのでこのあたりはもっと早く反映するようにしてほしいですよね。
メールログはすぐ反映されるので、アラートメールとあわせてメールログをあわせて確認するといいかなと思います。
とはいえ、GWSにはこのようなレポートはないと思うので、GWSにも同じようなものがほしいですね。
Graph APIを利用してメールルールを確認する
権限があればGraph API Explorerを利用して、個別のメールルールを確認することができます。
エンドポイントは以下です。実行前に MailboxSettings.Read の権限を付与してください。
https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/mailFolders/inbox/messageRules
上記を実行すると以下のような応答が返ってきます。
ルール一覧を取得するので、フォルダ振り分け等すべて表示されてきますが、actions.forwardToあたりを取得するようにすれば把握できそうですね。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('hoge%40example.jp')/mailFolders('inbox')/messageRules",
"value": [
{
"id": "AQAABM4o1m0=",
"displayName": "自分宛てメール",
"sequence": 1,
"isEnabled": true,
"hasError": false,
"isReadOnly": false,
"conditions": {
"sentToMe": true
},
"actions": {
"moveToFolder": "AAMkAGVmYTA2NzAwLTJkZjgtNDU3NC04NzZSJmYmC8PQkQyAQC6ASysJp8RSpZmrQoOztekAATOKNKFAAA=",
"stopProcessingRules": true
}
},
{
"id": "AQAABKx91qU=",
"displayName": "転送検知テスト1",
"sequence": 2,
"isEnabled": true,
"hasError": false,
"isReadOnly": false,
"conditions": {
"subjectContains": [
"メール転送テスト2"
]
},
"actions": {
"stopProcessingRules": true,
"forwardTo": [
{
"emailAddress": {
"name": "hogehoge(example)",
"address": "[email protected]"
}
}
]
}
},
{
"id": "AQAABKx91qE=",
"displayName": "転送テスト",
"sequence": 3,
"isEnabled": true,
"hasError": false,
"isReadOnly": false,
"conditions": {
"subjectContains": [
"メール転送テスト"
]
},
"actions": {
"stopProcessingRules": true,
"forwardTo": [
{
"emailAddress": {
"name": "hoge(example)",
"address": "[email protected]"
}
}
]
}
}
]
}
ホーム画面やインサイトでの確認
ホーム画面にメールフローカードを追加することで、ホーム画面でも確認が可能になります。また、インサイトからも同様に確認することが出来ます。


自動転送が有効なのに外部への転送ができない場合の対処方法
テスト時に、転送がなんどやってもエラーになってしまったのでその時の対処方法を記載しておきます。
エラー内容は以下のようなものでした。
Remote server returned ‘550 5.7.520 Access denied, Your organization does not allow external forwarding. Please contact your administrator for further assistance. AS(7555)
自動転送は許可設定だしなぜ?としばらくハマってたのですが、ここはMicrosoft 365ならCopilotに聞いてみよう!
ということでCopilotさんに聞いてみました。
すると以下の回答を得られたので確認していきます。参照に表示されているのは、受信トレイにあるエラー返送メッセージですね。

- Microsoft 365管理センターへアクセスします。
- 「管理センター」→【セキュリティ】をクリックし、Microsoft Defenderへアクセスします。
- 「メールとコラボレーション」→「ポリシーとルール」→【脅威ポリシー】をクリックします。

- 【スパム対策】をクリックします。

- 「迷惑メール対策の送信ポリシー (既定)」→【保護設定を編集】をクリックします。

- 「自動転送ルール」から、「オン – 転送が有効になっています」を選択し、【保存】をクリックします。

- このあとメール転送を設定した、メールアドレス宛にメールを送信すると正常にメールが転送されました。
ここでは、すべてオンという形で設定しましたが、必要に応じては承認されたドメインだけスパム制御を外す等のポリシーを作成したほうが良いかもしれません。
またライセンスが複雑すぎてよくわからんってなっているのですが、この機能はMicrosoft Defender XDR for Office 365 P1以上が必要な気がします。
まとめ
GWSよりもExchange Onlineのほうが標準レポートやアラートを発砲させることができるので便利ですね。
メールセキュリティって結構見逃されがちだと思うので、たまにはチェックしてみるのもいいかもしれません。
ライセンスが複雑で、どのライセンスならどこまで出来るんだ?という把握がとても大変なのでM365E5を契約しろということかも知れません(笑)