Zum Inhalt springen

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.

  • 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.
  1. Öffnen Sie E-Mail-Dienste → Dienst hinzufügen → Mailgun.
  2. 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
  1. 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.
  2. 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.

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:

; SPF
mg.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-Tracking
email.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=quarantine und später auf p=reject.

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-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.

Mailgun kann melden, was mit einer Nachricht passiert ist, nachdem es sie angenommen hat.

  1. 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.

  2. Ö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)
  1. 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.

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 unhealthy markiert; 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 als held_service_error in 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 failed und der Credit wird erstattet.
  • transient – Timeouts, 5xx, Drosselung mit 429. Wiederholung mit exponentiellem Backoff; wenn alle Versuche aufgebraucht sind, ist die Nachricht failed und 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.
  • 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