您是否曾經(jīng)遇到過郵件退信,但是原始郵件不是您發(fā)送的,還誤以為自己郵件賬號被盜?您是否收到過某封郵件,回復(fù)過去卻收到退信提示說郵件地址不存在?您是否了解郵箱中的廣告郵件文件夾和垃圾郵件文件夾的區(qū)別?以163郵箱為例,我隨便找了一封垃圾郵件,打開來卻發(fā)現(xiàn)發(fā)件人地址和我的郵箱地址居然如此相似?;貜?fù)該郵件,很快收到退信,提示郵箱地址不存在:SMTP error, RCPT TO: 550 5.1.1 <klz020_839@motianji52.com>: Recipient address rejected: User unknown in virtual mailbox table。
1 模擬服務(wù)器向另一服務(wù)器發(fā)信
如果對SMTP協(xié)議和反垃圾郵件有些了解,那么就可以輕松知道上面的情況是如何發(fā)生的。SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議,現(xiàn)在世界上服務(wù)器之間的郵件通信基本都依賴SMTP協(xié)議。
標(biāo)準(zhǔn)SMTP協(xié)議中定義了發(fā)送郵件使用的命令,必須要的命令有如下幾個(gè):
HELO #客戶端向?qū)Ψ洁]件服務(wù)器表明自己的身份
MAIL FROM: #表明發(fā)送者的郵件地址
RCPT TO: #說明接收者的郵件地址,如有多個(gè)收件人需要重復(fù)多次
DATA #說明郵件需要傳輸?shù)臄?shù)據(jù),郵件頭包含在里面,以句點(diǎn)結(jié)尾
QUIT #結(jié)束本次郵件發(fā)送
下面我們先通過命令行模擬發(fā)送一封郵件到我的163郵箱。首先查找163.com的MX 記錄,找一條MX記錄,然后開始發(fā)信:telnet 163mx01.mxmail.netease.com 25。
登錄郵箱 klz020@163.com ,在垃圾箱里面找到了剛剛發(fā)送的那封郵件。而且是代發(fā)的。收件人和抄送中沒有該地址,說明是密送過來的。對比發(fā)送郵件的命令行和郵件的郵件頭,可以發(fā)現(xiàn)真正的發(fā)件人是mail from 中的郵件地址,所有的收件人都在rcpt to 中體現(xiàn)。但是在郵件中表現(xiàn)出來的形式是由data階段中的from 、to、cc等決定,郵件頭中也只會(huì)體現(xiàn)DATA階段的內(nèi)容。這封郵件是偽造的,發(fā)件人( martintest@0contos00.com )不存在,回復(fù)該郵件的時(shí)候會(huì)因?yàn)檎也坏組X記錄而被退信。
一封垃圾郵件發(fā)送完畢,為什么這封偽造的垃圾郵件能夠收進(jìn)來,又為什么被扔進(jìn)了垃圾箱而不是收件箱?這一切都是由反垃圾郵件設(shè)置決定的。
2 反垃圾郵件簡單介紹
SMTP(Simple Mail Transfer Protocol)正如它的名字描述的那樣,是一個(gè)非常簡單(甚至簡陋)的傳輸協(xié)議,本身并沒有很好的安全措施。根據(jù) SMTP 的規(guī)則,發(fā)件人的郵箱地址是可以由發(fā)信方任意聲明的,在垃圾郵件橫行的今天,顯得極不安全,因此需要反垃圾郵件網(wǎng)關(guān)進(jìn)行攔截垃圾郵件。反垃圾郵件基本都圍繞以下幾個(gè)方面制定規(guī)則。
2.1 反向解析記錄(PTR記錄)檢查
上面我們已經(jīng)知道了郵件的發(fā)送需要經(jīng)過helo、mail from、rcpt to、data、quit等階段。服務(wù)器在建立TCP連接的時(shí)候,服務(wù)器就知道了發(fā)送服務(wù)器的IP地址。在helo階段,helo 后面跟著的是一個(gè)helo域名,表明自己的身份。
郵件網(wǎng)關(guān)可以對該IP地址進(jìn)行反向解析,如果反向解析的域名和helo域名相同則通過,否則拒絕連接,這是最helo階段最嚴(yán)格的反垃圾郵件設(shè)置,部分郵件網(wǎng)關(guān)會(huì)設(shè)置這種嚴(yán)格的過濾規(guī)則。
郵件網(wǎng)關(guān)可以對IP地址進(jìn)行反向解析,如果找到了反向解析記錄則通過,不要求與helo域名一致,否則認(rèn)為在發(fā)送垃圾郵件,拒絕連接。許多國外的郵件網(wǎng)關(guān)(尤其是自建的郵件系統(tǒng))都是這種設(shè)置。
郵件網(wǎng)關(guān)可以不檢查PTR記錄,或者不管是否找到反向解析記錄都默認(rèn)通過,許多國內(nèi)郵件網(wǎng)關(guān)都是這種設(shè)置。上面的測試用的垃圾郵件就是因?yàn)檫@一條而通過了這一層的 防御。反向解析用的PTR記錄需要找ISP做,難度較大,而且國內(nèi)的IP地址資源不是很充足,國內(nèi)對PTR記錄檢查不是很嚴(yán)格可能和這些原因有關(guān)系。
IP地址的反向解析記錄向全球的郵件服務(wù)器表明是這個(gè)IP地址是有主的,網(wǎng)絡(luò)身份是被認(rèn)可的。許多的垃圾郵件發(fā)送者使用動(dòng)態(tài)分配的IP地址(上面測試的垃圾郵件就是這種動(dòng)態(tài)IP地址)或者沒有注冊域名的IP地址來發(fā)送垃圾郵件,以逃避追蹤。因此拒絕接收來自沒有域名的站點(diǎn)發(fā)來的信息可以大大降低垃圾郵件的數(shù)量。
2.2 IP地址信譽(yù)度檢查
在helo階段拿到發(fā)件方服務(wù)器的IP后,除了PTR檢查,還有一項(xiàng)IP信譽(yù)度的檢查,幾乎所有郵件網(wǎng)關(guān)都會(huì)設(shè)置這個(gè)檢查。全球有許多反垃圾郵件組織監(jiān)控著全球郵件的收發(fā)情況,對發(fā)送服務(wù)器的IP進(jìn)行實(shí)時(shí)監(jiān)控,發(fā)現(xiàn)有服務(wù)器大量發(fā)送垃圾郵件就會(huì)將該IP列入黑名單。這里的垃圾郵件包括釣魚詐騙盜號郵件、病毒木馬郵件、偽造假冒郵件、用戶大量舉報(bào)的郵件等。郵件網(wǎng)關(guān)一般會(huì)查閱其中幾個(gè)反垃圾郵件組織的IP地址庫,并依此對郵件發(fā)送方的IP進(jìn)行信譽(yù)度判斷,對信譽(yù)度差的IP直接拒絕連接。
為了保護(hù)自己郵件服務(wù)器的出口IP地址不被列黑,需要注意監(jiān)控服務(wù)器不要外發(fā)垃圾郵件,尤其是不要出現(xiàn)賬號被盜,被盜號者利用大量外發(fā)垃圾郵件的情況。上面測試的例子剛好拿到的是一個(gè)信譽(yù)度還算好(沒有被反垃圾郵件組織列黑)的IP(223.73.86.55),順利通過檢查,但是下面的圖片中的例子就沒有那么好的運(yùn)氣了。
2.3 SPF(TXT記錄)檢查
如果設(shè)置了完備的反向解析記錄檢查和IP信譽(yù)檢查,是否就能完全拒絕垃圾郵件呢?我們站在發(fā)送方的角度設(shè)想一下,如果某個(gè)大型集團(tuán)由于并購或者業(yè)務(wù)發(fā)展出現(xiàn)了多個(gè)域名共存的情況(例如 @a.local、 @b.local、 @c.local 都是該集團(tuán)的郵件域名),郵件服務(wù)器同時(shí)需要發(fā)送這些域名的郵件,但是helo 域名只能有一個(gè)。將這種情景擴(kuò)大化,許多的中小企業(yè)使用的是企業(yè)郵,那么成千上萬的不同域名的郵件將會(huì)從企業(yè)郵的提供商的服務(wù)器中發(fā)出,我們假設(shè)該企業(yè)郵服務(wù)器的出口IP的反向解析記錄為 mx.qiyeyou.local 。既然反向解析為 mx.qiyeyou.local 的服務(wù)器可以發(fā)送 @a.local 的郵件,那么反向解析記錄為 mx.weizao.local 的服務(wù)器是否也能夠發(fā)送 @a.local 的郵件呢?PTR記錄檢查是無法識(shí)別這種偽造郵件的,垃圾郵件發(fā)送者完全可以通過一臺(tái)IP已經(jīng)創(chuàng)建PTR記錄的服務(wù)器來冒充其他的發(fā)件人發(fā)送垃圾郵件,而且能夠通過反向解析記錄的檢查。在主要依靠郵件溝通的商業(yè)活動(dòng)中,一旦相信了假冒郵件中的郵件內(nèi)容,可能造成重大的錢財(cái)損失。
SPF(Sender Policy Framework)記錄可以有效解決郵件被假冒偽造的問題,其對應(yīng)的是TXT記錄。郵件的MX記錄的作用是給寄信者指明某個(gè)域名的郵件服務(wù)器有哪些。SPF的作用跟MX相反,它向收信者表明,哪些郵件服務(wù)器是經(jīng)過某個(gè)域名認(rèn)可會(huì)發(fā)送郵件的。SPF可以防止別人偽造你來發(fā)郵件,是一個(gè)反偽造性郵件的解決方案。
在mail from 階段,發(fā)送服務(wù)器要向接收服務(wù)器聲明發(fā)件人是誰,這個(gè)時(shí)候收件方郵件網(wǎng)關(guān)就可以對該發(fā)件人郵件地址的域名進(jìn)行SPF檢查,如果發(fā)件服務(wù)器的IP包含在SPF記錄中,那么認(rèn)為是一封正確的郵件;如果發(fā)件服務(wù)器的IP在SPF記錄中沒有找到,則認(rèn)為是一封偽造假冒的郵件,并且做相應(yīng)處理。
我們來找一下canway.net的TXT記錄,得到一系列的IP網(wǎng)段,說明canway.net域名的郵件服務(wù)器的IP只可能來自于這些網(wǎng)段,其他的IP發(fā)出來canway.net的郵件都是偽造的郵件。收件方郵件網(wǎng)關(guān)可以對SPF檢查失敗的郵件自主設(shè)置處理辦法,拒收、隔離、添加標(biāo)記……用自己公網(wǎng)IP的電腦冒充一下canway.net服務(wù)器給163郵箱發(fā)送郵件,發(fā)送郵件時(shí)會(huì)因?yàn)镾PF檢查失敗而被拒絕連接,這說明163郵箱對于SPF檢查失敗的郵件是直接拒收。有興趣的同學(xué)也可以嘗試一下QQ郵箱,看看效果。
查看文章開頭的測試用的垃圾郵件的郵件頭,可以看到spf=none,說明沒有找到發(fā)件人的域名的SPF記錄,也就不存在SPF檢查失敗的說法,所以能夠收進(jìn)163郵箱。
2.4 郵件內(nèi)容檢查
在DATA階段,傳輸?shù)氖青]件的具體內(nèi)容,包括郵件頭、主題、正文和附件。在這一階段可以針對郵件的內(nèi)容設(shè)置各種各樣過濾器。在163郵箱中的廣告郵件文件夾里面的郵件有可能就是在這一步過濾出來的。
2.5 其他檢查
除了上面的反向解析和SPF檢查,現(xiàn)在還有進(jìn)一步的反垃圾郵件措施。例如微軟推出的Sender ID和雅虎、思科等主導(dǎo)的DKIM。這兩項(xiàng)技術(shù)都需要發(fā)件方服務(wù)器和收件方服務(wù)器雙方支持才能起作用,目前正在推廣應(yīng)用當(dāng)中。
2.6 垃圾郵件的判定
垃圾郵件的判定,是上面的各種因素的綜合判定。例如反向解析檢查和SPF檢查均通過但是郵件主題出現(xiàn)“代開發(fā)票”字樣的郵件,也有可能被判為垃圾郵件。不排除有誤判的情況。
3 模擬終端用戶發(fā)信
看到到了這里,您可能仍然會(huì)有疑問,我們平時(shí)發(fā)送郵件都是需要登錄的,登錄驗(yàn)證沒有通過是不能發(fā)送郵件的,為什么上面的郵件沒有經(jīng)過驗(yàn)證這個(gè)步驟?
終端用戶使用outlook發(fā)送郵件的過程包含兩個(gè)階段,第一階段是outlook連接本域名的郵件服務(wù)器發(fā)送郵件,第二階段是郵件服務(wù)器將收到的郵件投遞到對方服務(wù)器。上面模擬的是第二階段,采用的標(biāo)準(zhǔn)的SMTP協(xié)議,不需要身份驗(yàn)證。但是第一階段需要進(jìn)行身份驗(yàn)證,很多服務(wù)器采用的是ESMTP協(xié)議。采用 ESMTP協(xié)議發(fā)信時(shí),服務(wù)器會(huì)要求用戶提供用戶名和密碼以便驗(yàn)證身份。在所有的驗(yàn)證機(jī)制中,信息全部采用Base64編碼。驗(yàn)證之后的郵件發(fā)送過程與 SMTP 方式?jīng)]有兩樣。
我們模擬一次outlook發(fā)信,利用163郵箱向canway郵箱發(fā)送一封郵件。首先找到找到163郵箱的SMTP服務(wù)器地址,是smtp.163.com。然后利用telnet工具發(fā)信,端口為25, telnet smtp.163.com 25。
從上面的發(fā)信過程,我們發(fā)現(xiàn)需要認(rèn)證之后才能發(fā)信,涉及到的命令分別為 helo、auth login、mail from、rcpt to、data、quit,比標(biāo)準(zhǔn)的SMTP多了一步認(rèn)證的過程。在一次發(fā)信的過程中,mail from、rcpt to、data可以多次使用,從而實(shí)現(xiàn)在一個(gè)鏈接中一次認(rèn)證發(fā)送多封郵件的效果。這個(gè)認(rèn)證的步驟可以有效防止垃圾郵件的產(chǎn)生,保護(hù)郵件系統(tǒng)IP地址的健康狀態(tài)。需要注意的是保護(hù)自己的賬號不要被盜,不被不法分子利用。
聯(lián)系客服