From bcfcd93fc6ea395c63d9e570ce602ee7ace524d0 Mon Sep 17 00:00:00 2001 From: Sean Whalen Date: Tue, 7 Jan 2025 13:56:26 -0500 Subject: [PATCH] More duplicate aggregate report checks #535 --- parsedmarc/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index c77d5ea..f6fa514 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -1480,7 +1480,6 @@ def get_dmarc_reports_from_mbox( "Skipping duplicate aggregate report " f"with ID: {report_id}" ) - aggregate_reports.append(parsed_email["report"]) elif parsed_email["report_type"] == "forensic": forensic_reports.append(parsed_email["report"]) elif parsed_email["report_type"] == "smtp_tls": @@ -1657,7 +1656,16 @@ def get_dmarc_reports_from_mailbox( keep_alive=connection.keepalive, ) if parsed_email["report_type"] == "aggregate": - aggregate_reports.append(parsed_email["report"]) + if parsed_email["report_type"] == "aggregate": + report_id = parsed_email["report"]["report_metadata"]["report_id"] + if report_id not in SEEN_AGGREGATE_REPORT_IDS: + SEEN_AGGREGATE_REPORT_IDS[report_id] = report_id + aggregate_reports.append(parsed_email["report"]) + else: + logger.debug( + "Skipping duplicate aggregate report " + f"with ID: {report_id}" + ) aggregate_report_msg_uids.append(msg_uid) elif parsed_email["report_type"] == "forensic": forensic_reports.append(parsed_email["report"])