【技术原创】Zimbra-SOAP-API开发指南3——操作邮件 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

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

3gstudent 技术 2022-10-26 12:00:00
170706
收藏

导语:本文扩充了Zimbra SOAP API的调用方法,添加三个实用功能:查看邮件、发送邮件和删除邮件,记录实现细节。

0x00 前言

在之前的文章《Zimbra SOAP API开发指南》和《Zimbra-SOAP-API开发指南2》介绍了Zimbra SOAP API的调用方法,开源代码Zimbra_SOAP_API_Manage。 本文将要在此基础上扩充功能,添加邮件操作的相关功能。

0x01 简介

本文将要介绍以下内容:

查看邮件

发送邮件

删除邮件

0x02 查看邮件

Zimbra SOAP API说明文档:https://files.zimbra.com/docs/soap_api/9.0.0/api-reference/index.html

结合Zimbra SOAP API说明文档和调试结果得出以下实现流程:

调用Search命令获得邮件对应的Item id,通过Item id作为邮件的识别标志。

获得Item id后可以对邮件做进一步操作,如查看邮件细节、移动邮件、删除邮件等。

1.获得邮件对应的Item id

需要使用Search命令。

说明文档:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/Search.html

需要用到以下参数:

(1)query

表示查看的位置,示例如下:

image.png

(2)limit

表示返回的查询结果数量,示例如下:

image.png

如果不指定该属性,默认为10

测试代码:

image.png

返回内容示例:

image.png

对以上格式分析,发现标签<c***对应每个邮件的信息,提取数据如下:

image.png

格式分析如下:

image.png

时间格式转换的示例代码:

image.png

综合以上内容,得出提取Item id、发件人、标题、正文内容和发送时间的实现代码:

image.png

2.查看邮件内容

测试发现,查看邮件细节可以不依赖Zimbra SOAP API,访问固定url即可。

image.png

通过这种方式可以获得完整的邮件内容,包括Base64编码的附件内容。

实现代码:

image.png

0x03 发送邮件

在发送带有附件的邮件时,需要先上传附件,再发送。

1.上传附件

上传功能通过FileUploadServlet实现,对应代码位置:/opt/zimbra/lib/jars/zimbrastore.jar中/com.zimbra/cs/service/FileUploadServlet.class

上传细节可参考:https://github.com/Zimbra/zm-mailbox/blob/develop/store/docs/file-upload.txt

上传的url: https://

image.png

如果添加参数fmt=raw,extended,返回结果示例:

image.png

经过比较,发现添加参数fmt=raw,extended能够额外获得文件类型,示例:"ct":"image/jpeg"

所以在上传时,使用url: https://<  url >/service/upload?fmt=raw,extended

综合以上内容,得出以下实现代码:

image.png

2.发送带有附件的邮件

需要使用SendMsg命令。

说明文档:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/SendMsg.html

需要用到以下参数:

(1)e

表示发件人和收件人等相关信息,示例如下:

image.png

(2)su

表示邮件标题,示例如下:

image.png

(3)mp

表示正文内容,示例如下:

image.png

(4)noSave

如果设置为1,表示邮件发送后,不在发件箱保存副本,示例代码:

image.png

(5)attach

指定发送附件的aid,示例代码:

image.png

综合以上内容,得出发送带有附件邮件的实现代码:

image.png

0x04 删除邮件

需要使用ConvAction命令。

说明文档:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/ConvAction.html

需要用到以下参数:

(1)tcon

image.png

通过浏览器删除邮件的流程是先点击删除邮件,将邮件移动至垃圾箱,再从垃圾箱中点击删除邮件,完成邮件的彻底删除。

通过Zimbra-SOAP-API可以简化以上流程,直接删除邮件。

实现代码:

image.png

0x05 开源代码

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

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

优化了代码结构,增加了以下功能:

DeleteMail,删除指定邮件

SearchMail,获得邮箱信息,包括Item id、发件人、标题、正文内容和发送时间

SendTestMailToSelf,向当前邮箱发送一封带有附件的邮件

uploadattachment,上传附件

uploadattachmentraw,上传附件的另一种实现,用于特定条件

viewmail,查看邮件完整细节

0x06 小结

本文扩充了Zimbra SOAP API的调用方法,添加三个实用功能:查看邮件、发送邮件和删除邮件,记录实现细节。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务