docker-offlineimap/offlineimap
Peter Colberg 3299b2240c Applied patch from Peter Colberg to remove usage of hard linking
Closes: #535160

Bug#535160: offlineimap fails on encfs (FUSE) due to hard linking

Package: offlineimap
Version: 6.0.3
Severity: normal
Tags: patch

Hi,

if the localrepository is stored on an encfs, offlineimap fails as follows:

    OfflineIMAP 6.0.3
    Copyright (C) 2002 - 2008 John Goerzen <jgoerzen@complete.org>
    This software comes with ABSOLUTELY NO WARRANTY; see the file
    COPYING for details.  This is free software, and you are welcome
    to distribute it under the conditions laid out in COPYING.
    ***** Processing account pleione
    Copying folder structure from IMAP to Maildir
    Establishing connection to tunnel:eval `keychain --quiet --eval` && ssh -q mymailhost /usr/sbin/dovecot --exec-mail imap.
    Syncing Drafts: IMAP -> Maildir
    Syncing INBOX: IMAP -> Maildir
    ----------8<----------
    Syncing net: IMAP -> Maildir
    Copy message 360 IMAP[net] -> Maildir[net], LocalStatus[net]
    Syncing personal: IMAP -> Maildir
    Thread 'Copy message 360 from net' terminated with exception:
    Traceback (most recent call last):
      File "/var/lib/python-support/python2.4/offlineimap/threadutil.py", line 149, in run
	Thread.run(self)
      File "threading.py", line 422, in run
	self.__target(*self.__args, **self.__kwargs)
      File "/var/lib/python-support/python2.4/offlineimap/folder/Base.py", line 282, in copymessageto
	newuid = object.savemessage(uid, message, flags, rtime)
      File "/var/lib/python-support/python2.4/offlineimap/folder/Maildir.py", line 198, in savemessage
	os.path.join(tmpdir, messagename))
    OSError: [Errno 1] Operation not permitted

    Last 4 debug messages logged for Copy message 360 from net prior to exception:
    ----------8<----------

As encfs does not support hard linking, the rename of the temporary
message file fails.

This is the only occurrence of hard linking in offlineimap and can be
fixed by using an atomic `os.rename` instead of `os.link`+`os.unlink`.
I have been using the attached patch for more than 1.5 years and have
never again had any problems with offlineimap on encfs.

Regards,
Peter
2009-06-30 00:03:37 -05:00
..
folder Applied patch from Peter Colberg to remove usage of hard linking 2009-06-30 00:03:37 -05:00
repository Allow keepalive to be overridden by user if imapfolders is set 2009-02-10 15:57:03 +11:00
ui Patch for signal handling to start a sync by Jim Pryor 2008-12-01 16:13:16 -06:00
__init__.py Step 2 of SVN to arch tree conversion 2005-04-16 20:33:35 +01:00
accounts.py Fix missing import for pre/postsynchook 2009-01-14 00:05:00 -06:00
CustomConfig.py Update FSF address 2006-08-12 05:15:55 +01:00
imaplib2.py Implementation of IMAP IDLE 2009-02-10 11:27:48 +11:00
imaplibutil.py Implementation of IMAP IDLE 2009-02-10 11:27:48 +11:00
imapserver.py set gssapi to false on kerberos error 2009-06-29 00:05:00 -05:00
imaputil.py Update FSF address 2006-08-12 05:15:55 +01:00
init.py Bug#502779: Sync accounts in order of general.accounts option 2009-05-05 15:16:25 -05:00
localeval.py Update FSF address 2006-08-12 05:15:55 +01:00
mbnames.py Update FSF address 2006-08-12 05:15:55 +01:00
syncmaster.py Implementation of IMAP IDLE 2009-02-10 11:27:48 +11:00
threadutil.py Patch to make exit on Ctrl-C cleaner 2008-12-01 16:10:49 -06:00
version.py Prepping 6.0.3 2008-08-13 00:05:17 -05:00