Gmail (OAuth)
L’integrazione Gmail invia i modelli Frontmail dalla tua casella Gmail o Google Workspace tramite la Gmail API. I messaggi inviati compaiono nella cartella Posta inviata, le risposte tornano nella tua casella e i destinatari vedono una normale email da parte tua.
Scegli Gmail quando hai un sito personale, un portfolio o una piccola attività e vuoi che gli invii dei moduli e le notifiche partano dall’indirizzo che usi già, senza configurare il DNS se usi @gmail.com. Non è pensato per i volumi: Google limita l’invio giornaliero (vedi Limiti) e non ci sono webhook di consegna. Per volumi transazionali usa Mailgun, Postmark, Amazon SES o Resend. Vedi la panoramica dei servizi.
Prerequisiti
Sezione intitolata “Prerequisiti”- Un account Gmail (
@gmail.com) o un utente Google Workspace con Gmail attivo. - Per Workspace: l’amministratore deve consentire alle app di terze parti di accedere ai dati Google oppure considerare esplicitamente attendibile Frontmail in Console di amministrazione → Sicurezza → Accesso e controllo dei dati → Controlli API → Controllo dell’accesso alle app.
- Nient’altro: nessuna chiave API, nessun progetto Google Cloud.
Collegamento in Frontmail
Sezione intitolata “Collegamento in Frontmail”- Apri Servizi email → Aggiungi servizio → Gmail.
- Clicca Collega Gmail. Verrai reindirizzato a Google.
- Scegli l’account e controlla la schermata di consenso. Frontmail richiede:
https://www.googleapis.com/auth/gmail.send– inviare email per tuo conto. È uno scope di solo invio: Frontmail non può leggere, cercare, eliminare o modificare alcuna email nella tua casella.openid email– il tuo indirizzo email, così la dashboard può mostrare quale account è collegato e usarlo come indirizzo mittente predefinito.
- Clicca Consenti. Google ti riporta indietro e il servizio viene salvato, con l’indirizzo collegato in evidenza.
- Se vuoi, imposta Max email al secondo (predefinito 2/s) e clicca Prova connessione, che aggiorna l’access token e verifica che il permesso
gmail.sendsia stato concesso.
Cosa viene salvato: Frontmail salva il refresh token OAuth (e un access token di breve durata), cifrati con AWS KMS (envelope encryption). L’access token scade dopo circa un’ora; Frontmail lo rinnova in modo trasparente prima dell’invio. Il flusso usa PKCE e richiede sempre l’accesso offline, quindi un nuovo collegamento genera un refresh token nuovo.
Quando il token smette di funzionare
Sezione intitolata “Quando il token smette di funzionare”Google invalida un refresh token quando:
- revochi l’accesso in Account Google → Sicurezza → App e servizi di terze parti → Frontmail,
- cambi la password dell’account Google (per gli scope Gmail Google revoca i token esistenti),
- non usi il token per 6 mesi,
- oppure un amministratore Workspace rimuove l’accesso dell’app.
L’invio o il controllo di stato successivo fallisce allora con invalid_grant. Frontmail lo tratta come un errore auth: il servizio viene segnato come unhealthy, ricevi un’email e un banner nella dashboard, e i messaggi restano in attesa (o vengono inviati tramite il servizio di riserva) finché non clicchi Ricollega nella pagina del servizio. Il nuovo collegamento crea un nuovo refresh token e rilascia automaticamente i messaggi in attesa.
DNS: SPF, DKIM e DMARC
Sezione intitolata “DNS: SPF, DKIM e DMARC”- Indirizzi
@gmail.com: non c’è niente da fare, Google firma e autentica la posta. - Google Workspace sul tuo dominio: pubblica i record di Google, se non l’hai già fatto:
; SPFexample.com. TXT "v=spf1 include:_spf.google.com ~all"
; DKIM – da generare in Console di amministrazione → App → Google Workspace → Gmail → Autentica emailgoogle._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A…"
; DMARC_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"Dopo aver pubblicato il record DKIM, clicca Avvia autenticazione nella Console di amministrazione. Rendi DMARC più restrittivo (p=quarantine / p=reject) quando i report sono puliti.
Indirizzo mittente: Gmail invia come l’account collegato. Puoi usare un altro indirizzo solo se è configurato come alias Invia messaggio come nelle impostazioni di Gmail; altrimenti Gmail riscrive il mittente con l’indirizzo dell’account.
Regioni
Sezione intitolata “Regioni”Non ci sono regioni: la Gmail API è globale.
Limiti di invio
Sezione intitolata “Limiti di invio”Google applica limiti giornalieri per utente. Superarli blocca l’invio fino a 24 ore.
| Account | Limite approssimativo |
|---|---|
Gmail personale (@gmail.com) |
~500 destinatari al giorno |
| Google Workspace | ~2.000 messaggi al giorno (meno durante la prova) |
| Gmail API | 250 unità di quota per utente al secondo; un invio = 100 unità |
Per questo Frontmail invia al massimo 2 messaggi al secondo tramite Gmail. Quando Google risponde dailyLimitExceeded, Frontmail aspetta un’ora tra un tentativo e l’altro; se il limite persiste, il messaggio finisce come failed e il credito viene rimborsato.
Tracciamento della consegna (webhook)
Sezione intitolata “Tracciamento della consegna (webhook)”Gmail non ha webhook di consegna, quindi non c’è niente da configurare e nessun URL del webhook nella pagina del servizio. Frontmail sa solo se Google ha accettato il messaggio (sent) o l’ha rifiutato (failed). I bounce arrivano come normali email «Delivery Status Notification» nella tua casella Gmail e non vengono aggiunti automaticamente alla lista di soppressione di Frontmail. Aperture e clic non vengono tracciati.
Errori comuni
Sezione intitolata “Errori comuni”- auth – il servizio non funziona (token revocato/scaduto,
invalid_grant, 401/403, Gmail non attivo per l’utente Workspace). Il servizio viene segnato comeunhealthy; il proprietario riceve un’email e un banner nella dashboard. Subentra il servizio di riserva del modello, se c’è; altrimenti il credito viene rimborsato e il messaggio aspetta nella coda dei messaggi in attesa comeheld_service_errore viene inviato automaticamente dopo il nuovo collegamento (ricontrollato al salvataggio e dal controllo di stato giornaliero). - permanent – questo messaggio non può essere inviato (destinatario non valido, messaggio troppo grande, validazione 400). Servizio di riserva se configurato, altrimenti
failede rimborsato. - transient – 5xx, limiti di frequenza/giornalieri, timeout. Ritentato con backoff esponenziale; dopo l’ultimo tentativo
failede rimborsato.
| Risposta di Google | Classe | Cosa fare |
|---|---|---|
invalid_grant – Token has been expired or revoked |
auth | Clicca Ricollega nella pagina del servizio e concedi di nuovo l’accesso. |
401 – Invalid Credentials |
auth | Di solito si risolve con il rinnovo automatico del token; se persiste, ricollega. |
403 – Insufficient Permission / insufficient_scope |
auth | Nella schermata di consenso è stata tolta la spunta a gmail.send: ricollega e consenti l’invio. |
403 – accesso bloccato dall’amministratore Workspace |
auth | Chiedi all’amministratore di considerare attendibile Frontmail in Controlli API. |
400 failedPrecondition – Mail service not enabled |
auth | L’utente Workspace non ha una licenza Gmail; attiva Gmail o collega un altro account. |
400 invalidArgument – Invalid To header |
permanent | Vedi destinatario non valido. |
413 / 400 – messaggio troppo grande |
permanent | Riduci la dimensione degli allegati (il limite di Gmail è 25 MB). |
429 / 403 rateLimitExceeded, userRateLimitExceeded, dailyLimitExceeded |
transient | Rallenta o aspetta che il limite giornaliero si azzeri; valuta un provider transazionale. |
500 / 503 backendError |
transient | Disservizio di Google: Frontmail ritenta. |
Checklist
Sezione intitolata “Checklist”- Collegato con Collega Gmail; consenso concesso per l’invio di email
- Workspace: Frontmail consentito nei Controlli API (se limitati)
- Workspace sul proprio dominio: SPF
include:_spf.google.com, DKIMgoogle._domainkey, DMARC - Mittente del modello = l’indirizzo collegato o un alias Invia messaggio come configurato
- Prova connessione va a buon fine
- Volume giornaliero ben al di sotto dei limiti di Google
- Servizio di riserva configurato sui modelli importanti, nel caso il token venga revocato