13 KiB
title, weight, description, keywords
| title | weight | description | keywords | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Microsoft 365 | 16 | RustDesk Server Pro で SMTP OAuth2(Microsoft 365)を設定し、Exchange Online 経由でメールを送信します。 |
|
このガイドでは、RustDesk Server Pro から Microsoft 365 Exchange Online を使って OAuth2 でメールを送信するための設定を説明します。
この構成は、招待メール、ログイン確認メール、接続アラーム通知に適しています。
一般的な SMTP 設定については SMTP を参照してください。
RustDesk Pro に入力する値
| RustDesk Pro の項目 | 入力する値 |
|---|---|
| From | 送信メールに表示される送信元アドレス。 |
| Mail Account | RustDesk が XOAUTH2 SMTP のユーザー名として使用するメールボックスのアドレス。 |
| OAuth2 Tenant ID | アプリの概要にある Directory (tenant) ID |
| OAuth2 Client ID | アプリの概要にある Application (client) ID |
| OAuth2 Client secret | Certificates & secrets で作成した secret の Value |
次のスクリーンショットは、RustDesk でこれらの値をどこに入力するかを示しています。

設定
この設定を始める前に、次を用意してください。
- RustDesk Server Pro
1.8.1以降 - 既存の Microsoft 365 メールボックス、または送信用にこれから作成するメールボックス。例:
no-reply@contoso.com - Microsoft Entra で管理者同意を付与でき、Exchange Online の service principal を管理できる Microsoft 365 管理者アカウント
この設定は 3 つのパートに分かれます。
- Azure でアプリ登録、client secret、API 権限、管理者同意を設定する
- PowerShell で Exchange Online service principal、メールボックス、権限を設定する
- RustDesk で SMTP OAuth2 を設定し、テストメールを送信する
1. Azure で設定
- Azure portal にサインインします。
- App registrations を検索して選択します。
- 左側メニューで App registrations を選択し、New registration をクリックします。

- アプリ登録を作成します。

Directory (tenant) IDとApplication (client) IDを控えます。これらは後で RustDesk に入力します。
- Certificates & secrets を開き、新しい client secret を作成します。

- secret の
Valueをすぐにコピーします。Microsoft はこの値を 1 回しか表示しません。
- API permissions を開き、Microsoft 365 Exchange Online の SMTP アプリケーション権限を追加します。
- Add a permission を選択します。
- APIs my organization uses を選択し、Office 365 Exchange Online を検索します。
- Application permissions を選択します。
- SMTP.SendAsApp を選択して変更を保存します。

- 追加した権限に対して管理者同意を付与します。

2. PowerShell で設定
このパートでは、Exchange Online に接続し、service principal を作成し、送信メールボックスを準備して権限を付与します。
Install-Module -Name ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
管理者アカウントを明示したい場合は、次のようにも実行できます。
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com
- Microsoft Entra の Enterprise applications で対象アプリを探し、その
Object IDを控えます。これは Exchange Online service principal の作成時に必要です。
{{% notice note %}}
ここで使う OBJECT_ID は Enterprise applications に表示される object ID であり、App registrations の概要ページに表示される object ID ではありません。
{{% /notice %}}
- 次のコマンドを実行して、アプリ登録用の Exchange Online service principal を作成します。Microsoft はこの手順を "Registration of a Microsoft Entra application's service principal in Exchange Online" と説明しています。
New-ServicePrincipal -AppId <APPLICATION_ID> -ObjectId <OBJECT_ID>
Exchange への接続が成功しているのにこのコマンドが失敗する場合は、管理者アカウントに Exchange Online service principal を管理する権限があるか確認してください。

- Exchange で service principal が作成されたことを確認し、次の手順で使う
Identityの値を控えます。
Get-ServicePrincipal | Format-Table DisplayName,AppId,ObjectId,Identity
後続の 2 つの権限コマンドで使う <SERVICE_PRINCIPAL_ID> には、ここで返された Identity の値を使ってください。
- 送信用メールボックスがまだ存在しない場合は、先に shared mailbox を作成できます。例:
New-Mailbox -Shared -Name "No Reply" -Alias no-reply -DisplayName "No Reply" -PrimarySmtpAddress no-reply@contoso.com
すでに送信用メールボックスがある場合は、この手順は省略できます。

- テナントと送信メールボックスで
Authenticated SMTPが有効か確認します。
Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled
Get-CASMailbox -Identity "no-reply@contoso.com" | Format-List SmtpClientAuthenticationDisabled
有効になっていない場合、テストメールは次のエラーで失敗することがあります。
permanent error (535): 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information.
メールボックス単位の設定が必要な場合は、次を実行します。
Set-CASMailbox -Identity "no-reply@contoso.com" -SmtpClientAuthenticationDisabled $false
テナント単位の設定が True を返した場合は、組織のポリシーに従って次を実行するか判断してください。
Set-TransportConfig -SmtpClientAuthenticationDisabled $false
上記のテナント側とメールボックス側の設定が正しそうなのに同じ 535 5.7.139 エラーが続く場合は、テナントで Microsoft Entra Security defaults を使っているかも確認してください。Microsoft Learn では、Security defaults が有効なとき Exchange Online の SMTP AUTH は無効になると説明されています。
コマンドの詳細は Microsoft Learn の Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online を参照してください。
- RustDesk が送信に使うメールボックスに対して、Exchange service principal に
FullAccessを付与します。
Add-MailboxPermission -Identity "no-reply@contoso.com" -User <SERVICE_PRINCIPAL_ID> -AccessRights FullAccess
ここでは、RustDesk の Mail Account に入力する予定のメールボックスを指定してください。
このコマンドが次のようなエラーを返す場合:
Write-ErrorMessage : ||The operation couldn't be performed because object 'no-reply@xxx.com' couldn't be found on 'xxx.xxx.PROD.OUTLOOK.COM'.
-Identity に渡した値が Exchange Online で実際のメールボックス オブジェクトとして解決されていません。
まず、そのメールボックスが Exchange Online に本当に存在するか確認してください。
Get-EXOMailbox -Identity "no-reply@xxx.com" | Format-List DisplayName,PrimarySmtpAddress,RecipientTypeDetails
何も返らない場合は、先にそのメールボックスを作成するか、存在を確認してください。no-reply のような送信用アドレスには、例えば次のように shared mailbox を作成できます。
New-Mailbox -Shared -Name "No Reply" -Alias no-reply -DisplayName "No Reply" -PrimarySmtpAddress no-reply@xxx.com
すでにメールボックスが存在する場合は、Add-MailboxPermission -Identity ... に指定した値が、そのメールボックスの実際のアドレス、エイリアス、または Exchange が解決できる別の mailbox identity であることを確認してください。

- 同じ service principal に
SendAs権限も付与します。
Add-RecipientPermission -Identity "no-reply@contoso.com" -Trustee <SERVICE_PRINCIPAL_ID> -AccessRights SendAs -Confirm:$false
この手順も、Microsoft の公式 app-only SMTP 構成の一部です。
3. RustDesk で設定
この時点で、次がそろっているはずです。
Fromに使う送信元アドレスMail Accountに使うメールボックスのアドレスDirectory (tenant) IDApplication (client) ID- client secret の
Value Mail Accountに使うメールボックスに対して、すでにFullAccessとSendAsが付与されていることを確認済みの Exchange Online service principal
RustDesk には Exchange service principal の Identity を入力しませんが、メールテストの前に上記の権限設定は完了している必要があります。
-
RustDesk の Web コンソール で Settings -> SMTP を開きます。
-
OAuth2 を有効にし、プロバイダーとして Microsoft 365 を選択します。
-
次の項目を入力します。
FromMail AccountOAuth2 Tenant IDOAuth2 Client IDOAuth2 Client secret
テストメールがまだ失敗する場合は、PowerShell のセクションに戻り、Exchange Online service principal、Authenticated SMTP、および Mail Account に使うメールボックスの権限をもう一度確認してください。
参考資料
- Microsoft Learn: Authenticate an IMAP, POP or SMTP connection using OAuth. Exchange Online のアプリ権限と service principal の手順に使用。
- Microsoft Learn: Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online.
Authenticated SMTPの確認と有効化に使用。 - Microsoft Learn: Create shared mailboxes in the Exchange admin center. shared mailbox の作成に使用。


