陽 紅,郭 棟
(中國電子科技集團公司第三十研究所,四川 成都 610041)
電子郵件一直都是互聯網最重要的應用之一,且其以快速、方便、廉價的特點,成為越來越多的人的最重要數據通信手段。隨著電子郵件技術的發展,郵件已經成為人們生活中不可或缺的互聯網應用。傳統的郵件收發方式已經無法滿足人們日益增長的需求,尤其是商務人士、市場營銷人員以及各類專業人士。如今,網絡營銷競爭日趨激烈,通過郵件進行網絡營銷的方式是否能達到預期效果,營銷人員對郵件是否發送成功、發送成功率、閱讀率等數據更加關注。郵件推送與跟蹤統計系統向用戶提供了一個集大規模推送、郵件跟蹤、統計分析、效果呈現等多功能于一體的推送平臺。
用戶發送郵件通常通過Web瀏覽器、客戶端等方式,模擬瀏覽器或用戶前臺操作難以達到大規模推送的效果,以固本系統模擬郵件發送的后臺操作。
系統包含兩個子系統:郵件推送子系統和跟蹤統計子系統。系統采用標準SMTP協議,向目標郵件服務器大規模推送嵌入了跟蹤[1]插件的郵件。郵件終端包含平板電腦、筆記本電腦、PC機、手機移動終端等,通過POP3協議下載郵件。當用戶打開郵件時,郵件跟蹤插件通過HTTP協議訪問本系統,將搜集的數據信息返回給本系統。系統通過用戶返回的數據進行分析統計形成各類圖表,推送者可通過跟蹤統計操作終端進行查看。系統的網絡結構如圖1所示。

圖1 系統的網絡結構
郵件推送系統可獨立運行進行大規模郵件推送,也可與跟蹤統計系統聯合完成推送郵件的跟蹤統計。系統間通過Apache Thrift[2]進行實時通信,保障系統間數據的傳輸速率。服務器包含推送采集服務器和數據庫服務器,通過有線和無線方式接入互聯網。
Apache Thrift是一個服務端和客戶端的架構體系。Thrift具有自己內部定義的傳輸協議規范(TProtocol)和傳輸數據標準(TTransports),實際上實現了C/S模式,即通過代碼生成工具將接口定義文件生成服務器端和客戶端代碼(可以為不同語言),從而實現服務端和客戶端的跨語言支持。本系統使用ApacheThrift作為內容通信的橋梁,將郵件推送系統與跟蹤統計系統之間的數據交互作為內容數據進行傳輸。系統在Thrift描述文件中聲明自己的服務,這些服務經過編譯后會生成相應語言的代碼文件,然后實現服務(客戶端調用服務,服務器端提服務)即可。
圖2描繪了Thrift的整體架構[3]。

圖2 ApacheThrift系統架構
系統分為6個部分:業務邏輯實現、客戶端和服務端對應的Service、執行讀寫操作的計算結果、TProtocol、TTransports和底層I/O通信。
本文針對郵件業務的特征,構建了郵件推送與跟蹤統計系統的架構模型,并通過郵件的自動登錄、自動發送、跟蹤、統計等技術,為郵件的大規模推送及推送效果評估提供技術支撐。郵件推送與跟蹤統計系統的工作流程如圖3所示。

圖3 系統的工作流程
①用戶輸入或批量導入目的郵箱,或通過系統自動采集郵箱賬號信息,自動生成目的郵箱列表;②用戶輸入或批量導入發送源郵箱信息,自動生成源郵箱列表;③用戶輸入或批量導入發送內容,自動生成發送內容列表;④通過內部通信機制,添加跟蹤插件;⑤對發布的郵件進行跟蹤監控,對郵箱成功率、閱讀率、點擊次數等數據進行動態統計;⑥分析結果呈現。
郵件推送和跟蹤統計系統運行于WINDOWS操作系統。郵件推送和跟蹤統計是本系統的核心組成,分別部署在郵件推送子系統和跟蹤統計子系統內。系統總體框架以基礎硬件軟件平臺、系統服務組件為依托,構建以郵件推送和跟蹤統計為核心,以數據庫服務、各類協議以及友好的人機界面等表現手段的網格化體系。系統總體框架劃分為基礎平臺層、服務層、應用層和表示層四個層面,其中系統軟件架構如圖4所示。

圖4 系統軟件架構
本系統還搭建了一個高效可行的數據采集平臺。從數據管理和數據訪問效率的角度出發,在系統中引入數據倉庫[3]的概念。其中,通過數據倉庫對系統采集的數據做統一、集中的管理、處理和存儲。它是所有原始數據的集中地,也是所有加工數據的提供者。系統數據架構如圖5所示。

圖5 系統數據架構
數據的總體架構可以分成憑證數據的產生(數據來源)、數據的集中及加工地(數據倉庫)以及最終數據的表現(數據呈現)。
郵件推送子系統主要完成郵件的大規模推送,其中包含郵箱賬號管理、推送內容管理、郵箱地址采集、大規模推送以及內部通信等單元,如圖6所示。

圖6 郵件推送子系統組成
郵箱地址管理單元實現發件源郵箱、目的郵箱的設置;推送內容管理單元實現郵件內容的添加編輯,附件的添加等;大規模推送單元實現郵 件的大規模自動發送;內部通信模塊采用Apache Thrift客戶端,向跟蹤統計模塊發送郵件信息。同時,郵件推送子系統還提供郵箱地址采集單元,實現郵箱地址的實時采集與索引。
郵箱地址采集單元采用網絡爬蟲獲取基礎數據,通過數據分析與處理,采用正則表達式“/^(w)+(.w+)*@(w)+((.w+)+)$/;”從數據中分析出郵箱地址[4]。下面是一段實現的郵箱地址自動匹配的代碼:
function checkEmail()
{
var emailValue=document. getElementById_r("email").value;
if (!isEmail(emailValue))
{
turn false;
}
return true;
}
function isEmail(str)
{
var re =/^(w)+(.w+)*@(w)+((.w+)+)$/;
return reg.test(str);
}
郵箱地址采集單元能為郵件系統推送提供目標郵箱地址,通過地址的批量導入功能,實現自動化目標郵箱的地址添加。
跟蹤統計子系統主要完成數據的跟蹤與分析統計功能,包含數據采集單元、數據分析單元、數據呈現單元以及內部通信單元。跟蹤統計子系統采用Winpcap[5]構架,在郵件推送子系統進行信息推送,通過從網絡上抓取數據包,獲取郵件發送的實時數據;通過數據的分析整合,最終向數據呈現模塊提供原始數據,以供數據呈現模塊實時呈現。內部通信模塊采用Apache Thrift架構,部署為服務端,通過郵件子系統的客戶端連接申請,接收來自郵件子系統的數據,輔助完成數據的實時采集與匯總。
系統通過在html格式郵件中嵌入跟蹤插件來實現用戶端數據隱匿采集。跟蹤統計子系統的系統組成如圖7所示。

圖7 跟蹤統計子系統組成
跟蹤統計子系統將數據分析匯總,分析統計的數據包括發送結果、閱讀結果。通過基礎數據的分析,最終得出發送成功率、發送失敗率、閱讀率等信息,并最終以圖表的形式展現,包含柱狀圖、餅狀圖等,如圖8所示。

圖8 統計效果呈現
系統內部信息交互圖如圖9所示。

圖9 系統內部信息交互圖
系統外部接口包括郵件推送系統與互聯網接口和跟蹤統計子系統與互聯網接口。內部接口包括郵件推送系統與跟蹤統計子系統之間的接口。
系統內外部接口詳細說明如表1所示。

表1 系統內外部接口說明
郵件推送與跟蹤統計系統通過標準SMTP協議實現郵件的信息推送,基于Apache Thrift實現系統內部的數據交換,保證了內部數據的高效準確傳遞。同時,結合網絡爬蟲、Winpcap架構等,構建了低成本、高效率、高準確度的郵件推送與跟蹤統計系統。實踐表明,該系統構架合理,內部通信機制技術成熟可靠,可為同類系統的設計提供參考。