Exchange OnlineへのPOPアクセスをバーンと全アカウント禁止にする

Page content

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も有効にしておく必要があると思います