La sua configurazione, precompilata
Inserisca i valori una volta sola e ogni comando qui sotto si riscrive da sé — il nome dell'app, l'access policy, i test di verifica e l'email di pre-flight. Copi ciascun blocco direttamente in PowerShell.
Tutto resta nel suo browser. Nulla di ciò che digita qui viene salvato o inviato altrove — niente cookie, niente localStorage, nessuna richiesta di rete. I valori scompaiono al ricaricamento della pagina e vengono cancellati dopo 15 minuti di inattività.
Questa pagina rispecchia la Parte 5 della guida di installazione completa, che illustra i passaggi preliminari nel portale Entra.Guida di installazione completa su GitHub
I suoi sette valori
I valori si cancellano tra
Cancellati — I suoi valori sono stati rimossi dopo 15 minuti di inattività. Li digiti di nuovo per continuare.
L'host su cui gira il suo Matomo. Da esso derivano il nome dell'app Entra e la descrizione del secret.
Dalla pagina Overview della registrazione app. Un identificatore, non un segreto.
Dalla stessa pagina Overview.
La colonna Value, mostrata una sola volta alla creazione del secret — non il Secret ID. Usato soltanto nel blocco di pre-flight qui sotto; non compare mai nel riepilogo.
La casella condivisa da cui Matomo invierà.
Il dominio integrato del suo tenant — precompilato dall'indirizzo mittente; lo modifichi se il suo è diverso.
L'account che usa su admin.microsoft.com — spesso un account admin@…onmicrosoft.com, non la sua email quotidiana.
Nomi derivati
- Nome dell'app Entra
missivus-matomo-analytics.example.com- Descrizione del client secret
missivus-matomo-analytics.example.com- Indirizzo del gruppo di sicurezza
noreply-apps@yourcompany.onmicrosoft.com
1 — Installare il modulo ed effettuare l'accesso
Si apre una finestra del browser; accedere con l'account amministratore. Windows include già PowerShell; su macOS eseguire `brew install --cask powershell`, poi `pwsh`.
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
Connect-ExchangeOnline -UserPrincipalName {{admin}}2 — Creare il gruppo
Il suo unico membro è la casella condivisa. Annotare il PrimarySmtpAddress stampato da PowerShell — di norma è sul dominio integrato del tenant, ed è esattamente ciò che serve al comando successivo.
New-DistributionGroup -Name "NoReply Apps" -Alias noreply-apps -Type Security -Members "{{sender}}"3 — Vincolare l'app al gruppo
Una sola riga. È il passaggio che trasforma "un'app che potrebbe inviare a nome di chiunque" in "un'app che può inviare esattamente da un solo indirizzo".
New-ApplicationAccessPolicy -AppId "{{clientId}}" -PolicyScopeGroupId "{{group}}" -AccessRight RestrictAccess -Description "Missivus (Matomo) may only send as {{sender}}"4 — Verificare — attendere prima 5–10 minuti
La prima riga deve mostrare AccessCheckResult Granted, la seconda deve mostrare Denied. La seconda riga usa un segnaposto — lo sostituisca con qualsiasi altra casella reale del suo tenant; va bene il suo stesso indirizzo. Non prosegua finché non risponde Denied.
Test-ApplicationAccessPolicy -Identity "{{sender}}" -AppId "{{clientId}}"
Test-ApplicationAccessPolicy -Identity "{{other}}" -AppId "{{clientId}}"5 — Pre-flight, inviare una vera email da PowerShell
Facoltativo ma vivamente consigliato — dimostra tenant, app, secret e policy da un capo all'altro prima di coinvolgere Matomo. Se la prima parte stampa 20 caratteri, l'autenticazione funziona. StatusCode 202 più un'email nella sua casella significa che il lato Microsoft è concluso. Sostituisca il segnaposto del destinatario con la sua casella.
$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 StatusCode6 — Pulizia e disconnessione
Il secret è stato digitato in questa finestra, quindi lo cancelli e chiuda PowerShell.
Remove-Variable Secret,tok,body
Disconnect-ExchangeOnlinePer il suo password manager
Copi questo blocco nelle note di una voce del password manager. Contiene gli identificatori che serviranno alla rotazione del secret — il secret stesso, deliberatamente, non c'è.
{{summaryAppName}}: {{appName}}
{{summaryTenantId}}: {{tenantId}}
{{summaryClientId}}: {{clientId}}
{{summaryGroup}}: {{group}}
{{summarySender}}: {{sender}}
{{summaryExpiry}}Poi concludere in Matomo
Inserire ID tenant, ID client, secret e mittente in Administration → System → General settings → Missivus, spuntare "Send email through Microsoft Graph", salvare e premere "Send test email".