畢業(yè)論文-Linux系統(tǒng)郵件客戶端開發(fā)_第1頁
畢業(yè)論文-Linux系統(tǒng)郵件客戶端開發(fā)_第2頁
畢業(yè)論文-Linux系統(tǒng)郵件客戶端開發(fā)_第3頁
畢業(yè)論文-Linux系統(tǒng)郵件客戶端開發(fā)_第4頁
畢業(yè)論文-Linux系統(tǒng)郵件客戶端開發(fā)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 太原理工大學畢業(yè)設計(論文)用紙 緒論1.1 電子郵件收發(fā)軟件的歷史與現狀1.1.1 電子郵件收發(fā)軟件的歷史電子郵件(標志:HYPERLINK /view/26815.htm,也被大家昵稱為“HYPERLINK /view/8814.htm伊妹兒”),是種用電子手段提供信息交換的通信方式,是互聯網應用最廣的服務。通過網絡的HYPERLINK /view/2296101.htm電子郵件系統(tǒng),用戶可以以非常低廉的價格(不管發(fā)送到哪里,都只需負擔網費)、非??焖俚姆绞剑◣酌腌娭畠瓤梢园l(fā)送到世界上任何指定的目的地),與世界上任何一個角落的網絡用戶聯系。電子郵件可以是文字、圖像、聲音等多種形式。同時,

2、用戶可以得到大量免費的新聞、專題郵件,并實現輕松的信息搜索。電子郵件的存在極大的方便了人與人之間的溝通與交流,促進了社會的發(fā)展。起源對于世界上第一封電子郵件(e-mail),根據資料,有兩種說法:電子郵件第一種說法1969年10月世界上的第一封電子郵件是由計算機科學家Leonard K.教授發(fā)給他的同事的一條簡HYPERLINK /view/24045.htm短消息。據HYPERLINK /view/37506.htm互聯網周刊報道世界上的第一封電子郵件是由計算機科學家Leonard K.教授發(fā)給他的同事的一條簡HYPERLINK /view/24045.htm短消息(時間應該是1969年10

3、月),這條消息只有兩個字母:“LO”。Leonard K.教授因此被稱為電子郵件之父。Leonard K.教授解釋,“當年我試圖通過一臺位于HYPERLINK /view/269543.htm加利福尼亞大學的計算機和另一臺位于HYPERLINK /view/7407.htm舊金山附近斯坦福研究中心的計算機聯系。我們所做的事情就是從一臺計算機登錄到另一臺計算機。當時登錄的辦法就是鍵入L-O-G。于是我方鍵入L,然后問對方:收到L了嗎?對方回答:收到了。然后依次鍵入O和G。還未收到對方收到G的確認回答,系統(tǒng)就HYPERLINK /view/559937.htm癱瘓了。所以第一條網上信息就是LO,意

4、思是你好!”第二種說法1971年,HYPERLINK /view/2398.htm美國國防部資助的HYPERLINK /view/108095.htm阿帕網正在如火如荼的進行當中,一個非常尖銳的問題出現了:參加此項目的科學家們在不同的地方做著不同的工作,但是卻不能很好地分享各自的研究成果。HYPERLINK /view/580366.htm原因很簡單,因為大家使用的是不同的計算機,每個人的工作對別人來說都是沒有用的。他們迫切需要一種能夠借助于HYPERLINK /view/3487.htm網絡在不同的計算機之間傳送數據的方法。為阿帕網工作的HYPERLINK /view/1935.htm麻省理

5、工學院博士Ray Tomlinson把一個可以在不同的HYPERLINK /view/17634.htm電腦網絡之間進行拷貝的軟件和一個僅用于單他使用這個軟件在阿帕網上發(fā)送了第一封電子郵件,收件人是另外一臺電腦上的自己。盡管這封郵件的內容連Tomlinson本人也記不起來了,但那一刻仍然具備了十足的歷史意義:電子郵件誕生了。Tomlinson選擇HYPERLINK /view/115742.htm符號作為用戶名與地址的間隔,因為這個符號比較生僻,不會出現在任何一個人的名字當中,而且這個符號的讀音也有著在的含義。阿帕網的科學家們以極大的熱情歡迎了這個石破天驚般的創(chuàng)新。他們天才的想法及研究成果,現

6、在可以用最快的-快得難以覺察-速度來與同事共享了。許多人回想起來,都覺得阿帕網所獲得的巨大成功當中,電子郵件HYPERLINK /view/1316097.htm功不可沒。(這個說法也是較為廣傳的。)雖然電子郵件是在70年代發(fā)明的,它卻是在80年才得以興起。70年代的沉寂主要是由于當時使用Arpanet網絡的人太少,網絡的速度也僅為目前56Kbps標準速度的二十分之一。受網絡速度的限制,那時的用戶只能發(fā)送些簡短的信息,根本別想象現在那樣發(fā)送大量照片;到80年代中期,個人電腦興起,電子郵件開始在電腦迷以及大學生中廣泛傳播開來;到90年代中期,互聯網瀏覽器誕生,全球網民人數激增,電子郵件被廣為使用

7、。1.1.2 電子郵件收發(fā)軟件的現狀時至今日,Google 與幾個大型的網絡公司都有提供免費或者是付費的郵件服務器,其中,免費的電子郵件賬號甚至已經提供高達數個 GB 的郵件儲存量!對于一般用戶來說真是非常夠用了!而對于企業(yè)級的大客戶,一般選擇在IDC中搭建自己的郵件服務器,由專人負責日常的維護。而網絡辦公平臺OA的興起,也在逐步弱化電子郵件的地位。未來充滿了未知,電子郵件的前景尚不明朗。1.2 電子郵件簡介1.2.1 電子郵件原理1、電子郵件的發(fā)送和接收電子郵件在Internet上發(fā)送和接收的原理可以很HYPERLINK /view/245411.htm形象地用我們日常生活中郵寄HYPERL

8、INK /view/667146.htm包裹來形容:當我們要寄一個包裹時,我們首先要找到任何一個有這項業(yè)務的郵局,在填寫完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的HYPERLINK /view/172136.htm郵局,那么對方取包裹的時候就必須去這個郵局才能取出。同樣的,當我們發(fā)送電子郵件時,這封郵件是由郵件發(fā)送HYPERLINK /view/899.htm服務器(任何一個都可以)發(fā)出,并根據收信人的地址判斷對方的郵件接收服務器而將這封信發(fā)送到該服務器上,收信人要收取郵件也只能訪問這個服務器才能完成。2、電子郵件地址的構成HYPERLINK /view/126647.htm電子

9、郵件地址的格式由三部分組成。第一部分“HYPERLINK /view/1161303.htmUSER”代表用戶信箱的帳號,對于同一個郵件接收HYPERLINK /view/899.htm服務器來說,這個帳號必須是唯一的;第二部分“”是HYPERLINK /view/1268377.htm分隔符;第三部分是HYPERLINK /view/200012.htm用戶信箱的郵件接收服務器HYPERLINK /view/43.htm域名,用以標志其所在的位置。1.2.2 電子郵件工作過程1.HYPERLINK /view/2296101.htm電子郵件系統(tǒng)是一種新型的信息系統(tǒng),是通信技術和HYPERLI

10、NK /view/62176.htm計算機技術結合的產物。電子郵件的傳輸是通過電子郵件簡單HYPERLINK /view/441895.htm傳輸協(xié)議(Simple Mail Transfer Protocol,簡稱SMTP)這一系統(tǒng)軟件來完成的,它是Internet下的一種電子郵件HYPERLINK /view/185322.htm通信協(xié)議。2.電子郵件的基本原理是在通信網上設立“電子信箱系統(tǒng)”,它實際上是一個HYPERLINK /view/3314.htm計算機系統(tǒng)。系統(tǒng)的HYPERLINK /view/25278.htm硬件是一個高性能、大容量的計算機。HYPERLINK /view/4

11、480.htm硬盤作為信箱的存儲介質,在硬盤上為用戶分一定的HYPERLINK /view/1375172.htm存儲空間作為用戶的“信箱”,每位用戶都有屬于自己的個HYPERLINK /view/54008.htm電子信箱。并確定個用戶名和用戶可以自己隨意修改的口令。HYPERLINK /view/1375172.htm存儲空間包含存放所收信件、HYPERLINK /view/28525.htm編輯信件以及信件存檔三部分空間,用戶使用口令開啟自己的信箱,并進行發(fā)信、讀信、編輯、轉發(fā)、存檔等各種操作。系統(tǒng)功能主要由軟件實現。3.電子郵件的通信是在信箱之間進行的。用戶首先開啟自己的信箱,然后通過

12、鍵入命令的方式將需要發(fā)送的郵件發(fā)到對方的信箱中。郵件在信箱之間進行傳遞和交換,也可以與另個郵件系統(tǒng)進行傳遞和交換。收方在取信時,使用特定HYPERLINK /view/261440.htm帳號從信箱提取。電子郵件的工作過程遵循HYPERLINK /view/88584.htm客戶-HYPERLINK /view/899.htm服務器模式。每份電子郵件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方構成客戶端,而接收方構成服務器,服務器含有眾多用戶的HYPERLINK /view/54008.htm電子信箱。發(fā)送方通過郵件客戶HYPERLINK /view/17674.htm程序,將編輯好的電子郵件向郵局

13、服務器(HYPERLINK /view/5450.htmSMTP服務器)發(fā)送。郵局服務器識別接收者的地址,并向管理該地址的HYPERLINK /view/54241.htm郵件服務器(HYPERLINK /view/21929.htmPOP3服務器)發(fā)送消息。HYPERLINK /view/54241.htm郵件服務器識將消息存放在接收者的HYPERLINK /view/54008.htm電子信箱內,并告知接收者有新郵件到來。接收者通過郵件客戶HYPERLINK /view/5295513.htm程序連接到服務器后,就會看到服務器的通知,進而打開自己的HYPERLINK /view/54008

14、.htm電子信箱來查收郵件。通常Internet上的個人用戶不能直接接收電子郵件,而是通過申請HYPERLINK /view/855.htmISPHYPERLINK /view/23880.htm主機的一個HYPERLINK /view/54008.htm電子信箱,由ISP主機負責電子郵件的接收。一旦有用戶的電子郵件到來,ISPHYPERLINK /view/23880.htm主機就將郵件移到用戶的HYPERLINK /view/54008.htm電子信箱內,并通知用戶有新郵件。因此,當發(fā)送一條電子郵件給一另一個客戶時,電子郵件首先從用戶計算機發(fā)送到ISPHYPERLINK /view/238

15、80.htm主機,再到Internet,再到收件人的ISP主機,最后到收件人的HYPERLINK /view/920814.htm個人計算機。ISPHYPERLINK /view/23880.htm主機起著“HYPERLINK /view/172136.htm郵局”的作用,管理著眾多用戶的電子信箱。每個用戶的HYPERLINK /view/54008.htm電子信箱實際上就是用戶所申請的帳號名。每個用戶的電子郵件信箱都要占用ISPHYPERLINK /view/23880.htm主機一定容量的硬盤空間,由于這一空間是有限的,因此用戶要定期查收和閱讀HYPERLINK /view/54008.h

16、tm電子信箱中的郵件,以便騰出空間來接收新的郵件。1.2.3 電子郵件地址格式domain_name為HYPERLINK /view/43.htm域名的HYPERLINK /view/390932.htm標識符,也就是郵件必須要交付到的郵件目的地的HYPERLINK /view/43.htm域名。而somebody則是在該HYPERLINK /view/43.htm域名上的郵箱地址。后綴一般則代表了該HYPERLINK /view/43.htm域名的性質,與地區(qū)的代碼。HYPERLINK /view/43.htm域名真正從技術上而言是一個郵件HYPERLINK /view/1077.htm交換

17、機,而不是一個機器名。常見的電子郵件HYPERLINK /view/36190.htm協(xié)議有以下幾種:HYPERLINK /view/5450.htmSMTP(HYPERLINK /view/576460.htm簡單郵件傳輸協(xié)議)、HYPERLINK /view/5404.htmPOP3(HYPERLINK /view/544380.htm郵局協(xié)議)、HYPERLINK /view/17877.htmIMAP(Internet郵件訪問協(xié)議)。這幾種協(xié)議都是由HYPERLINK /view/7729.htmTCP/IP協(xié)議族定義的。HYPERLINK /view/5450.htmSMTP(Sim

18、ple Mail Transfer Protocol):SMTP主要負責底層的郵件系統(tǒng)如何將郵件從一臺機器傳至另外一臺機器。HYPERLINK /view/33001.htmPOP(Post Office Protocol):版本為HYPERLINK /view/5404.htmPOP3,POP3是把郵件從HYPERLINK /view/8622.htm電子郵箱中傳輸到本地計算機的協(xié)議。HYPERLINK /view/17877.htmIMAP(Internet Message Access Protocol):版本為HYPERLINK /view/718489.htmIMAP4,是POP3的

19、一種替代協(xié)議,提供了郵件檢索和郵件處理的新功能,這樣用戶可以完全不必下載郵件正文就可以看到郵件的標題摘要,從郵件HYPERLINK /view/930.htm客戶端HYPERLINK /view/37.htm軟件就可以對HYPERLINK /view/899.htm服務器上的郵件和HYPERLINK /view/386894.htm文件夾目錄等進行操作。IMAP協(xié)議增強了電子郵件的靈活性,同時也減少了HYPERLINK /view/1522.htm垃圾郵件對本地系統(tǒng)的直接危害,同時相對節(jié)省了用戶察看電子郵件的時間。除此之外,IMAP協(xié)議可以記憶用戶在HYPERLINK /view/129742

20、4.htm脫機狀態(tài)下對郵件的操作(例如移動郵件,刪除郵件等)在下一次打開網絡連接的時候會自動執(zhí)行。在大多數流行的電子HYPERLINK /view/2318149.htm郵件客戶端程序里面都集成了對HYPERLINK /view/16147.htmSSL連接的支持。除此之外,很多HYPERLINK /view/40927.htm加密技術也應用到電子郵件的發(fā)送接受和閱讀過程中。他們可以提供128位到2048位不等的加密強度。無論是單向加密還是HYPERLINK /view/1145164.htm對稱密鑰加密也都得到廣泛支持。1.2.4 電子郵件特點簡單來說,即(1)傳播速度快(2)非常便捷(3)

21、成本低廉(4)廣泛的交流對象(5)信息多樣化(6)比較安全1.2.5 電子郵件系統(tǒng)電子郵件服務由專門的服務器提供,Gmail, Hotmail,網易HYPERLINK /view/47477.htm郵箱,HYPERLINK /view/706628.htm新浪郵箱等郵箱服務也是建立在HYPERLINK /view/921572.htm電子郵件服務器基礎上,但是大型郵件服務商的系統(tǒng)一般是自主開發(fā)或是對其他技術二次開發(fā)實現的。主要的HYPERLINK /view/576456.htm電子郵件服務器主要有以下兩大塊:一、基于Unix/Linux平臺的郵件系統(tǒng)1. Sendmail郵件系統(tǒng)(支持SMT

22、P)和dovecot郵件系統(tǒng)(支持POP3)Sendmail可以說是郵件的鼻祖,迄今為止有50多年的歷史。本當郵件是其中的一個典型代表2.基于Postfix/Qmail的郵件系統(tǒng)。Postfix/Qmail技術是在Sendmail技術上發(fā)展起來的,迄今為止歷史不超過10年。 如網易郵箱的MTA 是電子處理軟件?;赑ostfix,yahoo的郵箱是基于Qmail系統(tǒng)。二. 基于 Windows平臺的郵件系統(tǒng)1.HYPERLINK /view/2353.htm微軟的ExchangeHYPERLINK /view/1677840.htm郵件系統(tǒng)。2. IBM Lotus Domino 郵件系統(tǒng)。3

23、. Scalix 郵件系統(tǒng)。4.HYPERLINK /view/1859400.htmZimbra郵件系統(tǒng)。5. MDeamon 郵件系統(tǒng)。其中Exchange 郵件系統(tǒng)由于和Windows 整合,便于管理。是在企業(yè)中使用數量最多的郵件系統(tǒng)。 IBM Lotus Domino 則綜合功能較強,大型企業(yè)使用較多,基于Postfix 的郵件系統(tǒng)則需要有較強的技術力量才能實現,但是性能可以達到非常高,而且安全性很好,同時軟件是開源免費的。1.3 本文的主要研究內容與組織結構1.3.1 本文的主要研究內容本文對電子郵件及相關網絡技術進行了初步的探索和研究。主要研究內容包括以下幾個方面:研究Linux下

24、電子郵件客戶端收發(fā)軟件實現的各種方法。研究電子郵件相關協(xié)議和編解碼技術。設計一種電子郵件客戶端收發(fā)模塊。1.3.1 本文的組織結構本設計基于Linux系統(tǒng)下的QT集成開發(fā)環(huán)境編寫。組織結構如下:第二章對研究課題的意義及可行性進行分析,確定本軟件以目前的條件可以完成。第三章對系統(tǒng)的總體設計進行描述。首先對電子郵件的體系結構進行了簡單的介紹,明確了本設計模塊在系統(tǒng)中的地位和作用。接著提出了系統(tǒng)的總體設計方案和依據。系統(tǒng)分兩大部分進行設計:后臺電子郵件傳輸協(xié)議的實現和前臺可視用戶界面的顯示。第四章為后臺電子郵件傳輸協(xié)議實現部分的設計。該部分分為網絡接口層實現模塊、傳輸層實現模塊和應用層實現模塊三個層

25、次進行設計。涉及操作系統(tǒng)的選用、Socket編程技術,以及SMTP、POP3和MIME等多種電子郵件傳輸協(xié)議的應用。第五章對前臺可視用戶界面的顯示部分進行設計。該部分由界面顯示模塊和前后臺的連接模塊組成。其中,界面顯示模塊主要使用Qt編程技術,而前后臺的連接模塊主要涉及對磁盤文件的操作和管理。第六章對本設計中的各個子模塊進行了詳細測試,并給出了系統(tǒng)的總體運行結果。結論中對現有工作進行了總結,并對簡易電子郵件客戶端接收模塊的實現提出了進行一步的構想。2 電子郵件客戶端可行性分析2.1 研究課題的意義現有的電子郵件客戶端都是基于臺式機或筆記本平臺安裝的,使用時需大量調用系統(tǒng)類庫,資源消耗大,對于目

26、前將程序向嵌入式等小型化載體進行遷移帶來許多不便。在日常的工作中,找不到一款簡單易用的,且支持企業(yè)內部郵箱的手機客戶端。目前流行的嵌入式操作系統(tǒng)有Windows CE、IOS、Android和Linux等。前兩者使用時會收取一定的費用,而后兩者作為開源的操作系統(tǒng),可以自由傳播和修改。而Android是基于Linux內核的操作系統(tǒng),所以選擇Linux操作系統(tǒng)作為簡易郵件客戶端的運行環(huán)境具有很好的擴展性。現有的郵件客戶端軟件,多是基于Windows操作系統(tǒng)編寫,無法直接應用于Linux運行環(huán)境,這使得模塊設計時無法直接利用他人已經編寫好的郵件收發(fā)程序。 因此,自制一個運行在Linux操作系統(tǒng)下的簡

27、易電子郵件客戶端收發(fā)模塊成為必然。其次,由于是自主開發(fā)的電子郵件收發(fā)模塊,具有很高的可擴展性,未來可以很方便的添加目前流行的電子郵件推送功能,實現郵件接收的自動提醒?;蛘咴卩]件安全性方面,也可以非常簡單的實現僅基于客戶端的自定義垃圾郵件的濾除工作,或特定郵件的選擇接收功能。并且結合系統(tǒng)已安裝的病毒查殺軟件,還可以自動完成郵件接收后的嵌入式軟件病毒掃描功能等,為加強電子郵件的安全性和可靠性提供參考意見。2.2 可行性報告2.2.1 編寫目地通過本可行性研究報告得出此軟件能否開發(fā),可否供試用。2.2.2 背景所建議開發(fā)的軟件系統(tǒng)的名稱:Linux系統(tǒng)郵件客戶端開發(fā)。開發(fā)者:太原理工大學軟件工程20

28、10級1017班焦浩。用戶:所有需要簡易郵件發(fā)送客戶端的用戶。2.2.3 需求功能:實現電子郵件及附件的發(fā)送。性能要求:客戶端界面簡單實用,發(fā)送郵件快速便捷。2.2.4 目標主要開發(fā)目標:開發(fā)完成后,用此客戶端可以實現電子郵件,通過SSL連接,smtp協(xié)議發(fā)字符串。通過發(fā)送服務器將郵件發(fā)送至郵件接收服務器,并確保用戶能收到電子郵件。2.2.5 開發(fā)語言與環(huán)境的選擇開發(fā)語言選擇為C+,C+語言的有點如下:C+設計成靜態(tài)類型、和C同樣高效且可移植的多用途程序設計語言。C+設計直接的和廣泛的支持多種HYPERLINK /view/431342.htm程序設計風格(程序化程序設計、資料抽象化、HYPE

29、RLINK /view/249254.htm面向對象程序設計、泛型程序設計)。C+設計無需復雜的程序設計環(huán)境。C+語言簡潔靈活,運算符的數據結構豐富、具有結構化控制語句、程序執(zhí)行效率高,而且同時具有高級語言與匯編語言的優(yōu)點,與其它語言相比 ,C語言具有可以直接訪問物理地址的優(yōu)點,與匯編語言相比又具有良好的可讀性的可移植性??偟脕碚f,C+語言的主要特點表現在兩個方面,一是盡量兼容C,二是支持面向對象的方法。它操持了C的簡潔、高效的接近匯編語言等特點,對C的類型系統(tǒng)進行了改革的擴充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯誤。另外,由于C語言的廣泛使用,因而極大的促進了C+的普及和推

30、廣。C+語言最有意義的方面是支持面向對象的特征。雖然與C的兼容使得C+具有雙重特點,但他在概念上完全與C不同,更具面向對象的特征。出于保證語言的簡潔和運行高效等方面的考慮,C+的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關于此類話題,HYPERLINK /view/687922.htmBjarne Stroustrup的C+語言的設計和演化(1994)里做了詳盡的陳述。C+引入了面向對象的概念,使得開發(fā)人機交互類型的應用程序更為簡單、快捷。很多優(yōu)秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C+。開發(fā)壞境選擇Qt 5.2

31、.1。Qt是一個1991年由奇趣科技開發(fā)的跨平臺HYPERLINK /view/824.htmC+HYPERLINK /view/185360.htm圖形用戶界面HYPERLINK /view/330120.htm應用程序開發(fā)框架。它既可以開發(fā)HYPERLINK /view/25309.htmGUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務器。Qt是HYPERLINK /view/125370.htm面向對象的框架,使用特殊的代碼生成擴展(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,易于擴展,允許組件編程。2014年4月,跨平臺集成開發(fā)環(huán)境Qt

32、 Creator 3.1.0正式發(fā)布,實現了對于iOS的完全支持,新增WinRT、Beautifier等插件,廢棄了無Python接口的GDB調試支持,集成了基于Clang的C/C+代碼模塊,并對Android支持做出了調整,至此實現了全面支持iOS、Android、WP。優(yōu)良的跨平臺特性:Qt支持下列操作系統(tǒng): Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS3

33、90,QNX 等等。面向對象Qt 的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件 之間的協(xié)同工作變得十分簡單。豐富的 APIQt 包括多達 250 個以上的 C+ 類,還提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達式的處理 功能。支持 2D/3D 圖形渲染,支持 OpenGL。大量的開發(fā)文檔。XML

34、支持。2.2.6 條件與限制硬件:必須有一臺個人計算機開發(fā)環(huán)境:Qt 5.2.1可利用的信息與資源:網絡信息以及一些出版的書刊。2.2.7 可行性結論由于進行開發(fā)研究的一些東西都是開源的,成本幾乎沒有。所以在技術、經濟、操作上都具有高度的可行性,可以立即開始進行。3 系統(tǒng)的總體設計3.1 系統(tǒng)總體構成預設計的簡單電子郵件客戶端發(fā)送模塊是一個軟件包。它包含郵件服務器的連接、用戶名密碼的驗證、SSL協(xié)議加密、收件人地址、郵件的文本信息及附件信息。驗證成功,發(fā)送成功驗證郵件信息連接SMTP服務器電子郵件發(fā)送模塊 圖3- SEQ 圖3- * ARABIC 1 發(fā)送模塊工作流程驗證成功,發(fā)送成功驗證郵件

35、信息連接SMTP服務器電子郵件發(fā)送模塊3.2 發(fā)送郵件要發(fā)送郵件,用戶首先通過客戶端界面創(chuàng)建郵件。圖形化界面文件Qt中的.ui提供在屏幕上顯示的模塊讓用戶填寫與選擇選項,來幫助用戶以規(guī)定的字段格式撰寫電子郵件報文。郵件撰寫完成后,由MTA客戶端以規(guī)定的郵件傳輸協(xié)議發(fā)送出去。3.3 后臺電子郵件傳輸協(xié)議的實現OSI是一個開放性的通行系統(tǒng)互連參考模型,他是一個定義的非常好的協(xié)議規(guī)范。OSI模型有7層結構,每層都可以有幾個子層。 OSI的7層從上到下分別是 7 HYPERLINK /view/239619.htm應用層 6 HYPERLINK /view/239615.htm表示層 5 會話層 4

36、HYPERLINK /view/239605.htm傳輸層 3 HYPERLINK /view/239600.htm網絡層 2 HYPERLINK /view/239592.htm數據鏈路層 1 HYPERLINK /view/239585.htm物理層 其中高層,即7、6、5、4層定義了HYPERLINK /view/330120.htm應用程序的功能,下面3層,即3、2、1層主要面向通過網絡的端到端的HYPERLINK /view/166248.htm數據流。應用層(Application Layer)與其它計算機進行通訊的一個應用,它是對應HYPERLINK /view/330120.h

37、tm應用程序的通信服務的。例如,一個沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關心OSI的第7層。但是,如果添加了一個傳輸文件的選項,那么字處理器的程序員就需要實現OSI的第7層。示例:telnet,HTTP,FTP,NFS,SMTP等。表示層(Presentation Layer)這一層的主要功能是定義數據格式及加密。例如,FTP允許你選擇以二進制或ASCII格式傳輸。如果選擇二進制,那么發(fā)送方和接收方不改變文件的內容。如果選擇ASCII格式,發(fā)送方將把HYPERLINK /view/300107.htm文本從發(fā)送方的HYPERLINK /view/51987.

38、htm字符集轉換成標準的ASCII后發(fā)送數據。在接收方將標準的ASCII轉換成接收方計算機的HYPERLINK /view/51987.htm字符集。示例:加密,ASCII等。會話層(Session Layer)它定義了如何開始、控制和結束一個會話,包括對多個雙向消息的控制和管理,以便在只完成連續(xù)消息的一部分時可以通知應用,從而使表示層看到的數據是連續(xù)的,在某些情況下,如果表示層收到了所有的數據,則用數據代表表示層。示例:RPC,SQL等。傳輸層(Transport Layer)這層的功能包括是否選擇差錯恢復協(xié)議還是無差錯恢復協(xié)議,及在同一HYPERLINK /view/23880.htm主機

39、上對不同應用的HYPERLINK /view/166248.htm數據流的輸入進行復用,還包括對收到的順序不對的HYPERLINK /view/25880.htm數據包的重新排序功能。示例:TCP,UDP,SPX。網絡層(Network Layer)這層對端到端的包傳輸進行定義,它定義了能夠標識所有結點的HYPERLINK /view/893778.htm邏輯地址,還定義了HYPERLINK /view/18655.htm路由實現的方式和學習的方式。為了適應HYPERLINK /view/545115.htm最大傳輸單元長度小于包長度的HYPERLINK /view/305337.htm傳輸介

40、質,網絡層還定義了如何將一個包分解成更小的包的分段方法。示例:IP,IPX等。數據鏈路層(Data Link Layer)它定義了在單個鏈路上如何傳輸數據。這些協(xié)議與被討論的各種介質有關。示例:ATM,FDDI等。物理層(Physical Layer)OSI的物理層規(guī)范是有關HYPERLINK /view/305337.htm傳輸介質的特性標準,這些規(guī)范通常也參考了其他組織制定的標準。連接頭、幀、幀的使用、電流、編碼及光調制等都屬于各種物理層規(guī)范中的內容。物理層常用多個規(guī)范完成對所有細節(jié)的定義。示例:Rj45,802.3等。3.4 前臺用戶界面的顯示前臺用戶界面顯示模塊由界面編程和前后臺連接兩

41、個模塊組成。界面顯示模塊(界面文件)提供友好的圖形用戶界面,允許用戶使用鍵盤和鼠標與系統(tǒng)進行交互。本文使用Qt軟件設計,撰寫郵件功能設計為彈出式對話框操作。當用戶發(fā)送成功成功時,會提示發(fā)送郵件成功。而如果無法完成郵件的正常發(fā)送,則提示連接出現錯誤。前后臺連接模塊是前后臺消息通信的接口,主要完成界面顯示數據與后臺郵件操作信息的統(tǒng)一,及時完成對信件的存儲或顯示界面的更新。4 后臺電子郵件傳輸協(xié)議的實現4.1 操作系統(tǒng)的選用Linux是當今發(fā)展最為迅速并引起最多關注的操作系統(tǒng)之一。作為一種自由軟件,任何人都可以從網上取得它的源代碼并按照自己的要求進行修改。Linux支持廣大的硬件平臺,它的裝機量的增

42、長率超過別的操作系統(tǒng),而且許多著名的軟件公司、計算機公司都宣布生產和Linux靠攏的產品。Linux操作系統(tǒng)在短短幾年內得到了迅速的發(fā)展,這與Linux的良好特性是分不開的,Linux包含了Unix的全部功能和特性。具體而言包括如下幾個方面:(1)開放性開放性是指系統(tǒng)遵循開放系統(tǒng)互連(OSI)國際標準。凡遵循該標準所開發(fā)的軟件和硬件,都可以彼此兼容,并方便的實現互聯。(2)多用戶多用戶是指系統(tǒng)資源可以被不同的用戶各自擁有使用,即每個用戶對自己的資源:如文件、設備,有特定的權限,互不影響。(3)多任務多任務是現代計算機的最重要的一個特點。它是指計算機在同一時間內可以執(zhí)行多個程序,并且程序之間不互

43、相妨礙。Linux采用搶占調度多任務的方式,即每個程序都一直運行到操作系統(tǒng)搶占CPU讓其它程序運行為止。這使得用戶可以充分的利用計算機資源。(4)豐富的網絡功能Linux在通信和網絡功能方面優(yōu)于其它的操作系統(tǒng)。因為Linux中包含了緊密的和內核連接在一起的連接網絡的能力。其網絡功能主要包括:大量支持Interact的軟件、已有的簡潔的文件傳輸和遠程訪問功能。(5)可靠的系統(tǒng)安全Linux采取了許多安全技術措旌,包括對讀、寫進行權限控制、帶保護的子系統(tǒng)、審計跟蹤、核心授權等,這為網絡多用戶環(huán)境中的用戶提供了必要的安全保障。(6)良好的可移植性Linux是一種可移植的操作系統(tǒng),能夠從微機到大型計算

44、機的任何環(huán)境和任何平臺上運行,可移植性為運行Linux的不同計算機平臺與其它任何機器進行準確而有效的通信提供了手段?;谝陨咸攸c,簡易郵件客戶端模塊平臺的確定正是利用了Linux系統(tǒng)強大的網絡功能和優(yōu)良的可移植性以及可靠的系統(tǒng)安全性,并為今后將程序向嵌入式等小型化載體進行遷移打下堅實的基礎。Linux不像Windows操作系統(tǒng),它不是一個由一家商業(yè)公司維護的軟件,只有一個包裝。Linux是可以任意包裝自由配置的東西。任何一個人,一家公司都可以按照自己的想法,比如加一點功能,如多種語言支持等,做一個Linux發(fā)布套件出來。這些Linux發(fā)布套件雖然核心部分都一樣,但是他們所帶的各種軟件,缺省的配

45、置都不一樣。區(qū)別比如用一種Linux發(fā)布套件硬件容易配置,各種軟件也好安裝,用另外一種發(fā)布套件也許執(zhí)行速度快,再一種也許支持中文比較好。所以從一開始選擇發(fā)布套件就必須非常小心,否則很容易重新返工。 4.2 Linux套接字(Socket)編程4.2.1 安全套階層協(xié)議簡介電子郵件在傳輸層使用TCP進行傳輸,使用TCP傳輸就是建立一個連接。在TCP的傳輸中一個連接由兩個端點組成,一個連接代表的是發(fā)送和接收兩端應用程序之間的一個通信。通常,一個連接使用公式(host,port)表示,host是主機,port是端口。對于程序員而言所說的TCP端口實際是數據端口的概念,這種端口其實是軟件端口應用程序。

46、TCP端口能被幾個應用程序共享,可以理解為一個應用程序可以為不同的連接提供服務。TCP/IP中將端口分為兩部分:一部分是保留端口即熟知端口,如Telnet使用23號端口。另一部分是自由端口,可以在通信之前進行申請。Linux中小于1024的所有端口是保留給系統(tǒng)使用的,普通的進程應當使用大于1024且小于65535范圍內的端口號。SMTP協(xié)議使用25號端口,POP3協(xié)議使用110號端。電子郵箱默認使用的TCP端口號如下:表4-1 電子郵箱默認端口協(xié)議作用純文本或加密會話單純文本會話單純加密會話POP3收郵件110995IMAP收郵件143993SMTP收郵件25465(非標準)MSA收郵件587

47、套接字(Sockets)最早是作為BSD規(guī)范提出來的,并已成為Linux操作系統(tǒng)下TCP/IP網絡編程標準,是進行程序間通信的一種方法。套接字是網絡通信的基本操作單元,它提供了不同主機間的進程雙向通信的端點,這些進程在通信前各自建立一個Socket,并通過對Socket的讀/寫操作實現網絡通信功能。Linux提供3種類型的套接字:流式套接字、數據報套接字、原始報套接字。電子郵件收發(fā)使用的是客戶端與服務器的通信模型。套接字編程均采用客戶端/服務器的協(xié)作模式,即由客戶進程向服務器進程發(fā)出請求,服務器進程執(zhí)行被請求的任務并將響應結果返回給客戶進程。本程序使用SSL安全套接層協(xié)議。SSL(Secure

48、 Sockets Layer HYPERLINK /view/525499.htm安全套接層),及其繼任者HYPERLINK /view/831898.htm傳輸層安全(Transport Layer Security,TLS)是為HYPERLINK /view/538641.htm網絡通信提供安全及HYPERLINK /view/702953.htm數據完整性的一種安全協(xié)議。TLS與SSL在HYPERLINK /view/239605.htm傳輸層對網絡連接進行加密。SSL協(xié)議位于HYPERLINK /view/7649.htmTCP/IP協(xié)議與各種HYPERLINK /view/23961

49、9.htm應用層協(xié)議之間,為HYPERLINK /view/1474554.htm數據通訊提供安全支持。SSL協(xié)議可分為兩層: SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的HYPERLINK /view/441895.htm傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供HYPERLINK /view/262940.htm數據封裝、壓縮、加密等基本功能的支持。 SSLHYPERLINK /view/1712962.htm握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實際的數據傳輸開始前,通訊雙方進行HYPERLINK /view

50、/1014826.htm身份認證、協(xié)商HYPERLINK /view/155969.htm加密算法、交換加密HYPERLINK /view/934.htm密鑰等。SSL協(xié)議所提供的服務有:1)認證用戶和服務器,確保數據發(fā)送到正確的HYPERLINK /view/285153.htm客戶機和HYPERLINK /view/899.htm服務器;2)加密數據以防止數據中途被竊?。?)維護數據的完整性,確保數據在傳輸過程中不被改變。4.2.2 SSL協(xié)議環(huán)境搭建本程序使用openssl密碼庫。OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的HYPERLINK /view/8790.htm密

51、碼算法、常用的HYPERLINK /view/934.htm密鑰和證書封裝管理功能及HYPERLINK /view/16147.htmSSL協(xié)議,并提供豐富的HYPERLINK /view/330120.htm應用程序供測試或其它目的使用。OpenSSL采用C語言作為開發(fā)語言,這使得OpenSSL具有優(yōu)秀的HYPERLINK /view/469855.htm跨平臺性能,這對于廣大技術人員來說是一件非常美妙的事情,可以在不同的平臺使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺,這使得OpenSSL具有廣泛的適用性。但習慣C語言總比使用C+重新寫一個

52、跟OpenSSL相同功能的HYPERLINK /view/600107.htm軟件包輕松不少?;竟δ躉penSSL整個HYPERLINK /view/37.htm軟件包大概可以分成三個主要的功能部分:SSL協(xié)議庫、HYPERLINK /view/330120.htm應用程序以及HYPERLINK /view/8790.htm密碼算法庫。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規(guī)劃的。作為一個基于密碼學的安全開發(fā)包,OpenSSL提供的功能相當強大和全面,囊括了主要的HYPERLINK /view/8790.htm密碼算法、常用的HYPERLINK /view/934.htm密鑰

53、和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的HYPERLINK /view/330120.htm應用程序供測試或其它目的使用。輔助功能HYPERLINK /view/1160082.htmBIO機制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的HYPERLINK /subview/1142749/5362454.htmIO接口,如內存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復雜性也降低了很多。OpenSSL對于隨機數的生成和管理也提供了一整套的解決方法和支持API函數。隨機數的好壞是決定一個HYPERLINK /view

54、/934.htm密鑰是否安全的重要前提。OpenSSL還提供了其它的一些輔助功能,如從口令生成HYPERLINK /view/934.htm密鑰的API,證書簽發(fā)和管理中的配置文件機制等等。如果你有足夠的耐心,將會在深入使用OpenSSL的過程慢慢發(fā)現很多這樣的小功能,讓你不斷有新的驚喜。功能OpenSSL的HYPERLINK /view/330120.htm應用程序已經成為了OpenSSL重要的一個組成部分,其重要性恐怕是OpenSSL的開發(fā)者開始沒有想到的。如OpenCA,就是完全使用OpenSSL的應用程序實現的。OpenSSL的應用程序是基于OpenSSL的HYPERLINK /vie

55、w/8790.htm密碼算法庫和SSL協(xié)議庫寫成的,所以也是一些非常好的OpenSSL的API使用范例,讀懂所有這些范例,你對OpenSSL的API使用了解就比較全面了,當然,這也是一項鍛煉你的意志力的工作。OpenSSL的應用程序提供了相對全面的功能,在相當多的人看來,OpenSSL已經為自己做好了一切,不需要再做更多的開發(fā)工作了,所以,他們也把這些應用程序成為OpenSSL的指令。OpenSSL的應用程序主要包括HYPERLINK /view/934.htm密鑰生成、證書管理、格式轉換、HYPERLINK /view/696431.htm數據加密和簽名、SSL測試以及其它輔助配置功能。機制

56、HYPERLINK /view/415282.htmEngine機制 Engine機制的出現是在OpenSSL的0.9.6版的事情,開始的時候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機制集成到了OpenSSL的內核中,成為了OpenSSL不可缺少的一部分。 Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的HYPERLINK /view/602315.htm軟件加密庫或者HYPERLINK /view/602316.htm硬件加密設備進行加密。OpenSSL的Engine機制成功地達到了這個目的,這使得OpenSSL已經不僅僅

57、使一個加密庫,而是提供了一個通用地加密接口,能夠與絕大部分加密庫或者加密設備協(xié)調工作。當然,要使特定加密庫或加密設備OpenSSL協(xié)調工作,需要寫少量的接口代碼,但是這樣的工作量并不大,雖然還是需要一點密碼學的知識。Engine機制的功能跟HYPERLINK /view/4821.htmWindows提供的CSP功能目標是基本相同的。包括:CryptoSwift、HYPERLINK /view/4511830.htmnCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的HYPERLINK /view/602316.htm硬件加密設備。當然,

58、所有上述Engine接口支持不一定很全面,比如,可能支持其中一兩種HYPERLINK /view/1145160.htm公開密鑰算法。Win32 OpenSSL安裝項目是致力于提供一個簡單的安裝OpenSSL。很容易通過簡單的設置和使用方便,有效的安裝程序。不需要編譯或跳過任何步驟,只需點擊幾次安裝,讓你做真正的工作。下載完成后無需編譯,直接將bin目錄下的一些.dll文件復制在Qt目錄的bin目錄下即可。圖4- SEQ 圖4- * ARABIC 2 OpenSSL 文件復制4.3 網絡應用層編程為了交付郵件,電子郵件處理系統(tǒng)必須使用唯一的編址系統(tǒng)。因特網的郵件地址包括兩個部分:本地部分和域名

59、,并且用符號分隔開。本地部分定義了一個特殊文件的名字,叫做用戶郵箱。在用戶郵箱中存儲了所有收到的用戶郵件,以便用戶代理進行讀取。地址的第二部分是域名,一個組織通常選擇一個或多個主機來接收和發(fā)送電子郵件,這些主機通常叫做郵件服務器或郵件交換器(Mail Exchanger)。指派給每一個郵件交換器的域名或者來自DNS數據庫,或者是一個邏輯名字(例如:該組織的名字)。4.3.1 郵件的發(fā)送處理(1)簡單郵件傳送協(xié)議(SMTP)SMTP(Simple Mail Transfer Protocol)即HYPERLINK /view/576460.htm簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳

60、送HYPERLINK /view/172138.htm郵件的規(guī)則,由它來控制信件的中轉方式。HYPERLINK /view/21931.htmSMTP協(xié)議屬于HYPERLINK /view/7649.htmTCP/IP協(xié)議族,它幫助每臺HYPERLINK /view/3314.htm計算機在發(fā)送或中轉信件時找到下一個目的地。通過SMTP協(xié)議所指定的HYPERLINK /view/899.htm服務器,就可以把E-mail寄到收信人的服務器上了,整個過程只要幾分鐘。SMTPHYPERLINK /view/899.htm服務器則是遵循SMTP協(xié)議的發(fā)送HYPERLINK /view/54241.h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論