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