From 4c57181e21d92f9297933bb9af0658935da9f49f Mon Sep 17 00:00:00 2001 From: Ebrahim Aharpour Date: Mon, 16 Dec 2019 21:32:00 +0100 Subject: [PATCH] Making dkim_aligned and spf_aligned case insensitive. --- parsedmarc/__init__.py | 4 +- parsedmarc/elastic.py | 6 ++- .../report_with_upper_cased_pass.xml | 44 +++++++++++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 samples/aggregate/report_with_upper_cased_pass.xml diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index 1a6b902..03be6d6 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -115,8 +115,8 @@ def _parse_report_record(record, offline=False, nameservers=None, if "spf" in policy_evaluated: new_policy_evaluated["spf"] = policy_evaluated["spf"] reasons = [] - spf_aligned = policy_evaluated["spf"] == "pass" - dkim_aligned = policy_evaluated["dkim"] == "pass" + spf_aligned = policy_evaluated["spf"] is not None and policy_evaluated["spf"].lower() == "pass" + dkim_aligned = policy_evaluated["dkim"] is not None and policy_evaluated["dkim"].lower() == "pass" dmarc_aligned = spf_aligned or dkim_aligned new_record["alignment"] = dict() new_record["alignment"]["spf"] = spf_aligned diff --git a/parsedmarc/elastic.py b/parsedmarc/elastic.py index 65bbfd8..1b56b99 100644 --- a/parsedmarc/elastic.py +++ b/parsedmarc/elastic.py @@ -354,8 +354,10 @@ def save_aggregate_report_to_elasticsearch(aggregate_report, source_base_domain=record["source"]["base_domain"], message_count=record["count"], disposition=record["policy_evaluated"]["disposition"], - dkim_aligned=record["policy_evaluated"]["dkim"] == "pass", - spf_aligned=record["policy_evaluated"]["spf"] == "pass", + dkim_aligned=record["policy_evaluated"]["dkim"] is not None and + record["policy_evaluated"]["dkim"].lower() == "pass", + spf_aligned=record["policy_evaluated"]["spf"] is not None and + record["policy_evaluated"]["spf"].lower() == "pass", header_from=record["identifiers"]["header_from"], envelope_from=record["identifiers"]["envelope_from"], envelope_to=record["identifiers"]["envelope_to"] diff --git a/samples/aggregate/report_with_upper_cased_pass.xml b/samples/aggregate/report_with_upper_cased_pass.xml new file mode 100644 index 0000000..406ab6c --- /dev/null +++ b/samples/aggregate/report_with_upper_cased_pass.xml @@ -0,0 +1,44 @@ + + + + example.com + postmaster@example.com + aggr_report_example.com_20191202_1638 + + 1574955300 + 1575304683 + + + + example.com + r + r +

reject

+ 100 +
+ + + 23.104.41.189 + 1 + + none + Pass + Pass + + + + example.com + + + + example.com + Pass + verify result: all signatures verified + + + example.com + Pass + + + +