Interaktive Anleitung

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 15:00

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 StatusCode

Aufrä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-ExchangeOnline

Fü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“.

Referenz zur Plugin-Konfiguration