diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a06573..d0f446d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +3.8.2 +----- + +- Fix `nameservers` option (mikesiegel) +- Move or delete invalid report emails in an IMAP inbox (closes issue #7) + 3.8.1 ----- diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index 176ff75..ef4f821 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -43,7 +43,7 @@ import imapclient.exceptions import dateparser import mailparser -__version__ = "3.8.1" +__version__ = "3.8.2" logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -492,8 +492,8 @@ def parse_aggregate_report_xml(xml, nameservers=None, timeout=6.0): timeout=timeout)) else: - records.append(_parse_report_record(report["record"]), - nameservers=nameservers) + records.append(_parse_report_record(report["record"], + nameservers=nameservers)) new_report["records"] = records @@ -1106,6 +1106,7 @@ def get_dmarc_reports_from_inbox(host, user, password, forensic_report_msg_uids = [] aggregate_reports_folder = "{0}/Aggregate".format(archive_folder) forensic_reports_folder = "{0}/Forensic".format(archive_folder) + invalid_reports_folder = "{0}/Invalid".format(archive_folder) try: server = imapclient.IMAPClient(host, use_uid=True) @@ -1128,6 +1129,8 @@ def get_dmarc_reports_from_inbox(host, user, password, server.create_folder(aggregate_reports_folder) if not server.folder_exists(forensic_reports_folder): server.create_folder(forensic_reports_folder) + if not server.folder_exists(invalid_reports_folder): + server.create_folder(invalid_reports_folder) server.select_folder(reports_folder) messages = server.search() for message_uid in messages: @@ -1147,6 +1150,12 @@ def get_dmarc_reports_from_inbox(host, user, password, forensic_report_msg_uids.append(message_uid) except InvalidDMARCReport as error: logger.warning(error.__str__()) + if not test: + if delete: + server.add_flags([message_uid], [imapclient.DELETED]) + server.expunge() + else: + server.move([message_uid], invalid_reports_folder) if not test: if delete: diff --git a/setup.py b/setup.py index f24c6dd..5dd0967 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ from setuptools import setup from codecs import open from os import path -__version__ = "3.8.1" +__version__ = "3.8.2" description = "A Python package and CLI for parsing aggregate and " \ "forensic DMARC reports"