Vai al contenuto
Avanet

Introduzione alla Sophos Email Management API

La Email Management API è l’interfaccia di automazione circoscritta al tenant per determinate attività di Sophos Email. Questa introduzione spiega come verificare il contratto API e scegliere la famiglia di operazioni corretta. Le procedure dettagliate di scrittura, quarantena e clawback restano nei rispettivi runbook; una panoramica non autorizza modifiche.

Acquisire i prerequisiti

Prima della prima richiesta Email occorre completare il flusso API Central comune: autenticare un service principal tramite OAuth2, identificare il tenant di destinazione e scoprirne l’host API regionale. Gestire in modo sicuro le credenziali API Sophos Central descrive protezione delle credenziali, richiesta del token, whoami, risoluzione dei tenant Partner ed Enterprise e diagnostica comune.

Questo articolo usa esattamente tre valori già convalidati:

  • SOPHOS_ACCESS_TOKEN: token bearer OAuth2 di breve durata;
  • SOPHOS_TENANT_ID: UUID del tenant di destinazione;
  • SOPHOS_API_HOST: host regionale completo per quel tenant.

L’host globale serve solo a scoprire identità e tenant. Le operazioni Email vanno inviate all’host regionale restituito. Non dedurre regione o tenant da un nome visualizzato. Token, client secret e payload completi non devono finire in codice, log o ticket.

Scegliere la famiglia di operazioni

ObiettivoFamigliaVerificare prima
Inventariare o gestire cassette postaliMailbox Managementorigine dei dati, tipi consentiti e se la sincronizzazione directory ne è proprietaria
Esaminare o gestire messaggi trattenuti prima della consegnaQuarantinefiltri, selezione, autorizzazione ed effetto di rilascio, eliminazione o azioni sugli allegati
Esaminare o gestire messaggi già consegnatiPost-Delivery Quarantineprotezione post-delivery attiva, stato corrente ed eventuali job asincroni
Richiamare un messaggio consegnato e seguirne l’esitoClawbackID messaggio idoneo, ambito destinatari, autorizzazione e stato asincrono

Central presenta come API Email anche Message History tramite query XDR e la gestione dei certificati S/MIME. Hanno contratti e autorizzazioni distinti. Non trasferire a esse percorsi, schemi o ipotesi delle quattro famiglie precedenti.

Passare Message History alla XDR Query API

Per Message History, proseguire con la panoramica corrente della XDR Query API. È un servizio regionale separato, protetto da OAuth2 e con radice /xdr-query/v1, non un’operazione sotto /email/v1. Valutare autorizzazioni ed errori XDR separatamente dalle ipotesi della Email Management API.

Mantenere limitato il ciclo di vita: usare le operazioni documentate per categorie e definizioni di query per individuare una definizione corrente, avviare un’esecuzione con POST, esaminarne lo stato, recuperarne i risultati al termine e annullarla quando necessario. Questo articolo non fornisce né inventa una query Email. Prima dell’implementazione, verificare nella descrizione API corrente collegata gli schemi di operazione e risposta applicabili ad avvio, controllo, risultati e annullamento.

Prima di costruire una query, aprire il visualizzatore ufficiale dello schema Email Message History. Selezionare una tabella nel riquadro Table name, quindi esaminare General info, Fields e Custom Types. Come orientamento, lo schema Email corrente espone esattamente tre tabelle rilevabili: xdr_xge_att_data, xdr_xge_url_data e xdr_xge_events. Il visualizzatore live resta l’autorità per campi e tipi; questo articolo non duplica intenzionalmente un elenco di campi. Queste tabelle del Data Lake non sono schemi di risposta di /email/v1.

Prima di implementare, scegliere l’operazione esatta nella descrizione API corrente e verificarne metodo HTTP, percorso, schema di richiesta, schema di risposta, autorizzazione e limiti documentati. Non inventare percorsi né ricavare un’operazione sostituendo un sostantivo.

Il percorso prosegue da autenticazione e routing tenant a mailbox, clawback, quarantena, quarantena post-delivery e S/MIME.

Costruire il contratto della richiesta

La specifica esaminata usa un URL di base regionale che termina con /email/v1. Ogni richiesta relativa al tenant richiede token bearer e X-Tenant-ID; le chiamate JSON usano Content-Type: application/json. Aggiungere all’host convalidato solo il percorso prodotto documentato:

EMAIL_API_HOST="${SOPHOS_API_HOST%/}/email/v1"

Prima delle scritture in produzione eseguire una lettura innocua. GET /mailboxes è un’operazione di elenco nella specifica esaminata. pageSize=1 limita solo la prima risposta e non dimostra che non esistano altre pagine:

RESPONSE_FILE=$(mktemp) || exit 1
trap 'rm -f "$RESPONSE_FILE"' EXIT
HTTP_STATUS=$(
  printf 'header = "Authorization: Bearer %s"\n' "$SOPHOS_ACCESS_TOKEN" |
  curl --silent --show-error --config - \
    --output "$RESPONSE_FILE" \
    --write-out '%{http_code}' \
    --request GET \
    --header "X-Tenant-ID: $SOPHOS_TENANT_ID" \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    "$EMAIL_API_HOST/mailboxes?pageSize=1"
)

if [[ "$HTTP_STATUS" != "200" ]]; then
  printf 'Email API returned HTTP %s\n' "$HTTP_STATUS" >&2
  exit 1
fi

if ! jq -e '(.items | type) == "array" and (.pages | type) == "object"' \
  "$RESPONSE_FILE" >/dev/null; then
  printf 'Email API response failed schema validation\n' >&2
  exit 1
fi
rm -f "$RESPONSE_FILE"
trap - EXIT

Il test riesce con stato 200 e strutture items e pages presenti. Non registrare indiscriminatamente i corpi: anche l’elenco delle cassette contiene dati personali del tenant.

Gestire paginazione, throttling e durata del token

Una prima pagina valida non è un inventario completo. Per GET /mailboxes, pages.nextKey contiene la chiave successiva; nella richiesta seguente va passata, codificata per URL, come pageFromKey. Il client continua finché non resta alcun nextKey, limitando pagine e durata e rilevando chiavi ripetute. Per ogni altra operazione vale solo il modello di paginazione attualmente documentato.

Il throttling non è un errore di schema. Con 429, rispettare gli header documentati di retry o rate limit, usare un backoff limitato con jitter e porre un limite a tentativi e durata totale. Non ripetere alla cieca scritture, eliminazioni, rilasci o clawback: un timeout può verificarsi dopo l’accettazione server.

Rinnovare un token scaduto tramite OAuth2. Non aggirare 401 cambiando tenant o regione. Con 403, controllare ruolo, autorizzazione e assegnazione; con 404, host regionale, percorso documentato e ID. Gli altri 4xx sono errori di richiesta o stato. Gestire i 5xx entro limiti precisi e chiarire stato ed eventuale effetto prima di riprovare.

Convalidare versione e rilascio in produzione

La specifica alla base di questo articolo è stata esaminata alla versione v1.4.0. Verificare nuovamente la versione corrente prima dell’implementazione. Percorsi o schemi di v1.4.0 non sono garantiti per le versioni successive.

Prima del rilascio documentare:

  1. proprietario delle credenziali, ruolo minimo, ID tenant e host regionale scoperto;
  2. famiglia scelta e metodo, percorso e schema correnti;
  3. GET innocua con stato HTTP ed esito dello schema, senza token o payload completo;
  4. termine della paginazione, comportamento 429, rinnovo token e durata massima dei retry;
  5. per ogni modifica, idempotenza, approvazione, effetto atteso, verifica e percorso di arresto.

Implementare l’operazione di business solo dopo aver superato questi controlli in un tenant di test o su un record controllato. OAuth2 e routing del tenant restano prerequisiti comuni, non funzionalità Sophos Email.