Інтерактивний посібник

Ваше налаштування, вже заповнене

Введіть свої значення один раз — і кожна команда нижче перепише себе: назва застосунку, політика доступу, перевірочні тести та передпольотний лист. Копіюйте кожен блок просто у PowerShell.

Ваші сім значень

Значення очистяться через 15:00

Хост, на якому працює ваш Matomo. З нього виводяться назва застосунку Entra й опис секрета.

Зі сторінки Overview вашої реєстрації застосунку. Це ідентифікатор, а не секрет.

З тієї самої сторінки Overview.

Стовпець Value, показаний один раз під час створення секрета, — не Secret ID. Використовується лише в передпольотному блоці нижче; у підсумку він ніколи не з’являється.

Спільна поштова скринька, від імені якої надсилатиме Matomo.

Вбудований домен вашого тенанта — заповнюється з адреси відправника; змініть його, якщо у вас інший.

Обліковий запис, яким ви користуєтеся на admin.microsoft.com — часто це запис admin@…onmicrosoft.com, а не ваша щоденна пошта.

Похідні назви

Назва застосунку Entra
missivus-matomo-analytics.example.com
Опис секрета клієнта
missivus-matomo-analytics.example.com
Адреса групи безпеки
noreply-apps@yourcompany.onmicrosoft.com

Встановіть модуль і увійдіть

Відкриється вікно браузера; увійдіть обліковим записом адміністратора. У Windows PowerShell вбудований; у macOS виконайте `brew install --cask powershell`, потім `pwsh`.

Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
Connect-ExchangeOnline -UserPrincipalName {{admin}}

Створіть групу

Її єдиний учасник — ваша спільна поштова скринька. Занотуйте PrimarySmtpAddress, який виведе PowerShell — зазвичай вона у вбудованому домені тенанта, і саме вона потрібна наступній команді.

New-DistributionGroup -Name "NoReply Apps" -Alias noreply-apps -Type Security -Members "{{sender}}"

Замкніть застосунок на групу

Один рядок. Саме цей крок перетворює «застосунок, який міг би надсилати від імені будь-кого» на «застосунок, який може надсилати рівно з однієї адреси».

New-ApplicationAccessPolicy -AppId "{{clientId}}" -PolicyScopeGroupId "{{group}}" -AccessRight RestrictAccess -Description "Missivus (Matomo) may only send as {{sender}}"

Перевірка — спершу зачекайте 5 хвилин

Перший рядок має показати AccessCheckResult Granted, другий — Denied. У другому рядку використано заповнювач — замініть його будь-якою іншою реальною скринькою у вашому тенанті, ваша власна адреса підійде. Не рухайтеся далі, доки не побачите Denied.

Test-ApplicationAccessPolicy -Identity "{{sender}}" -AppId "{{clientId}}"
Test-ApplicationAccessPolicy -Identity "{{other}}" -AppId "{{clientId}}"

Передпольотна перевірка — надішліть один справжній лист із PowerShell

Необов’язково, але наполегливо рекомендовано — це перевіряє тенант, застосунок, секрет і політику від початку до кінця ще до того, як залучено Matomo. Якщо перша частина виводить 20 символів, автентифікація працює. StatusCode 202 плюс лист у вашій скриньці означають, що бік Microsoft готовий. Замініть заповнювач одержувача на власну скриньку.

$TenantId = "{{tenantId}}"
$ClientId = "{{clientId}}"
$Secret   = "{{secret}}"

$tok = Invoke-RestMethod -Method Post -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" -Body @{ client_id=$ClientId; client_secret=$Secret; scope="https://graph.microsoft.com/.default"; grant_type="client_credentials" }
$tok.access_token.Substring(0,20)
$body = '{"message":{"subject":"Missivus pre-flight","body":{"contentType":"Text","content":"Graph app-only send OK"},"toRecipients":[{"emailAddress":{"address":"{{other}}"}}]},"saveToSentItems":false}'
Invoke-WebRequest -Method Post -Uri "https://graph.microsoft.com/v1.0/users/{{sender}}/sendMail" -Headers @{ Authorization = "Bearer $($tok.access_token)" } -ContentType "application/json" -Body $body | Select-Object StatusCode

Приберіть за собою й вийдіть

Секрет було введено в цьому вікні, тож очистіть його, а потім закрийте PowerShell.

Remove-Variable Secret,tok,body
Disconnect-ExchangeOnline

Для вашого менеджера паролів

Скопіюйте цей блок у нотатки запису в менеджері паролів. Він містить ідентифікатори, які знадобляться під час ротації секрета — самого секрета в ньому свідомо немає.

{{summaryAppName}}: {{appName}}
{{summaryTenantId}}: {{tenantId}}
{{summaryClientId}}: {{clientId}}
{{summaryGroup}}: {{group}}
{{summarySender}}: {{sender}}

{{summaryExpiry}}

Далі завершіть у Matomo

Введіть ID тенанта, ID клієнта, секрет і відправника в Administration → System → General settings → Missivus, позначте «Send email through Microsoft Graph», збережіть і натисніть «Send test email».

Довідник із налаштування плагіна