On Thu, May 8, 2014 at 12:28 PM, J. Gomez <jgo...@seryrich.com> wrote:
> > It seems to me that a particularly defensive receiver would run the > > heuristic/whitelist checks on all messages anyway. > > Why? It seems to me that a particularly defensive receiver would instantly > drop dead incoming email which fails a DMARC check and comes from a domain > with "p=reject;l=no", without subjecting it to any further processing > whatsoever. > Because they're local and/or cheap (they don't exactly require an AI or ML engine), and it's best for the final accept/reject/spam-folder decision to be made with as much data as possible. Perhaps you're assuming that those checks are expensive? I would bet that even for medium-sized operators, they are not; the heuristics amount to a relatively small number of header field retrieve and analyze operations (string comparisons, hash table lookups, etc.), and the whitelist check would be a local database query with a Boolean result. The high cost would occur for operators with very low compute power or network latency such that those checks are costly, but that would also disqualify them from things like DNSBL queries that are typically done on every message. For large operators that have tons of data, they can have dedicated processes that look through message histories to find out behavior patterns indicative of lists, and update their own internal whitelists. The query to the whitelist upon message receipt is cheap because it's local; it's the analysis that's expensive, but it's likely not done as part of the message receipt pipeline. For small operators without such resources, they would import or query an external whitelist, or the heuristic would amount to something akin to a Spamassassin rule that, again, is just some string comparison operations, updates to which are periodically updated, possibly automatically. Do you have some other vision of how this would work? I fact, in my opinion that would be the only way 100% failure-proof to > reject incoming email which fails a DMARC check and comes from a domain > with a policy of "p=reject". I.e., only the "l=no" tag would allow > Receivers to reject incoming email which fails DMARC and comes from > "p=reject" domains without potentially incurring in HIGH support costs (in > terms of money, upset users, support personnel man hours, lost reputation > as a reliable email service provider, and a general hellish life, etc.). > YAHOO and AOL starkly show you cannot just reject based on DMARC's > "p=reject" alone, as it currently exists. > So what you're really proposing is to split DMARC into two categories of domain owners: Those with users, and those that only send transactional stuff. Any with users will need to set something other than "l=no", basically always. A receiver would treat "l=no" as absolute, and anything else as "check your whitelist/heuristics". Correct? Assuming I have that right, and if you accept that the additional checks are almost always inexpensive, then the cost savings of "l=no" over anything else is negligible, except in extreme cases where the cost of the check happens to be high for some reason (extremely low compute power, for example). So, almost always, you may as well do the check. And if that's the case, then what advantage does the additional signal give? Because, as the situations currently is, DMARC's p=reject is no more than a > scoring result to be fed to Spamassassin or whatever milter you use to do > further processing. By YAHOO and AOL publishing p=reject, DMARC failures > even from p=reject domains have become just another data point for the > Receiver's heuristic anti-spam/anti-phising local system. In other words, > DMARC as it now is has become pure heuristics. In my opinion that is bad, > for I feel it is too shaky a ground to tread as a Receiver. > Yes, and that's exactly what Section 6 of the DMARC draft says. You are at liberty to accept DMARC's verdict as absolute, or factor it into a more comprehensive decision system if you think it's too dangerous to do so. A lot of people want SPF, DKIM, DMARC, etc. to be universal anti-abuse silver bullets. They are not, and probably can never be. DMARC has shown itself to be very effective and painless for specific use cases, but not universally. > > The remaining case is a receiver for whom such checks aren't cheap. That > > means, to them, "l=yes" is expensive, but the tradeoff is loss of > > list-routed mail from "p=reject" domains and the collateral damage they > > cause. Is that the target audience here? > > Heuristic checks are expensive per se, not technically but because of the > support costs they bring when they fail. Uncertainty in email leads to out > outsourcing email. No doubt that would be good for Google, Office 365 and > other big players; but all the same, very bad for the small ESP all over > the Internet. > In terms of support costs, any filtering system is expensive when it's wrong. The nature of email unfortunately means there are no absolutes. So again, assuming I have the model right, always doing the whitelist/heuristics check reduces your support costs because it detects faulty "fail" results and lets the mail through, reducing user complaints. Isn't that worth the additional compute cycles or network round trips required to do the check? The only remaining question is where you get the whitelist, if you don't generate your own. Cue John Levine. Here's another issue: DMARC, with or without "l=no", could be deployed incorrectly by a Domain Owner such that your users can't receive mail from that operator (say, because they have their DKIM setup wrong), and you'll still get support calls. I don't believe it's possible to harden it against that. We did try mitigating that fact with DKIM by having a "t=y" flag to mean "I'm testing this, I may have botched it, don't treat this any differently if it fails." But that's meaningless, given the fact that we also said "You MUST NOT penalize a message for having a failed signature" because of DKIM's known failure modes. When DKIM was updated, the only reason "t=y" stayed in is because we couldn't prove it wasn't in use (even though it's ultimately pointless). OpenDKIM now actually penalizes "t=y" use; a "pass" with "t=y" is demoted to a "neutral". SPF and DKIM, when they came out, started out as absolute but then became "softer" out of necessity since they have failure modes for legitimate messages. DMARC is not unique in that regard when deployed in certain ways. -MSK
_______________________________________________ dmarc-discuss mailing list dmarc-discuss@dmarc.org http://www.dmarc.org/mailman/listinfo/dmarc-discuss NOTE: Participating in this list means you agree to the DMARC Note Well terms (http://www.dmarc.org/note_well.html)