When using the verbose option on IMAP mailboxes and running under root, e.g.
archivemail -v imap://user:pw@server/mb
the variable 'former_id' in the following section around line 1100 stays at 'None':
former_gid = None # groupid doesn't have to be '0' for root on solaris 8?
if (os.getuid() == 0) and os.path.exists(mailbox_name):
This is because mailbox_name is an IMAP mailbox and therefore the path doesn't exist. Later on, in the 'finally' section it tries to set the gid to 'None' which, of course, fails:
# if we are running as root, revert the seteuid()/setegid() above
if (os.getuid() == 0):
vprint("changing effective groupid and userid back to root")
In order to catch this case I would suggest to replace the condition to:
if os.getuid() == 0 and former_gid != None:
Works fine here.