Bugreport: maxage deleting old email from destination

Ivan Semin ivun at wirebyte.com
Thu Jul 28 11:22:26 UTC 2011


Hello!

My apologize to Philipp Kern for spoiling his bug report topic,
because my bug is probably a different one (although I get a similar
error too).

I have prepared a more detailed bug report.

So again, what I am doing.

1. Updated offlineimap to next branch (6.3.4-rc3). The file was
nicolas33-offlineimap-v6.3.4-rc3-5-g5db1633.tar.gz

2. Setting up the sync:

[Account Data]
localrepository = DataBackup
remoterepository = DataLocal
#sorry for the name, local is really remote gmail :)

[Repository DataLocal]
type = Gmail
remotehost = imap.gmail.com
remoteuser =
remotepass =
remoteport = 993
ssl = yes
maxconnections = 1
realdelete = no
nametrans = lambda folder: re.sub('.*Trash$', 'Trash', folder)
folderfilter = lambda foldername: foldername not in ['[Gmail]/All
Mail','[Gmail]/Sent Messages','[Gmail]/Starred','[Gmail]/Trash']
readonly = yes

[Repository DataBackup]
type = IMAP
remotehost = 127.0.0.1
remoteuser =
remotepass =
realdelete = no

3. Run the sync. It needed a dozen of runs, because it sometimes fail
in the middle of the sync with something like

WARNING: ERROR attempting to copy message 361 for account
Data:Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/Base.py",
line 250, in copymessageto
    message = self.getmessage(uid)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/IMAP.py",
line 215, in getmessage
    raise OfflineImapError(reason, severity)
OfflineImapError: IMAP server 'DataLocal' responded with 'NO' to
fetching message UID '361'

Although I am used to it, so I just rerun and finally I have all my
mail downloaded.

4. I also created a new gmail folder and copied a very old message
there. Now, after the sync I delete that message and ensure it is
deleted during the next sync. This works fine. I restore the message
and offlineimap finds that. Fine.

5. Now I set maxage=90. My message should be ignored now, because it's
more than 8 months old. Now I get a number of error messages (2 per
imap folder I think)

WARNING: ERROR attempting to sync flags for account Data:Traceback
(most recent call last):
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/Base.py",
line 413, in syncmessagesto
    action(dstfolder, statusfolder)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/Base.py",
line 329, in syncmessagesto_delete
    folder.deletemessages(deletelist)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/UIDMaps.py",
line 253, in deletemessages
    self._mb.deletemessages(self._uidlist(self.r2l, uidlist))
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/UIDMaps.py",
line 87, in _uidlist
    return [mapping[x] for x in items]
KeyError: 1L

WARNING: ERROR in syncfolder for Data folder Products Updates/Done:
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/offlineimap/accounts.py",
line 347, in syncfolder
    remotefolder.syncmessagesto(localfolder, statusfolder)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/Base.py",
line 413, in syncmessagesto
    action(dstfolder, statusfolder)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/Base.py",
line 329, in syncmessagesto_delete
    folder.deletemessages(deletelist)
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/UIDMaps.py",
line 253, in deletemessages
    self._mb.deletemessages(self._uidlist(self.r2l, uidlist))
  File "/usr/lib/python2.6/site-packages/offlineimap/folder/UIDMaps.py",
line 87, in _uidlist
    return [mapping[x] for x in items]
KeyError: 1L


It also deletes old messages from the destination.

Syncing INBOX: Gmail -> MappedIMAP
Deleting 3165 messages (4, 5, 6, 8, 9, 11 ............. 4053, 8910,
8912, 9731) in MappedIMAP[INBOX]
Syncing Ivantest: Gmail -> MappedIMAP
Deleting 1 messages (3) in MappedIMAP[Ivantest]

My test message was also deleted, although I didn't delete it from the source.

6. I run the sync again. It syncronizes the updates to new emails,
fine. The old messages are still absent from the destination.

7. I remove maxage=90.

8. It starts downloading all messages it deleted earlier.

Syncing INBOX: Gmail -> MappedIMAP
Copy message 4 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 5 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 6 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 8 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 9 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 11 Gmail[INBOX] -> MappedIMAP[INBOX]
Copy message 12 Gmail[INBOX] -> MappedIMAP[INBOX]
...


The purpose of this setup was to backup email. I would like it run it
weekly so that I can delete the old mail from gmail after that
(because we are close to gmail limit). We seldom need old email, but
would be nice to have that in a separate mailbox.



More information about the OfflineIMAP-project mailing list