Examail
New

SMTP Relay

Examail runs its own self-hosted mail node. Instead of the REST API, you can authenticate any SMTP-speaking application directly against it — useful for off-the-shelf software you don't control the code of.

Drop-in SMTP

Point WordPress, a legacy PHP app, Postfix, or any SMTP-capable library at mail.sendexa.co — no SDK, no REST integration.

Per-app credentials

Issue a dedicated username/password per application from the dashboard — revoke one without touching the others.

Domain-ownership enforced

Postfix itself rejects any send where 'From' isn't a domain you've verified — spoofing another business's domain is impossible.

Same wallet, billed live

Every accepted send debits your wallet balance synchronously — insufficient funds means a clean SMTP rejection, not a silent drop.

Host

mail.sendexa.co

Port / Encryption

587 · STARTTLS

Auth

PLAIN (user/pass)

1. Create a credential

SMTP credentials are issued from the dashboard (Examail → SMTP Relay → New Credential) — this is a separate, session-authenticated flow from the API-key-based REST endpoints on this site, since a credential is meant to be pasted into another application's SMTP settings, not embedded in your own backend alongside your API key.

JSON
// Shown once at creation time — copy it now
{
"username": "smtp_b7baa58c4aa59088",
"secret": "m8Cw8IzTSLbKMpL2h2f7r9ejg52F4RnF",
"host": "mail.sendexa.co",
"port": 587
}
2. Configure your application

Any SMTP client works. Two common examples:

JavaScript
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: "mail.sendexa.co",
port: 587,
secure: false, // STARTTLS, not implicit TLS
requireTLS: true,
auth: {
user: "smtp_b7baa58c4aa59088",
pass: "m8Cw8IzTSLbKMpL2h2f7r9ejg52F4RnF",
},
});
await transporter.sendMail({
from: '"Acme" <hello@yourdomain.com>', // must be a verified domain
to: "user@example.com",
subject: "Hello from Examail SMTP relay",
html: "<p>Sent without touching the REST API.</p>",
});
What happens on every send
StageCheckOn failure
RCPT TOIs this recipient on your suppression list?550 rejection for that recipient
Sender domainIs the From: domain verified and owned by you?553 5.7.1 Sender address rejected
End of messageDoes your wallet have balance for the flat per-email rate?550 5.7.1 rejection, nothing is charged

A successful send creates an EmailMessage record (provider: "postfix-smtp") visible via GET /v1/email/history just like REST-API sends.