gids · mail gun api

Hoe implementeert een productteam de Mailgun API op een veilige manier?

Implementeer de Mailgun API achter een geautoriseerde serverworker. Verifieer het exacte verzenddomein, gebruik de smalste beschikbare API-credential, maak een duurzame interne verzendjob aan en dien multipart form data in bij het Messages-endpoint op domeinniveau. Sla de bericht-identifier op die Mailgun teruggeeft, authenticeer webhookrequests voordat je ze verwerkt, dedupliceer events en handhaaf bounces, klachten en afmeldingen op het moment van verzenden. Houd acceptatie door de API, verwerking door Mailgun, bezorging bij de ontvangende server en inboxplaatsing als afzonderlijke toestanden.

Definieer een afgebakende productactie voordat je Mailgun aanroept

Begin met een goedgekeurd productevent, zoals accountverificatie, een ontvangstbewijs, een beveiligingsmelding of een notificatie waar de ontvanger om heeft gevraagd. Plaats Mailgun achter een vertrouwde applicatieservice of queue worker in plaats van een providercredential of een willekeurig berichtformulier bloot te stellen aan browsers en mobiele clients. Autoriseer de aanroeper, tenant, afzenderidentiteit, ontvanger, berichtklasse en template voordat je providervelden aanmaakt. Sla een intern uitgaand record op met een stabiele event-sleutel, tenant, templaterevisie, goedgekeurde adressen en begintoestand. Dit record is het beslissysteem; Mailgun is de transportafhankelijkheid. Door de zakelijke bedoeling te scheiden van providerpayloads worden retries en audits veiliger en blijft een latere providermigratie mogelijk. Transactioneel verkeer en verkeer dat van toestemming afhangt, moeten in het datamodel gescheiden blijven, zodat voorkeuren van ontvangers, suppressieregels en reputatie-incidenten geen informele templateconventie worden.

Verifieer het exacte verzenddomein en de DNS-records

Voeg een domein toe dat de organisatie beheert en publiceer de DNS-records die Mailgun op dat moment levert voor verificatie, authenticatie, tracking en de ontvangstfuncties die je daadwerkelijk hebt gekozen. Bekijk bestaande SPF- en DMARC-records voordat je DNS wijzigt. Maak geen tweede SPF-record aan op één hostnaam en vervang geen DMARC-beleid van de organisatie zonder de eigenaar ervan. Verifieer de werkelijke From- en ondertekeningsidentiteit die de workload gebruikt, niet alleen een aangrenzend bovenliggend domein. Gebruik een subdomein voor een specifiek doel wanneer eigenaarschap, scheiding van verkeer of migratie daarom vraagt. Nadat Mailgun verificatie meldt, inspecteer je een gecontroleerd ontvangen bericht op het zichtbare From-adres, het DKIM-ondertekeningsdomein, het return path, de authenticatieresultaten en het gedrag bij beantwoorden. Verificatie door de provider bewijst dat de installatiecontrole van de provider is geslaagd. Het bewijst geen toestemming van ontvangers, acceptatie door de bestemming, afzenderreputatie of inboxplaatsing. Bewaar de wijzigingsgeschiedenis van DNS en terugdraai-instructies buiten het dashboard van de provider.

Gebruik credentials met beperkte scope en het juiste regionale endpoint

Mailgun documenteert HTTP Basic-authenticatie voor zijn API's, met API-credentials die verschillen in bevoegdheid en doel. Een verzendworker mag alleen de credential krijgen die nodig is voor het goedgekeurde domein en de goedgekeurde bewerking. Houd primaire accountsleutels, verzendsleutels per domein, materiaal voor webhookhandtekeningen en credentials voor lagere omgevingen gescheiden. Sla secrets direct op in een beheerde secret store en stel ze alleen beschikbaar aan het serverproces dat ze nodig heeft. Zet credentials nooit in clientcode, versiebeheer, URL's, logs, analytics, templates, tickets of prompts. Kies de gedocumenteerde API-base-URL voor de regio van het account, in plaats van aan te nemen dat elk domein dezelfde host gebruikt. Oefen rotatie door een vervanging met dezelfde scope te maken, de worker bij te werken, gecontroleerd verkeer en events te verifiëren en daarna de oude credential in te trekken. Geef meldingen bij onverwachte authenticatie- en autorisatiefouten, want die kunnen wijzen op intrekking, een verkeerde regio, verschuiving van scope of blootstelling.

Bouw één duurzame request voor de Messages API

Het Messages-endpoint van Mailgun op domeinniveau accepteert multipart-formuliervelden voor afzender, ontvangers, onderwerp, tekst- of HTML-inhoud en gedocumenteerde opties zoals templates, bijlagen, headers, tags, ontvangervariabelen, tracking en geplande bezorging. Stel alleen de subset beschikbaar die het product nodig heeft. Valideer de adressyntaxis en het eigendom per tenant, begrens het aantal ontvangers en bijlagen, weiger newline-injectie en render goedgekeurde templates met getypeerde variabelen. Zet geen secrets of onnodige persoonsgegevens in tags, aangepaste variabelen of headers, want provider-events en activiteitsoverzichten kunnen metadata los van de berichtinhoud tonen. Dien de request in vanuit de geclaimde interne job en sla de bericht-identifier die Mailgun teruggeeft op bij de exacte poging. Houd providerspecifieke optienamen binnen één adapter. De bedrijfscode moet een smal resultaat krijgen (geaccepteerd, geweigerd of onzeker) in plaats van elk Mailgun-veld en elke foutvorm te moeten kennen.

Ontwerp retries rond acceptatie en onduidelijkheid

Classificeer responses voordat je opnieuw probeert. Herstel onjuist opgebouwde velden, niet-geautoriseerde domeinen, ongeldige credentials, rechtenfouten en permanente beleidsfouten in plaats van ze opnieuw af te spelen. Probeer geschikte transportfouten, serverfouten bij de provider en requests met een rate limit opnieuw met exponential backoff, jitter, een eindig aantal pogingen en limieten op de queueleeftijd. Een geaccepteerde API-respons van Mailgun betekent dat de provider de ingediende request voor verwerking heeft geaccepteerd; het bewijst niet dat de bestemmingsserver het bericht heeft geaccepteerd. Een timeout aan de clientkant is onduidelijk, omdat Mailgun de request mogelijk heeft geaccepteerd terwijl de worker de respons heeft gemist. Houd die job in een onbekende toestand, zoek naar de opgeslagen correlatiegegevens of latere events en pas een bewuste reconciliatieregel toe voordat je opnieuw verstuurt. Transport via Mailgun neemt de noodzaak niet weg van een stabiele event-sleutel in de applicatie, een claim door één worker, pogingsgeschiedenis en controles op het risico van duplicaten. Geef meldingen bij herhaalde fouten per credential, domein, template, tenant en bestemmingsprovider.

Authenticeer webhookrequests vóór het parsen

Configureer een HTTPS-webhook-endpoint en behoud de exacte velden die de ondertekeningsprocedure van Mailgun gebruikt. Mailgun documenteert een tijdstempel, een token en een handtekening die met de webhook-ondertekeningssleutel wordt afgeleid. Valideer de handtekening met een constant-time-vergelijking en weiger tijdstempels buiten het actualiteitsvenster van de applicatie voordat je het event accepteert. Houd tokens of event-identifiers bij waar nodig voor bescherming tegen replay. Houd de webhook-ondertekeningssleutel gescheiden van verzendcredentials en roteer hem via een getest proces. Pas groottelimieten voor requests toe en vertrouw URL's, ontvangers, tags of eventvelden niet alleen omdat de body te parsen is. Sla het event na authenticatie duurzaam op of zet het in een queue voordat je succes teruggeeft. Zo voorkom je dat een crash van het proces bezorgbewijs weggooit. Webhookverificatie bewijst herkomst en integriteit onder het geconfigureerde secret; het bewijst niet dat het bedrijfsevent bij de verwachte tenant hoort totdat de applicatie domein en bericht-identifiers van de provider met elkaar heeft gecorreleerd.

Verwerk webhook-retries en dubbele events idempotent

Mailgun documenteert het retrygedrag voor webhooks wanneer een endpoint niet de verwachte succesrespons teruggeeft. De ontvanger moet uitgaan van vertraagde en herhaalde bezorging. Dedupliceer op een stabiele event-identifier van de provider als die er is, of op een behoudende samengestelde sleutel die geen verschillende ontvangers of eventtypen kan samenvoegen. Bewaar het oorspronkelijke tijdstip van optreden en het verwerkingstijdstip afzonderlijk. Maak statusovergangen monotoon, zodat een oudere observatie van accepted of delivered een latere permanente fout, klacht of afmelding niet kan wissen alleen omdat retries in een andere volgorde binnenkomen. Geef pas succes terug na duurzame vastlegging, maar houd dure bedrijfsverwerking asynchroon, zodat het endpoint betrouwbaar blijft. Monitor handtekeningfouten, responslatentie, retryvolume, eventvertraging en dead-letter-records. Bewaar ruwe providerpayloads alleen zo lang als operationele behoeften en beleid rechtvaardigen, met beperkte toegang en zo min mogelijk adressen. Een webhook is een bron van bewijs, geen toestemming om de ontvangergeschiedenis over tenants heen zichtbaar te maken.

Modelleer Mailgun-events zonder bezorging te overdrijven

Mailgun documenteert eventtypen voor accepted, delivered, tijdelijke en permanente failure, opened, clicked, unsubscribed, complained, stored en verwante verwerkingsuitkomsten. Koppel die namen aan een intern model en behoud daarbij het eventtype van de provider, de bericht-identifier, de ontvangerscope, het tijdstempel, de ernst en de beschikbare SMTP-respons. Accepted beschrijft de intake of de voortgang in de queue bij Mailgun. Delivered beschrijft de gedocumenteerde bezorgobservatie, meestal acceptatie door de bestemmingsserver, maar zegt niets over de uiteindelijke mailboxmap. Opens en clicks zijn instrumentatie van engagement, geen transportbewijs, en privacytechnologie kan ze beïnvloeden. Tijdelijke fouten kunnen een begrensde retry binnen het transportsysteem rechtvaardigen; permanente fouten, klachten en afmeldingen moeten de veiligheidsstatus van de ontvanger bijwerken voordat een latere applicatiejob wordt ingediend. Houd het eventregister append-only en leid een status voor gebruikers af via expliciete regels, zodat support bewijs van interpretatie kan onderscheiden.

Handhaaf fouten, klachten en afmeldingen op het moment van verzenden

Mailgun documenteert tracking van bezorgfouten, spamklachten en afmeldingen. Neem die signalen op in een eigen model voor de veiligheid van ontvangers, met tenant, adres, berichtklasse, bronevent, reden en ingangstijd. Controleer die status direct vóór elke verzending, niet alleen wanneer een campagnelijst wordt geïmporteerd. Een permanente bounce of klacht moet onveilige retries voor de betreffende scope stoppen. De afhandeling van afmeldingen moet de berichtklasse en de actuele eisen van ontvangers of de wet respecteren; ze mag niet routinematig worden omzeild via provideropties. Bescherm elke handmatige verwijdering met sterke autorisatie, een zichtbare reden en auditgeschiedenis. Suppressiegegevens van de provider zijn waardevol operationeel bewijs, maar geen volledig toestemmingsregister. Bewaar de bron van toestemming, voorkeuren, beleidsbeslissingen voor productkritieke mail en eerdere providergeschiedenis afzonderlijk, zodat een migratie de bescherming van ontvangers niet weggooit. Test de doorwerking van suppressies, dubbele klachten, vertraagde bounces en uitzonderlijke heractivering met gecontroleerde identiteiten.

Overweeg SendHQ als alternatief voor Mailgun

SendHQ biedt transactionele e-mail en marketingmail op basis van toestemming met verzending vanaf geverifieerde domeinen, inkomende e-mail, bezorgevents en suppressies. Beoordeel de openbare API-documentatie en test authenticatie, payloads, fouten, identifiers, events, domeinen en workflows voor ontvangersveiligheid voordat je migreert.

Veelgestelde vragen

Welk endpoint verzendt e-mail via de Mailgun API?

Mailgun documenteert een endpoint op domeinniveau, `POST /v3/{domain}/messages`, dat multipart form data en HTTP Basic-authenticatie gebruikt. Roep het alleen aan vanuit geautoriseerde server-side code.

Mag een Mailgun-API-sleutel in browsercode staan?

Nee. Sla de smalste geschikte credential op in een server-side secret manager. Houd bevoegdheden voor productie, lagere omgevingen, accountbeheer, verzending per domein en webhookondertekening gescheiden.

Betekent acceptatie door de Mailgun API dat een e-mail is afgeleverd?

Nee. Het betekent dat Mailgun de indiening voor verwerking heeft geaccepteerd. Geauthenticeerde events kunnen later bezorging bij de bestemmingsserver of een fout melden, terwijl inboxplaatsing een afzonderlijke uitkomst aan de kant van de ontvanger blijft.

Hoe moeten Mailgun-webhooks worden geauthenticeerd?

Valideer het gedocumenteerde tijdstempel, token en de handtekening van Mailgun met de webhook-ondertekeningssleutel voordat je het event verwerkt. Pas controles op actualiteit en replay toe en leg het event daarna duurzaam vast voordat je het bevestigt.

Moet elke fout van de Mailgun API opnieuw worden geprobeerd?

Nee. Herstel fouten in validatie, authenticatie, domein, rechten en permanente beleidsfouten. Gebruik begrensde backoff voor geschikte tijdelijke fouten en reconcilieer onduidelijke timeouts voordat je opnieuw verstuurt.

Kan SendHQ Mailgun vervangen?

Mogelijk. SendHQ biedt transactionele e-mail en marketingmail op basis van toestemming met verzending vanaf geverifieerde domeinen, inkomende e-mail, bezorgevents en suppressies. Beoordeel de openbare API-documentatie en test je integratie voordat je migreert.

Bronnen