When an email is sent from GatorMail it doesn’t land immediately in the recipient’s mailbox. It first goes onto our mailserver where the email is queued for send. Each email that hits our mailserver will usually have a delivery attempt immediately, but depending on the response from the other side, it may remain in the queue for longer. By default we retry sending every 10 minutes until 1 day has passed, at which point the email will expire and we discard it. At best an email delivers with seconds of being sent. At worst the email does not deliver and is discarded because the remote server never accepted it. At any point from the first delivery attempt to when it is discarded the email can bounce.
When an email delivery attempt is made the remote site will do one of three things:
1. Accept the email.
2. Defer with a “soft” response telling the sender to try again later.
3. Reject with a “hard” response telling the sender to go away.
Despite what no.1 says, all three of these can result in a bounce. Essentially there are two types of bounces, but also two ways to get a bounce. The types are what we have all heard of – hard and soft. But the ways to get a bounce are called local and remote.
- A local bounce is when a bounce occurs with the email never leaving our mailserver. We have the email on our side, attempt a delivery, but get a hard or soft rejection. This is no.2 and no.3 above. Bounces of this nature account for over 90% of all bounces.
- A remote bounce is when we deliver the email over to the recipient network but it later bounces back to us. This can only happen for no.1 above.
- A soft bounce occurs when the email does not deliver for the duration the email is on the mailserver. This means every retry attempt made to deliver the email was deferred but none of those deferrals was a hard response. After the email expires, it will bounce with the last deferral reply from the remote server.
- A hard bounce occurs whenever the remote site give a reject response. Typically you get these on the first delivery attempt but you can actually get them any time until the message expires. An email may get deferrals for 2 days but that turns into a hard response on day 3 for example.
How GatorMail Processes a Bounce
GatorMail logs bounces into the campaign results in three different counts. Hard, soft and other. We separate them into these based on a bounce category that we work out when the bounce occurs.
A hard bounce is a bounce related to a recipient address which is clearly unable to receive future messages. Examples are bounces from providers reporting the user does not exist or bounces due to non existent domains. Addresses from hard bounces should be excluded from future mailings as soon as possible. When there are many bounces with invalid local part on a domain the provider might start blocking mail due to high unknown user rates. Addresses with inactive user or invalid domains might become a spam trap in the future. And lastly sending to invalid addresses is a waste of effort.
A soft bounce is a bounce related to a recipient address which is probably unable to receive future messages. Examples are indirect bounces due to invalid domains or bounces due to exceeded quota. Addresses from soft bounces should be excluded from future mailings after N consecutive soft bounces. This prevents removal when the bounce appears to be a temporary problem.
Other bounces are unrelated to the recipient address and must be treated differently from hard and soft bounces. These bounces mean the contact email address is valid but the email was rejected for another reason so they should not have an effect on the mailing list. They are related to sender reputation, local policies, email authentication, message content, etc. If the bounces indicate spam or reputation issues then further mails from the affected sender to the affected provider might be postponed or reduced until the problem is solved.
The GatorMail campaign results explains bounces as follows…
- Hard Bounces = The total number of emails that bounced and caused the contact to immediately become undeliverable.
- Soft Bounces = The total number of emails that bounced and incremented the contact bounce count value. If it was the contacts 3rd consecutive soft bounce, they will also become undeliverable.
- Other Bounces = The total number of other emails that bounced. These bounces do not cause an undeliverable or increment the contact bounce count value.
We judge all bounces based on what the bounce category is. For example a bad-domain bounce is a clear sign of a bad email address and the contact would be marked undeliverable straight away. A routing-error is a soft bounce that increments the contact bounce count. A spam-related bounce while is technically a soft bounce, we don't increment the contact bounce count so we class it in the other bounce count.
Here is our current bounce category breakdown:
Bounce Category | Cause Undeliverable | Cause Soft Bounce | Description |
bad-configuration | No | No | messages rejected due to configuration issues with remote host, 5.X.X error |
bad-connection | No | No | messages bounced due to bad connection issues with remote host, 4.X.X error |
bad-domain | Yes | No | messages bounced due to invalid or non-existing domains, 5.X.X error |
bad-mailbox | Yes | No | messages rejected due to bad, invalid, or non-existent recipient addresses, 5.X.X error |
complaint-related | Yes | No | messages that were accepted, but have then been complained about by the recipient |
content-related | No | No | messages refused or blocked due to content related reasons, 5.X.X error |
inactive-mailbox | Yes | No | messages rejected due to expired, inactive, or disabled recipient addresses, 5.X.X error |
invalid-sender | No | No | messages rejected due an invalid sender |
message-expired | No | No | messages bounced due to not being delivered before the bounce-after, 4.X.X error |
no-answer-from-host | No | Yes | messages bounces due to receiving no response from remote host after connecting, 4.X.X or 5.X.X error |
policy-related | No | No | messages refused or blocked due to general policy reasons, 5.X.X error |
protocol-errors | No | No | messages rejected due to SMTP protocol syntax or sequence errors, 5.X.X error |
quota-issues | No | Yes | messages rejected or blocked due to mailbox quota issues, 4.X.X or 5.X.X error |
relaying-issues | No | Yes | messages refused or blocked due to remote mail server relaying issues, 5.X.X error |
routing-errors | No | Yes | messages bounced due to mail routing issues for recipient domain, 5.X.X error |
spam-related | No | No | messages refused or blocked due to spam related reasons, 5.X.X error |
virus-related | No | No | messages refused or blocked due to virus related reasons, 5.X.X error |
other | No | No | messages rejected due to other reasons, 4.X.X or 5.X.X error |