kazuakix の日記

Windows Phone とか好きです

Office 365 の配信状態通知を日本語化する

先日のメール エイリアス絡みで Office 365 (というか Exchange Online) のメール配信テストをしていました。
 
Exchange では存在しないユーザー宛てのメールが送られてきた場合でも いったんはメールを受け付けて 後から配信状態通知 (DSN) というエラーメールを送ってくるようです。(最初からエラー返してほしいところではありますが...)

 
で、送られてきた DSN はこんな感じでした。

f:id:kazuakix:20140719013720j:plain,w360

メールの本文を読むとエラーの原因が書いてあるのですが、上記のヘルプだと日本語メッセージが表示されているのに何故か英語で返ってきていますね。(別にいいですが...)
 
管理ポータルでは 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

 
この状態で同じように存在しないアドレスにメールを送ってみた結果がこちら

f:id:kazuakix:20140719013742j:plain,w360

無事に日本語化する事ができました。
 
最後に使ったセッションを終了させておきましょう。

PS C:\> Remove-PSSession $exchangeSession

*1:事前に Microsoft Online Services サインイン アシスタント等のインストールが必要です