一、前文:

DMARC ( 全名:Domain-based Message Authentication ) 本身是依附在 SPF 或 DKIM 下,強化其不足,設定前需至少須要設定一筆 SPF 或 DKIM ,

來作為判斷依據,一般會建議兩者均設定," 較 " 不容易被對方阻擋。


SPF設定文件

DKIM (待補)


1.SPF確認寄件者發送IP

2.DKIM審查電郵內容結構,並與真實發送方的編碼信息進行比對(公私金鑰、非對稱性加密)。


二、運作流程:

寄件端:

1.寫信

2.郵件主機寄信,並於header中加入DKIM簽章資訊

3.送信


接收端:

4.Anti-SPAM 標準流程判斷,如 IP名單、RBL等。

5.透過DKIM、SPF驗證結果(順序不一定),當兩者驗證失敗時,DMARC決定如何針對該信做處理。

DKIM:檢查信件內容簽章是否被竄改。

SPF:檢查header內的寄件人網域來源IP是否正確。


    MG主機上啟用:威脅管理 > 垃圾信過濾設定 > 郵件驗證 > DMARC 設定 > 開啟 DMARC 驗証。(MG V5 支援)


6.結果有三種:PASS、Quarantine(SPAM)、REJECT。

7.Anti-SPAM標準流程,如內容過濾等,最後輸出結果給收件者。


三、設定方式、參數:


DNS 主機上設定一筆貴公司網域 TXT紀錄:

_dmarc.YOURDOMAIN.com.tw


TXT內容(舉例):

"v=DMARC1\; p=none\;rua=mailto:dmarc_report@openfind.com.tw"



相關參數:


四、

查找 DMARC 方式:


Linux:

$ dig _dmarc.openfind.com.tw txt

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>> _dmarc.openfind.com.tw txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51620
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;_dmarc.openfind.com.tw.                IN      TXT

;; ANSWER SECTION:
_dmarc.openfind.com.tw. 3599    IN      TXT     "v=DMARC1\; p=none\;rua=mailto:dmarc_report@openfind.com.tw"


PC:

C:\Users>nslookup
預設伺服器:  UnKnown
Address:  172.16.1.3

> set q=txt
> _dmarc.openfind.com.tw
伺服器:  UnKnown
Address:  172.16.1.3

未經授權的回答:
_dmarc.openfind.com.tw  text =

        "v=DMARC1; p=none;rua=mailto:dmarc_report@openfind.com.tw"
>



檢查網站:

https://mxtoolbox.com/dmarc.aspx


Report 報告:





技術小學堂:


發信測試:


Header 寄件人偽造 YAHOO:


YAHOO DMARC設定為拒絕 (p=reject):

_dmarc.yahoo.com.tw.    7200    IN      TXT     "v=DMARC1\; p=reject\; pct=100\; rua=mailto:dmarc_y_rua@yahoo.com\;"


測試MG DMARC功能:

[webmail@mbtrial job]$ telnet mgtrial.openfind.com.tw 25
Trying 2001:b034:1:1600:501:2576:ffff:ff00...
telnet: connect to address 2001:b034:1:1600:501:2576:ffff:ff00: Connection refused
Trying 211.20.183.163...
Connected to mgtrial.openfind.com.tw.
Escape character is '^]'.
220 mgtrial.openfind.com.tw ESMTP Service(MailGates ESMTP Server V5.0) ready Wed, 25 Oct 2017 18:14:46 +0800 (CST)
helo aa
250 mgtrial.openfind.com.tw
mail from:test@openfind.com.tw
250 Sender <test@openfind.com.tw> OK
rcpt to:derek_chen@m2ktrial.openfind.com.tw
250 Recipient <derek_chen@m2ktrial.openfind.com.tw> OK
data
354 Enter mail, end <CRLF>.<CRLF>
From:life982001@yahoo.com.tw  <----Header 偽造寄件人!!!!
To:To:<derek_chen@m2ktrial.openfind.com.tw>
Subject:test mail

test mail


.
550 sorry, we don't allow this mail.
quit
221 mgtrial.openfind.com.tw
Connection closed by foreign host.


MG 針對YAHOO DMARC的宣告,SMTP階段做出相對應動作:拒絕REJECT:

[2017/10/25 18:14:46] [211.20.183.162:31461-0] Connection initialized.
[2017/10/25 18:14:50] [211.20.183.162:31461-0] helo aa
[2017/10/25 18:14:53] [211.20.183.162:31461-0] mail from:test@openfind.com.tw
[2017/10/25 18:14:55] [211.20.183.162:31461-0] rcpt to:derek_chen@m2ktrial.openfind.com.tw
[2017/10/25 18:14:56] [211.20.183.162:31461-0] data
[2017/10/25 18:15:17] [211.20.183.162:31461-0] s_CheckReject, i=12, return PMM REJECT
[2017/10/25 18:15:17] [211.20.183.162:31461-0] PMM_CB_Eom, GREYLISTING, return PMM REJECT
[2017/10/25 18:15:17] [211.20.183.162:31461-0] MGLOG [MGTAGLOG (RBL:2,PASS,0.000000e+00)(DMARC:3,REJ,Policy Reject(16))(flag:2,BADHELO,RELAY:PASS)(IPF:2,PASS)(FROMBW:2,PASS)(FROMBW:2,PASS)][from test@openfind.com.tw][to derek_chen@m2ktrial.openfind.com.tw][ret 550 sorry, we don't allow this mail.][size 104]
[2017/10/25 18:15:17] [211.20.183.162:31461-0] Negative reply <550 sorry, we don't allow this mail.>
[2017/10/25 18:15:23] [211.20.183.162:31461-0] quit
[2017/10/25 18:15:23] [211.20.183.162:31461-0] Connection closed.(37s.-32126u)


Header 寄件人偽造 Gmail:


YAHOO DMARC設定為不處理(p=none):

_dmarc.gmail.com.       600     IN      TXT     "v=DMARC1\; p=none\; rua=mailto:mailauth-reports@google.com"


測試MG DMARC功能:

$ telnet mgtrial.openfind.com.tw 25
Trying 2001:b034:1:1600:501:2576:ffff:ff00...
telnet: connect to address 2001:b034:1:1600:501:2576:ffff:ff00: Connection refused
Trying 211.20.183.163...
Connected to mgtrial.openfind.com.tw.
Escape character is '^]'.
220 mgtrial.openfind.com.tw ESMTP Service(MailGates ESMTP Server V5.0) ready Wed, 25 Oct 2017 18:15:53 +0800 (CST)
helo aa
250 mgtrial.openfind.com.tw
mail from:test@openfind.com.tw
250 Sender <test@openfind.com.tw> OK
rcpt to:derek_chen@m2ktrial.openfind.com.tw
250 Recipient <derek_chen@m2ktrial.openfind.com.tw> OK
data
354 Enter mail, end <CRLF>.<CRLF>
From:life982001@gmail.com  <----Header 偽造寄件人!!!!
To:To:<derek_chen@m2ktrial.openfind.com.tw>
Subject:test mail

test mail

.
250 Message accepted for delivery
quit
221 mgtrial.openfind.com.tw
Connection closed by foreign host.


MG 針對Gmail DMARC的宣告,SMTP階段做出相對應動作:PASS

[2017/10/25 18:15:53] [211.20.183.162:31461-0] Connection initialized.
[2017/10/25 18:15:57] [211.20.183.162:31461-0] helo aa
[2017/10/25 18:15:59] [211.20.183.162:31461-0] mail from:test@openfind.com.tw
[2017/10/25 18:16:04] [211.20.183.162:31461-0] rcpt to:derek_chen@m2ktrial.openfind.com.tw
[2017/10/25 18:16:08] [211.20.183.162:31461-0] data
[2017/10/25 18:16:22] [211.20.183.162:31461-0] Message 59F06476.000AA32B accepted (100 bytes).
[2017/10/25 18:16:22] [211.20.183.162:31461-0] MGLOG [MGTAGLOG (RBL:2,PASS,0.000000e+00)(DMARC:2,PASS,Policy None(18))(flag:2,BADHELO,RELAY:PASS)(IPF:2,PASS)(FROMBW:2,PASS)(FROMBW:2,PASS)][from test@openfind.com.tw][to derek_chen@m2ktrial.openfind.com.tw][ret ][size 100]
[2017/10/25 18:16:26] [211.20.183.162:31461-0] quit
[2017/10/25 18:16:26] [211.20.183.162:31461-0] Connection closed.(33s.150965u)


MG 針對Gmail DMARC的宣告,送信階段做出相對應動作:PASS (針對DMARC該項,若其他項目被判斷到,仍有機會為SPAM信件)

[2017/10/25 18:16:23] [31591-59F06476.000AA32B] Mail.RL <test@openfind.com.tw> -> <derek_chen@m2ktrial.openfind.com.tw> (test mail/325)[OK][RECV-MGHAM-header_match_any-40][MGTAGLOG (RBL:2,PASS,0.000000e+00)(DMARC:2,PASS,Policy None(18))(flag:2,BADHELO,RELAY:PASS)(IPF:2,PASS)(FROMBW:2,PASS)(FROMBW:2,PASS)(header_match_any:pattern.fromtrust.system,,HAM,*@gmail.com,0)(TargetIP:211.20.183.161)(SourceIP:211.20.183.162)][utf-8]


P 政策說明:

注意:DMARC 驗證結果會影響系統對信件判讀。如果一封信 DMARC 驗證結果為 QUARANTINE 系統就會將其判斷為垃圾信。


同時啟用SPF、DKIM、DMARC 驗證,最後結果對照:

注意:如果一封信通過 SPF 驗證或 DKIM 驗證,就算通過DMARC驗證。


Reference:

https://support.google.com/a/answer/2466563?hl=zh-Hant

https://mxtoolbox.com/dmarc.aspx

https://dmarc.org/