一、DMARC(Domain-based Message Authentication, Reporting & Conformance)
DMARC是一種基于現(xiàn)有的SPF和DKIM協(xié)議的可擴(kuò)展電子郵件認(rèn)證協(xié)議,在郵件收發(fā)雙方建立了郵件反饋機(jī)制,便于郵件發(fā)送方和郵件接收方共同對域名的管理進(jìn)行完善和監(jiān)督。
DMARC要求域名所有者在DNS記錄中設(shè)置SPF記錄和DKIM記錄,并明確聲明對驗(yàn)證失敗郵件的處理策略。郵件接收方接收郵件時,首先通過DNS獲取DMARC記錄,再對郵件來源進(jìn)行SPF驗(yàn)證和DKIM驗(yàn)證,對驗(yàn)證失敗的郵件根據(jù)DMARC記錄進(jìn)行處理,并將處理結(jié)果反饋給發(fā)送方。
DMARC能夠有效識別并攔截欺詐郵件和釣魚郵件,保障用戶個人信息安全。
例子:paypal.com的dmarc記錄
_dmarc.paypal.com text = "v=DMARC1\; p=reject\; rua=mailto:d@rua.agari.com\; ruf=mailto:dk@bounce.paypal.com,mailto:d@ruf.agari.com"
二、DMARC記錄中常用參數(shù)
adkim:(純文本;可選的;默認(rèn)為“r”)表明域名所有者要求使用嚴(yán)格的或者寬松的DKIM身份校驗(yàn)?zāi)J剑行е等缦拢?span lang="EN-US">
r: relaxed mode
s: strict mode
aspf:(純文本;可選的;默認(rèn)為“r”)表明域名所有者要求使用嚴(yán)格的或者寬松的SPF身份校驗(yàn)?zāi)J?,有效值如下?span lang="EN-US">
r: relaxed mode
s: strict mode
fo:故障報(bào)告選項(xiàng)(純文本;可選的;默認(rèn)為0),以冒號分隔的列表,如果沒有指定“ruf”,那么該標(biāo)簽的內(nèi)容將被忽略。
0:如果所有身份驗(yàn)證機(jī)制都不能產(chǎn)生“pass”結(jié)果,那么生成一份DMARC故障報(bào)告;
1:如果任一身份驗(yàn)證機(jī)制產(chǎn)生“pass”以外的結(jié)果,那么生成一份DMARC故障報(bào)告;
d:如果消息的簽名驗(yàn)證失敗,那么生成一份DKIM故障報(bào)告;
s:如果消息的SPF驗(yàn)證失敗,那么生成一份SPF故障報(bào)告。
p:要求的郵件接收者策略(純文本;必要的)表明接收者根據(jù)域名所有者的要求制定的策略。
none:域名所有者要求不采取特定措施
quarantine:域名所有者希望郵件接收者將DMARC驗(yàn)證失敗的郵件標(biāo)記為可疑的。
reject:域名所有者希望郵件接收者將DMARC驗(yàn)證失敗的郵件拒絕。
pct:(純文本0-100的整型;可選的,默認(rèn)為100)域名所有者郵件流中應(yīng)用DMARC策略的消息百分比。
rf:用于消息具體故障報(bào)告的格式(冒號分隔的純文本列表;可選的;默認(rèn)為“afrf”)
ri:匯總報(bào)告之間要求的間隔(純文本32位無符號整型;可選的;默認(rèn)為86400).表明要求接收者生成匯總報(bào)告的間隔不超過要求的秒數(shù)。
rua:發(fā)送綜合反饋的郵件地址(逗號分隔的DMARC URI純文本列表;可選的)
ruf:發(fā)送消息詳細(xì)故障信息的郵件地址(逗號分隔的DMARC URI純文本列表;可選的)
sp:要求郵件接收者對所有子域使用的策略(純文本;可選的),若缺省,則“p”指定的策略將應(yīng)用到該域名和子域中。
v:版本(純文本;必要的)值為“DMARC1”,必須作為第一個標(biāo)簽。
三、格式定義
dmarc-uri = URI [ "!" 1*DIGIT [ "k" / "m" / "g" / "t" ] ]
例如:“mailto:reports@example.com!50m”表示要求通過郵件發(fā)送給“reports@example.com”的報(bào)告的有效載荷不超過50MB。
dmarc-record = dmarc-version dmarc-sep
[dmarc-request]
[dmarc-sep dmarc-srequest]
[dmarc-sep dmarc-auri]
[dmarc-sep dmarc-furi]
[dmarc-sep dmarc-adkim]
[dmarc-sep dmarc-aspf]
[dmarc-sep dmarc-ainterval]
[dmarc-sep dmarc-fo]
[dmarc-sep dmarc-rfmt]
[dmarc-sep dmarc-percent]
[dmarc-sep]
dmarc-version = "v=DMARC1"
dmarc-sep = ";"
dmarc-request = "p=(none/quarantine/reject)"
dmarc-srequest = "sp=(none/quarantine/reject)"
dmarc-auri = "rua=dmarc-uri *(,dmarc-uri)"
dmarc-furi = "ruf=dmarc-uri *(,dmarc-uri)"
dmarc-adkim = "adkim=(r/s)"
dmarc-aspf = "aspf=(r/s)"
dmarc-ainterval = "ri= 1*DIGIT"
dmarc-fo = "fo=(0/1/d/s)*(:(0/1/d/s))"
dmarc-rfmt = "rf= Keyword *(:Keyword)"
; 僅用于報(bào)告格式注冊
dmarc-percent = "pct=1*3DIGIT"
四、例子
1、用dig命令查詢DMARC記錄
% dig +short TXT _dmarc.example.com.
"v=DMARC1; p=none; rua=mailto:dmarc-feedback@example.com;
ruf=mailto:auth-reports@example.com"
注意:DMARC DNS TXT記錄的擁有者字段必須始終為“_dmarc”,若指定該記錄應(yīng)用到域或子域,可以采用“_dmarc.example.com”的形式。
2、DMARC DNS記錄
; DMARC record for the domain example.com
_dmarc IN TXT ( "v=DMARC1; p=none; "
"rua=mailto:dmarc-feedback@example.com; "
"ruf=mailto:auth-reports@example.com" )
參考文獻(xiàn)
1、DMARC RFC協(xié)議:http://tools.ietf.org/html/rfc7489
2、DMARC官方網(wǎng)站:https://dmarc.org/
文章內(nèi)容來源于網(wǎng)絡(luò),侵刪