SMTP relay

For the software you didn't write.

A host, a port and a password is all some software will ever give you. Point it at Sendwax and it sends through your verified domains, with the same delivery reporting, suppression handling and unsubscribe management as the API.

If you are writing the code, use the API instead. It gives you a message id per recipient and an error you can read, rather than a three-digit reply code your framework swallowed.

Setting up your client

The values are the same everywhere; what differs is where the settings live and the one thing that goes wrong with each one.

WordPress

  • WP Mail SMTP — The most installed SMTP plugin on WordPress. Takes about two minutes.
  • FluentSMTP — Free, open source, and happy to hold several connections at once.
  • Post SMTP — Keeps its own email log and can alert you when a send fails.
  • Easy WP SMTP — The plainest of them. Nothing to configure beyond the connection.
  • Gravity SMTP — From the Gravity Forms team, and the right choice if your forms are theirs.
  • WooCommerce — Order confirmations, shipping notices, password resets. The ones customers notice.

Servers and frameworks

  • Postfix — Everything on the box — cron, monitoring, mail(1) — goes out properly signed.
  • Laravel — Two lines of .env. Or use our package and skip SMTP entirely.
  • Python — The standard library, no dependencies.
  • Nodemailer — The usual way a Node app sends mail.

The settings

Hostsmtp.sendwax.com
Port587, with STARTTLS — required, not optional
Usernamesendwax
Passwordan API key from API keys in the dashboard
Froman address you have approved under Senders

Use a send-only key, and the dashboard will steer you to one. It can send mail and do nothing else, so a key sitting in a plugin's settings screen on shared hosting cannot read your contacts or your activity log.

WordPress

With WP Mail SMTP, FluentSMTP, Post SMTP, or any plugin that takes a host and a password — choose Other SMTP and fill in:

SMTP Hostsmtp.sendwax.com
EncryptionTLS (STARTTLS)
SMTP Port587
AuthenticationOn
Usernamesendwax
Passwordyour API key
From Emailan approved sender

Postfix as a relayhost

relayhost = [smtp.sendwax.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:sendwax:esk_send_your_key
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt

What has to be true for a message to go

The From address must be one you have approved under Senders, on a domain you have verified. Owning example.com is not by itself permission to send as ceo@example.com — that second step is what stops a leaked key from sending fully-signed mail as anyone in your company.

Everything else behaves exactly as it does through the API: a suppressed address is not mailed, a marketing opt-out is honored, your allowance is counted, and every message appears in the activity log with its own id.

Two headers you can set

X-Sendwax-Type: marketingMarks the message as marketing, so an opt-out applies and unsubscribe headers are attached. Transactional is the default, and this header can only raise it, never lower it.
X-Sendwax-Tag: receiptsA label for filtering the activity log. Repeat it or comma-separate; ten maximum.

Both are removed before the message is sent. So is any other X-Sendwax- header, which is simply ignored — a typo in a tag name will never bounce a password reset.

What we rebuild, and what that loses

Your message is not relayed byte for byte. We read it, take what matters, and build a new one that our DKIM signature covers. That is what makes the reporting, the suppression and the one-click unsubscribe work, and it has costs worth knowing before you point production at it.

  • Inline images lose their placement. An image referenced with cid: arrives as an ordinary attachment and the reference in the HTML dangles. If your mail relies on embedded images, use the API or hosted image URLs.
  • Recipients come from the envelope, never the headers. To: and Cc: visibility is not preserved: each recipient gets their own copy addressed to them alone. A Bcc: header is read only to be discarded.
  • Threading is not preserved. In-Reply-To and References are dropped, so a reply will not thread in the recipient's client.
  • Your Message-ID and Date are replaced. The Message-ID is used while we have it, to recognize the same message offered twice within an hour, and then a fresh one is minted.
  • Calendar invitations arrive as attachments, not as invitations the recipient's client offers to accept.
  • Your own DKIM-Signature, Received chain and Return-Path are dropped.
  • Scheduling is not available over SMTP. Send at the time you want it sent, or use the API.

Limits

Message size10 MB
Attachments25 parts, 7 MB decoded in total
Recipients per message100
Send rate300 per minute, shared with your API key's rate

Reading a refusal

A 4xx means try again — a rate limit, a daily allowance, something temporary on our side. Your mail server will hold the message and retry, which is the right thing.

A 5xx means the message will never be accepted as sent. The two you are most likely to meet:

550 5.7.1 Sender ceo@example.com rejected: your account has not added that domain
550 5.7.1 ceo@example.com is not an approved sender for your account; add it under Senders

Both are fixed in the dashboard in under a minute, and neither is about the message.

A 535 on login means the key is wrong, revoked, or SMTP is not enabled for the account. We deliberately do not say which — telling you would tell anyone guessing which guess was closer.

Availability

SMTP is a Pro feature and has to be switched on for your account. Ask us and we will turn it on.