Guida interattiva

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

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 StatusCode

6 — Pulizia e disconnessione

Il secret è stato digitato in questa finestra, quindi lo cancelli e chiuda PowerShell.

Remove-Variable Secret,tok,body
Disconnect-ExchangeOnline

Per 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".

Riferimento di configurazione del plugin