用SMTP,POP3访问Exchange邮箱:Exchange2003系列之六
生活随笔
收集整理的這篇文章主要介紹了
用SMTP,POP3访问Exchange邮箱:Exchange2003系列之六
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 版權聲明:原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。[url]http://yuelei.blog.51cto.com/202879/76302[/url] |
| 用SMTP/POP3訪問郵箱暨SMTP/POP3原理<?XML:NAMESPACE PREFIX = O /> ? Exchange早期版本設計時側重于在企業內部提供郵件服務,郵件傳輸以MAPI為主;Exchange的后續版本增強了對Internet郵局的支持,現在Exchange2003可以作為一個標準的Internet郵局為用戶提供服務,也可以和互聯網上的其他Internet郵局進行交互。本文我們將介紹以下內容: 一? 如何用Outlook Express作客戶端軟件,通過SMTP,POP3協議訪問郵箱 二? Exchange和其他互聯網郵局通信時注意事項 三 ?SMTP,POP3原理分析 四? ESMTP 五? BASE64編碼? 實驗拓撲如下圖,Florence是域控制器和CA服務器,Berlin是Exchange服務器,Istanbul是客戶機 <?XML:NAMESPACE PREFIX = V />? 一? 如何用Outlook Express作客戶端軟件,通過SMTP,POP3協議訪問郵箱? 標準的互聯網郵局包括SMTP和POP3兩個組件,SMTP負責郵件的出站/入站,POP3負責郵件存儲。我們可以利用SMTP把郵件發送出去,也可以利用POP3從自己的郵箱中下載郵件。Exchange2003的SMTP來源于Win2003中的IIS,POP3倒是和Win2003的POP3服務沒有任何關系。Exchange2003的POP3服務默認是禁用狀態,所以首先要啟動POP3服務。在Exchange服務器上,開始-管理工具-服務,找到“Microsoft Exchange POP<?XML:NAMESPACE PREFIX = ST1 />3”服務,將POP3服務的啟動類型改為自動,然后啟動POP3服務。? 這時Exchange服務器已經可以提供SMTP和POP3服務了,我們在客戶機Istanbul上,以Outlook Express(以后簡稱OE)作為客戶端軟件,測試一下SMTP和POP3的訪問狀況。啟動OE后,在工具菜單中選擇賬戶,在“郵件”標簽下,選擇 添加“郵件”? 填寫郵件發送者的名稱,在此我們填寫一個用戶名,如下圖所示接下來要寫用戶的郵件地址 最重要的參數,分別對SMTP和POP3服務器進行描述,可以用NETBIOS名稱,域名或是IP地址 ? 輸入用戶名和口令就可以完成郵件賬號的設置了配置完郵件賬戶后,啟動OE,點擊“創建郵件”,給administrator發一封測試信看看 ,如下圖所示 看看管理員的郵箱,是不是已經收到信了,這證明SMTP工作正常。 ? 管理員回封信,看看dufei能否收到,在 OE的“發送/接收”下拉菜單中選擇“接收全部郵件”,看看收件箱里有沒有回信,如下圖所示,已收到回信,POP3工作正常。? 二? Exchange和其他互聯網郵局通信時注意事項 做完上述操作后,我們在Exchange郵局內部已經可以正常使用SMTP,POP3了,但要和其他的互聯網郵局通信還需要注意以下兩點: 1? 設置DNS中的MX記錄 2? 設置SMTP服務器的中繼? 如果DNS服務器中沒有正確設置MX記錄,那么我們的郵局將無法收到其他郵局發來的郵件。SMTP服務器向其他郵局發送郵件時,要通過查詢DNS的MX記錄來定位接收郵局的郵件服務器,否則互聯網上這么多主機,SMTP服務器怎么知道哪臺可以接收郵件?早期的電子郵件地址格式是郵箱名@郵件服務器名,這種郵件地址中已經包含了郵件服務器的完全合格域名,因此SMTP服務器直接將郵件發送給郵件服務器就可以了。現在的電子郵件地址格式改成了郵箱名@域名,不再直接指明接收郵件的服務器,因此SMTP服務器就只能依靠MX記錄來定位接收郵件服務器了。? Exchange服務器中的SMTP中繼默認對所有未通過身份驗證的用戶都是禁用的,所以如果我們向向外網發一封郵件,例如發到[email]yuelei1976@yahoo.com.cn[/email],我們會看到如下圖錯誤提示,提示中明確指出 “Unable to relay”,不能中繼。那如何修改設置呢?? 在Exchange服務器上,開始-程序-Microsoft Exchange-系統管理器-服務器-協議-SMTP-默認SMTP虛擬服務器-屬性-訪問-中繼,如下圖? 當前的中繼設置如下圖所示,只有通過身份驗證的郵件發送者才可以將郵件中繼到其他郵局? ? 修改中繼設置,允許192.168.2.0子網內的計算機進行郵件中繼,不要設置成允許任何人進行郵件中繼,那會招致大量的垃圾郵件發送? 改完中繼設置后,重啟SMTP服務,可以把信發往其他的互聯網郵局了。? 三? SMTP,POP3原理分析? 我們用SMTP,POP3在互聯網上進行郵件收發,郵件傳遞的過程是什么樣的?我們假設163郵局的User1準備給263郵局的User2發信,大致過程如下 1???????? User1通過郵件客戶端軟件用SMTP協議把待發郵件提交到163郵局的SMTP服務器 2???????? 163郵局的SMTP服務器通過查詢DNS的MX記錄,定位263郵局的郵件服務器,然后通過SMTP協議把郵件中繼到263郵局的SMTP服務器 3???????? 263郵局的SMTP服務器將郵件入站后,把郵件轉給POP3服務器 4???????POP3服務器把郵件存儲在User2的郵箱中 5???????User2利用郵件客戶端軟件通過POP3協議訪問263郵局的POP3服務器,并從自己的郵箱中把郵件下載到本機計算機? 接下來我們具體分析一下第一步和第五步,看看OE如何利用SMTP協議提交郵件,以及如何利用POP3協議訪問郵箱。? 先分析SMTP,根據RPC821,SMTP協議提供了一些簡單的四個字符原語操作指令,OE就利用了這些指令發送郵件。常用的SMTP命令有 HELO :發件方問候收件方,后面是發件人的IP地址或計算機名。收件方回答OK時標識自 己的身份。問候和確認過程表明兩臺機器可以進行通信。 MAIL FROM: 這個命令用來開始傳送郵件,命令后面的參數是發件人郵件地址。????????? RCPT TO: 這個命令告訴收件方收件人的郵箱。當有多個收件人時,需要多次使用該命令, 每次只能指明一個人。 DATA :收件方把該命令之后的數據作為發送的數據,數據被加入數據緩沖區中。???????? RSET :這個命令用來通知收件方復位,所有已存入緩沖區的收件人數據,發件人數據和待 傳送的數據都必須清除,接收放必須回答OK。 NOOP :空操作,不影響任何參數,只是要求接收方回答OK QUIT :SMTP要求接收放必須回答OK,然后中斷傳輸? OE發送郵件時,首先連接郵件服務器的25端口,我們在命令行下模擬這個過程 telnet berlin 25 Helo Istanbul (客戶端進行自我介紹,我的名字是Istanbul) mail from:admin@sina.com (客戶機請求服務器替自己發一封信,信的發件人是新浪的管理員,這當然是胡說,沒關系的,SMTP服務器并不校驗) rcpt to:administrator@exchtest.com (客戶機描述這封信的收件地址) data (客戶機表示要開始輸入信件內容) subject:mail test!? (客戶機輸入郵件主題 mail test!) Just testting!????? (客戶機輸入郵件內容 Just testting!) 敲一下回車 敲一下.(點) 再敲一下回車 郵件內容結束,郵件開始進入發送隊列 上述過程如下圖所示:? ? 檢查一下管理員的郵箱,有沒有收到這樣一封信,如下圖所示,真的收到了,而且以為是sina的管理員發來的,要記住,郵件是很容易欺騙的。 這樣我們就用SMTP命令發了一封電子郵件,是不是很簡單呢?其實我們可以來看一下OE發信的過程,打開OE,在 “工具”菜單中選擇“選項”,點擊“維護”標簽,在疑難解答下選擇“郵件”,這樣OE發送郵件時的過程會記錄在日志文件中供我們分析使用。? 在OE中發送一封郵件,測試一下。郵件發出去了,檢查下圖路徑中的smtp.log,這就是發送郵件時的日志文件 ? ? 打開日志文件,里面記錄了OE與SMTP服務器交互的全過程,[rx]代表OE收到的數據,[tx]代表OE發出的數據,仔細看看,OE作的操作和我們剛剛在命令行中作的完全一樣。? ? 我們再來分析一下OE利用POP3協議從Exchange郵件服務器收信的過程,POP3和SMTP類似,根據RFC1939也定義了一些四字符的原語命令,常用的POP3命令有 USER?: 輸入郵箱名 PASS?: 輸入郵箱密碼STAT?:??顯示郵箱狀態 LIST??:??列出郵箱中的郵件 RETR?:??讀取郵件內容 DELE:???將郵件標記為刪除 NOOP?: 空操作,僅返回一個回應 RSET:???中斷當前操作,將標記為刪除的郵件恢復 QUIT????????退出POP3會話 ? 我們舉例從dufei郵箱收信,我們使用下列指令 telnet? berlin? 110 user dufei (準備訪問dufei的郵箱) pass? passW0rd (輸入dufei的郵箱口令) list (列出郵箱中的郵件) Retr? 1 (顯示第一封郵件的內容) dele? 1? (刪除第一封郵件) quit? (退出)? 過程如下圖所示,有興趣的話大家可以結合OE中的POP3日志進行分析。? 四? ESMTP 從前面的SMTP原理分析中我們可以看出,SMTP在設計時完全沒有考慮安全問題,任何人都可以很方便地利用SMTP服務器發送郵件,這種處于安全真空的設計在互聯網的初期是成立的,畢竟那時無孔不入的商業還不曾***進這片專屬于科研人員的凈土。但現在如果在公網上放置這么一個服務器,那肯定會后果很嚴重,垃圾郵件立刻就會把你淹沒。因此,ESMTP對SMTP進行了升級,主要是在郵件的發送過程中支持身份驗證,而且在傳輸郵件內容時也支持用SSL進行加密,大大提高了安全性。 在Exchange中把SMTP升級到ESMTP很容易,只要在SMTP服務器上禁止匿名訪問,再選擇一種身份驗證方式就可以了。在Exchange服務器上,開始-程序-Microsoft Exchange-系統管理器-服務器-協議-SMTP-默認SMTP虛擬服務器-屬性-訪問-身份驗證,如下圖所示? 我們取消“匿名訪問”和“集成Windows身份驗證”,只保留“基本身份驗證“,現在這就是一臺ESMTP服務器了,重新啟動SMTP服務,然后在Istanbul上我們發送一封郵件測試一下,如下圖所示,發信出問題了,錯誤提示告訴我們由于沒有進行身份驗證,我們沒有權限進行郵件發送? 既然要求身份驗證,那我們就滿足這個條件,在OE的工具菜單中選擇賬戶,點擊郵件標簽,查看郵件賬戶的屬性,如下圖所示,勾選“我的服務器要求身份驗證”,點擊“設置”? ? 在設置中,我們填寫了用戶名和口令,再來試試,發出去了!調出日志smtp.log查看一下發送細節,看到了一個奇怪的現象,如下圖紅框標示處顯示的是用戶名,但我們填寫的用戶名是dufei,怎么在這里成了ZHVmZWk=?不要著急,這就是我們下面要講到的BASE64編碼 ? 五 BASE64編碼 BASE64編碼其實很簡單,它把常用的64個字符重新做了個編碼表。每個BASE64編碼用6個2進制數表示,BASE64的編碼表如下? ? ? 0 A 17 R 34 i 51 z1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y ? 從ASCII碼向BASE64的轉換過程中,ASCII碼會每3個為一組轉換為4個BASE64編碼,因為每個ASICC碼為8位二進制數,3×8=24,每個BASE64編碼是6位二進制數,24÷6=4。 如果ASCII碼字符不正好是3的倍數,例如dufei是5個ASCII碼,這該怎么辦呢?系統會自動用0進行填充,將ASCII碼湊成3的倍數。如果有1個ASCII碼是被填充的,BASE64編碼中會出現一個=符號,如果有2個ASCII嗎是被填充的,BASE64編碼中會出現兩個=號,不可能有三個=出現的,大家仔細想想為什么? 以dufei為例,dufei的ASCII碼為 100 117 102 101 105, ASCII碼為100 117 102 101 105 。展開成二進制是 01100100? 01110101? 01100110? 01100101? 01101001,每6個一組形成BASE64編碼是 011001 000111 010101 100110? 011001 010110 1001,由于dufei只有5個ASCII碼,系統會用0填充為6個ASICC碼,填充的結果是011001 000111 010101 100110? 011001 010110 100100 000000,藍色部分為系統填充內容。用10進制表示就是 25? 7? 21? 38? 25? 22? 36? ,查詢BASE64編碼表 可知分別對應? ZHVmZWK,最后那個由填充產生的000000用一個=表示。所以最后我們看到的BASE64編碼是ZHVmZWk= 。? 本文出自 “岳雷的微軟網絡課堂” 博客,請務必保留此出處[url]http://yuelei.blog.51cto.com/202879/76302[/url]本文出自 51CTO.COM技術博客 |
轉載于:https://blog.51cto.com/dragon82cn/130150
總結
以上是生活随笔為你收集整理的用SMTP,POP3访问Exchange邮箱:Exchange2003系列之六的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: blog被封了文章全被删除了,郁闷
- 下一篇: 三杯茶(一本令全世界为之动容的书)(Th