Jump to content

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的調用方法,添加三個實用功能:查看郵件、發送郵件和刪除郵件,記錄實現細節。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...