我正在使用Zimbra提供的REST API,以定期(以编程方式)轮询Zimbra电子邮件服务器上的邮件。
根据documentation,我需要通过查询字符串传递zauthtoken,以便成功检索数据。
唯一的问题是该文档未提及如何获取或创建zauth_token,这意味着我无能为力。
我已经广泛搜索了Zimbra文档,也在线搜索了该文档,但似乎找不到任何显示如何创建或获取身份验证令牌的内容。
有谁知道我如何获取/创建身份验证令牌,以便可以以编程方式访问收件箱中的电子邮件?
最佳答案
我将假设您是最终用户,而不是邮件服务器的管理员。您要查找的令牌是一个称为ZM_AUTH_TOKEN的cookie,通常会在用户登录时进行设置。也就是说,您无需使用令牌身份验证即可通过API来访问收件箱。您可以通过在请求中提供用户名/密码来轻松进行身份验证(例如,使用curl的--user
选项)。如果您真的特别需要令牌,下面是一个如何使用curl生成令牌的示例:
curl --user 'your-username-here:your-password here' 'https://your-zimbra-server-here.com/home/[email protected]/Inbox/?fmt=sync&auth=sc' -c 'where-you-want-to-save-your-cookie-file'
这是一个非常简单的curl命令,但是我想强调一些Zimbra特定的位:URL末尾(
?fmt=sync&auth=sc
)的查询对于检索您要查找的令牌至关重要。 auth=sc
部分强制Zimbra返回auth cookie。从技术上讲,fmt=sync
可以是任何有效格式,但是您必须指定一些内容。我选择同步是因为它实际上并不查找任何电子邮件数据,因此它的完成速度要比返回电子邮件数据的命令快。一旦curl命令完成,您将把ZM_AUTH_TOKEN cookie保存到
-c
选项之后指定的任何文件中。然后,您可以在REST查询URL中将此cookie的值作为zauthtoken
的值传递,它们将正确进行身份验证,而无需您提供任何其他格式的凭据:curl 'https://your-zimbra-server-here.com/home/[email protected]/Inbox/?auth=qp&zauthtoken=0_your-zauth-token-always-starts-with-zero-and-an-underscore-dont-append-an-additional-one-this-is-just-an-example'
同样,如果您已经在使用curl,那么这有点没有意义,因为您可以只使用
--user
选项,但是如果您需要以其他方式而不具有类似功能来访问URL,则可能会有所帮助。如果必须使用令牌,请注意,每次当前过期时,都必须生成一个新的cookie /令牌。关于authentication - 通过REST API访问Zimbra(如何获取zauthtoken?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28646214/