Office 365 SMTP s OAuth2 (client credentials)
Tato stránka popisuje nastavení odesílání e-mailů přes Office 365 SMTP s autentizací OAuth2 ve flow client credentials. Postup je určen pro administrátory Microsoft Entra ID a Exchange Online, kteří konfigurují automatizované odesílání e-mailů z aplikace bez interaktivního přihlášení uživatele.
1. Kontext infrastruktury
Při použití flow client_credentials běží vaše aplikace na pozadí jako automatizovaný proces bez interakce uživatele a bez interaktivní webové relace. Protože kontexty na úrovni aplikace (daemon) tradičně umožňují široká administrátorská oprávnění, Microsoft vynucuje granulární architekturu Zero Trust pro ochranu firemních zdrojů.
Definice identity aplikace – Registrace aplikace v Azure definuje digitální identitu vaší aplikace v tenantu Microsoft Entra ID.
Zrcadlení v Exchange – Izolovaný Exchange Service Principal reprezentuje tuto identitu přímo v databázovém enginu Exchange.
Granulární izolace – Omezená Access Control Policy omezuje aplikaci pouze na vybrané poštovní schránky a snižuje riziko kompromitace celého tenantu.
2. Registrace aplikace v Azure
Krok 2.1: Registrace aplikace
Přihlaste se do Microsoft Entra admin centra jako Application Administrator nebo Global Administrator.
Rozbalte Identity > Applications > App registrations a klikněte na + New registration.
Nastavte Name (např. „SMTP Mailer Service“) a zvolte Accounts in this organizational directory only (Single tenant).
Pole Redirect URI ponechte prázdné a klikněte na Register.
Krok 2.2: Získání přihlašovacích údajů platformy
Na stránce přehledu aplikace (Overview) zkopírujte a bezpečně uložte hodnoty Application (client) ID a Directory (tenant) ID.
Krok 2.3: Vytvoření klientského tajemství
Přejděte na Certificates & secrets > záložka Client secrets a klikněte na + New client secret.
Zadejte popis a dobu platnosti podle interní politiky a klikněte na Add.
Důležité: Hodnotu ze sloupce Value zkopírujte okamžitě. Po obnovení stránky zůstane klíč trvale maskovaný a nebude možné ho znovu zobrazit.
Krok 2.4: Nastavení API oprávnění pro daemon
Přejděte na API permissions > + Add a permission.
Na záložce APIs my organization uses vyhledejte „Office 365 Exchange Online“ a vyberte ho.
Zvolte Application permissions (oprávnění pro běh na pozadí bez aktivní relace uživatele).
Rozbalte menu Exchange, vyhledejte a zaškrtněte Exchange.ManageAsApp.
Klikněte na Add permissions.
Krok 2.5: Udělení administrátorského souhlasu
Na stránce API permissions klikněte na Grant admin consent for [Tenant Name].
Potvrďte dialog. Ověřte, že stav oprávnění se změní na zelenou fajfku se stavem Granted.
3. Exchange Online RBAC a mapování SMTP zabezpečení
Důležité – Object ID: Registrace aplikace vytváří dvě odlišné entity: App Registration Object (šablonu architektury) a Enterprise Application Object (aktivní instanci Service Principal v tenantu). Příkaz Exchange Online New-ServicePrincipal vyžaduje Object ID enterprise aplikace. Použití Object ID z registrace aplikace způsobí chyby mapování autentizace.
Kde Object ID najít: V Entra Admin Center nepoužívejte „App registrations“. Přejděte na Identity > Applications > Enterprise applications, vyhledejte název aplikace, otevřete ji a zkopírujte Object ID ze stránky Overview.
Krok 3.1: Příprava administrátorského prostředí
# Instalace oficiálního modulu pro správu Exchange Online
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber
# Import cmdletů do aktuální relace
Import-Module ExchangeOnlineManagement
# Připojení interaktivní administrátorské relace
Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.comKrok 3.2: Synchronizace a vytvoření Service Principal
# -AppId: Client ID z přehledu registrace aplikace
# -ObjectId: Object ID enterprise aplikace (viz výše)
New-ServicePrincipal -AppId "YOUR_APPLICATION_CLIENT_ID" -ObjectId "YOUR_ENTERPRISE_APP_OBJECT_ID" -DisplayName "SMTP Mailer Daemon Service"Krok 3.3: Přiřazení oprávnění RBAC k cílové poštovní schránce
# Granulární přístup k automatizované odesílací schránce
Add-MailboxPermission -Identity "automation@yourdomain.com" -User "YOUR_APPLICATION_CLIENT_ID" -AccessRights FullAccess -InheritanceType All4. Konfigurace poštovní schránky: požadavek SMTP AUTH
I při použití moderní autentizace OAuth2 místo základní (legacy) autentizace Microsoft stále klasifikuje odchozí provoz přes port 587 jako Authenticated Client SMTP Submission. Pokud je pro danou poštovní schránku vypnuté SMTP AUTH, Microsoft odmítne token chybou 535 5.7.3 Authentication unsuccessful. Nastavení na úrovni schránky přepisuje výchozí omezení tenantu.
Varianta A: Konfigurace přes Exchange Online PowerShell (doporučeno)
# Kontrola aktuálního stavu (True = blokováno, False = povoleno)
Get-CASMailbox -Identity "automation@yourdomain.com" | Select SmtpClientAuthenticationDisabled
# Explicitní povolení SMTP odesílání pro danou identitu
Set-CASMailbox -Identity "automation@yourdomain.com" -SmtpClientAuthenticationDisabled $falseVarianta B: Konfigurace přes Microsoft 365 Admin Center
Otevřete Microsoft 365 Admin Center.
Přejděte na Users > Active users a vyhledejte odesílací účet.
Otevřete vlastnosti účtu, záložku Mail a klikněte na Manage email apps.
Zaškrtněte položku Authenticated SMTP.
Uložte změny.
5. Kontrolní seznam konfigurace
Pro nastavení mailového klienta v aplikaci použijte následující hodnoty:
Parametr | Hodnota |
|---|---|
SMTP hostname (Host) |
|
Síťový port (Port) |
|
Zabezpečení spojení | STARTTLS (explicitní TLS) |
OAuth token scope |
|
Po dokončení nastavení v Azure a Exchange Online doplňte odpovídající údaje v Konfiguraci mailového klienta a ověřte odeslání pomocí akce Odeslat testovací email.