Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-21 Thread David Hofstee
Unfortunately this is not maintained (at least the technical references on the 
website are not). And there is no time indication to see how old the product 
really is (it looks like it is from 2010).

And there are quite a few things missing that indicate that the bounce engine 
is too simple.


David

Van: mailop [mailto:mailop-boun...@mailop.org] Namens Franck Martin
Verzonden: vrijdag 18 december 2015 23:58
Aan: Karen Balle
CC: Brandon Long; mailop; Ian Eiloart
Onderwerp: Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

http://www.boogietools.com/

The above does some good job in classifying emails

See how they convert bounces into classes:

http://www.boogietools.com/Products/Windows/BoogieBounceAPI/Email-Bounce-Boogie-Bounce-API-Categories.asp?sReturnURL=/Products/Windows/BoogieBounceAPI/Default.asp

On Fri, Dec 18, 2015 at 2:02 PM, Karen Balle 
mailto:kba...@rcn.com>> wrote:
As Brandon points out, it's not that simple.
Some nice examples from one customer's bounce logs today -
"552 Transaction @http://domain.net>> failed, remote said "550 
No such user" (#5.1.1)"  Obviously, we don't want to resend to this address 
again, but...  is it a 552 (mailbox exceeded allocation), a 550 (mailbox 
unavailable doesn't necessary mean no such user) or a 5.1.1 (bad destination 
address).  A 552 shouldn't match with a x.1.1.  They're two different bounce 
reasons that are mutually exclusive, but we see stuff like this all the time.  
If it's a 552, then we could retry this address again later because the mailbox 
is full.  Most likely it's a 5.1.1 and the address is completely invalid so we 
suppress it.

Then there are the "554 Invalid mailbox: @.com" and the "554 
rejecting banned content" bounces.  554 is a valid response for an invalid 
mailbox although 550 and 553 are more common there.  Going strictly by 554, you 
would think retrying would be fine because it's transaction-specific, but not 
suppressing the first will get you blocked whereas the second should be retried 
once you've resolved the root cause.  "550 mailbox unavailable" sometimes means 
the address is invalid and other times means you aren't allowed to access the 
mailbox due to technical or reputation issues.  The mailbox is either 
completely unavailable or the mailbox is only unavailable to you or the mailbox 
can't be internally accessed. Or the "550 5.7.1 
mailto:u...@domain3.com>>... Relaying denied" which may mean 
that the mail is being forwarded and the forward is failing or that you are not 
allowed to access this mailbox at this time except for when it means that the 
address is invalid.  Is "550 5.1.1 unknown or illegal alias" an invalid address 
or is it a directory failure?  (This ISP passes a 4.4.3 for directory failures, 
but many others don't or can't because of system architecture limitations.)


On Fri, Dec 18, 2015 at 11:40 AM, Brandon Long 
mailto:bl...@google.com>> wrote:

4xx vs 5xx is only part of the story.  We're talking about whether the next 
message will succeed.

Sure, a 4xx response probably mostly means go ahead and try the next message, 
but a 5xx doesn't mean that no messages will be accepted for this  account, 
just this one wasn't accepted.

And agreed, some of the extended status codes can be interpreted in this way 
fairly easily, but others...

Brandon
On Dec 18, 2015 7:35 AM, "Ian Eiloart" 
mailto:i...@sussex.ac.uk>> wrote:

> On 18 Dec 2015, at 01:55, Karen Balle mailto:kba...@rcn.com>> 
> wrote:
>
> Brandon,
>
> I really like this idea, even as a mental exercise.  There would be a lot of 
> usefulness in being able to clearly dictate from the enhanced codes when our 
> MTAs should stop, back off, or go into an extended timeout.

Well, that should be pretty clear from the 4xx vs 5xx status. If it’s 4xx, you 
should queue the message for later delivery, otherwise generate a bounce. I 
guess if the recipient wants to indicate that you should reduce your sending 
rate, that’s something that needs a new status, but you could use "4.3.1   Mail 
system full", or "X.4.5   Mail system congestion" because the sensible response 
would be to back off.



>  Perhaps something like having the enhanced code be tied to the primary 
> reason for an organization not accepting email would be useful?  I can't see 
> where we could (or should) come up with a system where every reason an email 
> isn't being accepted is communicated in a single NDR.  Filters are getting 
> horribly complicated and there are often multiple reasons why a sender's mail 
> isn't being accepted.


> From an ESP perspective, being able to tell a customer that Gmail clearly 
> said in a bounce 1) It's you, not them.

There are plenty of c

Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-18 Thread Franck Martin
http://www.boogietools.com/

The above does some good job in classifying emails

See how they convert bounces into classes:

http://www.boogietools.com/Products/Windows/BoogieBounceAPI/Email-Bounce-Boogie-Bounce-API-Categories.asp?sReturnURL=/Products/Windows/BoogieBounceAPI/Default.asp

On Fri, Dec 18, 2015 at 2:02 PM, Karen Balle  wrote:

> As Brandon points out, it's not that simple.
> Some nice examples from one customer's bounce logs today -
> "552 Transaction @ failed, remote said "550 No such
> user" (#5.1.1)"  Obviously, we don't want to resend to this address again,
> but...  is it a 552 (mailbox exceeded allocation), a 550 (mailbox
> unavailable doesn't necessary mean no such user) or a 5.1.1 (bad
> destination address).  A 552 shouldn't match with a x.1.1.  They're two
> different bounce reasons that are mutually exclusive, but we see stuff like
> this all the time.  If it's a 552, then we could retry this address again
> later because the mailbox is full.  Most likely it's a 5.1.1 and the
> address is completely invalid so we suppress it.
>
> Then there are the "554 Invalid mailbox: @.com" and the "554
> rejecting banned content" bounces.  554 is a valid response for an invalid
> mailbox although 550 and 553 are more common there.  Going strictly by 554,
> you would think retrying would be fine because it's transaction-specific,
> but not suppressing the first will get you blocked whereas the second
> should be retried once you've resolved the root cause.  "550 mailbox
> unavailable" sometimes means the address is invalid and other times means
> you aren't allowed to access the mailbox due to technical or reputation
> issues.  The mailbox is either completely unavailable or the mailbox is
> only unavailable to you or the mailbox can't be internally accessed. Or the
> "550 5.7.1 ... Relaying denied" which may mean that the
> mail is being forwarded and the forward is failing or that you are not
> allowed to access this mailbox at this time except for when it means that
> the address is invalid.  Is "550 5.1.1 unknown or illegal alias" an invalid
> address or is it a directory failure?  (This ISP passes a 4.4.3 for
> directory failures, but many others don't or can't because of system
> architecture limitations.)
>
>
> On Fri, Dec 18, 2015 at 11:40 AM, Brandon Long  wrote:
>
>> 4xx vs 5xx is only part of the story.  We're talking about whether the
>> next message will succeed.
>>
>> Sure, a 4xx response probably mostly means go ahead and try the next
>> message, but a 5xx doesn't mean that no messages will be accepted for this
>> account, just this one wasn't accepted.
>>
>> And agreed, some of the extended status codes can be interpreted in this
>> way fairly easily, but others...
>>
>> Brandon
>> On Dec 18, 2015 7:35 AM, "Ian Eiloart"  wrote:
>>
>>>
>>> > On 18 Dec 2015, at 01:55, Karen Balle  wrote:
>>> >
>>> > Brandon,
>>> >
>>> > I really like this idea, even as a mental exercise.  There would be a
>>> lot of usefulness in being able to clearly dictate from the enhanced codes
>>> when our MTAs should stop, back off, or go into an extended timeout.
>>>
>>> Well, that should be pretty clear from the 4xx vs 5xx status. If it’s
>>> 4xx, you should queue the message for later delivery, otherwise generate a
>>> bounce. I guess if the recipient wants to indicate that you should reduce
>>> your sending rate, that’s something that needs a new status, but you could
>>> use "4.3.1   Mail system full", or "X.4.5   Mail system congestion" because
>>> the sensible response would be to back off.
>>>
>>>
>>>
>>> >  Perhaps something like having the enhanced code be tied to the
>>> primary reason for an organization not accepting email would be useful?  I
>>> can't see where we could (or should) come up with a system where every
>>> reason an email isn't being accepted is communicated in a single NDR.
>>> Filters are getting horribly complicated and there are often multiple
>>> reasons why a sender's mail isn't being accepted.
>>>
>>>
>>> > From an ESP perspective, being able to tell a customer that Gmail
>>> clearly said in a bounce 1) It's you, not them.
>>>
>>> There are plenty of codes that say this. All of these are errors that
>>> could be fixed by the sender (not their MTA)
>>>
>>> X.1.1   Bad destination mailbox address
>>> X.1.2   Bad destination system address
>>> X.1.3   Bad destination mailbox address syntax
>>> X.1.6   Destination mailbox has moved, No forwarding address
>>> X.1.7   Bad sender's mailbox address syntax
>>> X.1.8   Bad sender's system address
>>> X.2.3   Message length exceeds administrative limit [per mailbox]
>>> X.3.4   Message too big for system
>>> X.5.3   Too many recipients
>>>
>>> > 2) Your content/domain rep/IP rep is horrible.
>>>
>>>  X.7.1   Delivery not authorized, message refused
>>>   The sender is not authorized to send to the destination.
>>>
>>> But, there’s plenty of scope for extension here: with three digits
>>> available for . Perhaps it’s time to loo

Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-18 Thread Karen Balle
On Fri, Dec 18, 2015 at 10:35 AM, Ian Eiloart  wrote:

>
> Well, that should be pretty clear from the 4xx vs 5xx status. If it’s 4xx,
> you should queue the message for later delivery, otherwise generate a
> bounce. I guess if the recipient wants to indicate that you should reduce
> your sending rate, that’s something that needs a new status, but you could
> use "4.3.1   Mail system full", or "X.4.5   Mail system congestion" because
> the sensible response would be to back off.


There’s a registry, and a review might be a good idea.
>
> https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml#smtp-enhanced-status-codes-2
>
>
___
mailop mailing list
mailop@mailop.org
https://chilli.nosignal.org/cgi-bin/mailman/listinfo/mailop


Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-18 Thread Karen Balle
As Brandon points out, it's not that simple.
Some nice examples from one customer's bounce logs today -
"552 Transaction @ failed, remote said "550 No such user"
(#5.1.1)"  Obviously, we don't want to resend to this address again, but...
 is it a 552 (mailbox exceeded allocation), a 550 (mailbox unavailable
doesn't necessary mean no such user) or a 5.1.1 (bad destination address).
A 552 shouldn't match with a x.1.1.  They're two different bounce reasons
that are mutually exclusive, but we see stuff like this all the time.  If
it's a 552, then we could retry this address again later because the
mailbox is full.  Most likely it's a 5.1.1 and the address is completely
invalid so we suppress it.

Then there are the "554 Invalid mailbox: @.com" and the "554
rejecting banned content" bounces.  554 is a valid response for an invalid
mailbox although 550 and 553 are more common there.  Going strictly by 554,
you would think retrying would be fine because it's transaction-specific,
but not suppressing the first will get you blocked whereas the second
should be retried once you've resolved the root cause.  "550 mailbox
unavailable" sometimes means the address is invalid and other times means
you aren't allowed to access the mailbox due to technical or reputation
issues.  The mailbox is either completely unavailable or the mailbox is
only unavailable to you or the mailbox can't be internally accessed. Or the
"550 5.7.1 ... Relaying denied" which may mean that the
mail is being forwarded and the forward is failing or that you are not
allowed to access this mailbox at this time except for when it means that
the address is invalid.  Is "550 5.1.1 unknown or illegal alias" an invalid
address or is it a directory failure?  (This ISP passes a 4.4.3 for
directory failures, but many others don't or can't because of system
architecture limitations.)


On Fri, Dec 18, 2015 at 11:40 AM, Brandon Long  wrote:

> 4xx vs 5xx is only part of the story.  We're talking about whether the
> next message will succeed.
>
> Sure, a 4xx response probably mostly means go ahead and try the next
> message, but a 5xx doesn't mean that no messages will be accepted for this
> account, just this one wasn't accepted.
>
> And agreed, some of the extended status codes can be interpreted in this
> way fairly easily, but others...
>
> Brandon
> On Dec 18, 2015 7:35 AM, "Ian Eiloart"  wrote:
>
>>
>> > On 18 Dec 2015, at 01:55, Karen Balle  wrote:
>> >
>> > Brandon,
>> >
>> > I really like this idea, even as a mental exercise.  There would be a
>> lot of usefulness in being able to clearly dictate from the enhanced codes
>> when our MTAs should stop, back off, or go into an extended timeout.
>>
>> Well, that should be pretty clear from the 4xx vs 5xx status. If it’s
>> 4xx, you should queue the message for later delivery, otherwise generate a
>> bounce. I guess if the recipient wants to indicate that you should reduce
>> your sending rate, that’s something that needs a new status, but you could
>> use "4.3.1   Mail system full", or "X.4.5   Mail system congestion" because
>> the sensible response would be to back off.
>>
>>
>>
>> >  Perhaps something like having the enhanced code be tied to the primary
>> reason for an organization not accepting email would be useful?  I can't
>> see where we could (or should) come up with a system where every reason an
>> email isn't being accepted is communicated in a single NDR.  Filters are
>> getting horribly complicated and there are often multiple reasons why a
>> sender's mail isn't being accepted.
>>
>>
>> > From an ESP perspective, being able to tell a customer that Gmail
>> clearly said in a bounce 1) It's you, not them.
>>
>> There are plenty of codes that say this. All of these are errors that
>> could be fixed by the sender (not their MTA)
>>
>> X.1.1   Bad destination mailbox address
>> X.1.2   Bad destination system address
>> X.1.3   Bad destination mailbox address syntax
>> X.1.6   Destination mailbox has moved, No forwarding address
>> X.1.7   Bad sender's mailbox address syntax
>> X.1.8   Bad sender's system address
>> X.2.3   Message length exceeds administrative limit [per mailbox]
>> X.3.4   Message too big for system
>> X.5.3   Too many recipients
>>
>> > 2) Your content/domain rep/IP rep is horrible.
>>
>>  X.7.1   Delivery not authorized, message refused
>>   The sender is not authorized to send to the destination.
>>
>> But, there’s plenty of scope for extension here: with three digits
>> available for . Perhaps it’s time to look at extending the set of enhanced
>> error codes available. A 20th anniversary celebration!
>>   RFC 1893  Mail System Status Codes  January 1996
>>   RFC 3463 Enhanced Mail System Status Codes January 2003
>>
>> > 3) and you should feel bad
>>
>> X.7.10 Go directly to Jail, do not pass GO! ;^)
>>
>>
>> There’s a registry, and a review might be a good idea.
>>
>> https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml#smtp-en

Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-18 Thread Ian Eiloart

> On 18 Dec 2015, at 01:55, Karen Balle  wrote:
> 
> Brandon,
> 
> I really like this idea, even as a mental exercise.  There would be a lot of 
> usefulness in being able to clearly dictate from the enhanced codes when our 
> MTAs should stop, back off, or go into an extended timeout.

Well, that should be pretty clear from the 4xx vs 5xx status. If it’s 4xx, you 
should queue the message for later delivery, otherwise generate a bounce. I 
guess if the recipient wants to indicate that you should reduce your sending 
rate, that’s something that needs a new status, but you could use "4.3.1   Mail 
system full", or "X.4.5   Mail system congestion" because the sensible response 
would be to back off.



>  Perhaps something like having the enhanced code be tied to the primary 
> reason for an organization not accepting email would be useful?  I can't see 
> where we could (or should) come up with a system where every reason an email 
> isn't being accepted is communicated in a single NDR.  Filters are getting 
> horribly complicated and there are often multiple reasons why a sender's mail 
> isn't being accepted.  


> From an ESP perspective, being able to tell a customer that Gmail clearly 
> said in a bounce 1) It's you, not them.

There are plenty of codes that say this. All of these are errors that could be 
fixed by the sender (not their MTA)

X.1.1   Bad destination mailbox address
X.1.2   Bad destination system address
X.1.3   Bad destination mailbox address syntax
X.1.6   Destination mailbox has moved, No forwarding address
X.1.7   Bad sender's mailbox address syntax
X.1.8   Bad sender's system address
X.2.3   Message length exceeds administrative limit [per mailbox]
X.3.4   Message too big for system
X.5.3   Too many recipients

> 2) Your content/domain rep/IP rep is horrible.

 X.7.1   Delivery not authorized, message refused
  The sender is not authorized to send to the destination.

But, there’s plenty of scope for extension here: with three digits available 
for . Perhaps it’s time to look at extending the set of enhanced error codes 
available. A 20th anniversary celebration! 
  RFC 1893  Mail System Status Codes  January 1996
  RFC 3463 Enhanced Mail System Status Codes January 2003

> 3) and you should feel bad

X.7.10 Go directly to Jail, do not pass GO! ;^)


There’s a registry, and a review might be a good idea.
https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml#smtp-enhanced-status-codes-2

> would cut through a lot of the pushback we get now.  


> I could see a lot of use for anyone with a shared IP infrastructure, as well. 
>  If most of the DSNs from shared IP space came back with an enhanced code 
> pointing to IP reputation but a handful of customers have more specific 
> content or sender-related codes, it gives us amazing insight into the 
> troublemakers trying to hide on the shared IPs.  How much benefit do you 
> think most mailbox providers would get if ESPs were able to more reliably 
> adapt around having that extra certainty in our decision-making process?
> 
> Couple of ideas for it
> Mailbox specific -  invalid account, recently closed account, mailbox full, 
> recipient-configured rejection rules
> ISP specific - server/network saturation (which we should treat with a full 
> stop on traffic from all our senders rather than an extended retry for a 
> single sender with traffic shaping relating to reputation), LDAP failure, 
> server farm under attack by backhoe or glowing molerats 
> IP specific - traffic shaping for excessive volume for current reputation 
> (very handy for the holidays and ramp ups), blocked for complaints, blocked 
> for excessive invalid users/spamtraps, blocked for phishing/malware, traffic 
> spread across too many IPs, snowshoe, your provider sucks, get off my lawn
> Sender specific - could be broken down for domain, subdomain, or localpart 
> combinations if we're feeling really ambitious but that could be providing 
> too much feedback that could be abused.  Marketing vs transactional is often 
> split this way, though.  Helpful for customers using their mailbox provider's 
> domain.  Would allow ESPs to set rules to stop mailing for specific senders 
> immediately and definitely ties in with compliance standards.
> Authentication and configuration failures - DMARC, no rDNS, missing A or MX 
> records (I had a fight with a customer this week about setting those up)
> Content specific - Again, could be easily abused but there are some ways it 
> could be helpful.  Redirector who doesn't handle their spam, linking to 
> commonly phished sites, bad landing page rep (possibly malicious), Normally 
> good sender who included third party content on a send.
> 
> Karen
> 
> On Wed, Dec 16, 2015 at 11:35 PM, Brandon Long  wrote:
> We have automated systems, especially for Google groups, which are basically 
> doing the same thing, and it's a pain.
> 
> I agree that the SMTP status code is mostly useless 

Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-17 Thread Karen Balle
Brandon,

I really like this idea, even as a mental exercise.  There would be a lot
of usefulness in being able to clearly dictate from the enhanced codes when
our MTAs should stop, back off, or go into an extended timeout.  Perhaps
something like having the enhanced code be tied to the primary reason for
an organization not accepting email would be useful?  I can't see where we
could (or should) come up with a system where every reason an email isn't
being accepted is communicated in a single NDR.  Filters are getting
horribly complicated and there are often multiple reasons why a sender's
mail isn't being accepted.

>From an ESP perspective, being able to tell a customer that Gmail clearly
said in a bounce 1) It's you, not them. 2) Your content/domain rep/IP rep
is horrible. 3) and you should feel bad would cut through a lot of the
pushback we get now.  I could see a lot of use for anyone with a shared IP
infrastructure, as well.  If most of the DSNs from shared IP space came
back with an enhanced code pointing to IP reputation but a handful of
customers have more specific content or sender-related codes, it gives us
amazing insight into the troublemakers trying to hide on the shared IPs.
How much benefit do you think most mailbox providers would get if ESPs were
able to more reliably adapt around having that extra certainty in our
decision-making process?

Couple of ideas for it
Mailbox specific -  invalid account, recently closed account, mailbox full,
recipient-configured rejection rules
ISP specific - server/network saturation (which we should treat with a full
stop on traffic from all our senders rather than an extended retry for a
single sender with traffic shaping relating to reputation), LDAP failure,
server farm under attack by backhoe or glowing molerats
IP specific - traffic shaping for excessive volume for current reputation
(very handy for the holidays and ramp ups), blocked for complaints, blocked
for excessive invalid users/spamtraps, blocked for phishing/malware,
traffic spread across too many IPs, snowshoe, your provider sucks, get off
my lawn
Sender specific - could be broken down for domain, subdomain, or localpart
combinations if we're feeling really ambitious but that could be providing
too much feedback that could be abused.  Marketing vs transactional is
often split this way, though.  Helpful for customers using their mailbox
provider's domain.  Would allow ESPs to set rules to stop mailing for
specific senders immediately and definitely ties in with compliance
standards.
Authentication and configuration failures - DMARC, no rDNS, missing A or MX
records (I had a fight with a customer this week about setting those up)
Content specific - Again, could be easily abused but there are some ways it
could be helpful.  Redirector who doesn't handle their spam, linking to
commonly phished sites, bad landing page rep (possibly malicious), Normally
good sender who included third party content on a send.

Karen

On Wed, Dec 16, 2015 at 11:35 PM, Brandon Long  wrote:

> We have automated systems, especially for Google groups, which are
> basically doing the same thing, and it's a pain.
>
> I agree that the SMTP status code is mostly useless from this prospective,
> and the extended ones aren't much better.
>
> It might be nice if there was a concept of whether a failure is message
> specific, sender specific, etc... But anything like that would be gamed
> both for antispam and for spammers.
>
> Still, may be worth a thought experiment, a replacement for the extended
> status codes or even a bcp about how they should be used.
> On Dec 16, 2015 6:03 PM, "Karen Balle"  wrote:
>
>> Since there's been a lot of drift on this topic and I'm not talking about
>> IPv6, DNSSEC, or delivery to Gmail
>>
>> For NDRs and DSNs to be truly useful to an ESP, we tend to break them
>> down into more buckets than two.
>>
>> Hard bounce/invalid (do not retry, generally a 5xx)
>> Soft bounce (temporary and related to a specific email address, generally
>> a 4xx, try again later during the current send, Yahoo uses 4xx where we
>> would expect a 5xx such as with some of the traffic shaping deferrals)
>> Technical (DNS failures and the like, try again later, generally 5xx but
>> depends on the reason)
>> Spam or block (stop for this send, try this recipient on future sends,
>> mix of 5xx and 4xx)
>> Unknown (parser doesn't have an appropriate string, manual review and
>> update of systems required)
>>
>> The primary challenge from a technical perspective is making sure that
>> any changes in friendly language in an NDR or DSN is updated on the bounce
>> parser.  We do tend to MOSTLY ignore 5xx and 4xx, but that is more a
>> function of how those are used by mailbox providers.  The desired end
>> result is that we send all email in a manner that is acceptable to each
>> mailbox provider based on their (technical and personal) feedback and
>> desired rate limits.  Extended codes are useful, when you know how a
>> prov

Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-17 Thread David Hofstee
Although the reply messages are gamed, as we see too, we do not let the outcome 
be any different. It is up to the mailserver operator to decide how we are to 
view bounces. That is their responsibility and not ours. In the end I want to 
make it possible to explain my actions to everyone involved.

Our internal buckets are below. Anything we found could be pressed into these 
categories, types and subtypes. Yours,


David

Category of bounce

outOfOffice/autoresponder
We received an out-of-office email. Default = ignore this email. These mails 
will be parsed further for definitive indicators of inactive mailboxes.

Technical bounce/delayed
We received a message that stated that this email was in transit (and not yet 
delivered). Default = ignore this email.

Technical bounce (but no delay indicator, therefore treated as NDR)
We received a technical email back from a mailserver. Default = softbounce this 
email. These mails will be parsed further. See below.


Spam, default = softbounce this email.

spam blacklisted
Some part of the email or the sender was identified as blacklisted.

spam content-related
The content was identified as spam.

spam sender-denied
The sender, you or us, was denied for non-specific reasons.

spam spf-failure
The email was not allowed to be forwarded due to anti-spam configuration issues.

spam unknown
It was identified as spam for unknown reasons.

personalBlacklist personal-blacklist
The recipient has a specific blocklist against you. Hardbounce this email.


Hardbounce

hardBounce   domain-unknown
The domain is not valid.

hardBounce   mailbox-disabled
The mailbox is there, but no longer in use.

hardBounce   mailbox-unknown
The mailbox is not known to the mailserver.

hardBounce   unknown
The mailbox is not working anymore for non-specific reasons.


Softbounce

Softbounce access issues

softBouncerelay-denied
softBounceaccess-denied
This often means a configuration error on the domain or the mailserver. It does 
not accept email for that domain (without authentication).

softBouncesender-denied
The recipient has not granted you access to email him/her.


Softbounce mailbox issues:

softBouncemailbox-temp-disabled
The mailbox is (temporarily) disabled.

softBouncemailbox-temp-error
There is an error for this mailbox which could be temporary.

softBouncemailbox-full
The mailbox is full, which could be temporary.


Softbounce message errors:

softBouncemessage-error
There was something wrong with the message itself

softBouncemessage-expired
The message could not be delivered within a reasonable time frame.

softBouncemessage-size
The size of the message was too large.


Softbounce networking related

softBounceconnection-error
There was something wrong while connecting to the mailserver.

softBouncerouting-error
softBouncerouting-loop
The email was sent but returned because it could not be delivered to the inbox 
(of another domain).

Softbounce mailserver related

softBounceconfig-error
softBouncesystem-error
softBounceservice-unavailable
Some technical error occurred while sending the mail to that mailserver and 
that is why it could not accept the message.

softBounceunknown
Some other error occurred that could not be determined reliably. It could be 
temporary.


Van: mailop [mailto:mailop-boun...@mailop.org] Namens Brandon Long
Verzonden: donderdag 17 december 2015 05:35
Aan: Karen Balle
CC: mailop; Ian Eiloart
Onderwerp: Re: [mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6


We have automated systems, especially for Google groups, which are basically 
doing the same thing, and it's a pain.

I agree that the SMTP status code is mostly useless from this prospective, and 
the extended ones aren't much better.

It might be nice if there was a concept of whether a failure is message 
specific, sender specific, etc... But anything like that would be gamed both 
for antispam and for spammers.

Still, may be worth a thought experiment, a replacement for the extended status 
codes or even a bcp about how they

[mailop] NDRs and DSNs was: Re: Delivery to gmail via IPv6

2015-12-16 Thread Karen Balle
Since there's been a lot of drift on this topic and I'm not talking about
IPv6, DNSSEC, or delivery to Gmail

For NDRs and DSNs to be truly useful to an ESP, we tend to break them down
into more buckets than two.

Hard bounce/invalid (do not retry, generally a 5xx)
Soft bounce (temporary and related to a specific email address, generally a
4xx, try again later during the current send, Yahoo uses 4xx where we would
expect a 5xx such as with some of the traffic shaping deferrals)
Technical (DNS failures and the like, try again later, generally 5xx but
depends on the reason)
Spam or block (stop for this send, try this recipient on future sends, mix
of 5xx and 4xx)
Unknown (parser doesn't have an appropriate string, manual review and
update of systems required)

The primary challenge from a technical perspective is making sure that any
changes in friendly language in an NDR or DSN is updated on the bounce
parser.  We do tend to MOSTLY ignore 5xx and 4xx, but that is more a
function of how those are used by mailbox providers.  The desired end
result is that we send all email in a manner that is acceptable to each
mailbox provider based on their (technical and personal) feedback and
desired rate limits.  Extended codes are useful, when you know how a
provider applies them, but again, there is such variation in the how codes
are applied and when that it's all but impossible for someone not steeped
in the intricacies of RFCs to interpret them properly.

Not all customers have access to people who spend a lot of time going over
bounces and making them actionable.  A lot of our job as an ESP is taking
the technical and making it understandable to someone who doesn't have the
training and background on RFCs and "proper" technical jargon.  I've spent
the last 18 years or so going over NDRs and DSNs and some still throw me.
Filters are also increasingly more complex and we see the same bounce used
for multiple purposes, so cross-referencing which bounces happen where is
becoming more important to understanding the root issue for a customer.



Cheers,
Karen

On Fri, Dec 11, 2015 at 9:06 AM, Ian Eiloart  wrote:

> I wonder why they don’t use the terminology from the RFCs: "reject",
> "defer", "non-delivery notification", "delay notification"?
>
> As it is, when you say "Hardbounce", I don’t know whether you’re referring
> to an SMTP 5yz reply (a rejection) by the receiving MTA or an rfc 3461
> "failed" DSN sent to the sender to alert them to the problem.
>
> Similarly, I don’t know whether "softbounces" means an rfc5321 temporary
> failure reply , or an rfc 3461 "delayed" DSN. Neither of which mean quite
> what you said, since the intention is that the sending MTA will retry for a
> period. The sending MTA can’t use other means. If the original sender tries
> again, then the recipient will get duplicate messages when the fault is
> resolved.
>
> If the ESP is good, the the sender will have access to a support team, so
> all faults should be actionable.
>
>
> > On 11 Dec 2015, at 11:59, David Hofstee  wrote:
> >
> > That’s why, in ESP parlance, there are two sorts of bounces, to keep it
> simple:
> > -  Hardbounces: The recipient address does not work. Contact
> through other means.
> > -  Softbounces: This email did not arrive. Try again later or
> contact through other means. If this keeps happening  the address
> effectively does not work.
> >
> > What else is there to do? The sender might be curious to what the reason
> is (if the bounce is even telling you that) but it does not change the
> outcome or the call to action. The only things that are actionable for a
> sender, in a message, is when the content gets unacceptable (spam, too big).
> >
> > We have about 30 categories to explain what type of error occurred
> (available on request).
> >
> > Met vriendelijke groet,
> >
> >
> > David Hofstee
> > Deliverability Management
> > MailPlus B.V. Netherlands (ESP)
> >
> > Van: mailop [mailto:mailop-boun...@mailop.org] Namens Brandon Long
> > Verzonden: donderdag 10 december 2015 22:23
> > Aan: Dave Warren
> > CC: mailop
> > Onderwerp: Re: [mailop] Delivery to gmail via IPv6
> >
> > I was just discussing this issue with our support folks, and we're
> looking at improving ours for this reason.  We also see a remarkable number
> of our NDRs marked as spam, especially by those whose primary language
> isn't English.
> >
> > We'll definitely still include the technical information, but it'll be
> further down.
> >
> > And we'll do our best with handling the remote server's error messages,
> but ugh.  It's too bad that the extended status codes are still so
> generic... though, as our tech writer and ux folks pointed out, really, all
> the user cares about is "did I do something wrong? Is there something else
> I can do?"
> >
> > Brandon
> >
> > On Thu, Dec 10, 2015 at 12:18 PM, Dave Warren 
> wrote:
> > And unfortunately the friendlier they are, the less useful they usually
> are.
> >
> > The ugly ones ar