前言
MailEnable提供端到端的解決方案,用于提供安全的電子郵件和協作服務,參考自官方網站的說法:最近的一項獨立調查報告稱MailEnable是世界上最受歡迎的Windows郵件服務器平臺, 對于MailEnable的開發者API,我在官方網站上只找到了AJAX API的說明檔案,所以本文將要嘗試撰寫Python腳本,實作對MailEnable郵件的訪問,記錄開發細節,開源代碼,
簡介
本文將要介紹以下內容:
?環境搭建
?開發細節
?開源代碼MailEnableManage.py
環境搭建
1.安裝
安裝前需要安裝IIS服務和.Net 3.5,否則無法正常配置Web訪問,
MailEnable下載地址:http://www.mailenable.com/download.asp
2.配置
啟動MailEnableAdmin.msc,在MailEnable Management->Messaging Manager->Post Offices下配置郵件服務器資訊,
如下圖

默認登錄頁面:
http://mewebmail.localhost/mewebmail/Mondo/lang/sys/login.aspx
3.開啟Web管理頁面
參考資料:
http://www.mailenable.com/kb/content/article.asp?ID=ME020132
啟動MailEnableAdmin.msc,選擇MailEnable Management->Servers->localhost->Services and Connectors->WebAdmin,右鍵單擊并從彈出選單中選擇Properties,選擇Configure…按鈕,進行安裝,
如下圖

啟動MailEnableAdmin.msc,在MailEnable Management->Messaging Manager->Post Offices下選擇已配置的Post Office,右鍵單擊并從彈出選單中選擇Properties,切換到Web Admin標簽,啟用web administration,
如下圖

選擇指定用戶,將屬性修改為管理員,
默認管理頁面:
http://mewebmail.localhost/meadmin/Mondo/lang/sys/login.aspx
注:
如果忘記了用戶的明文口令,可以查看默認安裝路徑C:\Program Files (x86)\Mail Enable\Config下的Auth.tab檔案,其中保存有每個郵箱用戶的明文口令,
開發細節
1.版本判斷
經過多個版本的測驗,總結出來的版本判斷方法如下:
訪問登錄頁面:http:///mewebmail/Mondo/lang/sys/login.aspx
查看網頁原始碼,如下圖

其中< link rel=“stylesheet” type=“text/css” href="/MEWebMail/Mondo/skins/Arctic/me.css?v=9.84" >中的v=9.84對應MailEnable的版本,
在腳本實作上,我采用了如下方法:
?找到?v=的位置
?向后截取固定長度的字串
?以"作為分隔符,取出版本號
補充:通過MailEnableAdmin.msc獲得版本號
啟動MailEnableAdmin.msc,選擇MailEnable Management->Servers->localhost->System->Diagnose
如下圖

注:版本號串列
http://www.mailenable.com/Premium-ReleaseNotes.txt
http://www.mailenable.com/Standard-ReleaseNotes.txt
2.用戶登錄
訪問URL:/mewebmail/Mondo/Servlet/request.aspx
需要的部分關鍵引數:
?txtUsername
?txtPassword
?loginParam
回傳結果為json格式,如果登錄成功,bReportLoginFailure的值為False,
對應的Python代碼如下:

3.查看郵箱檔案夾
訪問URL:/MEWebMail/Mondo/Servlet/asyncrequest.aspx
需要的部分關鍵引數:
?Folder,可以指定為inbox/sent/drafts/deleted/junk
?ME_VALIDATIONTOKEN,需要訪問/mewebmail/Mondo/Servlet/request.aspx?Cmd=GET-MBX-OPTIONS&Scope=2,從回傳結果中獲得,
回傳結果為xml格式,包含該檔案夾下所有郵件的數量和每個郵件的簡要內容,ID作為每封郵件的唯一標志,在讀取郵件時需要作為引數,
為了提高效率,可以使用xml.dom決議xml,
使用xml.dom決議xml的參考資料:
https://docs.python.org/3.8/library/xml.dom.minidom.html#xml.dom.minidom.parse
使用xml.dom決議xml,提取出TOTAL_ITEMS的Python代碼如下:

4.查看郵件
訪問URL:/MEWebMail/Mondo/Servlet/request.aspx
需要的部分關鍵引數:
?Folder,可以指定為inbox/sent/drafts/deleted/junk
?ME_VALIDATIONTOKEN,需要訪問/mewebmail/Mondo/Servlet/request.aspx?Cmd=GET-MBX-OPTIONS&Scope=2,從回傳結果中獲得
?ID,需要發送查看郵箱檔案夾的請求,在回傳結果中獲得
回傳結果為xml格式,包含郵件的詳細內容,如果存在附件,那么ATTACHMENTS的EXISTS屬性值為1,如果不存在附件,那么ATTACHMENTS的EXISTS屬性值為0
MESSAGEID作為附件的標志,如果包含多個附件,多個附件共享同一個MESSAGEID,FILENAME為附件的名稱,MESSAGEID+FILENAME作為附件的唯一標志,在下載附件時需要作為引數
為了提高效率,可以使用xml.dom決議xml
xml資料示例如下圖

決議xml提取郵件資訊的Python代碼如下:

5.下載附件
訪問URL:/MEWebMail/Mondo/lang/sys/Forms/MAI/GetAttachment.aspx
需要的部分關鍵引數:
?Folder,可以指定為inbox/sent/drafts/deleted/junk
?MessageID,需要發送查看郵件的請求,在回傳結果中獲得,
?Filename,需要發送查看郵件的請求,在回傳結果中獲得,
在保存附件上,需要區分文本格式和二進制格式,
開源代碼
完整代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/MailEnableManage.py
代碼支持以下功能:
?GetVersion,版本判斷,
?Check,登錄驗證,
?ListFolder,查看檔案夾,命令列顯示郵件數量,完整內容保存至檔案,
?ViewMail,查看郵件,命令列顯示郵件資訊,完整內容保存至檔案,
?DownloadAttachment,下載附件,
小結
本文介紹了撰寫Python腳本訪問MailEnable郵件的開發細節,開源代碼MailEnableManage.py,實作了版本判斷、登錄驗證、查看檔案夾、查看郵件和下載郵件的功能.

相關資料詳細
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295086.html
標籤:其他
上一篇:【安全】從mimikatz學習Windows安全之訪問控制模型
下一篇:奇安信--安全攻防概述
