3.7.4 - Fix dovecot IMAP server support (closes #5)

Use `.` instead of `/` as the IMAP folder hierarchy separator

https://stackoverflow.com/questions/51951887/what-is-the-proper-way-to-create-imap-subfolders-using-imapclient-for-python/51952493#51952493
This commit is contained in:
Sean Whalen
2018-08-21 11:57:06 -04:00
parent 7758411244
commit 1e130ca70a
3 changed files with 9 additions and 16 deletions
+3 -3
View File
@@ -1,9 +1,9 @@
3.7.4
-----
- Workaround older versions of the dovecot mail server not reporting existing
folders correctly (#5)
'
- Use `.` instead of `/` as the IMAP folder hierarchy separator - fixes
dovecot support (#5)
3.7.3
-----
+4 -4
View File
@@ -1003,7 +1003,7 @@ def parse_report_email(input_, nameservers=None, timeout=6.0):
timeout=timeout)
result = OrderedDict([("report_type", "aggregate"),
("report", aggregate_report)])
except (TypeError, binascii.Error):
except (TypeError, ValueError, binascii.Error):
pass
if result is None:
@@ -1087,19 +1087,19 @@ def get_dmarc_reports_from_inbox(host, user, password,
forensic_reports = []
aggregate_report_msg_uids = []
forensic_report_msg_uids = []
aggregate_reports_folder = "{0}/Aggregate".format(archive_folder)
forensic_reports_folder = "{0}/Forensic".format(archive_folder)
aggregate_reports_folder = "{0}.Aggregate".format(archive_folder)
forensic_reports_folder = "{0}.Forensic".format(archive_folder)
try:
server = imapclient.IMAPClient(host, use_uid=True)
server.login(user, password)
server.select_folder(reports_folder)
if not server.folder_exists(archive_folder):
server.create_folder(archive_folder)
if not server.folder_exists(aggregate_reports_folder):
server.create_folder(aggregate_reports_folder)
if not server.folder_exists(forensic_reports_folder):
server.create_folder(forensic_reports_folder)
server.select_folder(reports_folder)
messages = server.search()
for message_uid in messages:
raw_msg = server.fetch(message_uid,
+2 -9
View File
@@ -175,15 +175,8 @@ def _main():
forensic_reports += reports["forensic_reports"]
except IMAPError as error:
error = error.__str__()
if "ALREADYEXISTS" in error:
# Workaround for old versions of the dovecot mail server
# that do not respond correctly when we tested for an existing
# folder
pass
else:
logger.error("IMAP Error: {0}".format(error))
exit(1)
logger.error("IMAP Error: {0}".format(error.__str__()))
exit(1)
results = OrderedDict([("aggregate_reports", aggregate_reports),
("forensic_reports", forensic_reports)])