Re: [dmarc-ietf] ARC questions

Brandon Long <> Tue, 01 December 2020 05:43 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D49383A0A34 for <>; Mon, 30 Nov 2020 21:43:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ODE6AFRiLr91 for <>; Mon, 30 Nov 2020 21:43:45 -0800 (PST)
Received: from ( [IPv6:2607:f8b0:4864:20::92a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7E24E3A0A2D for <>; Mon, 30 Nov 2020 21:43:45 -0800 (PST)
Received: by with SMTP id y26so216701uan.5 for <>; Mon, 30 Nov 2020 21:43:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6lu0SZFT/KkMqWKXuJuQQZ7QUJydjPBShx3SuVt88xA=; b=hQ+XbuO/XOMMCiOtFhPhMHdVSNCDKpmEjBO7dU50wGLvgKUYiSSjsEOR2UnRQ20k2U NVb8Sr+0wBgoYIYqDErdcA+y8VFjmt8Sm/lEWMpm/4tLf1ZCxj7Z5lXpNJVnmFsBncwW Kn9rEyESq8UJqCmev+qU/qEah2epLB71iJi3KriDS0PTkocn+RFzssFwwxwaMf8EaXEE 88DEPtE7fSJmRoVXrCzeSE1F0NysmnR0JjH4CmGw+FJ0hxh9fyPGVXu1FhuuNDiNXqco mSIHlmopllkETPjETm2RYOSy3H+BTV0bdW+tHK+p/SpyPS5oEttKxlvP6Xuiz+KEVzMt 0WWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6lu0SZFT/KkMqWKXuJuQQZ7QUJydjPBShx3SuVt88xA=; b=GFwIcv9EOoEj8Zynhv1E1QyY7GyphXN6AuLlODUkQmXgjmRcXEOPm3cuQ4SocWz3sH Ackw6DtM89PBsmSVGHDH0GKmUlm2It3QI53pmaMzfBazo+X2QwBbBFpE10Xt+CkULBGK MmB66kPf2G/dAc6S2rv8BoxEgpKTRbQP317t8NeVLrWStYOmvsYXtrKfEY+SDEL5ID8n fVRUDh8rr9uwwJAlQQYlMqs05CrUkmBoxgIJbmt1yEFiEPcHHjqHif2BjGh4PeHxD0wX UAhwz9XhN/Hdg0avjCCCQHQKD+kHsafwyeGDuu7J0+05ECgGHpIXeMXCQhxRDFBs35my ahIg==
X-Gm-Message-State: AOAM532Oh3yRDFv/Ws8KkUx1t5N8m8ySC5dqtHdTuFTiP+medrdfOvQ6 ZQO4zZ1pXtbpdKZh9Le24hwnbqcyn+i+LlQiUbsgB/3rOqO7
X-Google-Smtp-Source: ABdhPJwPthNW7NeHiupTjs1wGJPweWdE/Ygjhq5rx5/Ct8odxx1uitZyQurUn8z1+AlUNcONLPhz68q8XmEEZGII4Vc=
X-Received: by 2002:ab0:21da:: with SMTP id u26mr1148632uan.92.1606801424030; Mon, 30 Nov 2020 21:43:44 -0800 (PST)
MIME-Version: 1.0
References: <20201124020453.AFDC027CE5C8@ary.qy> <> <> <> <> <>
In-Reply-To: <>
From: Brandon Long <>
Date: Mon, 30 Nov 2020 21:43:30 -0800
Message-ID: <>
To: Michael Thomas <>
Cc: John Levine <>, IETF DMARC WG <>
Content-Type: multipart/alternative; boundary="0000000000001b1c2c05b5609c0b"
Archived-At: <>
Subject: Re: [dmarc-ietf] ARC questions
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Domain-based Message Authentication, Reporting, and Compliance \(DMARC\)" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 01 Dec 2020 05:43:48 -0000

On Tue, Nov 24, 2020 at 5:27 PM Michael Thomas <> wrote:

> On 11/24/20 4:56 PM, Brandon Long wrote:
> On Tue, Nov 24, 2020 at 3:57 PM Michael Thomas <> wrote:
>> Our experience also showed that more than one hop is quite common in
>> enterprise deployments,
>> and those are also the places where the most complexity arises.  Others
>> shared our experience
>> as well.
>> That's more than one modifying intermediary in *separate* administrative
>> domains? Within your own administrative domain there shouldn't be an issue
>> of trust since you can trust your own servers auth-res and that they are
>> not maliciously trying to forge an auth-res for better treatment. and
>> course it's best to stop a bad message as soon as possible in the mail
>> pipeline if for no other reason than why waste the resources.
> The administrative domain in practice tends to be per-vendor and
> multi-tenant.  Ie, gsuite/gmail is on, various third party
> anti-spam gateways also different, on-premise being also separate.  Passing
> that trust between domains is one of the things that ARC can handle.
> One of the failings of many, many ietf documents is to not tell the story
> of what exactly the problem is and why the protocol is needed. It's really
> frustrating to the reader to not have the context of endless wg list
> discussions distilled so that an outsider can understand the design
> tradeoffs. I still don't understand why a DKIM signature was a "poor
> choice". That's especially true when something is an experiment that
> assumedly has yes/no endpoint.
To summarize what I said already in this thread, DKIM is taken by many
receivers as the responsible party for a message, in both spam and phishing
classifiers, with the latter being perhaps more relevant.
DMARC is the one example of that.  DKIM signing a message that transits
your system allows for reputation washing of the original message.  The ARC
chain is specified as a relay responsibility, which is a lesser burden.

Ignoring the existing usage of DKIM, DKIM+A-R would only work for a single
hop, and lead to some complication compared to the other DKIM signatures
already on the message.

DKIM is not the only thing that can be reputation washed, SPF can as well.
821.FROM rewriting is more common, so there are work-arounds.  OTOH, SPF
doesn't survive forwarding, but with ARC you can forward it.  DKIM+A-R
would only work for a single hop, and lead to some complication compared to
the other DKIM signatures already on the message.

> So is now hosted by gsuite (::sigh::), so you're saying that it
> would run into problems? I haven't put up a DMARC policy, but if I did I
> might run into issues with false positives? Like I said, I'm trying to get
> my head around what the actual problems are, and this is coming from a
> person who stressed mightily from the very beginning about the mailing list
> problem.
It's unlikely you have a complicated mail flow involving multiple vendors,
but certainly there are plenty of configuration options alllowing folks to
shoot themselves in the foot.

> Well sure, I'm sure it can happen but is it common enough to worry about?
>> And I'm still not convinced that figuring out who signed what and which
>> auth-res it belonged to is in insurmountable problem. for one, there are
>> received headers which better not be getting out of order to help correlate
>> with the messages' path through intermediary verifiers too.
> So, we do have some Received header walking code, and allow admins to set
> up the list of IPs that are considered "internal" (beyond private
> addresses)... but O365 uses public IPs internally and
> has a huge and unpublished ranges of them, making it nearly impossible for
> admins to maintain a list.  Obviously we can all add code to handle
> Microsoft specially... and whichever other ones come up.
> But can't you trust the received headers once you have possession of the
> message within your domain? I'm sorry if I'm being dense here but received
> headers are definitely ordered and if you loan out a message to be
> processed by a different domain and they aren't trustworthy, that's the
> least of your problems. That's part of the overall problem though: it's
> really hard to understand what the problem here actually is. Explain it
> like I'm five :)
For now, our received header walking code is for handling inbound
gateways.  If you use both O365 and GSuite, and use O365 as your MX before
forwarding to Google, there are many cases where they will break all DKIM
signatures (and obviously SPF) before reaching Google's MX.  Our workaround
is to specify your internal IPs to us, so we can walk past those received
headers to the first one added by your external MX.

Should these things use IP addresses for these things?  Probably not.  Some
sort of SMTP-AUTH could potentially be used to gateway more directly
between them, but we'd still need to disable most of our
spam/phishing pipelines which are dependent on reputation.

With ARC, we can instead say "trust this arc admd" and have the data passed
directly, and also work around the DKIM breakage.

As for another comment in the thread about adding two signatures per hop,
there was a suggestion that it could be replaced with a single signature
per hop near last call with some loss of information (maybe), but it was
decided to move forward with the existing solution that already had several
implementations and was experimental anyways.

As for how complicated it is to implement, I think starting from a DKIM
implementation it's fairly straight-forward... though obviously that
depends a bit on how your DKIM implementation was composed.  I think my
initial changes to dkimpy to add ARC support only took a couple days.  It's
not really an indication of how well written (or not) the RFC is, given
familiarity with the design prior to draft.