邮件收发流程解析
郵件收發(fā)流程解析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ??? 本文打算詳細(xì)分析一封郵件從發(fā)件人發(fā)出郵件到收件人收到郵件的過(guò)程,講述該過(guò)程涉及到的各種知識(shí),為初步接觸郵件系統(tǒng)的系統(tǒng)管理員深入學(xué)習(xí)郵件服務(wù)器配置和反垃圾郵件軟件或者硬件的配置打下扎實(shí)的基礎(chǔ)。 1) SMTP 會(huì)話
a. 發(fā)件人在自己的郵件客戶端(比如outlook,foxmail等等,稱之為MUA【郵件用戶? 代理】)寫(xiě)郵件,完成后,按“發(fā)送”按鈕;
b. 發(fā)件人郵件客戶端根據(jù)發(fā)件人先前的配置(SMTP 服務(wù)器【發(fā)件人公司郵局服務(wù)器】 域名或者IP地址,如果發(fā)送郵件需要身份驗(yàn)證的話,還有發(fā)件人用來(lái)向SMTP服務(wù)器? 表明身份的用戶名和密碼),建立到發(fā)件人公司郵局服務(wù)器25號(hào)端口的TCP連接;
c. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 HELO <發(fā)件人主機(jī)名> 或者???EHLO <發(fā)件人主機(jī)名>,向發(fā)件人公司郵局服務(wù)器表明自己的身份;
d. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,如果該郵件服務(wù)器配置了SMTP身份 驗(yàn)證的話,還會(huì)把自己支持的身份驗(yàn)證加密算法返回給發(fā)件人郵件客戶端;
? ???注意:郵件服務(wù)器可以通過(guò)兩種方式來(lái)限定能夠通過(guò)它發(fā)送郵件的郵件客戶端, 防止自己被當(dāng)成開(kāi)放中轉(zhuǎn)(open relay),被用來(lái)發(fā)送垃圾郵件:
??????? 一種是通過(guò) IP 地址來(lái)限定,比如把該郵件服務(wù)器負(fù)責(zé)發(fā)送郵件的客戶端電腦的IP地址段寫(xiě)到郵件服務(wù)器的相應(yīng)配置文件里;
??? 另外一種就是通過(guò)配置SMTP身份驗(yàn)證來(lái)限制,只有通過(guò)身份驗(yàn)證的客戶端才能通過(guò)它來(lái)發(fā)送郵件; e. 如果郵件服務(wù)器使用SMTP身份驗(yàn)證來(lái)限制郵件客戶端,那么發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 AUTH <發(fā)件人郵件客戶端選擇的加密算法>,把自己選擇的算法發(fā)送給發(fā)件人公司郵局服務(wù)器,否則,轉(zhuǎn)到步驟k; f. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,并用雙方協(xié)商的加密算法加密響應(yīng)數(shù)據(jù); g. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 USER <發(fā)件人用戶名>,并用雙方協(xié)商的加密算法加密命令; h. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,并用雙方協(xié)商的加密算法加密響應(yīng)數(shù)據(jù); i. <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 PASS <發(fā)件人密碼>,并用雙方協(xié)商的加密算法加密命令; j. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,告訴發(fā)件人郵件客戶端身份驗(yàn)證的結(jié)果; k. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 MAIL FROM: <發(fā)件人郵箱>,告訴郵局服務(wù)器發(fā)件人的郵箱地址; l. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端; m. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 RCPT TO: <收件人郵箱>,告訴郵局服務(wù)器收件人的郵箱地址; n. 發(fā)件人公司郵局服務(wù)器判斷郵件客戶端是否位于自己負(fù)責(zé)為其轉(zhuǎn)發(fā)郵件的IP地址段內(nèi),或者客戶端是否通過(guò)了SMTP身份驗(yàn)證,如果該客戶端在自己負(fù)責(zé)的IP地址段內(nèi),或者通過(guò)SMTP身份驗(yàn)證,那么允許該客戶端發(fā)送外部郵件,反之如果該客戶端既不在自己負(fù)責(zé)的IP地址段內(nèi),又沒(méi)有通過(guò)SMTP身份驗(yàn)證,那么發(fā)件人公司郵局服務(wù)器會(huì)認(rèn)為該發(fā)件人郵件客戶端是一臺(tái)外部郵件服務(wù)器,試圖通過(guò)它發(fā)送郵件,那么它會(huì)判斷RCPT TO 命令的參數(shù)收件人郵箱是否是本地郵箱,如果是,則允許發(fā)送,如果是外部郵箱,則拒絕發(fā)送,并用判斷的結(jié)果響應(yīng)發(fā)件人郵件客戶端; o. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 DATA,要求發(fā)送郵件; p. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端; q. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送郵件; ????? r. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,告訴其郵件已經(jīng)接收了,然后關(guān)閉連接。 ????? ? 2) SMTP 會(huì)話
a. 發(fā)件人公司郵件服務(wù)器分析剛收到的郵件,取出其“收件人郵箱”部分(比如, [email]zoukj@sinogrid.com[/email]),并分離出收件人郵箱的域名sinogrid.com);
b. 發(fā)件人公司郵件服務(wù)器執(zhí)行DNS查詢,查詢類別為MX,查找sinogrid.com 這個(gè)域的 郵件服務(wù)器的IP地址(可以用nslookup命令模擬:nslookup –type=mx sinogrid.com);
c. 收件人公司的DNS服務(wù)器將本公司的郵件服務(wù)器列表都返回給發(fā)件人公司郵件服務(wù)器;
d. 發(fā)件人公司郵件服務(wù)器分析獲得的收件人公司郵件服務(wù)器列表,找出優(yōu)先級(jí)最高的 郵件服務(wù)器,試圖與其建立TCP連接,如果優(yōu)先級(jí)最高的郵件服務(wù)器有多個(gè),那么就輪流使用,如果不能與優(yōu)先級(jí)高的郵件服務(wù)器建立連接,則跟優(yōu)先級(jí)次高的服務(wù)器 建立連接,以此類推。
?? 注意:MX 查詢的返回值,形如 sinogrid.com?? MX preference = 20,mail exchanger??= mail.sinogrid.com ?其中的那個(gè)數(shù)值越低,則該記錄對(duì)應(yīng)的郵件服務(wù)器的優(yōu)先級(jí)就越高。
e. 如果收件人公司郵件服務(wù)器配置了根據(jù)發(fā)件郵件服務(wù)器的IP地址來(lái)過(guò)濾垃圾郵件,那么它會(huì)將發(fā)件人公司郵件服務(wù)器的IP地址跟自己的黑白名單進(jìn)行匹配,如果發(fā)件人公司郵件服務(wù)器的IP在黑名單里面,那么它可能會(huì)拒絕發(fā)件人公司郵件服務(wù)器的連接;
f. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送命令 HELO <發(fā)件人公司郵件服務(wù)器域名> 或者EHLO <發(fā)件人公司郵件服務(wù)器域名>,表明自己的身份;
g. 收件人公司郵件服務(wù)器響應(yīng);
h. 發(fā)件人公司郵件服務(wù)器取出試圖發(fā)送的郵件的“發(fā)件人郵箱”,向收件人公司郵件服務(wù)器發(fā)送命令 MAIL FROM: <發(fā)件人郵箱>;
i. 收件人公司郵件服務(wù)器如果配置了DNS反向查詢驗(yàn)證,那么它會(huì)這樣做:
? 首先他執(zhí)行一個(gè) PTR 類型的DNS查詢(根據(jù)IP查找域名),查找出發(fā)件人公司郵件服務(wù)器的域名,然后執(zhí)行一個(gè) MX 類型的DNS查詢(根據(jù)域名查找負(fù)責(zé)該域的郵件服務(wù)器列表),查找出負(fù)責(zé)“發(fā)件人郵箱”所在域的郵件的郵件服務(wù)器列表,判斷發(fā)件人公司郵件服務(wù)器的域名是否在這個(gè)列表里面。如果PTR 類型的DNS查詢失敗了(例如我們沒(méi)有配置DNS反向查詢,這個(gè)需要向ISP申請(qǐng),由他們來(lái)做),或者域名不在列表里面,那么收件人公司郵件服務(wù)器會(huì)拒絕接收郵件,終止會(huì)話。反之,如果兩個(gè)條件都滿足了,那么以“OK”響應(yīng)發(fā)件人公司郵件服務(wù)器。
j. 發(fā)件人郵件服務(wù)器向收件人公司郵局服務(wù)器發(fā)送命令 RCPT TO: <收件人郵箱>,告訴收件人郵件服務(wù)器收件人的郵箱地址;
k. 收件人公司郵局服務(wù)器判斷該“收件人郵箱”地址(比如[email]zoukj@sinogrid.com[/email])是否屬于自己負(fù)責(zé)投遞的域的郵箱地址(這些域在配置郵件服務(wù)器的時(shí)候?qū)懙较鄳?yīng)配置文件里面),如果收件人公司郵件服務(wù)器配置了收件人地址驗(yàn)證的話,它還會(huì)去驗(yàn)證該地址是否存在,如果不是自己負(fù)責(zé)的域或者地址不存在,那么它會(huì)提示發(fā)件人公司郵件服務(wù)器。反之,以“OK”響應(yīng)發(fā)件人公司郵件服務(wù)器。
l. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送命令 DATA 命令,請(qǐng)求發(fā)送郵件;
m. 收件人公司郵局服務(wù)器響應(yīng)發(fā)件人公司郵件服務(wù)器;
n. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送郵件;
o. 收件人公司郵局服務(wù)器響應(yīng)發(fā)件人公司郵件服務(wù)器發(fā)送命令 QUIT,終止會(huì)話。 ? ? 3) POP3/IMAP 會(huì)話
通常情況下,郵件服務(wù)器軟件,比如sendmail,qmail,postfix,稱之為MTA(郵件發(fā)送代理),只負(fù)責(zé)為本地郵件用戶向外發(fā)送郵件和接收外部發(fā)給本地郵件用戶的郵件并將外來(lái)郵件投遞到本地郵件用戶的郵箱里面,并不包含讓用戶通過(guò)郵件客戶端軟件讀取自己在郵件服務(wù)器上的郵箱里面的郵件的功能,即POP3或者IMAP服務(wù)。用戶只能通過(guò)命令行,在郵件服務(wù)器上查看自己郵箱里面的郵件,很不方便。所以,在搭建郵件服務(wù)器的時(shí)候,我們需要另外安裝POP3或者IMAP服務(wù)器,以方便用戶通過(guò)郵件客戶端方便地收發(fā)郵件;
郵件接收流程如下:
a. 收件人點(diǎn)擊郵件客戶端的“接收”按鈕;
b. 郵件客戶端根據(jù)發(fā)件人先前的配置(POP3/IMAP 服務(wù)器【收件人公司郵局服務(wù)器】 域名或者IP地址,和收件人用來(lái)向POP3/IMAP服務(wù)器表明身份的用戶名和密碼),建立到收件人公司郵局服務(wù)器110號(hào)端口(POP3)或者445端口(IMAP)的TCP連接; c. 收件人公司郵局服務(wù)器響應(yīng)收件人郵件客戶端,表明自己已經(jīng)準(zhǔn)備就緒,可以接收命令。 d. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 USER <用戶名>; e. 收件人公司郵局服務(wù)器響應(yīng)收件人郵件客戶端,請(qǐng)求發(fā)送密碼; f. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 PASS <密碼>; g. 收件人公司郵局服務(wù)器驗(yàn)證收件人郵件客戶端發(fā)送的用戶名和密碼,并把驗(yàn)證結(jié)果通知收件人郵件客戶端,如果驗(yàn)證失敗,則斷開(kāi)連接; ?????? ?? 通常情況下,我們可以將郵件服務(wù)器配置為根據(jù)郵件服務(wù)器本機(jī)上的帳戶來(lái)驗(yàn)證用戶身份,或者根據(jù)外部用戶數(shù)據(jù)庫(kù)來(lái)驗(yàn)證,比如LDAP等等。 h. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送郵件操作命令,比如STAT,UIDL,LIST; i. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 QUIT,中止會(huì)話;
a. 發(fā)件人在自己的郵件客戶端(比如outlook,foxmail等等,稱之為MUA【郵件用戶? 代理】)寫(xiě)郵件,完成后,按“發(fā)送”按鈕;
b. 發(fā)件人郵件客戶端根據(jù)發(fā)件人先前的配置(SMTP 服務(wù)器【發(fā)件人公司郵局服務(wù)器】 域名或者IP地址,如果發(fā)送郵件需要身份驗(yàn)證的話,還有發(fā)件人用來(lái)向SMTP服務(wù)器? 表明身份的用戶名和密碼),建立到發(fā)件人公司郵局服務(wù)器25號(hào)端口的TCP連接;
c. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 HELO <發(fā)件人主機(jī)名> 或者???EHLO <發(fā)件人主機(jī)名>,向發(fā)件人公司郵局服務(wù)器表明自己的身份;
d. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,如果該郵件服務(wù)器配置了SMTP身份 驗(yàn)證的話,還會(huì)把自己支持的身份驗(yàn)證加密算法返回給發(fā)件人郵件客戶端;
? ???注意:郵件服務(wù)器可以通過(guò)兩種方式來(lái)限定能夠通過(guò)它發(fā)送郵件的郵件客戶端, 防止自己被當(dāng)成開(kāi)放中轉(zhuǎn)(open relay),被用來(lái)發(fā)送垃圾郵件:
??????? 一種是通過(guò) IP 地址來(lái)限定,比如把該郵件服務(wù)器負(fù)責(zé)發(fā)送郵件的客戶端電腦的IP地址段寫(xiě)到郵件服務(wù)器的相應(yīng)配置文件里;
??? 另外一種就是通過(guò)配置SMTP身份驗(yàn)證來(lái)限制,只有通過(guò)身份驗(yàn)證的客戶端才能通過(guò)它來(lái)發(fā)送郵件; e. 如果郵件服務(wù)器使用SMTP身份驗(yàn)證來(lái)限制郵件客戶端,那么發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 AUTH <發(fā)件人郵件客戶端選擇的加密算法>,把自己選擇的算法發(fā)送給發(fā)件人公司郵局服務(wù)器,否則,轉(zhuǎn)到步驟k; f. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,并用雙方協(xié)商的加密算法加密響應(yīng)數(shù)據(jù); g. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 USER <發(fā)件人用戶名>,并用雙方協(xié)商的加密算法加密命令; h. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,并用雙方協(xié)商的加密算法加密響應(yīng)數(shù)據(jù); i. <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 PASS <發(fā)件人密碼>,并用雙方協(xié)商的加密算法加密命令; j. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,告訴發(fā)件人郵件客戶端身份驗(yàn)證的結(jié)果; k. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 MAIL FROM: <發(fā)件人郵箱>,告訴郵局服務(wù)器發(fā)件人的郵箱地址; l. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端; m. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 RCPT TO: <收件人郵箱>,告訴郵局服務(wù)器收件人的郵箱地址; n. 發(fā)件人公司郵局服務(wù)器判斷郵件客戶端是否位于自己負(fù)責(zé)為其轉(zhuǎn)發(fā)郵件的IP地址段內(nèi),或者客戶端是否通過(guò)了SMTP身份驗(yàn)證,如果該客戶端在自己負(fù)責(zé)的IP地址段內(nèi),或者通過(guò)SMTP身份驗(yàn)證,那么允許該客戶端發(fā)送外部郵件,反之如果該客戶端既不在自己負(fù)責(zé)的IP地址段內(nèi),又沒(méi)有通過(guò)SMTP身份驗(yàn)證,那么發(fā)件人公司郵局服務(wù)器會(huì)認(rèn)為該發(fā)件人郵件客戶端是一臺(tái)外部郵件服務(wù)器,試圖通過(guò)它發(fā)送郵件,那么它會(huì)判斷RCPT TO 命令的參數(shù)收件人郵箱是否是本地郵箱,如果是,則允許發(fā)送,如果是外部郵箱,則拒絕發(fā)送,并用判斷的結(jié)果響應(yīng)發(fā)件人郵件客戶端; o. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送命令 DATA,要求發(fā)送郵件; p. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端; q. 發(fā)件人郵件客戶端向發(fā)件人公司郵局服務(wù)器發(fā)送郵件; ????? r. 發(fā)件人公司郵局服務(wù)器響應(yīng)發(fā)件人郵件客戶端,告訴其郵件已經(jīng)接收了,然后關(guān)閉連接。 ????? ? 2) SMTP 會(huì)話
a. 發(fā)件人公司郵件服務(wù)器分析剛收到的郵件,取出其“收件人郵箱”部分(比如, [email]zoukj@sinogrid.com[/email]),并分離出收件人郵箱的域名sinogrid.com);
b. 發(fā)件人公司郵件服務(wù)器執(zhí)行DNS查詢,查詢類別為MX,查找sinogrid.com 這個(gè)域的 郵件服務(wù)器的IP地址(可以用nslookup命令模擬:nslookup –type=mx sinogrid.com);
c. 收件人公司的DNS服務(wù)器將本公司的郵件服務(wù)器列表都返回給發(fā)件人公司郵件服務(wù)器;
d. 發(fā)件人公司郵件服務(wù)器分析獲得的收件人公司郵件服務(wù)器列表,找出優(yōu)先級(jí)最高的 郵件服務(wù)器,試圖與其建立TCP連接,如果優(yōu)先級(jí)最高的郵件服務(wù)器有多個(gè),那么就輪流使用,如果不能與優(yōu)先級(jí)高的郵件服務(wù)器建立連接,則跟優(yōu)先級(jí)次高的服務(wù)器 建立連接,以此類推。
?? 注意:MX 查詢的返回值,形如 sinogrid.com?? MX preference = 20,mail exchanger??= mail.sinogrid.com ?其中的那個(gè)數(shù)值越低,則該記錄對(duì)應(yīng)的郵件服務(wù)器的優(yōu)先級(jí)就越高。
e. 如果收件人公司郵件服務(wù)器配置了根據(jù)發(fā)件郵件服務(wù)器的IP地址來(lái)過(guò)濾垃圾郵件,那么它會(huì)將發(fā)件人公司郵件服務(wù)器的IP地址跟自己的黑白名單進(jìn)行匹配,如果發(fā)件人公司郵件服務(wù)器的IP在黑名單里面,那么它可能會(huì)拒絕發(fā)件人公司郵件服務(wù)器的連接;
f. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送命令 HELO <發(fā)件人公司郵件服務(wù)器域名> 或者EHLO <發(fā)件人公司郵件服務(wù)器域名>,表明自己的身份;
g. 收件人公司郵件服務(wù)器響應(yīng);
h. 發(fā)件人公司郵件服務(wù)器取出試圖發(fā)送的郵件的“發(fā)件人郵箱”,向收件人公司郵件服務(wù)器發(fā)送命令 MAIL FROM: <發(fā)件人郵箱>;
i. 收件人公司郵件服務(wù)器如果配置了DNS反向查詢驗(yàn)證,那么它會(huì)這樣做:
? 首先他執(zhí)行一個(gè) PTR 類型的DNS查詢(根據(jù)IP查找域名),查找出發(fā)件人公司郵件服務(wù)器的域名,然后執(zhí)行一個(gè) MX 類型的DNS查詢(根據(jù)域名查找負(fù)責(zé)該域的郵件服務(wù)器列表),查找出負(fù)責(zé)“發(fā)件人郵箱”所在域的郵件的郵件服務(wù)器列表,判斷發(fā)件人公司郵件服務(wù)器的域名是否在這個(gè)列表里面。如果PTR 類型的DNS查詢失敗了(例如我們沒(méi)有配置DNS反向查詢,這個(gè)需要向ISP申請(qǐng),由他們來(lái)做),或者域名不在列表里面,那么收件人公司郵件服務(wù)器會(huì)拒絕接收郵件,終止會(huì)話。反之,如果兩個(gè)條件都滿足了,那么以“OK”響應(yīng)發(fā)件人公司郵件服務(wù)器。
j. 發(fā)件人郵件服務(wù)器向收件人公司郵局服務(wù)器發(fā)送命令 RCPT TO: <收件人郵箱>,告訴收件人郵件服務(wù)器收件人的郵箱地址;
k. 收件人公司郵局服務(wù)器判斷該“收件人郵箱”地址(比如[email]zoukj@sinogrid.com[/email])是否屬于自己負(fù)責(zé)投遞的域的郵箱地址(這些域在配置郵件服務(wù)器的時(shí)候?qū)懙较鄳?yīng)配置文件里面),如果收件人公司郵件服務(wù)器配置了收件人地址驗(yàn)證的話,它還會(huì)去驗(yàn)證該地址是否存在,如果不是自己負(fù)責(zé)的域或者地址不存在,那么它會(huì)提示發(fā)件人公司郵件服務(wù)器。反之,以“OK”響應(yīng)發(fā)件人公司郵件服務(wù)器。
l. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送命令 DATA 命令,請(qǐng)求發(fā)送郵件;
m. 收件人公司郵局服務(wù)器響應(yīng)發(fā)件人公司郵件服務(wù)器;
n. 發(fā)件人公司郵件服務(wù)器向收件人公司郵件服務(wù)器發(fā)送郵件;
o. 收件人公司郵局服務(wù)器響應(yīng)發(fā)件人公司郵件服務(wù)器發(fā)送命令 QUIT,終止會(huì)話。 ? ? 3) POP3/IMAP 會(huì)話
通常情況下,郵件服務(wù)器軟件,比如sendmail,qmail,postfix,稱之為MTA(郵件發(fā)送代理),只負(fù)責(zé)為本地郵件用戶向外發(fā)送郵件和接收外部發(fā)給本地郵件用戶的郵件并將外來(lái)郵件投遞到本地郵件用戶的郵箱里面,并不包含讓用戶通過(guò)郵件客戶端軟件讀取自己在郵件服務(wù)器上的郵箱里面的郵件的功能,即POP3或者IMAP服務(wù)。用戶只能通過(guò)命令行,在郵件服務(wù)器上查看自己郵箱里面的郵件,很不方便。所以,在搭建郵件服務(wù)器的時(shí)候,我們需要另外安裝POP3或者IMAP服務(wù)器,以方便用戶通過(guò)郵件客戶端方便地收發(fā)郵件;
郵件接收流程如下:
a. 收件人點(diǎn)擊郵件客戶端的“接收”按鈕;
b. 郵件客戶端根據(jù)發(fā)件人先前的配置(POP3/IMAP 服務(wù)器【收件人公司郵局服務(wù)器】 域名或者IP地址,和收件人用來(lái)向POP3/IMAP服務(wù)器表明身份的用戶名和密碼),建立到收件人公司郵局服務(wù)器110號(hào)端口(POP3)或者445端口(IMAP)的TCP連接; c. 收件人公司郵局服務(wù)器響應(yīng)收件人郵件客戶端,表明自己已經(jīng)準(zhǔn)備就緒,可以接收命令。 d. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 USER <用戶名>; e. 收件人公司郵局服務(wù)器響應(yīng)收件人郵件客戶端,請(qǐng)求發(fā)送密碼; f. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 PASS <密碼>; g. 收件人公司郵局服務(wù)器驗(yàn)證收件人郵件客戶端發(fā)送的用戶名和密碼,并把驗(yàn)證結(jié)果通知收件人郵件客戶端,如果驗(yàn)證失敗,則斷開(kāi)連接; ?????? ?? 通常情況下,我們可以將郵件服務(wù)器配置為根據(jù)郵件服務(wù)器本機(jī)上的帳戶來(lái)驗(yàn)證用戶身份,或者根據(jù)外部用戶數(shù)據(jù)庫(kù)來(lái)驗(yàn)證,比如LDAP等等。 h. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送郵件操作命令,比如STAT,UIDL,LIST; i. 收件人郵件客戶端向收件人公司郵局服務(wù)器發(fā)送命令 QUIT,中止會(huì)話;
4)總結(jié)
????????一臺(tái)配置得當(dāng)?shù)泥]件服務(wù)器,本身已經(jīng)包含了多種防垃圾郵件技術(shù)。一旦我們理解并掌 握了郵件收發(fā)的整個(gè)流程,不管是配置郵件服務(wù)器,還是配置防垃圾郵件網(wǎng)關(guān),我們都能夠做到不但知道要做什么,而且知道為什么要那樣做。
轉(zhuǎn)載于:https://blog.51cto.com/zoukejian/87514
總結(jié)
- 上一篇: Mocha BSM产品亮点——事件管理
- 下一篇: OpenDNS,独特的免费DNS