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 = [email protected]
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 = [email protected]
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

