Re: [dmarc-ietf] Reporting rewrites

Alessandro Vesely <vesely@tana.it> Thu, 05 August 2021 07:03 UTC

Return-Path: <vesely@tana.it>
X-Original-To: dmarc@ietfa.amsl.com
Delivered-To: dmarc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C107C3A11ED for <dmarc@ietfa.amsl.com>; Thu, 5 Aug 2021 00:03:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1152-bit key) header.d=tana.it
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OxMV8VPqoo3R for <dmarc@ietfa.amsl.com>; Thu, 5 Aug 2021 00:03:00 -0700 (PDT)
Received: from wmail.tana.it (wmail.tana.it [62.94.243.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7C6373A11EC for <dmarc@ietf.org>; Thu, 5 Aug 2021 00:02:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tana.it; s=delta; t=1628146974; bh=UTuPD5sb2yS7wj3uxpAorrIkEfNcwKAVFG7lc7oqx6Q=; l=4652; h=To:References:From:Date:In-Reply-To; b=A4n8kg1NBEzIhcd+WdGc62VEoMVkWT4HDr//U+S7/bCiAUSYicvJzv3Q7Ee/JeuME sozF7uEZuLC1v23LWnhj3l8fs3IC9JLzau0egDlKka37egieFOurFIR1+UsNDQeW99 AYTLrQNlhUIIfm8ohlrha27hL+vYhmqarp5ATBLruWImqcm+0185KM9YEBiTc
Authentication-Results: tana.it; auth=pass (details omitted)
Original-From: Alessandro Vesely <vesely@tana.it>
Received: from [192.168.1.103] ([2.198.14.129]) (AUTH: CRAM-MD5 uXDGrn@SYT0/k, TLS: TLS1.3, 128bits, ECDHE_RSA_AES_128_GCM_SHA256) by wmail.tana.it with ESMTPSA id 00000000005DC008.00000000610B8D1E.000033EF; Thu, 05 Aug 2021 09:02:54 +0200
To: Todd Herr <todd.herr@valimail.com>, IETF DMARC WG <dmarc@ietf.org>
References: <CAHej_8=LL_KWcVYnc2quYSGMnQF5bdoerDtTZZm1yGjxjCqW1Q@mail.gmail.com> <20210803021005.EE5CF257D352@ary.qy> <CAHej_8k0rZHY02_mAMfc19dUOVREbd_WdTr5whUuNHmggx+cdA@mail.gmail.com> <CALaySJKb32r36Eq89_bM_dv4NeMtPmkgzHJX=AW+QVM-skHoVQ@mail.gmail.com> <CAHej_8kFB+icKyhTNUhbAV39Fa5KJBAXDb+REQM_1CPaUnkXzg@mail.gmail.com> <5cb4c752-f634-a385-06b0-4d9af6a00c8d@gmail.com> <CAHej_8=OSqFGU-DGOXNYeNNWAACg8bjKTQq8YH_Ccqc8RGMs5g@mail.gmail.com> <275ffcd2-f84d-1cd2-b1da-4aa545a92691@tana.it> <CAHej_8=oLwLDFQCQTT+VSXdcCOC66kjO+mTgZ6JRKJuXMr-2rw@mail.gmail.com>
From: Alessandro Vesely <vesely@tana.it>
Message-ID: <cc1ecbc5-eca6-0cf0-3ec8-0485798b0e0e@tana.it>
Date: Thu, 05 Aug 2021 09:02:52 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0
MIME-Version: 1.0
In-Reply-To: <CAHej_8=oLwLDFQCQTT+VSXdcCOC66kjO+mTgZ6JRKJuXMr-2rw@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/dmarc/I1766tUr_KNinLQg5luiS0GYrvg>
Subject: Re: [dmarc-ietf] Reporting rewrites
X-BeenThere: dmarc@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Domain-based Message Authentication, Reporting, and Compliance \(DMARC\)" <dmarc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dmarc>, <mailto:dmarc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dmarc/>
List-Post: <mailto:dmarc@ietf.org>
List-Help: <mailto:dmarc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dmarc>, <mailto:dmarc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 05 Aug 2021 07:03:06 -0000

  On Wed 04/Aug/2021 19:40:31 +0200 Todd Herr wrote:

> On Wed, Aug 4, 2021 at 5:32 AM Alessandro Vesely <vesely@tana.it> wrote:
>>    On Tue 03/Aug/2021 22:42:07 +0200 Todd Herr wrote:
>>>
>>> [...]
>>> I can then examine the differences in the reports, suss out
>>> which intermediaries aren't rewriting the From: header, and
>>> decide if I care enough about the volume I'm sending to those 
>>> intermediaries to have it affect my decision to move to a
>>> stronger assessment policy.>>
>> Examining the difference in the reports sounds hard, especially if the
>> mail flows and remote operators' settings changed since p=none.  As a
>> matter of fact, p=none lets a domain learn more about its mail flows,
>> since aggregate reports contain DKIM and SPF identifiers of mediators.
> 
> This is only true if the From: header is not munged. If it's munged to use
> the domain of the intermediary, the originator will not see data about the
> hop from the intermediary to the reporting destination in its aggregate
> reports.


If the final receiver sent such data to the originator, then the originator would see it.


>> Is that good to know?  Certainly, many operators prefer not to see any
>> failure in the reports thy receive.  Hence p=quarantine; pct=0.  Is
>> that /all/ operators, or are there any who would like to know about
>> indirect mail flows anyway?
>>
>> IOW: should we support an option to get aggregate reports even if a
>> mediator munged From:?
>>
> I submit that the option is already there...


Where?


> Imagine the following path for a mail message:
> 
>      originator --------> From: munging intermediary -------------> final destination
> 
> The "From: munging intermediary" has the ability to do DMARC validation on
> messages received from the originator and to generate reports to the
> originator by sending them to the address(es) specified in the rua tag of
> the originator's sending domain DMARC record.
> 
> The "final destination", at the same time, has the ability to do DMARC
> validation on messages received from the intermediary and to generate
> reports to the intermediary, presuming that that intermediary publishes a
> DMARC record for its munged sending domain.


I have the following on the top of the header of the message I'm replying to:

Return-Path: <dmarc-bounces@ietf.org>
Authentication-Results: wmail.tana.it;
   spf=pass smtp.mailfrom=ietf.org;
   dkim=pass reason="Original-From: transformed" header.d=valimail.com;
   dkim=pass (whitelisted) header.d=ietf.org
     header.b=TFOorAie;
   dkim=fail (signature verification failed, whitelisted) header.d=ietf.org
     header.b=mri3idDL
From: Todd Herr <todd.herr@valimail.com>

During the night, the final destination's server sent an aggregate report to dmarc_agg@vali.email.  Coincidentally, that's the same recipient who collects valimail.com's reports.  To be clear, the subject was /Report domain: dmarc.ietf.org Submitter: tana.it/.  I paste the relevant record after the tagline.  Undoing MLM transformation is just one way to unmunge.  Another possibility is ARC.  There might be more...

Whatever the technique, the final destination can try to unmunge, and that operation can succeed or fail.  The originator may be interested in the result.  For MLM transformation, how the originator signs messages is key for unmunging success, so having feedback would have a practical use.  Dunno about ARC, but maybe feedback is useful there too.  So it might seem a good idea to send reports to the originator as well.  If, instead, the originator prefers not to clutter aggregate reports with indirect mail flows results, then the final destination had better not to send it.  That decision could be made based on a header field, on a DMARC record tag, or both.


Best
Ale
-- 

	<record>
		<row>
			<source_ip>4.31.198.44</source_ip>
			<count>1</count>
			<policy_evaluated>
				<disposition>none</disposition>
				<dkim>pass</dkim>
				<spf>pass</spf>
				<reason>
					<type>mailing_list</type>
				</reason>
			</policy_evaluated>
		</row>
		<identifiers>
			<header_from>dmarc.ietf.org</header_from>
		</identifiers>
		<auth_results>
			<dkim>
				<domain>valimail.com</domain>
				<selector>google2048</selector>
				<result>pass</result>
				<human_result>through MLM transformation</human_result>
			</dkim>
			<dkim>
				<domain>ietf.org</domain>
				<selector>ietf1</selector>
				<result>pass</result>
			</dkim>
			<dkim>
				<domain>ietf.org</domain>
				<selector>ietf1</selector>
				<result>fail</result>
			</dkim>
			<spf>
				<domain>ietf.org</domain>
				<result>pass</result>
				<scope>mfrom</scope>
			</spf>
		</auth_results>
	</record>