Site cover image

🐧 きまぐれクラウド日記

NotionをヘッドレスCMSとして利用しています。 AzureとMirosoft 365 に関することを備忘録と頭の整理の為に書いていきます。

🐧 Exchange Onlineのメールボックスにエイリアスを追加する

Exchange Online を使用する際にカスタムドメインだけでなく、「onmicrosoft.com」のドメインでもメールを受け取りたいとうケースがあります。

PowerShellで作成したユーザーは明確に指定いないとエイリアスが設定されないので、
メールのエイリアスとして「onmicrosoft.com」を設定する方法を紹介します。

Microsoft 365管理センターからユーザー作成した場合は「onmicrosoft.com」のドメインはデフォルトで使用できます。


一人のユーザーに実行

Exchange Online に接続します。

グローバル管理者または、Exchange Online 管理者でサインインします。

#接続
Connect-ExchangeOnline

以下のコマンドで現在受信可能なメールアドレス設定を確認します。

#現在の設定確認
Get-Mailbox -Identity "<対象のUserPrincipalName>" | Select-Object UserPrincipalName,EmailAddresses

SMTPがプライマリのメールアドレスとなります。

SIPはTeamsが使えるライセンスを付与している場合に作られます。

UserPrincipalName              EmailAddresses
-----------------              --------------
user01@example.com {SMTP:user01@example.com, SIP:user01@example.com}

「onmicrosoft.com」 のエイリアスを追加します。

#エイリアス追加
Set-Mailbox -Identity "[email protected]" -EmailAddresses @{add="[email protected]"}

再度受信可能なメールアドレス設定を確認します。

#現在の設定確認
Get-Mailbox -Identity "<対象のUserPrincipalName>" | Select-Object UserPrincipalName,EmailAddresses

以下のように出力されます。

小文字の「smtp」の後に書かれているのがエイリアスのメールアドレスになります。

UserPrincipalName                            EmailAddresses
-----------------                            --------------
user01@example.com {SIP:user01@example.com, SMTP:user01@example.com, smtp:user01@onmicrosoft.com}

作業が終了したので、Exchange Online から切断します。

#切断
Disconnect-ExchangeOnline

テナント全体で実行

PowerShellでMicrosoft 365 ユーザーを作成すると「onmicrosoft.com」のドメインをメールのエイリアスに追加できていないケースがあります。

テナント内のユーザーすべて「onmicrosoft.com」のアドレスでもメールを受け取れるように設定します。

Exchange Online に接続します。

#接続
Connect-ExchangeOnline

テナント内のすべてのメールアドレスを取得し、変数に格納します。

#テナント内すべてのメールアドレスを取得します。
$AllMail = Get-Mailbox | Select-Object UserPrincipalName,EmailAddresses

メールのエイリアスを追加します。

#エイリアス追加
foreach($m in $AllMail)
{
    #UPNの@より前をmailNickNameとして取得します。
    $txt = $m.UserPrincipalName
    $re = "[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*@"
    $mailNickname = [regex]::Match($txt, $re, "IgnoreCase").Value.Replace("@","")
    
    $add_mail = $mailNickname + "<追加するドメイン>"

    Set-Mailbox -Identity $m.UserPrincipalName -EmailAddresses @{add=$add_mail}
}

実行結果を確認します。

#結果を出力
$result = foreach($m in $AllMail)
{
    Get-Mailbox -Identity $m.UserPrincipalName `
    | Select-Object UserPrincipalName,EmailAddresses
}

証跡としてCSVファイルを作成します。

#確認用のCSVファイル作成
$result | export-CSV -Path "ファイルへのパス+ファイル名" -Append -Encoding utf8BOM

作業終了しましたので、Exchange Onlineから切断します。

#切断
Disconnect-ExchangeOnline

まとめ、所感

ユーザー作成等PowerShellで行うとメールのエイリアスで「onmicrosoft」のドメインが設定されていないことがあります。

メール環境をExchange Online へ移行する際に「onmicrosoft.com」のドメインでメールを受け取りたいというケースでメールのエイリアスが必要となるので割と大事な作業手順となります。


参考