【技术原创】MailEnable开发指南
前言
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,實現了版本判斷、登錄驗證、查看文件夾、查看郵件和下載郵件的功能.
相關資料詳細
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【技术原创】MailEnable开发指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【安全】从mimikatz学习Windo
- 下一篇: 【攻防】Kubelet访问控制机制与提权