先日のメール エイリアス絡みで Office 365 (というか Exchange Online) のメール配信テストをしていました。
Exchange では存在しないユーザー宛てのメールが送られてきた場合でも いったんはメールを受け付けて 後から配信状態通知 (DSN) というエラーメールを送ってくるようです。(最初からエラー返してほしいところではありますが...)
で、送られてきた DSN はこんな感じでした。
メールの本文を読むとエラーの原因が書いてあるのですが、上記のヘルプだと日本語メッセージが表示されているのに何故か英語で返ってきていますね。(別にいいですが...)
管理ポータルでは DSN の言語に関する設定を見つけることはできなかったのですが、メールの配信について調べている途中で Set-TransportConfig コマンドレットに ExternalDsnDefaultLanguage というオプションを見つけました。デフォルトでは Exchange Online が動作しているサーバーのロケールになっているそうです。これを変えればよさそうですね。
コマンドレットを使うために 少し前に調べた通りにコマンドを入力していきます。*1
PS C:\> $credential = Get-Credential (ここで Office 365 の ID パスワードを入力します) PS C:\> Import-Module MsOnline PS C:\> Connect-MsolService -Credential $credential PS C:\> $exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $credential -Authentication "Basic" -AllowRedirection PS C:\> Import-PSSession $exchangeSession
ロケールに日本語 (ja-jp) を指定します
PS C:\> Set-TransportConfig -ExternalDsnDefaultLanguage ja-jp
この状態で同じように存在しないアドレスにメールを送ってみた結果がこちら
無事に日本語化する事ができました。
最後に使ったセッションを終了させておきましょう。
PS C:\> Remove-PSSession $exchangeSession