第9章 應用層(6)_SMTP和POP3/IMAP協議
7. 電子郵件
7.1 電子郵件傳送和接收過程
(1)圖解電子郵件的傳送
①一個電子郵件系統應具備三個主要組成構件:A使用者代理(如Outlook)、B郵件伺服器、C郵件傳送和接收協議(分別為SMTP和POP3協議)(POP3是郵局協議,Post Office Protocol)
②郵件伺服器必須能夠同時充當客戶和伺服器。如當郵件伺服器A向另一個郵件伺服器B傳送郵件時,A就作為SMTP客戶,而B是SMTP伺服器;反之,當B向A傳送郵件時,B就是SMTP客戶,A就是SMTP伺服器。
(2)傳送/接收過程
①發件人開啟PC機上的使用者代理軟體(如Outlook),撰寫、編輯郵件,填寫對方郵箱並點選“傳送”
②outlook使用SMTP協議發給傳送方的stmp郵件伺服器。
③SMTP伺服器收到Outlook發過來的郵件,就把郵件臨時存放在郵件快取佇列中,等待發送到接收方的郵件伺服器。
④SMTP客戶通過DNS解析出sohu.com郵件伺服器的地址。
⑤郵件伺服器上的SMTP客戶每隔一定時間對郵件快取掃描一次,如果發現郵件,就使用SMTP的25埠與接收方郵件伺服器的SMTP伺服器建立TCP連線,然後把郵件快取佇列中的郵件依次傳送出去。
⑥執行在接收方郵件伺服器中的SMTP伺服器程序收到郵件後,把郵件放入收件人的使用者郵箱中,等待收件人讀取。
⑦收件人在打算收信時,就執行PC機中的outlook,使用POP3(或IMAP)協議讀取傳送給自己的郵件。(注意,POP3伺服器和POP3客戶之間的箭頭表示的是郵件傳送的方向,但它們之間的通訊是由POP3客戶發起的)
7.2 電子郵件資訊格式
(1)郵件格式:分為信封和內容兩大部分。(郵件內容由首部(header)和主體(body)組成。當用戶寫好首部後,郵件系統自動地將信封所需的資訊提取出來並在信封上)
(2)內容首部各關鍵字
①“From:”:填寫傳送人的電子郵件地址
②“To:”:填入一個或多個收件人的電子郵件地址。多個收件人可以寫成多行(多個地址用<>隔開,如<[email protected]><[email protected]>)
③“Cc:”:抄送一份副本給某人。如給主管領導寫一封郵件,並抄送給財務人員。當主管收到後,答覆時可以選擇“全部答覆”,則傳送人和財務人員均可收到
④“Replay-to:”:對方回信所用的地址。該地址可以與傳送人發信時的地址不同。
⑤“Date:”:發信日期。可以不填,由系統自動填入。
⑥“Subject:”:郵件主題。注意,Subject和Body之間必須有空行(回車),正文結束標記為“.”
7.3 SMTP協議
(1)SMTP常見命令和應答
命令 |
含義 |
|
應答 |
狀態碼的含義 |
HELO |
傳送方問候收件方,後面是發件人伺服器地址或標識。收件方回答OK時標識自己的身份。問候和確認過程表示兩臺機器可以進行通訊,同時狀態引數被複位,緩衝區被清空 |
220 |
服務就緒 |
|
|
開始傳送郵件,後面跟發件方郵件地址。該命令會清空有關緩衝區,為新的郵件做準備 |
250 |
請求郵件動作正常,完成(HELO、MAIL FROM, RCPT TO、QUIT指令執行成功會返回此資訊) |
|
RCPT |
後跟收件人郵箱地址,當有多個收件人時,需要多次使用該命令,每次只能指明一個人。 |
235 |
認證通過 |
|
DATA |
該命令之後的資料作為傳送的資料。最後以單獨的一行“.”來結束整封郵件。 |
221 |
正在處理 |
|
REST |
用來通知收件方復位,所有己存入緩衝存的收件人資料,發件人資料和待傳送資料都必須清除。 |
354 |
開始傳送資料,以.結束(DATA指令執行成功會返回此資訊) |
|
NOOP |
該命令不影響任何引數,只是要求接收方回答OK,不會影響緩衝區的資料。 |
500 |
語法錯誤,命令不能識別 |
|
QUIT |
SMTP要求接收方必須回答OK,然後中斷傳輸 |
550 |
命令不能執行,郵箱無效 |
|
|
|
552 |
中斷處理:使用者超出檔案空間 |
(2)郵件交換記錄(MX記錄)
它指向一個郵件伺服器,用於電子郵件系統傳送郵件時根據收信人的地址字尾,如[email protected]的字尾為sohu.com)來查詢該區域的郵件伺服器。
(3)手工檢視郵件伺服器
(4)利用telnet傳送郵件
①使用telnet給[email protected]傳送郵件,並抄送給[email protected]
②telnet成功後輸入SMTP協議定義的命令和SMTP伺服器互動(注意,輸入過程出現錯誤將不能修改!)
7.4 POP3協議和IMAP協議
(1)POP3協議的特點:只要使用者從POP伺服器讀取了郵件,POP伺服器就把該郵件刪除。
(2)IMAP協議(網際報文存取協議)
①IMAP是一個聯機協議。當用戶PC上的客戶端開啟IMAP伺服器的郵箱時,使用者可以看到郵件的首部。若需要開啟某個郵件,則該郵件才傳到使用者計算機上。
②IMAP最大的好處是使用者可以在不同的地方使用不同的計算機隨時閱讀和處理郵件。
③IMAP還允許收件人只讀取郵件中的某個部分(如先下載正文,附件中的視訊不下載)
7.5 部署企業內部郵件伺服器
(1)安裝郵件伺服器
①“Windows元件”→勾選“電子郵件服務”(即POP3服務)
②“Windows元件”→雙擊“Internet資訊服務(IIS)” →勾選“SMTP service”
③“Windows元件”→雙擊“網路服務”→勾選“域名系統(DNS)”
(2)在DNS伺服器上新增MX記錄
①在DNS伺服器上新建正向查詢區域:5iedu.net,並在該區域下建立主機記錄“mail”,地址指向192.168.80.10,注意記錄型別為主機(A)
②在該區域中增加一條MX記錄:右擊5iedu.net→“新建郵件交換器(MX)”,並在如下對話方塊中輸入郵件伺服器名稱mail.5iedu.net。
③在WinXP上使用nslookup查詢5iedu.net區域的郵件伺服器。(注意XP的DNS要設定成192.168.80.20)
(4)為使用者建立郵箱
①開啟POP3服務管理工具(可管理郵箱和POP3服務),建立“新域”:點選“新域”→“新增域”→輸入5iedu.net,該域名就是使用者郵箱字尾。
②選中剛建立的域→“新增郵箱”→輸入郵箱名“admin”和密碼,同時勾選“為此郵箱建立關聯的使用者”→確定(注意下列的提示很重要!),注意本例使用明文身份驗證!
③按同樣的方法建立其他郵箱(如[email protected])
(5)配置郵件客戶端收/發郵件
①在XP1機用outlook,在選單欄的“工具”→“帳號”→“新增”→“郵件”
②然後在顯示名中輸入admin→在電子郵件地址中輸入“[email protected]”→接收伺服器和傳送郵件器中均填入“mail.5iedu.com”
③接著在Internet mail登入中會要求填入帳號和密碼,這步很關鍵。由於本例採用的是明文驗證,因此帳號名為[email protected](注意,如果是安全密碼驗證身份,則填入admin即可!)。最後按同樣的方法在XP2機上配置郵件[email protected],這時就可以[email protected]互相收發郵件。
7.6 配置內網郵件伺服器與Internet互相收/發郵件
(1)配置SMTP服務允許向Internet傳送電子郵件
①開啟IIS,展開“預設SMTP虛擬伺服器”→“新建”→“域”,選擇“遠端”→在域名中填寫“*.com”(這意味著該SMTP伺服器會將所有com結尾的電子郵件轉發到Internet)。
②右鍵“*.com”域→選中“允許將傳入郵件中斷到此域”和“使用DNS以傳送到此域”。
③測試:在xp2的outlook客戶端寫一封郵件給[email protected]。
(2)從Internet向內網伺服器傳送郵件
①在Internet上註冊一個域名(5iedu.net),新增mail主機(A)記錄,地址指向內網的公網地址。同時新增郵件交換記錄(MX記錄)
②將連線internet網的25號埠(TCP)對映物理主機的25埠上(注意,要關掉物理主機的Windows防火牆)。
③將物理主機的25號埠轉發給內網SMTP伺服器(放在VMnet8網路中的Win2003虛擬機器)。方法是“VMware”→“編輯”選單→“虛擬網路編輯器”→選擇“VMnet8”→“NAT設定”→新增埠轉發)。
④登入sohu郵箱,併發送一封郵件給[email protected],測試是否可以從Internet發郵件到內網的郵件伺服器。(說明:Internet的計算機是通過Internet上的DNS解析和埠對映找到內網的SMTP伺服器。因此可以傳送郵件到內網SMTP伺服器中。同理,內網的計算機使用的是內網的DNS解析,所以可將內網郵件發往Internet。)