避免我們的郵件服務(wù)器發(fā)出的郵件被當(dāng)成垃圾郵件
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
(DKIM是什么呢?根據(jù)DKIM的官方(http://www.dkim.org)說(shuō)法,是“DomainKeys Identified Mail”,也就是被域名驗(yàn)證過(guò)的郵件。)
由于網(wǎng)絡(luò)上太多垃圾郵件,其中大部分垃圾郵件都冒充其他的域名給我們發(fā)送郵件。那么我們?cè)趺粗肋@個(gè)郵件真的是從郵件所聲明的域發(fā)來(lái)的呢?比如,我可以設(shè)置一個(gè)SMTP服務(wù)器,設(shè)置郵件域名為gmail.com,那么我就可以自己添加一個(gè)帳號(hào)是webmaster@gmail.com來(lái)發(fā)郵件了。 大家覺(jué)得聽(tīng)起來(lái)還挺可怕的。那么怎么可以避免這些不是從真正的gmail.com服務(wù)器發(fā)來(lái)的垃圾郵件呢?有人說(shuō)可以通過(guò)郵件頭查看發(fā)送源。對(duì),但我們不可能每一封郵件都查看它的郵件頭吧?我們要的是接收郵件服務(wù)器可以過(guò)濾掉這些垃圾郵件。 我總結(jié)了一下常見(jiàn)的做法: 一、通過(guò)在DNS里面設(shè)置SPF記錄,向Internet聲明從我們自己的域名發(fā)出的郵件會(huì)通過(guò)哪些服務(wù)器來(lái)發(fā)送。這方法很簡(jiǎn)單,只要我們的DNS供應(yīng)商提供的管理界面中可以添加SPF記錄就可以設(shè)置了(不是所有的供應(yīng)商會(huì)提供這設(shè)置,我的域名是在godaddy.com上注冊(cè)的,可以設(shè)置SPF記錄)。設(shè)置時(shí),添加一個(gè)SPF記錄,然后輸入域名,如果是本域,可用@來(lái)表示。然后在VALUE中輸入如“v=spf1 ip4:67.202.107.106 -all”的值。 這值分三部分: (1)v=spf1 說(shuō)明是一個(gè)SPF的v1記錄 (2)ip4:67.202.107.106 說(shuō)明郵件會(huì)從此聲明IPv4地址發(fā)出。它可以是一個(gè)IP,或一個(gè)IP段。如果有多個(gè)IP或多個(gè)IP段的話,可以聲明多個(gè)ip4記錄(如“ip4:1.0.1.0/24 ip4:1.0.2.0/24″),每個(gè)ip4記錄間用空格分隔。另外,除了用IPv4外,還可以有如下選擇: 1) ip6: 使用 IPv6 進(jìn)行驗(yàn)證。 1) + 缺省值。在測(cè)試完成的時(shí)候表示通過(guò)。 所以總結(jié)如上資料,“v=spf1 ip4:67.202.107.106 -all”的意思是這個(gè)域只有67.202.107.106這個(gè)IP可以發(fā)郵件出來(lái),其他IP的都是非法的。(以上內(nèi)容參考自:http://baike.baidu.com/view/1372988.htm) 二、通過(guò)Domainkeys或DKIM給自己的郵件添加一個(gè)數(shù)字驗(yàn)證。Domainkeys是有Yahoo!提出一個(gè)標(biāo)準(zhǔn),但由于不是完成開(kāi)源,所以被崇尚開(kāi)源的DKIM所替代。Domainkeys和DKIM的工作原理都是一樣的,就是在郵件服務(wù)器上生成一個(gè)數(shù)字證書,把此數(shù)字證書的公鑰添加到DNS的txt記錄中。然后在郵件服務(wù)器上對(duì)每封發(fā)出的郵件的郵件頭中的基本信息(如發(fā)件人,收件人,主題等)通過(guò)此數(shù)字證書的密鑰進(jìn)行加密,把加密后的內(nèi)容添加到郵件頭中。當(dāng)支持Domainkeys或DKIM的接收郵件服務(wù)器(如gmail.com)收到此郵件后,就會(huì)通過(guò)DNS查詢得到發(fā)送域中的公鑰信息,通過(guò)此公鑰解密郵件頭的相關(guān)加密內(nèi)容,然后再與對(duì)應(yīng)的基本信息比較,看是否匹配。如果發(fā)現(xiàn)郵件不匹配的話,就可以認(rèn)為這郵件被篡改或偽造的了。 我在我的郵件服務(wù)器上設(shè)置了DKIM,因此用DKIM來(lái)說(shuō)明一下安裝的方法: (可參考http://eric.lubow.org/2009/mail/setting-up-dkim-and-postfix/) (1)下載DKIM的source包,編譯安裝。由于DKIM需要libmilter模塊,如果你用的SMTP軟件是sendmail的話,會(huì)在sendmail中自帶此模塊。但如果你用的是其他軟件(如postfix)的話,那么就要先下載最新的sendmail source包,解壓后可找到子目錄“l(fā)ibmilter”。在里面用./Build和./Build install安裝libmilter模塊。 (2)通過(guò)dkim-genkey生成證書。dkim可以給多個(gè)服務(wù)器發(fā)布不同的證書驗(yàn)證。方法是通過(guò)Selector來(lái)區(qū)分。在使用dkim-genkey生成證書時(shí),可通過(guò)參數(shù)-s來(lái)設(shè)置selector。如果不指定selector的話,系統(tǒng)默認(rèn)使用default作為selector。參數(shù)-d是域名。 如: dkim-genkey -s mail1 -d jackyhe.com 可生成一個(gè)selector是mail1的jackyhe.com下的證書。 名稱成功執(zhí)行后,會(huì)在當(dāng)前目錄生成兩個(gè)名字叫mail1.txt和mail1.private的文件。mail1.txt是公鑰部分,需要添加到DNS的txt記錄中。 內(nèi)容如: mail1._domainkey IN TXT “v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2ubSRHUKzL4ucfzuMKEHyy6rx/WlrZB5SKYKrCsSJWUpQstNqjcaLntaQtmKEnDgDr5rMvklaByf8vE5guqZerZ8UWeBx5joIwuohjkapgM/R6lFmI9VUj8N/c5O9AxQAOQLgnDNPl5OQamUuOp9c5W0jLbYd/hrymPYBSKEi0wIDAQAB” ; —– DKIM mail1 for jackyhe.com 我們需要在DNS的管理界面中添加一個(gè)新的txt記錄。名字寫“mail1._domainkey”(txt文件中紅色部分,不同的selector就不同了)。值為txt文件中雙引號(hào)的內(nèi)容(如藍(lán)色部分)。 然后,把mail1.private(這是密鑰)保存在服務(wù)器上的安全的目錄。如/etc/mail/dkim/keys。 (3)配置DKIM,DKIM的配置文件是dkim-filter.conf。里面有很多默認(rèn)的設(shè)置。我們只要改下面的內(nèi)容就可以了: Domain jackyhe.com ## 設(shè)置域名 InternalHosts /etc/mail/dkim/trusted-hosts KeyFile /etc/mail/dkim/keys/mail1.private ##就是密鑰的保存位置 Selector mail1 ##本機(jī)使用的selector的名字,比如mail1 LocalADSP /etc/mail/dkim/local-adsp-rules ## 可在此文件中添加自己的ADSP規(guī)則(ADSP規(guī)則在下面說(shuō)明) Socket local:/var/run/dkim-milter/dkim.sock (4)啟動(dòng)DKIM,如 /usr/sbin/dkim-filter -x /etc/dkim-filter.conf (5)在原來(lái)的SMTP服務(wù)端(如sendmail,postfix)上修改設(shè)置。如postfix中可添加如下設(shè)置: smtpd_milters = unix:/var/run/dkim-milter/dkim.sock 重啟SMTP服務(wù)后看是否可以發(fā)郵件。如果在maillog中看到”DKIM-Signature” header added,就應(yīng)該大功告成了。 試試發(fā)郵件給gmail.com的郵箱,然后在gmail中看看這郵件的郵件頭,看看有沒(méi)有找到dkim=pass。如果有就恭喜你了。 (6)最后說(shuō)說(shuō)什么是ADSP。在DKIM說(shuō)明(http://www.dkim.org/specs/draft-ietf-dkim-ssp-04.html)中提到。我們可以有如下設(shè)置來(lái)限制沒(méi)有通過(guò)DKIM簽名而又用我們的域發(fā)出的郵件。 我們可以在DNS中添加一個(gè)新的TXT記錄,名稱是“_adsp._domainkey”,值是“dkim=all”。 “dkim=”后可有三個(gè)可選值: unknow: 意思是從這個(gè)域發(fā)出的郵件可帶DKIM證書,也可不帶。 all: 意思是從這個(gè)域名發(fā)出的證書都應(yīng)該帶DKIM證書的。 discardable: 意思是強(qiáng)烈建議接收郵件的對(duì)端把沒(méi)有DKIM證書或DKIM驗(yàn)證失敗的郵件丟棄掉。 而之前提到的“LocalADSP”中的設(shè)置,就是在自己服務(wù)器上設(shè)置規(guī)定,在接收對(duì)方的郵件時(shí)不查詢DNS的ADSP記錄,而是按照自己的要求設(shè)置。 如果大家有疑問(wèn),可留意一起探討。 該文章在 2011/8/2 16:07:08 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |