Ihre Einrichtung, vorausgefüllt
Geben Sie Ihre Werte einmal ein, und jeder Befehl unten schreibt sich selbst um — der App-Name, die Zugriffsrichtlinie, die Prüftests und die Vorab-E-Mail. Kopieren Sie jeden Block direkt in PowerShell.
Ihre sieben Werte
Werte werden gelöscht in
Gelöscht — Ihre Werte wurden nach 15 Minuten ohne Aktivität entfernt. Geben Sie sie erneut ein, um fortzufahren.
Der Host, auf dem Ihr Matomo läuft. Daraus werden der Entra-App-Name und die Secret-Beschreibung abgeleitet.
Von der Overview-Seite Ihrer App-Registrierung. Eine Kennung, kein Geheimnis.
Von derselben Overview-Seite.
Die Spalte Value, die bei der Erstellung des Secrets nur ein einziges Mal angezeigt wird — nicht die Secret ID. Sie wird nur im Vorab-Block unten verwendet und erscheint nie in der Zusammenfassung.
Das freigegebene Postfach, als das Matomo sendet.
Die eingebaute Domäne Ihres Tenants — aus der Absenderadresse vorausgefüllt; passen Sie sie an, falls Ihre abweicht.
Das Konto, das Sie auf admin.microsoft.com verwenden — oft ein admin@…onmicrosoft.com-Konto, nicht Ihre tägliche E-Mail-Adresse.
Abgeleitete Namen
- Name der Entra-App
missivus-matomo-analytics.example.com- Beschreibung des Client-Secrets
missivus-matomo-analytics.example.com- Adresse der Sicherheitsgruppe
noreply-apps@yourcompany.onmicrosoft.com
Modul installieren und anmelden
Ein Browserfenster öffnet sich; melden Sie sich mit dem Administratorkonto an. Windows bringt PowerShell mit; unter macOS führen Sie `brew install --cask powershell` aus, danach `pwsh`.
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
Connect-ExchangeOnline -UserPrincipalName {{admin}}Die Gruppe anlegen
Ihr einziges Mitglied ist Ihr freigegebenes Postfach. Notieren Sie die PrimarySmtpAddress, die PowerShell ausgibt — sie liegt in der Regel auf der eingebauten Domäne des Tenants und ist genau das, was der nächste Befehl benötigt.
New-DistributionGroup -Name "NoReply Apps" -Alias noreply-apps -Type Security -Members "{{sender}}"Die App an die Gruppe binden
Eine einzige Zeile. Das ist der Schritt, der aus „einer App, die im Namen jeder Adresse senden könnte“ „eine App, die als genau eine Adresse senden kann“ macht.
New-ApplicationAccessPolicy -AppId "{{clientId}}" -PolicyScopeGroupId "{{group}}" -AccessRight RestrictAccess -Description "Missivus (Matomo) may only send as {{sender}}"Überprüfen — zuerst 5 Minuten warten
Die erste Zeile muss AccessCheckResult Granted zeigen, die zweite muss Denied zeigen. Die zweite Zeile enthält einen Platzhalter — ersetzen Sie ihn durch ein beliebiges anderes echtes Postfach in Ihrem Tenant, Ihre eigene Adresse genügt. Fahren Sie erst fort, wenn dort Denied steht.
Test-ApplicationAccessPolicy -Identity "{{sender}}" -AppId "{{clientId}}"
Test-ApplicationAccessPolicy -Identity "{{other}}" -AppId "{{clientId}}"Vorabtest — eine echte E-Mail aus PowerShell senden
Optional, aber dringend empfohlen — er belegt Tenant, App, Secret und Richtlinie von Anfang bis Ende, bevor Matomo überhaupt beteiligt ist. Gibt der erste Teil 20 Zeichen aus, funktioniert die Authentifizierung. StatusCode 202 plus eine E-Mail in Ihrem Postfach bedeuten, dass die Microsoft-Seite fertig ist. Ersetzen Sie den Platzhalter für den Empfänger durch Ihr eigenes Postfach.
$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 StatusCodeAufräumen und abmelden
Das Secret wurde in dieses Fenster eingetippt, also löschen Sie es und schließen Sie PowerShell danach.
Remove-Variable Secret,tok,body
Disconnect-ExchangeOnlineFür Ihren Passwortmanager
Kopieren Sie diesen Block in die Notizen eines Passwortmanager-Eintrags. Er enthält die Kennungen, die Sie bei der Rotation des Secrets brauchen — das Secret selbst steht bewusst nicht darin.
{{summaryAppName}}: {{appName}}
{{summaryTenantId}}: {{tenantId}}
{{summaryClientId}}: {{clientId}}
{{summaryGroup}}: {{group}}
{{summarySender}}: {{sender}}
{{summaryExpiry}}Danach in Matomo abschließen
Tragen Sie Tenant-ID, Client-ID, Secret und Absender unter Administration → System → General settings → Missivus ein, setzen Sie den Haken bei „Send email through Microsoft Graph“, speichern Sie und klicken Sie auf „Send test email“.