Mailgun
Mailgun ist ein Transaktions-E-Mail-Dienst für Entwickler und eine solide Standardwahl für Frontmail: eine einfache API, Regionen in den USA und der EU, detaillierte Ereignisdaten und Webhooks für Zustellungen, Bounces, Beschwerden, Öffnungen und Klicks.
Wählen Sie Mailgun, wenn Sie Transaktions-E-Mails (Registrierungen, Belege, Benachrichtigungen, Formulareinsendungen) von Ihrer eigenen Domain senden, Bounces und Beschwerden verfolgen möchten und Ihre Daten lieber in der EU halten (Mailgun-Region EU). Für eine Handvoll E-Mails aus einem persönlichen Postfach sind SMTP oder Gmail einfacher. Einen Vergleich finden Sie in der Übersicht der E-Mail-Dienste.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Ein Mailgun-Konto. Neue Konten starten mit einer Sandbox-Domain, die nur an autorisierte Empfänger senden kann (siehe Sandbox & Limits).
- Eine in Mailgun hinzugefügte und verifizierte Versand-Domain – wir empfehlen eine Subdomain wie
mg.example.com, damit Reputation und DNS Ihrer Hauptdomain getrennt bleiben. - Ein API-Schlüssel. Erstellen Sie für Frontmail einen eigenen Schlüssel unter Account settings → API security → Add new key (ältere Oberfläche: Account → API keys).
- Verwenden Sie einen Schlüssel mit der restriktivsten Rolle, die noch senden und Domain-Informationen lesen kann (z. B. Developer statt Admin).
- Ein Domain Sending Key (Sending → Domain settings → Sending API keys) kann senden, aber die Domain nicht lesen – Verbindung testen und die tägliche Statusprüfung melden ihn daher als defekt. Verwenden Sie einen privaten Kontoschlüssel.
- Optional: den HTTP webhook signing key unter Sending → Webhooks für Zustellereignisse.
In Frontmail verbinden
Abschnitt betitelt „In Frontmail verbinden“- Öffnen Sie E-Mail-Dienste → Dienst hinzufügen → Mailgun.
- Füllen Sie die Felder aus:
| Feld | Wo Sie es finden | Beispiel |
|---|---|---|
| Region | Die Region neben der Domain in Mailgun (Sending → Domains) | EU (api.eu.mailgun.net) |
| Versand-Domain | Sending → Domains, genau wie dort aufgeführt | mg.example.com |
| API-Schlüssel | Account settings → API security (wird nur einmal beim Erstellen angezeigt) | key-3ax6… / a1b2c3…-us |
| Webhook-Signaturschlüssel | Sending → Webhooks → HTTP webhook signing key | 8c1f… |
| Max. E-Mails pro Sekunde | Optional; Standard 10/s | 5 |
- Klicken Sie auf Prüfen & speichern – Frontmail fragt die Domain über die Mailgun-API ab und prüft, ob Schlüssel, Region und Domain zusammenpassen.
- Ist die Prüfung erfolgreich, wird der Dienst gespeichert. Zugangsdaten werden mit AWS KMS per Envelope-Verschlüsselung verschlüsselt; nur der Versandprozess entschlüsselt sie beim Senden.
Die Absenderadresse der Vorlage muss auf der Versand-Domain liegen (z. B. hello@mg.example.com) – oder auf der Hauptdomain, falls Sie diese verifiziert haben.
DNS: SPF, DKIM und DMARC
Abschnitt betitelt „DNS: SPF, DKIM und DMARC“Mailgun zeigt die genauen Einträge für Ihre Domain unter Sending → Domains → DNS records an. Für mg.example.com sehen sie etwa so aus:
; SPFmg.example.com. TXT "v=spf1 include:mailgun.org ~all"
; DKIM – der Selektor wird je Domain erzeugt (z. B. pic, k1, smtp, mx)pic._domainkey.mg.example.com. TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEB…"
; Empfang / Bounce-Verarbeitung (empfohlen)mg.example.com. MX 10 mxa.mailgun.org.mg.example.com. MX 10 mxb.mailgun.org. ; EU: mxa.eu.mailgun.org / mxb.eu.mailgun.org
; Öffnungs- und Klick-Trackingemail.mg.example.com. CNAME mailgun.org. ; EU: eu.mailgun.org
; DMARC – auf der Organisationsdomain, zunächst nur überwachen_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"- Kopieren Sie den DKIM-Selektor aus Mailgun, nicht aus diesem Beispiel – er ist je Domain unterschiedlich (
pic._domainkey,k1._domainkey, …). Neuere Domains können DKIM auch per CNAME delegieren, mit automatischer Schlüsselrotation. - Hat die Hauptdomain bereits einen SPF-Eintrag für Ihr Postfach, ist das kein Problem – die Subdomain hat ihren eigenen SPF-Eintrag.
- Klicken Sie in Mailgun auf Verify DNS settings; die Verbreitung kann Minuten bis Stunden dauern.
- Sobald die DMARC-Berichte sauber aussehen, verschärfen Sie auf
p=quarantineund später aufp=reject.
Regionen
Abschnitt betitelt „Regionen“Mailgun betreibt zwei vollständig getrennte Regionen:
| Region | API-Host | Verwenden, wenn |
|---|---|---|
| USA | api.mailgun.net |
die Domain in der Region USA angelegt wurde (Standard) |
| EU | api.eu.mailgun.net |
die Domain in der Region EU angelegt wurde (Daten bleiben in der EU) |
Eine Domain existiert in genau einer Region – wählen Sie also die Region, in der die Domain angelegt wurde. Passt sie nicht, antwortet Mailgun mit 404 Domain not found, was Frontmail als auth-Fehler behandelt. Die Region lässt sich später nicht ändern – für einen Umzug fügen Sie die Domain in der anderen Region erneut hinzu.
Sandbox & Limits
Abschnitt betitelt „Sandbox & Limits“- Sandbox-Domain (
sandbox123….mailgun.org): sendet nur an autorisierte Empfänger (bis zu 5), die eine Einladungs-E-Mail bestätigt haben. Alles andere schlägt mit „Free accounts are for test purposes only“ fehl. Gut für einen ersten Test, nicht für den Produktivbetrieb. - Kostenloser Tarif: etwa 100 E-Mails pro Tag.
- Neue Konten / Domains können von Mailgun gedrosselt werden, bis Sie eine Versandhistorie aufgebaut oder die Unternehmensverifizierung abgeschlossen haben.
- Frontmails Standardrate für Mailgun beträgt 10 Nachrichten pro Sekunde und Dienst; senken Sie sie unter Max. E-Mails pro Sekunde, wenn Mailgun Sie drosselt.
Webhooks (Zustellverfolgung)
Abschnitt betitelt „Webhooks (Zustellverfolgung)“Mailgun kann melden, was mit einer Nachricht passiert ist, nachdem es sie angenommen hat.
-
Kopieren Sie die Webhook-URL auf der Seite des Dienstes in Frontmail (Kopier-Schaltfläche neben Webhook-URL). Sie sieht so aus:
https://api.frontmail.dev/webhooks/providers/mailgun/<token><token>ist für diesen Dienst eindeutig – verwenden Sie ihn nicht für mehrere Dienste. -
Öffnen Sie in Mailgun Sending → Webhooks, wählen Sie die richtige Domain (und Region) und fügen Sie die URL für diese Ereignisse hinzu:
| Mailgun-Ereignis | Frontmail-Ereignis |
|---|---|
| Delivered | delivered |
| Permanent failure | bounced – die Adresse wird auf die Sperrliste gesetzt |
| Temporary failure | wird bei der Nachricht protokolliert; Mailgun versucht es weiter |
| Spam complaints | complained – wird auf die Sperrliste gesetzt |
| Opens | opened (erfordert Öffnungs-Tracking für die Domain) |
| Clicks | clicked (erfordert Klick-Tracking für die Domain) |
- Kopieren Sie den HTTP webhook signing key von derselben Seite in das Feld Webhook-Signaturschlüssel des Dienstes in Frontmail.
Signaturprüfung: Jeder Mailgun-Webhook enthält timestamp, token und signature. Frontmail berechnet HMAC-SHA256 über timestamp + token mit Ihrem Signaturschlüssel und lehnt Anfragen ab, deren Signatur nicht übereinstimmt. Ohne Signaturschlüssel lassen sich Ereignisse nicht verifizieren und werden ignoriert.
Frontmail versieht jede Nachricht mit v:frontmail_message_id, sodass Ereignisse der richtigen Nachricht zugeordnet werden – auch wenn Sie dieselbe Vorlage viele Male senden.
Häufige Fehler
Abschnitt betitelt „Häufige Fehler“Frontmail teilt Fehler des Anbieters in drei Klassen ein:
- auth – der Dienst funktioniert nicht (ungültiger API-Schlüssel, 401/403, falsche Domain oder Region, Sandbox-Einschränkungen). Der Dienst wird als
unhealthymarkiert; der Inhaber erhält eine E-Mail und einen Hinweis im Dashboard. Hat die Vorlage einen Ersatzdienst, wird die Nachricht darüber gesendet; sonst wird der Credit erstattet und die Nachricht wartet alsheld_service_errorin der Warteschlange zurückgehaltener E-Mails. Sie wird automatisch gesendet, sobald Sie den Dienst reparieren (geprüft beim Speichern und bei der täglichen Statusprüfung). - permanent – diese Nachricht lässt sich nicht senden (ungültiger Empfänger, 4xx-Validierungsfehler). Falls eingerichtet, wird der Ersatzdienst versucht; sonst ist der Status
failedund der Credit wird erstattet. - transient – Timeouts, 5xx, Drosselung mit 429. Wiederholung mit exponentiellem Backoff; wenn alle Versuche aufgebraucht sind, ist die Nachricht
failedund der Credit wird erstattet.
| Mailgun-Antwort | Klasse | Was tun |
|---|---|---|
401 Forbidden |
auth | Der API-Schlüssel ist falsch, gelöscht oder gehört zu einem anderen Konto. Erstellen Sie einen neuen Schlüssel und aktualisieren Sie den Dienst. |
404 Domain not found: mg.example.com |
auth | Prüfen Sie die Schreibweise der Domain und die Region (EU-Domains brauchen api.eu.mailgun.net). |
400 Domain mg.example.com is not allowed to send: Free accounts are for test purposes only… |
auth | Sandbox-Domain oder nicht verifiziertes Konto – fügen Sie einen autorisierten Empfänger hinzu, verifizieren Sie Ihre eigene Domain oder wechseln Sie den Tarif. |
403 „account disabled / domain disabled“ |
auth | Mailgun hat den Versand gesperrt; prüfen Sie das Mailgun-Dashboard und wenden Sie sich an den Mailgun-Support. |
400 'to' parameter is not a valid address |
permanent | Die Empfängeradresse ist fehlerhaft – siehe ungültiger Empfänger. |
413 Request Entity Too Large |
permanent | Die Nachricht mit Anhängen überschreitet Mailguns Größenlimit (25 MB). |
429 Too Many Requests |
transient | Gedrosselt; Frontmail berücksichtigt Retry-After. Senken Sie Max. E-Mails pro Sekunde, wenn das häufig vorkommt. |
500 / 502 / 503, Timeout |
transient | Ausfall bei Mailgun – nichts zu tun, Frontmail wiederholt automatisch. |
Checkliste
Abschnitt betitelt „Checkliste“- Eigene Versand-Domain (z. B.
mg.example.com) in Mailgun hinzugefügt und verifiziert - SPF, DKIM, MX und Tracking-CNAME veröffentlicht; DMARC mindestens
p=none - Region in Frontmail entspricht der Region der Domain
- Privater API-Schlüssel mit eingeschränkter Rolle, kein Domain Sending Key
- Verbindung testen erfolgreich
- Webhook-URL für Delivered, Permanent failure, Complaints (+ bei Bedarf Opens/Clicks) eingetragen
- Webhook-Signaturschlüssel in Frontmail eingetragen
- Absenderadresse der Vorlage liegt auf der verifizierten Domain