【技术原创】Zimbra-SOAP-API开发指南4——邮件导出和文件夹共享
2022-11-10 12:3:40 Author: 嘶吼专业版(查看原文) 阅读量:9 收藏

本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的功能,实现邮件导出和文件夹共享,分享开发细节。

本文将要介绍以下内容:

邮件导出

文件夹共享

开源代码

Zimbra支持导出当前邮箱的所有邮件,通过Web界面的操作方法如下:

登录邮箱后,依次选择Preferences->Import/Export,如下图

接下来,通过抓包的方式分析实现流程,进而使用程序实现这部分功能。

1.默认配置导出邮件

默认配置下,会导出所有邮件,以压缩包的形式保存

访问URL示例:

参数解析:

admin%40test.com为邮箱用户,可以用~替代

filename=All-2022-07-27-181056为存在记录时保存的文件名,2022-07-27-181056对应的时间格式为年-月-日-时分秒,时间为带时区的时间,需要计算时差

emptyname=No+Data+to+Export为空记录时保存的文件名

在程序实现上,需要同Web操作的格式保持一致,代码细节:

(1)构造保存的文件名

(2)保存文件

保存文件时使用binary写入

实现代码示例:

2.加入筛选条件导出邮件

高级选项下,可以添加筛选条件,导出特定的邮件

访问URL示例:

参数解析,新增加了以下参数:

start=1658818800000为筛选的起始时间,格式为unix时间戳,没有额外计算时差

end=1658991600000为筛选的结束时间,格式为unix时间戳,没有额外计算时差

query=content%3Apassword为筛选的关键词,作用是查询正文中带有password关键词的邮件

筛选条件的语法可参考:https://wiki.zimbra.com/wiki/Zimbra_Web_Client_Search_Tips

代码实现细节:

(1)时间格式转换的示例代码

时间转换成秒:



秒转换成时间:

实现代码示例:

1.流程分析

Zimbra支持将当前邮箱的文件夹共享至其他用户,通过Web界面的操作方法如下:

登录邮箱后,依次选择Preferences->Sharing,如下图

文件夹共享可选择以下三个文件夹:

Inbox

Sent

Junk

如下图

设置共享属性如下图

需要区别以下设置:

(1)Role

Viewer只能查看邮件

Manager可以修改邮件

(2)Message

Send stanard message,在设置后会向目的邮箱发送一份确认邮件

Do not send mail about this share,不发送确认邮件

这里可以通过抓包分析每项设置对应的具体数值

示例数据包1:

格式分析:

(1)

id="2"表示Inbox

Sent对应id="5"

Junk对应id="4"

通过测试,还可以指定Drafts,对应id="6"

(2)

d="[email protected]"表示可访问共享的邮箱

perm="r"表示权限为可读,对应Viewer

Manager对应的配置为perm="rwidx",表示权限为读、写、添加和删除

如果设置了Send stanard message,在设置后会向目的邮箱(例如[email protected])发送一份确认邮件,数据包格式示例:

邮箱[email protected]会收到一份邮件,确认是否接受文件夹共享

2.代码实现

(1)添加文件共享

需要指定目标邮箱和共享文件夹

添加文件共享成功的响应中返回共享文件夹对应的zid

实现代码示例:



(2)发送文件共享请求

需要指定目标邮箱

实现代码示例:


这里需要注意,只有在添加文件共享后,发送文件共享请求才能成功返回200,否则返回500,提示invalid request: no matching grant

(3)删除文件共享

需要指定目标邮箱对应的zid和共享文件夹,zid可在添加文件共享成功的响应中获得。

实现代码示例:


新的代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py

添加以下五个功能:

AddShare:添加文件夹共享,默认权限为rwidx

ExportMail:导出带有搜索条件的邮件,可指定日期和关键词

ExportMailAll:导出所有邮件

RemoveShare:删除当前邮箱的文件夹共享

SendShareNotification:在添加文件夹共享后,向目标邮箱发送一封确认邮件

本文扩充了Zimbra SOAP API的调用方法,添加五个实用功能,实现方法和思路还可在XSS漏洞上进行测试。

相关阅读:

【技术原创】Zimbra-SOAP-API开发指南3——操作邮件

Zimbra-SOAP-API开发指南part 2

Zimbra SOAP API开发指南


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247553589&idx=1&sn=c4c807152c2de50b8a591803232eb121&chksm=e915c20fde624b19a35caf63327fc2a4cb69caede292036d4531239ed7c28bd6dcdabb01dc9f#rd
如有侵权请联系:admin#unsafe.sh