Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quickstart: SMTP

If your framework already speaks SMTP, there is nothing to install:

SettingValue
Hostsmtp.postrun.dev
Port465 (TLS), or 587 (STARTTLS)
Usernamepostrun — the same for everyone
Passwordyour API key

It is the same service, not a bridge

A message submitted over SMTP lands in the same queue, gets the same delivery timeline, fires the same webhooks and counts against the same quota as one sent over the API. The only thing you give up is the id in a response — SMTP has nowhere to put one — so if you need to join a send back to your own record, find it in the log by recipient and subject, or send that one over the API.

Everything the API enforces is enforced here too: an unverified domain, a suppressed recipient or a spent quota is refused at RCPT or at the final dot with a 550, carrying the same reason the API would have given.

Authentication

The username is the literal string postrun for every account — it is not your email address and not your key’s prefix. Your API key is the password, and which account you are is decided entirely by that key.

A sending_access key is the right one to put here. That is what it is for.

Ports

465 is implicit TLS and 587 is STARTTLS; both are the standard submission ports and either is fine.

We never accept submission in the clear. A connection that will not negotiate TLS is refused rather than downgraded.