Exchange OnlineへのPOPアクセスをバーンと全アカウント禁止にする
Exchange OnlineのPOPやらIMAPやらのアクセスを禁止したい。
もうOutlookかOWAかしか使って欲しく無い。なんか見知らぬメールクライアントを使われるのをやめたい!って思う事ありますよね。
…ではなくて、
ドキュメントによると単一のアカウントのPOPアクセスを禁止するなら Set-CASMailbox -Identity "Christa Knapp" -POPEnabled $false
を実行するのだと書かれています。
が、やりたいのは全アカウントのPOPやらIMAPやらのアクセス禁止です。
今回もいつも同様間違えていたとしても筆者は責任を負いませんので悪しからず! また、もっとPowerShellらしい効率の良い書き方もありますが、効率の良さよりも一つずつコマンドの意味を確かめながら出来る書き方になる様にしました。
また、Exchange管理センターで設定を変更する権限を持ったアカウントが利用出来る前提です。
全メールアカウントの一覧を取得する
まずは Connect-ExchangeOnline -UserPrincipalName 管理者のメールアドレス
をしてEXOにサインインしておいて下さい。Exchange Online PowerShellをインストールしておく必要があります
$mailboxes = Get-EXOMailbox -ResultSize Unlimited|Select PrimarySmtpAddress
これで $mailboxes
に全部のメールアカウントが入ります。↑を実行した後に $mailboxes エンター
とかやるとずらずらとメールアドレスの一覧が表示されます
取得した全メールアカウントが今どういう状態になって居るか確認する
さっきの公式ドキュメントには書いてないんですけど、今POPとかIMAPとかが有効かどうかを調べるには Get-CASMailbox
が使えます
↓でやってる事は$mailboxesに入ってるメールアドレスを1個$mailboxに入れてはGet-CASMailboxを実行するという内容です
foreach($mailbox in $mailboxes){ Get-CASMailbox -Identity $mailbox.PrimarySmtpAddress }
公式ドキュメントにはExchange管理センターで確認するって書いてありますが、全アカウントその方法で確認するのはツライと思います…
取得した全メールアカウントに対してPOPオフの設定をする
さっきの公式ドキュメントに書いてある Set-CASMailbox
を使います。現在の状態を表示したときに実行した物と見比べて内容を理解した上で実行して見て下さい
foreach($mailbox in $mailboxes){ Set-CASMailbox -Identity $mailbox.PrimarySmtpAddress -POPEnabled $false }
設定がすでにオフになっているアカウントが有った場合は黄色い文字で警告が出ますが、すでにオフになってる奴をオフに変更はできないという内容なので気にしなくて大丈夫だと思います。 アカウント1個の設定を変えるのに2秒くらいかかるので、アカウント数にもよりますが実行時間がかかるので慌てずに待ちましょう。
終わったら先ほどの今どういう状態になって居るか確認するコマンドを実行してPOPが思ったとおりオフになっているのを確認して見て下さい。
POP以外もオフにする
POPもIMAPも同時にオフにするなら
Set-CASMailbox -Identity $mailbox.PrimarySmtpAddress -POPEnabled $false -IMAPEnabled $false
でいけます。
詳しくはSet-CASMailboxの公式ドキュメントを読んで下さい
Outlookのソフトを使っているならMAPIは有効にしておく必要がありますし、スマホへのアカウントの登録を許可して居るならActiveSyncも有効にしておく必要があると思います