guida · Mailgun API

Come può un team di prodotto implementare la Mailgun API in modo sicuro?

Implementa la Mailgun API dietro un worker server autorizzato. Verifica il dominio di invio esatto, usa la credenziale API più ristretta disponibile, crea un job di invio interno persistente e invia dati multipart form all'endpoint Messages con ambito di dominio. Salva l'identificatore del messaggio restituito da Mailgun, autentica le richieste webhook prima di elaborarle, deduplica gli eventi e applica bounce, segnalazioni di spam e disiscrizioni al momento dell'invio. Tieni come stati distinti l'accettazione da parte dell'API, l'elaborazione in Mailgun, la consegna al server ricevente e l'arrivo in inbox.

Definisci un'operazione di prodotto ristretta prima di chiamare Mailgun

Parti da un evento di prodotto approvato, come la verifica dell'account, una ricevuta, un avviso di sicurezza o una notifica richiesta dal destinatario. Metti Mailgun dietro un servizio applicativo attendibile o un worker della coda, invece di esporre a browser e client mobili una credenziale del provider o un modulo di messaggio arbitrario. Autorizza chiamante, tenant, identità del mittente, destinatario, classe del messaggio e template prima di creare i campi per il provider. Salva un record interno di invio con una chiave stabile dell'evento, tenant, revisione del template, indirizzi approvati e stato iniziale. Questo record è il sistema di riferimento per le decisioni; Mailgun è la dipendenza di trasporto. Separare l'intento di business dai payload del provider rende più sicuri nuovi tentativi e audit e mantiene possibile una futura migrazione di provider. Il traffico transazionale e quello che dipende dal consenso dovrebbero restare distinti nel modello dei dati, così preferenze dei destinatari, regole di soppressione e incidenti di reputazione non diventano una convenzione informale nei template.

Verifica il dominio di invio esatto e i record DNS

Aggiungi un dominio controllato dall'organizzazione e pubblica i record DNS che Mailgun fornisce attualmente per la verifica, l'autenticazione, il tracciamento e le funzionalità di ricezione effettivamente scelte. Esamina i record SPF e DMARC esistenti prima di modificare il DNS. Non creare un secondo record SPF su uno stesso hostname e non sostituire una policy DMARC organizzativa senza il suo responsabile. Verifica l'identità From e di firma effettivamente usata dal carico di lavoro, non solo un dominio padre adiacente. Usa un sottodominio dedicato quando la titolarità, la separazione del traffico o la migrazione lo giustificano. Dopo che Mailgun segnala la verifica, esamina un messaggio ricevuto in modo controllato per indirizzo From visibile, dominio di firma DKIM, return path, risultati di autenticazione e comportamento delle risposte. La verifica del provider dimostra che il suo controllo di configurazione è stato superato. Non dimostra il consenso dei destinatari, l'accettazione presso la destinazione, la reputazione del mittente o l'arrivo in inbox. Conserva la cronologia delle modifiche DNS e le istruzioni di rollback al di fuori della dashboard del provider.

Usa credenziali con ambito limitato e l'endpoint regionale corretto

Mailgun documenta l'autenticazione HTTP Basic per le sue API, con credenziali API che variano per autorità e scopo. Un worker di invio dovrebbe ricevere solo la credenziale necessaria per il dominio e l'operazione approvati. Tieni separate chiavi principali dell'account, chiavi di invio per dominio, materiale di firma dei webhook e credenziali degli ambienti non di produzione. Archivia i segreti direttamente in un secret store gestito ed esponili solo al processo server che ne ha bisogno. Non inserire mai credenziali in codice client, controllo di versione, URL, log, analytics, template, ticket o prompt. Seleziona l'URL base dell'API documentato per la regione dell'account, invece di presumere che ogni dominio usi lo stesso host. Prova la rotazione creando un sostituto con ambito equivalente, aggiornando il worker, verificando traffico ed eventi controllati e infine revocando la vecchia credenziale. Imposta avvisi sugli errori di autenticazione e autorizzazione inattesi, perché possono indicare revoca, regione errata, deriva dell'ambito o esposizione.

Costruisci una singola richiesta persistente alla Messages API

L'endpoint Messages di Mailgun, con ambito di dominio, accetta campi multipart form per mittente, destinatari, oggetto, contenuto testuale o HTML e opzioni documentate come template, allegati, intestazioni, tag, variabili per destinatario, tracciamento e consegna programmata. Esponi solo il sottoinsieme di cui il prodotto ha bisogno. Valida la sintassi degli indirizzi e la titolarità del tenant, limita il numero di destinatari e allegati, rifiuta l'iniezione di caratteri di nuova riga e renderizza template approvati con variabili tipizzate. Non inserire segreti o dati personali non necessari in tag, variabili personalizzate o intestazioni, perché eventi del provider e viste delle attività possono mostrare i metadati separatamente dal contenuto del messaggio. Invia a partire dal job interno preso in carico e salva l'identificatore del messaggio restituito da Mailgun insieme al tentativo esatto. Mantieni i nomi delle opzioni specifiche del provider in un unico adapter. Il codice di business dovrebbe ricevere un risultato ristretto (accettato, rifiutato o incerto) invece di conoscere ogni campo e forma di errore di Mailgun.

Progetta i nuovi tentativi in base ad accettazione e ambiguità

Classifica le risposte prima di ritentare. Correggi campi malformati, domini non autorizzati, credenziali non valide, errori di permessi ed errori di policy permanenti invece di ripetere la richiesta. Ritenta gli errori di trasporto idonei, gli errori server del provider e le richieste limitate dal rate limit con backoff esponenziale, jitter, un numero finito di tentativi e limiti all'età della coda. Una risposta API di accettazione di Mailgun significa che il provider ha accettato la richiesta di invio per elaborarla; non dimostra che il server di destinazione abbia accettato il messaggio. Un timeout del client è ambiguo, perché Mailgun potrebbe aver accettato la richiesta anche se il worker non ha ricevuto la risposta. Tieni quel job in uno stato sconosciuto, cerca i dati di correlazione salvati o eventi successivi e applica una regola di riconciliazione deliberata prima di inviare di nuovo. Il trasporto tramite Mailgun non elimina la necessità di una chiave stabile dell'evento applicativo, della presa in carico da parte di un solo worker, della cronologia dei tentativi e dei controlli sul rischio di duplicati. Imposta avvisi sugli errori ripetuti per credenziale, dominio, template, tenant e provider di destinazione.

Autentica le richieste webhook prima del parsing

Configura un endpoint webhook HTTPS e conserva esattamente i campi usati dalla procedura di firma di Mailgun. Mailgun documenta un timestamp, un token e una firma derivata con la chiave di firma dei webhook. Valida la firma con un confronto a tempo costante e rifiuta i timestamp fuori dalla finestra di validità dell'applicazione prima di accettare l'evento. Tieni traccia di token o identificatori degli eventi quanto serve per resistere ai replay. Mantieni la chiave di firma dei webhook separata dalle credenziali di invio e ruotala con un processo testato. Applica limiti alla dimensione delle richieste e non fidarti di URL, destinatari, tag o campi degli eventi solo perché il corpo viene analizzato correttamente. Dopo l'autenticazione, archivia o accoda l'evento in modo persistente prima di restituire un esito positivo. Questo impedisce che un crash del processo cancelli le prove di consegna. La verifica del webhook dimostra origine e integrità con il segreto configurato; non dimostra che l'evento di business appartenga al tenant previsto finché l'applicazione non mette in correlazione il dominio e gli identificatori dei messaggi del provider.

Gestisci in modo idempotente i nuovi tentativi dei webhook e gli eventi duplicati

Mailgun documenta il comportamento dei nuovi tentativi dei webhook quando un endpoint non restituisce la risposta di successo attesa. Il ricevente deve presumere consegne ritardate e ripetute. Deduplica in base a un identificatore stabile dell'evento del provider, se presente, oppure a una chiave composita prudente che non possa unire destinatari o tipi di evento diversi. Conserva separatamente l'orario originale dell'evento e l'orario di elaborazione. Rendi monotone le transizioni di stato, così un'osservazione più vecchia di tipo accepted o delivered non può cancellare un errore permanente, una segnalazione di spam o una disiscrizione successivi solo perché i nuovi tentativi arrivano fuori ordine. Restituisci un esito positivo solo dopo l'acquisizione persistente, ma mantieni asincrona l'elaborazione di business più onerosa, così l'endpoint resta affidabile. Monitora errori di firma, latenza delle risposte, volume dei nuovi tentativi, ritardo degli eventi e record nella dead-letter queue. Conserva i payload grezzi del provider solo finché le esigenze operative e di policy lo giustificano, con accesso limitato e riduzione al minimo degli indirizzi. Un webhook è un flusso di prove, non un permesso per esporre lo storico dei destinatari tra tenant diversi.

Modella gli eventi di Mailgun senza sopravvalutare la consegna

Mailgun documenta tipi di evento per accepted, delivered, errori temporanei e permanenti, opened, clicked, unsubscribed, complained, stored e altri esiti di elaborazione correlati. Associa questi nomi a un modello interno conservando il tipo di evento del provider, l'identificatore del messaggio, l'ambito del destinatario, il timestamp, la gravità e l'eventuale risposta SMTP. Accepted descrive la presa in carico da parte di Mailgun o l'avanzamento in coda. Delivered descrive l'osservazione di consegna documentata, di solito l'accettazione da parte del server di destinazione, ma non rivela la cartella finale nella casella. Aperture e clic sono strumenti di misurazione dell'engagement, non prove di trasporto, e le tecnologie per la privacy possono influenzarli. Gli errori temporanei possono giustificare nuovi tentativi limitati all'interno del sistema di trasporto; errori permanenti, segnalazioni di spam e disiscrizioni devono aggiornare lo stato di sicurezza del destinatario prima che venga inviato qualsiasi job applicativo successivo. Mantieni il registro degli eventi in sola aggiunta e ricava lo stato mostrato agli utenti con regole esplicite, così il supporto può distinguere le prove dalla loro interpretazione.

Applica i blocchi per errori, segnalazioni di spam e disiscrizioni al momento dell'invio

Mailgun documenta il tracciamento degli errori di consegna, delle segnalazioni di spam e delle disiscrizioni. Importa questi segnali in un modello di sicurezza dei destinatari gestito dal prodotto, con tenant, indirizzo, classe del messaggio, evento di origine, motivo e data di efficacia. Controlla questo stato subito prima di ogni invio, non solo quando viene importata una lista per una campagna. Un bounce permanente o una segnalazione di spam dovrebbero bloccare i nuovi tentativi non sicuri per l'ambito applicabile. La gestione delle disiscrizioni deve rispettare la classe del messaggio e gli attuali requisiti dei destinatari o di legge; non va aggirata abitualmente tramite le opzioni del provider. Proteggi qualsiasi rimozione manuale con un'autorizzazione forte, un motivo visibile e una cronologia di audit. I dati di soppressione del provider sono prove operative preziose, ma non costituiscono un registro completo dei consensi. Conserva separatamente fonte del consenso, preferenze, decisioni di policy critiche per il prodotto e storico precedente del provider, così una migrazione non elimina le protezioni dei destinatari. Testa con identità controllate la propagazione delle soppressioni, le segnalazioni di spam duplicate, i bounce ritardati e le riattivazioni eccezionali.

Considera SendHQ come alternativa a Mailgun

SendHQ offre email transazionali e email di marketing basate sul consenso con invio da domini verificati, email in entrata, eventi di consegna e soppressioni. Prima della migrazione, esamina la documentazione dell'API pubblica e testa autenticazione, payload, errori, identificatori, eventi, domini e flussi di sicurezza dei destinatari.

Domande frequenti

Quale endpoint invia email tramite la Mailgun API?

Mailgun documenta un endpoint `POST /v3/{domain}/messages` con ambito di dominio, che usa dati multipart form e l'autenticazione HTTP Basic. Chiamalo solo da codice lato server autorizzato.

Una chiave API di Mailgun può stare nel codice del browser?

No. Archivia la credenziale adeguata più ristretta in un secret manager lato server. Tieni separate le autorizzazioni per produzione, ambienti non di produzione, amministrazione dell'account, invio per dominio e firma dei webhook.

L'accettazione da parte della Mailgun API significa che l'email è stata consegnata?

No. Significa che Mailgun ha accettato l'invio per elaborarlo. Eventi autenticati possono segnalare in seguito la consegna al server di destinazione o un errore, mentre l'arrivo in inbox resta un esito distinto lato destinatario.

Come vanno autenticati i webhook di Mailgun?

Valida timestamp, token e firma documentati da Mailgun con la chiave di firma dei webhook prima dell'elaborazione. Applica controlli di validità temporale e anti-replay, poi acquisisci l'evento in modo persistente prima di confermarlo.

Ogni errore della Mailgun API va ritentato?

No. Correggi gli errori di validazione, autenticazione, dominio, permessi e policy permanenti. Usa un backoff limitato per gli errori transitori idonei e riconcilia i timeout ambigui prima di inviare di nuovo.

SendHQ può sostituire Mailgun?

Forse. SendHQ offre email transazionali e email di marketing basate sul consenso con invio da domini verificati, email in entrata, eventi di consegna e soppressioni. Prima della migrazione, esamina la documentazione dell'API pubblica e testa la tua integrazione.

Fonti