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 + + + +