code: def mk_auth_token(self, account, admin=False, duration=0):
          
          domain = account.get_domain()
          try:
              preauth_key = self.get_domain(domain)['zimbraPreAuthKey']
          except KeyError:
              raise DomainHasNoPreAuthKey(domain)
          timestamp = int(time.time())*1000
          expires = duration*1000
          return utils.build_preauth_str(preauth_key, account.name, timestamp,
                                         expires, admin)
docs: Builds an authentification token, using preauth mechanism.
  
          See http://wiki.zimbra.com/wiki/Preauth
  
          :param duration: in seconds defaults to 0, which means "use account
                 default"
  
          :param account: an account object to be used as a selector
          :returns:       the auth string