Amazon Linux WorkSpaces で 2 段階認証が必要な Office 365 (Exchange Online) のメールアカウントを設定しました。色々調べたので、忘れる前にメモしておきます。
手っ取り早い方法: アプリパスワード
Office 365 にはアプリパスワードを発行する機能があります。アプリパスワードを発行すれば 2 段階認証に対応していないアプリでも ID とアプリパスワードの組み合わせで Office 365 のメールにアクセスできます。
ですが、アプリパスワードの発行によって、事実上、2 段階認証をとばせるルートを許してしまうので、今回はアプリパスワードを使わないでやってみたいと思います。
地道な方法: OAuth2
※ この方法は Azure Active Directory にアプリ登録を行う権限が必要です。
2 段階認証が必要な Office 365 アカウントのメールを送受信するには OAuth2 というスマホのメールアプリでよく使われているような認証方式を使います。例えば、Google (Gmail) のアカウントをメールアプリに追加するときに、Google のページが開いて、そこから ID やパスワードなどを対話的に設定していくあの方式です。
Evolution の更新
現在のところ、Office 365 の OAuth2 認証に対応する Linux 用メールクライアントは Evolution ぐらいしかないようです。
既定のイメージに Amazon 標準の Evolution のパッケージがプリインストールされていましたが、標準パッケージの Evolution はバージョンが古く OAuth2 に非対応でした
幸い、Flathub に最新版のパッケージがあったので、標準パッケージを削除して Flathub 版を再インストールしました。
参考: Amazon Linux WorkSpaces に最新の Evolution をインストールする
アプリの登録
Evolution から OAuth2 認証で Office 365 にアクセスするためには、事前に Azure Active Directory の開発者向け機能を使ってアプリを登録しておく必要があります。手順は以下のとおり。
-
Azure に Office 365 のアカウントでサインイン。
-
[Azure Active Directory] -> [App registrations (preview)]1 -> [New registration] から新規アプリを登録する。入力項目は次のように設定する。
- Name: アプリの名前 (任意)
- Supported account types: Accounts in this organizational directory only
- Redirect URI:
- 種類: Public client
- URI: https://login.microsoftonline.com/common/oauth2/nativeclient
- 登録したアプリの [API permissions] -> [Add a permission] -> [Exchange] -> [Delegated permissions] を表示し、以下の権限を選択して、追加する。
- EWS.AccessAsUser.All
受信設定
Evolution のメールアカウント設定で [Receiving Email] タブの項目を以下のようにします。
- Server Type: Exchange Web Services
- Username: Office 365 のユーザーID (メールアドレス)
- Host URL: https://outlook.office365.com/EWS/Exchange.asmx
- Authentication の種類: OAuth2 (Office365)
- Override Office365 OAuth2 settings: チェックする
- Tenant: 登録したアプリの Directory (tenant) ID2
- Application ID: 登録したアプリの Application (client) ID2
アプリの承認
続けて [Receiving Email] タブにある [Fetch URL] をクリックすると、サインインページが表示されます。Office 365 のアカウントにサインインしてアプリを承認すれば設定完了です。