POP/IMAP/SMTP用設定の一括取得

Exchange OnlineにOutlook以外のクライアントで接続する場合、Autodiscoverによる自動設定が利用できないため、自分が接続する先のサーバを手動で設定する必要があります。この設定は、一度自分でExchange Onlineにブラウザ(OWA)で接続した上で、設定画面から確認を行う形になります。
20130226_01

ところが、Office365はマルチテナントで構成されているために、そのユーザーがデプロイされる時期によっては異なるサーバ群に配置される場合があり、事前にユーザーに手順を示しておきたい場合などに支障をきたすことがあります。

今回は、管理者がPOP/IMAP/SMTPのアドレスを取得する手法を紹介します。

まず、相手先が1人や少数などの場合。これは、管理者の代理アクセス機能を利用します。OWAにアクセスしたのちに、メニューで自分の管理(もしくは組織の管理)となっているところをクリックし「他のユーザー」を選択して調べたいユーザーを選択します。そして、自分の場合と同じように設定を確認します。
20130226_02

次に、複数のユーザーを一括して調査したい場合などです。

これは、PowerShellを利用します。Exchange Onlineに管理アカウントで接続した後に、Get-CASMailboxコマンドの-ProtocolSettingsオプションを利用して確認します。

$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber
Get-CasMailbox contoso01 -ProtocolSettings | select *external* | FL

例えば、こうするとcontoso01のIMAP、POP、SMTPの設定がPowerShell画面上で確認できます。
20130226_04

基本的にサーバ名以外はユーザーごとに変更になることはないですので、全ユーザーのサーバ設定一覧をtest.csvというファイルに出力するには、例えば以下のようなコマンドを実施します。(すいません、無理やり整形する為汚いコードになっちゃいました)

$Users = Get-CasMailbox
"UserName,IMAPAddress,POP3Address,SMTPAddress" | Out-File -Encoding default test.csv
ForEach($User in $Users) {
$SvrSettings = Get-CasMailbox -Identity $User.Name -ProtocolSettings
$name = $SvrSettings.Name
$imap = $SvrSettings.ExternalImapSettings.Replace("`r`n"," ").Split(" ") | select -Skip 1 -First 1
$Pop = $SvrSettings.ExternalPopSettings.Replace("`r`n"," ").Split(" ") | select -Skip 1 -First 1
$Smtp = $SvrSettings.ExternalSmtpSettings.Replace("`r`n"," ").Split(" ") | select -Skip 1 -First 1
"$Name,$imap,$Pop,$Smtp" | Out-File -Encoding default -Append test.csv
}

そういえば、新しいOffice365のプレビューテナントではSMTPサーバがPOP/IMAPとは違う smtp.outlook.office365.com に設定されていましたね…本番ではどうなるんでしょうか。
20130226_03

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です