diff --git a/app/email_utils.py b/app/email_utils.py index 0673fb1a..12850b05 100644 --- a/app/email_utils.py +++ b/app/email_utils.py @@ -1445,12 +1445,15 @@ def get_dmarc_status(msg: Message) -> Optional[DmarcCheckResult]: spam_result = msg.get_all(headers.SPAMD_RESULT) if not spam_result: return None - spam_entries = [entry.strip() for entry in spam_result[-1].split("\n")] + + spam_entries = [entry.strip() for entry in str(spam_result[-1]).split("\n")] for entry_pos in range(len(spam_entries)): sep = spam_entries[entry_pos].find("(") if sep > -1: spam_entries[entry_pos] = spam_entries[entry_pos][:sep] + for header_value, dmarc_result in DmarcCheckResult.get_string_dict().items(): if header_value in spam_entries: return dmarc_result + return None diff --git a/email_handler.py b/email_handler.py index 9015656a..10297345 100644 --- a/email_handler.py +++ b/email_handler.py @@ -545,6 +545,8 @@ def apply_dmarc_policy( dmarc_result = get_dmarc_status(msg) if dmarc_result: newrelic.agent.record_custom_event("DmarcCheck", {"result": dmarc_result.name}) + else: + newrelic.agent.record_custom_event("DmarcCheck", {"result": "unknown"}) if not DMARC_CHECK_ENABLED or not dmarc_result: return None @@ -554,7 +556,10 @@ def apply_dmarc_policy( DmarcCheckResult.reject, DmarcCheckResult.soft_fail, ): - LOG.w(f"put email from {contact} to {alias} to quarantine. {dmarc_result}") + LOG.w( + f"put email from {contact} to {alias} to quarantine. {dmarc_result}, " + f"mail_from:{envelope.mail_from}, from_header: {msg[headers.FROM]}" + ) quarantine_dmarc_failed_email(alias, contact, envelope, msg) Notification.create( user_id=alias.user_id,