I've recently started having problems using offlineimap to synchronize my mail. I'm running against a zimbra server and using gssapi authentication. When I set the max connection count to 1, things work as expected. However, any number above 1 produces some very weird errors.<div>
<br></div><div>On 6.2.0, I would get strange exceptions about None Type not having a method. On 6.3.3, I get prompted for my password a few times, and then offlineimap seems to hang doing nothing.</div><div><br></div><div>
I just tested v6.3.4-rc1 and I get prompted for the password a few times (my max connections are set to 5, sometimes I get prompted 4 times, sometimes less, but never more than 4 times). Depending on the number of times I get prompted, I will start syncing some email. Four password prompts result in no emai transferred. Three or less results in some email getting across. Either way, eventually something like the following appears.</div>
<div><br></div><div>"""</div><div><div>Copy message 1711582 from INBOX:</div><div> Copy message 1711582 IMAP[INBOX] -> Maildir[INBOX]</div><div> Establishing connection to <a href="http://mail.corp.redhat.com:993">mail.corp.redhat.com:993</a>.</div>
<div> Thread 'Copy message 1711470 from INBOX' terminated with exception:</div><div>Traceback (most recent call last):</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/threadutil.py", line 139, in run</div>
<div>    Thread.run(self)</div><div>  File "/usr/lib64/python2.7/threading.py", line 483, in run</div><div>    self.__target(*self.__args, **self.__kwargs)</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/folder/Base.py", line 250, in copymessageto</div>
<div>    message = self.getmessage(uid)</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/folder/IMAP.py", line 202, in getmessage</div><div>    imapobj = self.imapserver.acquireconnection()</div>
<div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imapserver.py", line 238, in acquireconnection</div><div>    self.plainauth(imapobj)</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imapserver.py", line 127, in plainauth</div>
<div>    imapobj.login(self.username, self.getpassword())</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imaplib2.py", line 779, in login</div><div>    typ, dat = self._simple_command('LOGIN', user, self._quote(password))</div>
<div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imaplib2.py", line 1492, in _simple_command</div><div>    return self._command_complete(self._command(name, *args), kw)</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imaplib2.py", line 1269, in _command_complete</div>
<div>    self._check_bye()</div><div>  File "/home/shenson/Code/Projects/offlineimap/offlineimap/imaplib2.py", line 1138, in _check_bye</div><div>    raise self.abort(bye[-1])</div><div>abort: Zimbra IMAP server terminating connection</div>
<div><br></div><div><br></div><div>Last 6 debug messages logged for Copy message 1711470 from INBOX prior to exception:</div><div>thread: Register new thread 'Copy message 1711470 from INBOX' (account 'Work')</div>
<div>imap: Attempting GSSAPI authentication</div><div>imap: A required input parameter could not be read: Unknown error</div><div>imap:   13:19.40 Copy message 1711470 from INBOX last 20 log messages:</div><div>imap: GSSAPI Authentication failed</div>
<div>imap: Attempting plain authentication</div><div>"""</div><div><br></div><div>I checked on the server side and I see that zimbra logs one good connection from my host, followed by four connections where the authentication failed. In each case where the authentication failed, zimbra got empty passwords.</div>
<div><br></div><div>I inserted some debugging statements into the code around the gssapi authentication handler. From what I can tell, the first thread will always get its connection authenticated. Then subsequent threads get some form of the following back in imapserver.IMAPServer.acquireconnection from the imapobj.error in the gssapi section.</div>
<div><br></div><div>AUTHENTICATE command error: BAD ['AUTHENTICATE aborted']. Data: XXXXX AUTHENTICATE GSSAPI</div><div><br></div><div>I'm still digging around, but it seems to me to be a threading and state issue with kerberos. Can anyone point me in the right direction to fixing this? Thanks.</div>
<br>-- <br>Scott Henson<br>
</div>