Offlineimap succeeds at prompt but fails via cron job

Joseph LP ootput at gmail.com
Tue Nov 24 03:11:15 GMT 2009


Paul Hinze <paul.t.hinze <at> gmail.com> writes:

> Joseph LP <ootput <at> gmail.com> on 2009-11-20 at 06:55:
> > I've an issue with Offlineimap 6.2.0 on Debian Squeeze whereby the command
> > perfectly fine when launched manually at command line, but fails when run on
> > cron schedule.
>
> The error you included unfortunately doesn't make it immediately obvious where
> the problem is coming from, so it could be either dovecot or offlineimap that
> is choking there.
>
> More often than not, however, things that work in a normal environment but
> break in cron have to do with issues with the shell environment.
>
> For debugging this I usually see if the command in question works via
> `env -i $COMMAND` (start with an empty environment and run $COMMAND) and thenI
> start to look at the output of `env` run as my user and try and determine what
> environment variables might be getting relied upon.

Hi Paul, your env suggestions allowed me to see more descriptive errors.

With $ env -i offlineimap:

Thread 'Account sync ***' terminated with exception:
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.5/offlineimap/threadutil.py", line 149, in
  run
    Thread.run(self)
  File "/usr/lib/python2.5/threading.py", line 446, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib/pymodules/python2.5/offlineimap/accounts.py", line 174, in
  syncrunner
    self.remoterepos =
    offlineimap.repository.Base.LoadRepository(self.getconf('remoterepository'),
    self, 'remote')
  File "/usr/lib/pymodules/python2.5/offlineimap/repository/Base.py", line 37,
  in LoadRepository
    return typemap[repostype](name, account)
  File "/usr/lib/pymodules/python2.5/offlineimap/repository/IMAP.py", line 30,
  in __init__
    self.imapserver = imapserver.ConfigedIMAPServer(self)
  File "/usr/lib/pymodules/python2.5/offlineimap/imapserver.py", line 423, in
  __init__
    password = self.repos.getpassword()
  File "/usr/lib/pymodules/python2.5/offlineimap/repository/IMAP.py", line 174,
  in getpassword
    netrcentry = netrc.netrc().authenticators(self.gethost())
  File "/usr/lib/python2.5/netrc.py", line 28, in __init__
    raise IOError("Could not find .netrc: $HOME is not set")
IOError: Could not find .netrc: $HOME is not set

No debug messages were logged for Account sync ***.

With $ env, I've noticed $HOME is not set, though issuing echo $HOME at prompt
reveals the correct path. I'm not sure how to address this issue.

My .netrc is actually a symlink to a different file (for privacy reasons, as I
host my config files publically for quick backup/restore), but making ~/.netrc
an actual file does not resolve the matter.

>
> For more strategies on getting to the bottom of this I'd take a look at someof
> the top hits on a google search for some combination of '[debug|troubleshoot]
> cron job'.
>

Will do. I appreciate your advice so far.

Regards,
Joe






More information about the OfflineIMAP-project mailing list