Package: offlineimap Version: 6.5.4-2 Severity: grave Justification: causes data loss / breaks integrity of mail archive
Offlineimap regularly duplicates messages, that's to say, it copies a message twice from the remote host to the local folder. It then complains if a local program (such as imapfilter) moves or deletes them. This leads to data loss (i.e. loss of the integrity of my mail archive) since, whenever imapfilter runs on such a state, it copies the duplicates to their appropriate folders, and so I end up with duplicates of debian-devel messages in my "Debian.debian-devel" folder, etc. Attached offlineimap log: | Account sync McGill: | Next refresh in 13.0 minutes | Thread-989: | Syncing INBOX: Gmail -> MappedIMAP | Thread-988: | Syncing INBOX: Gmail -> MappedIMAP | Thread-989: | Copy message 341595 (1 of 2) RemoteGmail:INBOX -> LocalGmail | Copy message 341596 (2 of 2) RemoteGmail:INBOX -> LocalGmail | Thread-988: | Copy message 341595 (1 of 2) RemoteGmail:INBOX -> LocalGmail | Copy message 341596 (2 of 2) RemoteGmail:INBOX -> LocalGmail | Thread-989: | Deleting 3 messages (341591:341592,341594) in Gmail[INBOX] | Thread-988: | Deleting 3 messages (341591:341592,341594) in Gmail[INBOX] | Thread-989: | Adding flag S to 1 messages on INBOX | Thread-988: | Adding flag S to 1 messages on INBOX | Syncing INBOX: Gmail -> MappedIMAP | Copy message -2 (1 of 2) LocalGmail:INBOX -> RemoteGmail | Copy message -1 (2 of 2) LocalGmail:INBOX -> RemoteGmail | Adding flag S to 1 messages on INBOX | Account sync GMAIL: | Next refresh in 10.0 minutes < SNIP ~ 4 minutes > In this 4 minute window, imapfilter was run. | Account sync McGill: | Next refresh in 8.0 minutes | Thread-988: | ERROR: ERROR in syncfolder for GMAIL folder INBOX: Traceback (most recent call last): | File "/usr/lib/python2.7/dist-packages/offlineimap/accounts.py", line 388, in syncfolder | if localfolder.get_uidvalidity() == None: | File "/usr/lib/python2.7/dist-packages/offlineimap/folder/IMAP.py", line 78, in get_uidvalidity | "response('UIDVALIDITY') returned [None]!" | AssertionError: response('UIDVALIDITY') returned [None]! | | response('UIDVALIDITY') returned [None]! | Thread-989: | Syncing INBOX: Gmail -> MappedIMAP | Thread-988: | Syncing INBOX: Gmail -> MappedIMAP | Thread-989: | Copy message 341599 (1 of 3) RemoteGmail:INBOX -> LocalGmail | Copy message 341600 (2 of 3) RemoteGmail:INBOX -> LocalGmail | Thread-988: | Copy message 341599 (1 of 3) RemoteGmail:INBOX -> LocalGmail | Thread-989: | Copy message 341601 (3 of 3) RemoteGmail:INBOX -> LocalGmail | Thread-988: | Copy message 341600 (2 of 3) RemoteGmail:INBOX -> LocalGmail | Copy message 341601 (3 of 3) RemoteGmail:INBOX -> LocalGmail | Thread-989: | Deleting 2 messages (341595:341596) in MappedIMAP[INBOX] | ERROR: Could not find UID for msg '341595' (f:'INBOX'. This is usually a bad thing and should be reported on the mailing list. | Deleting 4 messages (341546,341575,341597:341598) in Gmail[INBOX] | Thread-988: | Deleting 2 messages (341595:341596) in MappedIMAP[INBOX] | ERROR: Could not find UID for msg '341595' (f:'INBOX'. This is usually a bad thing and should be reported on the mailing list. | Deleting 4 messages (341546,341575,341597:341598) in Gmail[INBOX] My offlineimaprc is attached, and is available in its current incarnation online[0] [0] https://github.com/ryanakca/ryanakca-dotfiles/blob/011775446e5af983e024b8c8bc0277d0d6ef850d/.offlineimaprc. -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 3.2.0-3-686-pae (SMP w/4 CPU cores) Locale: LANG=es_ES.UTF-8, LC_CTYPE=es_ES.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to es_ES.UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages offlineimap depends on: ii libjs-sphinxdoc 1.1.3+dfsg-4 ii python 2.7.3~rc2-1 ii python2.6 2.6.8-0.1 ii python2.7 2.7.3-1 Versions of packages offlineimap recommends: pn python-sqlite <none> Versions of packages offlineimap suggests: ii doc-base 0.10.4 pn python-kerberos <none> -- no debconf information
# Sample minimal config file. Copy this to ~/.offlineimaprc and edit to # suit to get started fast. [general] metadata = ~/.offlineimap accounts = GMAIL, QueensU, McGillSOCS, McGill #, GMAIL pythonfile=~/.offlineimap.py # EIMEAR maxsyncaccounts = 5 #### GMAIL Account Settings [Account GMAIL] localrepository = LocalGmail remoterepository = RemoteGmail autorefresh = 20 quick = 10 presynchook = imapfilter -c /home/ryan/.imapfilter/config.lua postsynchook = imapfilter -c /home/ryan/.imapfilter/config.lua && /home/ryan/bin/run-mailcheck && notmuch new foldersort = mycmp [Repository LocalGmail] #type = Maildir #localfolders = ~/.maildb/GMAIL #restoreatime = no type = IMAP remotehost = localhost remoteuser = ryan remotepass = LOCAL_PASS folderfilter = lambda folder: folder not in ['[Google Mail]/All Mail'] and not folder.startswith('QueensU.') idlefolders = ['INBOX'] [Repository RemoteGmail] foldersort = lambda x, y: mycmp(x, y) type = Gmail maxconnections = 4 remoteuser = ryana...@gmail.com remotepass = GMAIL_PASS spamfolder = [Google Mail]/Spam trashfolder = [Google Mail]/Bin cert_fingerprint = f3043dd689a2e7dddfbef82703a6c65ea9b634c1 realdelete = no folderfilter = lambda folder: folder not in ['[Google Mail]/All Mail'] and not folder.startswith('QueensU.') idlefolders = ['INBOX'] ##### QueensU mail [Account QueensU] localrepository = LocalQueensU remoterepository = RemoteQueensU autorefresh = 20 quick = 10 # presynchook = imapfilter foldersort = lamba x, y: cmp(x, y) postsynchook = /home/ryan/bin/run-mailcheck && notmuch new [Repository RemoteQueensU] foldersort = lambda x, y: cmp(y, x) type = IMAP remoteuser = 9rak remotehost = mail.queensu.ca remotepass = QUEENSU_PASS # Add QueensU prefix when copying to local nametrans = lambda foldername: 'QueensU.' + foldername [Repository LocalQueensU] type = IMAP remotehost = localhost remoteuser = ryan remotepass = LOCAL_PASS # Only copy folders from local to remote if they start with QueensU folderfilter = lambda folder: folder.startswith('QueensU.') # Remove QueensU prefix when copying to remote nametrans = lambda folder: re.sub('^QueensU.', '', folder) #### McGillSOCS mail [Account McGillSOCS] localrepository = LocalMcGillSOCS remoterepository = RemoteMcGillSOCS autorefresh = 20 quick = 10 # presynchook = imapfilter foldersort = lamba x, y: cmp(x, y) postsynchook = /home/ryan/bin/run-mailcheck && notmuch new [Repository RemoteMcGillSOCS] foldersort = lambda x, y: cmp(y, x) type = IMAP remoteuser = ryank remotehost = mail.cs.mcgill.ca remotepass = MCGSOCS_PASS ssl = yes cert_fingerprint = 207b114fc9cd4a52f586a350a4dfab05c5c7ad8b # sslcacertfile = /home/ryan/.mutt/certs/mcgillsocs.crt # Add McGSOCS prefix when copying to local nametrans = lambda foldername: 'McGSOCS.' + foldername folderfilter = lambda folder: folder not in ['user.globalspam', 'user.graduate', 'user.undergraduate'] [Repository LocalMcGillSOCS] type = IMAP remotehost = localhost remoteuser = ryan remotepass = LOCAL_PASS # Only copy folders from local to remote if they start with McGSOCS folderfilter = lambda folder: folder.startswith('McGSOCS.') # Remove McGSOCS prefix when copying to remote nametrans = lambda folder: re.sub('^McGSOCS.', '', folder) #### McGill mail [Account McGill] localrepository = LocalMcGill remoterepository = RemoteMcGill autorefresh = 20 quick = 10 # presynchook = imapfilter foldersort = lamba x, y: cmp(x, y) postsynchook = /home/ryan/bin/run-mailcheck && notmuch new [Repository RemoteMcGill] foldersort = lambda x, y: cmp(y, x) type = IMAP remoteuser = ryan.kavan...@mail.mcgill.ca remotehost = exchange.mcgill.ca remotepass = MCGILL_PASS remortport = 993 cert_fingerprint = 9f3fc06c357ecfcaaaf0cebedfb8d6b94f0926f6 ssl = yes # sslcacertfile = /home/ryan/.mutt/certs/mcgillsocs.crt # Add McGSOCS prefix when copying to local nametrans = lambda foldername: 'McGill.' + foldername [Repository LocalMcGill] type = IMAP remotehost = localhost remoteuser = ryan remotepass = LOCAL_PASS # Only copy folders from local to remote if they start with McGSOCS folderfilter = lambda folder: folder.startswith('McGill.') # Remove McGSOCS prefix when copying to remote nametrans = lambda folder: re.sub('^McGill.', '', folder) [mbnames] enabled = no filename = .muttrc.mailboxes header = "mailboxes " peritem = "+%(foldername)s" sep = " " footer = "\n" [ui.Curses.Blinkenlights] statuschar = %
signature.asc
Description: Digital signature