✉️Need a safe space to test your email integrations? Introducing Sandbox Mode.
x

How to test bounces

Along with our Sandbox mode feature, Postmark offers a black hole domain (bounce-testing.postmarkapp.com) to test bounces. This can be useful to test your integrations, allowing you to generate fake bounces in a safe manner, so it won’t affect your sending domain or reputation.

Sending an email to our bounce-testing.postmarkapp.com domain will immediately bounce the message—this will appear as a real bounce in your activity and statistics, as well as post a webhook (if you have this enabled). By default, we classify messages as a hard bounce, but you can test other bounce types too as defined in our Bounce API documentation, and listed below. We have set up a dedicated address for each bounce type, to help you generate a fake bounce for it.
An example recipient address that will generate a soft bounce:
SoftBounce@bounce-testing.postmarkapp.com

All bounce types listed below are supported:

Type

Email address

Name & Description

HardBounce HardBounce@bounce-testing.postmarkapp.com
Hard bounce — The server was unable to deliver your message (ex: unknown user, mailbox not found).
Transient Transient@bounce-testing.postmarkapp.com

Message delayed — The server could not temporarily deliver your message (ex: Message is delayed due to network troubles).
Unsubscribe Unsubscribe@bounce-testing.postmarkapp.com

Unsubscribe request — Unsubscribe or Remove request.
Subscribe Subscribe@bounce-testing.postmarkapp.com

Subscribe request — Subscribe request from someone wanting to get added to the mailing list.
AutoResponder AutoResponder@bounce-testing.postmarkapp.com Auto responder — Automatic email responder(ex:"Out of Office" or"On Vacation").
AddressChange AddressChange@bounce-testing.postmarkapp.com Address change — The recipient has requested an address change.
DnsError DnsError@bounce-testing.postmarkapp.com DNS error — A temporary DNS error.
SpamNotification SpamNotification@bounce-testing.postmarkapp.com Spam notification — The message was delivered, but was either blocked by the user, or classified as spam, bulk mail, or had rejected content.
OpenRelayTest OpenRelayTest@bounce-testing.postmarkapp.com

Open relay test — The NDR is actually a test email message to see if the mail server is an open relay.
Unknown Unknown@bounce-testing.postmarkapp.com

Unknown — Unable to classify the NDR.
SoftBounce SoftBounce@bounce-testing.postmarkapp.com Soft bounce — Unable to temporarily deliver message(i.e. mailbox full, account disabled, exceeds quota, out of disk space).
VirusNotification VirusNotification@bounce-testing.postmarkapp.com Virus notification — The bounce is actually a virus notification warning about a virus/code infected message.
ChallengeVerification ChallengeVerification@bounce-testing.postmarkapp.com Spam challenge verification — The bounce is a challenge asking for verification you actually sent the email. Typcial challenges are made by Spam Arrest, or MailFrontier Matador.
BadEmailAddress BadEmailAddress@bounce-testing.postmarkapp.com

Invalid email address — The address is not a valid email address.
ManuallyDeactivated ManuallyDeactivated@bounce-testing.postmarkapp.com Manually deactivated — The email was manually deactivated.
Unconfirmed Unconfirmed@bounce-testing.postmarkapp.com Registration not confirmed — The subscriber has not clicked on the confirmation link upon registration or import.
Blocked Blocked@bounce-testing.postmarkapp.com

ISP block — Blocked from this ISP due to content or blacklisting.
SMTPApiError SMTPApiError@bounce-testing.postmarkapp.com SMTP API error — An error occurred while accepting an email through the SMTP API.
InboundError InboundError@bounce-testing.postmarkapp.com

Processing failed — Unable to deliver inbound message to destination inbound hook.
DMARCPolicy DMARCPolicy@bounce-testing.postmarkapp.com DMARC Policy — Email rejected due DMARC Policy.
TemplateRenderingFailed TemplateRenderingFailed@bounce-testing.postmarkapp.com Template rendering failed — An error occurred while attempting to render your template.


Custom message headers

Rather than sending to the dedicated addresses above, another way to generate fake this is using our " X-PM-Bounce-Type" custom header e.g. X-PM-Bounce-Type: SoftBounce. This works for sending via SMTP and our API.
Example body format:
{
 "From": "sender@example.com",
 "To": "test@bounce-testing.postmarkapp.com",
 "Subject": "Bounce",
 "TextBody": "This will bounce",
 "ReplyTo": "reply@example.com",
 "TrackOpens": true,
 "TrackLinks": "None",
 "MessageStream": "outbound",
 "Headers": [{
 "Name": "X-PM-Bounce-Type",
 "Value": "SoftBounce"
 }]
}
Example request with CURL:
curl "https://api.postmarkapp.com/email" \
 -X POST \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 -H "X-Postmark-Server-Token: server token" \ 
 -d '{
 "From": "sender@example.com",
 "To": "test@bounce-testing.postmarkapp.com",
 "Subject": "Bounce",
 "TextBody": "This will bounce",
 "ReplyTo": "reply@example.com",
 "TrackOpens": true,
 "TrackLinks": "None",
 "MessageStream": "outbound",
 "Headers": [{
 "Name": "X-PM-Bounce-Type",
 "Value": "SoftBounce"
 }]
}'

Things to note

  • These testing options will only work with our black hole domain (bounce-testing.postmarkapp.com).
  • They support camel case and are case insensitive, so soft_bounce@bounce-testing.postmarkapp.com or X-PM-Bounce-Type: soft_bounce will also work.
  • Hard Bounces will act like normal Hard Bounces, and will be added to your suppression list. If you need to test an inactive recipient again, it will need to be reactivated.
  • Spam Complaints are currently not supported (they will default to a Hard Bounce).
  • Bounces via our black hole domain will not be counted towards bounce limits.
  • Each sent message will count as 1 email and will be deducted from your monthly plan.
Last updated June 30th, 2021

Still need some help?

Our customer success team has your back!