Skip to content

Amazon SES

Amazon SES is the provider Mailway knows best: besides sending, it can report delivery events back — confirmed deliveries, bounces, and complaints — which powers the honest delivered state, webhooks like mail.delivered and mail.bounced, and automatic suppressions.

  • An SES account out of the sandbox (AWS’s sandbox only sends to verified addresses — request production access in the SES console).
  • Your sending domain verified in SES with DKIM enabled. This is standard SES setup and AWS’s wizard walks you through the DNS records — see Deliverability for what SPF, DKIM, and DMARC each prove and how to confirm alignment.
  1. Create credentials for Mailway.

    In AWS IAM, create a user (or access key) whose policy allows sending — ses:SendRawEmail is the one that matters. Use a dedicated key for Mailway so you can rotate or revoke it independently.

    Alternative: SES also offers per-region SMTP credentials; Mailway can attach SES through its SMTP endpoint instead of the API if you prefer. Fidelity-wise the two are equivalent: SES’s API is raw-capableSendRawEmail carries mail relayed through Mailway’s SMTP endpoint byte-for-byte, exactly like an SMTP transport.

  2. Add the provider.

    In the console, open Providers → Add provider, pick Amazon SES (API or SMTP transport), and paste the credentials. Secrets are encrypted at rest.

  3. Attach it to a project.

    Open the project, attach the provider, and position it in the failover order. Send something — the console’s provider health panel starts filling in.

Without this section SES only reports “accepted at handoff”. With it, SES tells Mailway what actually happened afterwards. Fifteen minutes, once.

  1. Create a configuration set in the SES console (any name, e.g. mailway).

  2. Tell Mailway about it. On the provider in the console, set the Configuration set field to that name. Mailway now stamps every SES send with it (X-SES-CONFIGURATION-SET).

  3. Generate your webhook URL. On the same provider, click Generate webhook URL — you get a secret URL of the form https://hook.mailway.net/v1/amazon-ses/…. Treat it like a password.

  4. Wire SNS. In AWS: create an SNS topic, then add an event destination to your configuration set publishing Delivery, Bounce, and Complaint events to that topic. Subscribe the topic to your Mailway webhook URL (protocol: HTTPS). Mailway confirms the subscription automatically and pins the topic.

From then on: deliveries flip mails to delivered, hard bounces and complaints land in the project’s suppression list automatically, and the corresponding webhook events fire to your endpoints. Every inbound event is signature-verified against AWS before Mailway trusts it.

Confirm the wiring: send one real mail and watch it flip from accepted to delivered in the console within a few seconds. If it stays accepted, the SNS subscription or configuration set isn’t reaching Mailway — troubleshooting walks through the usual causes.