騰訊企業(yè)郵箱

上海騰曦網(wǎng)絡(luò)服務(wù)有限公司

騰訊企業(yè)郵箱上海經(jīng)銷商

銷售熱線:400-900-2208
騰訊企業(yè)郵箱

騰訊郵箱設(shè)置

當(dāng)前位置:騰訊企業(yè)郵箱-> 新聞資訊

DKIM指引

作者:騰訊郵箱    發(fā)布時(shí)間:2024-12-04 16:34:48  訪問量:662  


導(dǎo)讀:郵件發(fā)送方發(fā)送郵件時(shí),利用本域私鑰加密郵件生成DKIM簽名,將DKIM簽名及其相關(guān)信息插入郵件頭。郵件接收方接收郵件時(shí),通過DNS查詢獲得公鑰,驗(yàn)證郵件DKIM簽名的有效性。從而確認(rèn)在郵件發(fā)送的過程中,防止郵件被惡意篡改,保證郵件內(nèi)容的完整性。



DKIM指引

一、DKIM(DomainKeys Identified Mail)

DKIM是一種防范電子郵件欺詐的驗(yàn)證技術(shù),通過消息加密認(rèn)證的方式對(duì)郵件發(fā)送域名進(jìn)行驗(yàn)證。

郵件發(fā)送方發(fā)送郵件時(shí),利用本域私鑰加密郵件生成DKIM簽名,將DKIM簽名及其相關(guān)信息插入郵件頭。郵件接收方接收郵件時(shí),通過DNS查詢獲得公鑰,驗(yàn)證郵件DKIM簽名的有效性。從而確認(rèn)在郵件發(fā)送的過程中,防止郵件被惡意篡改,保證郵件內(nèi)容的完整性。

二、DKIM簽名頭字段參數(shù)

1、例子:

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;

c=simple; q=dns/txt; i=@eng.example.net;

t=1117574938; x=1118006938;

h=from:to:subject:date;

z=From:foo@eng.example.net|To:joe@example.com|Subject:demo=20run|Date:July=205.=202005=203:44:08=20PM=20-0700;

bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;

b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR

2、解析:

v= 版本號(hào)(純文本,必要的),值為1

格式:v=1*DIGIT

a= 生成簽名的算法(純文本,必要的),驗(yàn)證者必須支持“rsa-sha1”和“rsa-sha256”兩種算法,簽名者使用“rsa-sha256”簽名。

格式:a=rsa-sha1或者a=rsa-sha256

b= 簽名數(shù)據(jù)(base64.必要的)

格式:b=base64string

bh= 消息的規(guī)范化主體的哈希值,受“l(fā)=”標(biāo)簽限制(base64.必要的)。

格式:bh=base64string

c= 消息規(guī)范化算法(純文本,可選的,默認(rèn)為“simple/simple”),”/“兩邊分別對(duì)應(yīng)頭部和主體的規(guī)范化算法,當(dāng)“c=simple”或者“c=relaxed”時(shí),表示頭部規(guī)范化算法使用simple或者relaxed,而主體規(guī)范化算法默認(rèn)為simple。

格式:c=sig-c-tag-alg[“/“sig-c-tag-alg]

sig-c-tag-alg=”simple”/“relaxed”

d= Signing Domain Identifier ,即SDID (純文本,必要的)

格式:d=domain-name

h= 簽名的頭字段(純文本,必要的),提交給簽名算法的頭字段名稱列表,用“:”分隔。

格式:h=hdr-name*(“:”hdr-name)

i= Agent or User Identifier ,即AUID,值為@domain

格式:i=[Local-part]”@”domain-name

Local-part為空,domain-name與“d=”的值一樣或者是其子域。

l= 主體長(zhǎng)度數(shù)(純文本無符號(hào)十進(jìn)制整型,可選的,默認(rèn)為整個(gè)主體)

格式:l=1*76DIGIT

q= 一個(gè)查詢方式的列表,以冒號(hào)分隔,用于檢索公鑰(純文本,可選的,默認(rèn)為“dns/txt”),每個(gè)查詢方式的形式為“type[/options]”。

格式:q=dns/txt

s= selector,(純文本,必要的)

格式:s=selector

t= 簽名時(shí)間戳(純文本無符號(hào)十進(jìn)制整型;推薦的,默認(rèn)為一個(gè)未知的創(chuàng)建時(shí)間)。

格式:t=1*12DIGIT

x= 簽名到期時(shí)間(純文本無符號(hào)十進(jìn)制整型;推薦的,默認(rèn)永不過期)

格式:x=1*12DIGIT

z= 復(fù)制的頭字段(dkim-quoted-printable,可選的,默認(rèn)為null)

格式:z=sig-z-tag-copy*(”|”sig-z-tag-copy)

sig-z-tag-copy= hdr-name”:”qp-hdr-value

騰訊郵箱

三、DKIM DNS TXT記錄

1、例子:

$ORIGIN _domainkey.example.org.

brisbane IN TXT (“v=DKIM1;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ”

“KBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYt”

“IxN2SnFCjxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v”

“/RtdC2UzJ1lWT947qR+Rcac2gbto/NMqJ0fzfVjH4OuKhi”

“tdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB”)

2、解析:

v= DKIM密鑰記錄的版本(純文本,推薦的,默認(rèn)為“DKIM1”)

格式:v=DKIM1

p= 公鑰數(shù)據(jù)(base64.必要的)。值為空表示公鑰已被撤銷。

格式:p=base64string

h= 可接受的哈希算法(純文本,可選的,默認(rèn)允許所有算法),以冒號(hào)分隔。

格式:h= key-h-tag-alg*(“:” key-h-tag-alg)

key-h-tag-alg= “sha1”/“sha256”

k= 密鑰類型(純文本,可選的,默認(rèn)為“rsa”)

格式:k=rsa

n= 可能感興趣的人(qp-setion,可選的,默認(rèn)為空)。

格式:n=qp-setion

s= 服務(wù)類型(純文本,可選的,默認(rèn)為“”),用冒號(hào)分隔。目前定義的服務(wù)類型有兩種,一是“”,匹配所有服務(wù)類型;二是“email”,電子郵件,不限于SMTP。

格式:s=key-s-tag-type*(“:”key-s-tag-type)

key-s-tag-type=”email”/“*”

t= 標(biāo)記,表示以冒號(hào)分隔的名稱列表(純文本,可選的,默認(rèn)沒有標(biāo)記)。定義的標(biāo)記有兩種,一是“y”,表示該域正在測(cè)試DKIM;二是“s”,“i=”標(biāo)簽的domain必須與“d=”標(biāo)簽一致。

格式:t=key-t-tag-flag*(“:”key-t-tag-flag)

key-t-tag-flag=”y”/“s”

注意:所有DKIM密鑰存儲(chǔ)在一個(gè)子域,命名為“_domainkey”。給定DKIM簽名字段d=example.com,s=foo.bar,DNS查詢?yōu)椋骸癴oo.bar._domainkey.example.com”。

四、規(guī)范化算法

1、頭部規(guī)范化算法

(1)“simple”頭部規(guī)范化算法

不以任何方式改變頭字段。提交給簽名或驗(yàn)證算法的頭字段必須和被簽名或驗(yàn)證消息時(shí)一致。尤其是,頭字段名稱禁止大小寫轉(zhuǎn)換,空白不可改變。

(2)“relaxed” 頭部規(guī)范化算法

①所有頭字段名稱(不是頭字段的值)轉(zhuǎn)化為小寫。例如,將“SUBJect: AbC”轉(zhuǎn)化為“subject: AbC”。

②展開所有頭字段的續(xù)行,特別是,帶有嵌入在頭字段值的終止符(即在CRLF后接有WSP)的行需解釋為不帶CRLF。實(shí)現(xiàn)時(shí)需在頭字段值末尾去掉CRLF。

③將所有由一個(gè)或多個(gè)WSP字符組成的序列轉(zhuǎn)化為單個(gè)SP字符。這里WSP字符包括在一行的之前和之后那些字符。

④刪除所有在每一個(gè)展開的頭字段的值末尾處的WSP字符。

⑤刪除所有在用于分隔頭字段名稱和頭字段值的冒號(hào)之前和之后剩下的WSP字符。必須保留分號(hào)分隔符。

2、主體規(guī)范化算法

(1)“simple”主體規(guī)范化算法

忽略信息主體末尾處所有空白行;如果沒有主體或者在消息主體中沒有末尾CRLF,需添加一個(gè)CRLF;一個(gè)完全空的或者缺失的主體需標(biāo)準(zhǔn)化為一個(gè)“CRLF”,即標(biāo)準(zhǔn)化長(zhǎng)度為2字節(jié)。

(2)“relaxed”主體規(guī)范算法

①減少空白:

a.略行末尾所有空白。實(shí)現(xiàn)時(shí)禁止刪除行末尾的CRLF;

b.行中WSP的所有序列轉(zhuǎn)化為單個(gè)SP字符;

②.忽略消息主體末尾處所有空白行。如果主體非空白且不以CRLF結(jié)尾,則需添加CRLF。

3、例子

A:< SP>X< CRLF>

B < SP> : < SP> Y < HTAB>< CRLF>

< HTAB> Z < SP>< SP>< CRLF>

< CRLF>

< SP> C < SP>< CRLF>

D < SP>< HTAB>< SP> E < CRLF>

< CRLF>

< CRLF>

(1)頭部

simple:

A: < SP> X < CRLF>

B < SP> : < SP> Y < HTAB>< CRLF>

< HTAB> Z < SP>< SP>< CRLF>

relaxed:

a:X < CRLF>

b:Y < SP> Z < CRLF>

(2)主體

simple:

< SP> C < SP>< CRLF>

D < SP>< HTAB>< SP> E < CRLF>

relaxed:

< SP> C < CRLF>

D < SP> E < CRLF>

五、簽名算法

1、簽名算法的偽代碼:

body-hash = hash-alg (canon-body, l-param)

data-hash = hash-alg (h-headers, D-SIG, body-hash)

signature = sig-alg (d-domain, selector, data-hash)

2、解析:

body-hash:是使用哈希算法哈希主體的輸出值

hash-alg:是“a”參數(shù)指定的哈希算法

canon-body:主體的規(guī)范化表示,按“c”參數(shù)指定的規(guī)范化算法生成的,排除DKIM簽名字段。

l-param:是“l(fā)”參數(shù)的值,主體的長(zhǎng)度。

data-hash:使用hash-alg算法哈希頭部的輸出,包括DKIM簽名頭部和主體哈希值。

h-headers:“h”參數(shù)指定的被簽名的頭字段列表。

D-SIG:規(guī)范化的DKIM簽名字段,去除參數(shù)簽名值部分即為一個(gè)空的參數(shù)值。

signature:簽名算法生成的簽名值

sig-alg:“a”參數(shù)指定的簽名算法。

d-domain:“d”參數(shù)指定的域名

selector:“s”參數(shù)指定的selector值。

注意:許多數(shù)字簽名API提供RSA私鑰的哈希和應(yīng)用,使用原始的“sign()”。當(dāng)使用這樣的API時(shí),算法的最后兩個(gè)步驟可能會(huì)合并成一個(gè)調(diào)用,執(zhí)行“a-hash-alg”和“sig-alg”。

六、驗(yàn)證結(jié)果

簽名驗(yàn)證結(jié)果的三種狀態(tài):

1、SUCCESS:返回一個(gè)成功驗(yàn)證

2、PERMFAIL:返回一個(gè)永久的、不可恢復(fù)的錯(cuò)誤,例如簽名驗(yàn)證失敗

3、TEMPFAIL:返回一個(gè)暫時(shí)的、可恢復(fù)的錯(cuò)誤,例如DNS查詢超時(shí)

七、簽名者操作

簽名者按下面步驟順序執(zhí)行。

1、確定郵件是否要簽名,應(yīng)由誰簽名。

簽名者可以簽名某域的郵件,該域需要滿足以下條件:有一個(gè)私鑰,相應(yīng)公鑰的必要知識(shí)和selector信息。

2、選擇一個(gè)私鑰和相應(yīng)的selector信息

3、規(guī)范化信息以防傳輸過程中被修改

4、確定要簽名的頭字段

建議的簽名內(nèi)容,選擇構(gòu)成消息內(nèi)容的核心字段,如地址字段和與主體相關(guān)的文本內(nèi)容字段:

o From (REQUIRED;)

o Reply-To

o Subject

o Date

o To, Cc

o Resent-Date, Resent-From, Resent-To, Resent-Cc

o In-Reply-To, References

o List-Id, List-Help, List-Unsubscribe, List-Subscribe, List-Post,List-Owner, List-Archive

不建議簽名的字段:

o Return-Path

o Received

o Comments, Keywords

o DKIM-Signature field

5、計(jì)算消息的哈希和簽名

6、插入DKIM簽名頭字段



點(diǎn)贊  0  來源:qq366.cn



相關(guān)推薦:

騰訊企業(yè)微信郵箱免費(fèi)版限容該怎么辦?
騰訊郵箱成員如何綁定/關(guān)聯(lián)微信以及開啟安全登錄獲取客戶端專用密碼?
企業(yè)未注冊(cè)購買域名,如何使用企業(yè)郵箱?
企業(yè)未注冊(cè)購買域名,如何使用騰訊企業(yè)微信里的關(guān)聯(lián)企業(yè)郵箱?
騰訊企業(yè)郵箱如何添加黑名單拒收某個(gè)帳號(hào)/域名發(fā)送的郵件?


聲明:本文由騰訊郵箱收集整理的《DKIM指引》,如轉(zhuǎn)載請(qǐng)保留鏈接:http://nk976y.cn/news_in/2544

上一篇:如何解除域名和企業(yè)郵箱綁定

下一篇:管理員如何取消成員被強(qiáng)制啟用安全登錄

騰訊QQ企業(yè)郵箱

上海騰曦網(wǎng)絡(luò)服務(wù)公司是騰訊企業(yè)郵箱官方授權(quán)經(jīng)銷商;騰訊企業(yè)郵箱又叫QQ企業(yè)郵箱,可以與微信完美結(jié)合的企業(yè)郵箱,可以在微信中收發(fā)郵件的企業(yè)郵箱。

售前咨詢

售后客服

微信咨詢

服務(wù)熱線:
4009002208