From 775952ec98095c1ea3fe5dbe87197cd4e6f924eb Mon Sep 17 00:00:00 2001 From: Nikolaus Schulz Date: Tue, 8 Apr 2008 19:31:11 +0000 Subject: IMAP: added sanity check for \Deleted in PERMANENTFLAGS. --- archivemail.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'archivemail.py') diff --git a/archivemail.py b/archivemail.py index 558efc0..5760f56 100755 --- a/archivemail.py +++ b/archivemail.py @@ -1555,6 +1555,20 @@ def imap_smart_select(srv, mailbox): if result != 'OK': unexpected_error("selecting '%s' failed; server says: '%s'." \ % (mailbox, response[0])) + if not options.copy_old_mail: + # Sanity check that we don't silently fail to delete messages. + # As to the following indices: IMAP4.response(key) returns + # a tuple (key, ['']) if the key is found, (key, [None]) + # otherwise. Imaplib just *loves* to nest trivial lists! + permflags = srv.response("PERMANENTFLAGS")[1][0] + if permflags: + permflags = permflags.strip('()').lower().split() + if not '\\deleted' in permflags: + unexpected_error("Server doesn't allow deleting messages in " \ + "'%s'." % mailbox) + elif "IMAP4REV1" in srv.capabilities: + vprint("Suspect IMAP4rev1 server, doesn't send PERMANENTFLAGS " \ + "upon SELECT") def imap_find_mailbox(srv, mailbox): -- cgit v1.2.3