DMARC एग्रीगेट रिपोर्ट XML फ़ाइलें हैं जो मेलबॉक्स प्रोवाइडर आपको भेजते हैं, आमतौर पर दिन में एक बार, जिनमें आपके डोमेन के नाम से मेल भेजने वाले हर स्रोत की सूची होती है और यह भी कि उसने SPF, DKIM और अलाइनमेंट पास किया या नहीं। इन्हें पढ़कर आप हर वैध प्रेषक खोजते हैं, विफल होने वालों को ठीक करते हैं और पता लगाते हैं कि कौन आपकी स्पूफ़िंग कर रहा है, ताकि आप असली मेल को ब्लॉक किए बिना p=none से p=reject पर जा सकें।
यहाँ से शुरू करें। यह गाइड मानती है कि आप पहले से DMARC रिकॉर्ड प्रकाशित करते हैं। अगर नहीं, तो पहले भेजने वाले डोमेन को ऑथेंटिकेट करने की गाइड का पालन करें, फिर रिपोर्ट आना शुरू होने पर यहाँ लौटें।
संक्षेप में
- रिपोर्ट माँगें। पॉलिसी p=none रहते हुए अपने DMARC रिकॉर्ड में rua एड्रेस जोड़ें।
- इंतज़ार करें और इकट्ठा करें। दो से चार सप्ताह की रिपोर्ट इकट्ठा करें, किसी भी मासिक भेजने सहित।
- स्रोतों को छाँटें। हर सोर्स IP को इस तरह चिह्नित करें: वैध और अलाइन्ड, वैध लेकिन विफल, या अज्ञात।
- जो विफल है उसे ठीक करें। हर वैध सेवा को अलाइन्ड DKIM सिग्नेचर या Return-Path दें।
- चरणों में लागू करें। कम प्रतिशत पर quarantine करें, उसे बढ़ाएँ, फिर reject पर जाएँ।
रिपोर्ट माँगने वाला DMARC रिकॉर्ड
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; adkim=r; aspf=r"
| टैग | अर्थ |
|---|---|
p | विफल मेल के लिए पॉलिसी: none (निगरानी), quarantine या reject |
rua | एग्रीगेट रिपोर्ट कहाँ भेजनी हैं, एक या अधिक mailto: एड्रेस के रूप में |
adkim, aspf | अलाइनमेंट मोड: r रिलैक्स्ड के लिए (सबडोमेन मेल खा सकता है), s स्ट्रिक्ट के लिए (ठीक वही मेल) |
sp | सबडोमेन के लिए पॉलिसी, अगर p से अलग हो |
pct | विफल मेल का वह प्रतिशत जिस पर पॉलिसी लागू होती है |
समर्पित मेलबॉक्स इस्तेमाल करें। रिपोर्ट संख्या में बहुत और आकार में बड़ी होती हैं। उन्हें किसी व्यक्ति को नहीं, बल्कि एक समर्पित एड्रेस या रिपोर्ट प्रोसेसिंग सेवा को भेजें।
रिपोर्ट किसी दूसरे डोमेन को भेजना
अगर rua एड्रेस उस डोमेन से अलग डोमेन पर है जिसकी रिपोर्ट बन रही है, तो उस दूसरे डोमेन को एक ऐसा रिकॉर्ड प्रकाशित करना होगा जो इसकी अनुमति दे। अन्यथा प्रोवाइडर रिपोर्ट नहीं भेजेंगे। example.com की रिपोर्ट reports.example.net पर जाने के लिए:
example.com._report._dmarc.reports.example.net. 3600 IN TXT "v=DMARC1"
रिपोर्ट के अंदर क्या होता है
रिपोर्ट अटैचमेंट के रूप में आती हैं, आमतौर पर gzip या zip से कम्प्रेस्ड। एक खोलने पर आपको तीन हिस्से मिलेंगे: रिपोर्ट भेजने वाले की जानकारी, प्रोवाइडर को मिली पॉलिसी, और पंक्तियों की सूची, हर सोर्स IP और परिणाम के संयोजन के लिए एक।
<feedback>
<report_metadata>
<org_name>google.com</org_name>
<report_id>1234567890</report_id>
<date_range><begin>1759708800</begin><end>1759795199</end></date_range>
</report_metadata>
<policy_published>
<domain>example.com</domain><adkim>r</adkim><aspf>r</aspf><p>none</p><pct>100</pct>
</policy_published>
<record>
<row>
<source_ip>203.0.113.10</source_ip>
<count>1250</count>
<policy_evaluated><disposition>none</disposition><dkim>pass</dkim><spf>pass</spf></policy_evaluated>
</row>
<identifiers><header_from>example.com</header_from></identifiers>
<auth_results>
<dkim><domain>example.com</domain><selector>mail1</selector><result>pass</result></dkim>
<spf><domain>bounce.example.com</domain><result>pass</result></spf>
</auth_results>
</record>
</feedback>
| फ़ील्ड | यह क्या बताता है |
|---|---|
org_name | किस मेलबॉक्स प्रोवाइडर ने रिपोर्ट भेजी |
date_range | कवर की गई अवधि, Unix टाइमस्टैम्प के रूप में |
policy_published | प्रोवाइडर को दिखी DMARC पॉलिसी, जिससे आप पुष्टि कर सकते हैं कि आपका रिकॉर्ड लाइव है |
source_ip और count | भेजने वाला सर्वर और उसने उस अवधि में कितने संदेश भेजे |
policy_evaluated | वह परिणाम जो DMARC के लिए मायने रखता है: यहाँ dkim और spf का अर्थ अलाइन्ड पास या विफल है |
auth_results | SPF और DKIM के कच्चे परिणाम और वे डोमेन जिन्हें उन्होंने ऑथेंटिकेट किया, जो From डोमेन से अलग हो सकते हैं |
header_from | दिखने वाले From एड्रेस में डोमेन |
दो अलग परिणाम। policy_evaluated के अंदर pass का अर्थ है कि जाँच पास हुई और अलाइन्ड रही। auth_results के अंदर pass का अर्थ केवल इतना है कि जाँच उसी डोमेन के लिए पास हुई जो उसने इस्तेमाल किया। कोई स्रोत auth_results में पास और policy_evaluated में विफल हो सकता है। वह अंतर अलाइनमेंट की समस्या है।
हर स्रोत को तीन समूहों में से एक में रखें
| समूह | आपको क्या दिखता है | क्या करें |
|---|---|---|
| वैध और अलाइन्ड | एक ज्ञात सेवा, policy_evaluated में DKIM या SPF अलाइन्ड | कुछ नहीं। इसे ऐसे ही रखें |
| वैध लेकिन विफल | एक ज्ञात सेवा जिसके auth_results पास हैं पर policy_evaluated विफल है | उस सेवा के लिए अलाइन्ड DKIM या कस्टम Return-Path सेट करें |
| अज्ञात | ऐसा IP जिसे आप नहीं पहचानते, अक्सर बहुत विफलताओं के साथ | जाँच करें: भूला हुआ सिस्टम, फ़ॉरवर्डर या स्पूफ़र। जब तक पता न चले, उसे अधिकृत न करें |
किसी स्रोत की पहचान कैसे करें
- रिवर्स DNS:
dig -x 203.0.113.10 +shortअक्सर प्रोवाइडर का नाम बता देता है। - ऑथेंटिकेशन डोमेन: auth_results में SPF और DKIM डोमेन आमतौर पर सेवा का पता दे देते हैं।
- आपकी अपनी सूची: आपके डोमेन के नाम से भेजने वाले हर टूल की सूची बनाएँ: मार्केटिंग प्लेटफ़ॉर्म, हेल्पडेस्क, CRM, बिलिंग सिस्टम, वेबसाइट फ़ॉर्म, HR टूल और सर्वर।
- वॉल्यूम और पैटर्न: किसी ज्ञात सेवा की छोटी, स्थिर संख्या सामान्य है; किसी अज्ञात IP से अचानक आया उछाल संदिग्ध है।
छोटी स्क्रिप्ट से रिपोर्ट का सारांश निकालें
अनज़िप की गई रिपोर्टों के फ़ोल्डर पर पहली नज़र के लिए, यह स्क्रिप्ट सोर्स IP और DMARC परिणाम के अनुसार संदेशों का कुल जोड़ निकालती है:
import glob
import xml.etree.ElementTree as ET
from collections import defaultdict
totals = defaultdict(int)
for path in glob.glob("reports/*.xml"):
for rec in ET.parse(path).getroot().iter("record"):
row = rec.find("row")
ip = row.findtext("source_ip")
ev = row.find("policy_evaluated")
key = (ip, ev.findtext("dkim"), ev.findtext("spf"))
totals[key] += int(row.findtext("count"))
for (ip, dkim, spf), n in sorted(totals.items(), key=lambda x: -x[1]):
print(f"{ip:18} dkim={dkim:5} spf={spf:5} messages={n}")
अलाइनमेंट विफलताएँ ठीक करना
| रिपोर्ट में पैटर्न | कारण | समाधान |
|---|---|---|
| SPF पास, DMARC विफल | SPF ने प्रोवाइडर के डोमेन को ऑथेंटिकेट किया, आपके को नहीं | अपने डोमेन पर कस्टम Return-Path इस्तेमाल करें |
| DKIM पास, DMARC विफल | सिग्नेचर d= में प्रोवाइडर का डोमेन इस्तेमाल करता है | अपने डोमेन से साइन करें: उस सेवा का DKIM सेलेक्टर प्रकाशित करें |
| ज्ञात सेवा के लिए दोनों विफल | सेवा आपके डोमेन के लिए सेट नहीं है | उसका डोमेन ऑथेंटिकेशन पूरा करें |
| केवल फ़ॉरवर्डर के ज़रिए विफल | फ़ॉरवर्डिंग ने SPF तोड़ा, और DKIM बदल गया | एक छोटी पूँछ की अपेक्षा रखें। सुनिश्चित करें कि DKIM मौजूद है और बॉडी पर साइन करता है |
| किसी सबडोमेन के लिए विफल | सबडोमेन के अपने कोई रिकॉर्ड नहीं हैं | उस सबडोमेन के लिए SPF और DKIM प्रकाशित करें |
चरणों में प्रवर्तन पर जाएँ
जब वैध स्रोत अलाइन्ड हो जाएँ और केवल अज्ञात स्रोत विफल हों, तब पॉलिसी धीरे-धीरे बढ़ाएँ। हर चरण पर कम से कम एक सप्ताह रुकें और आगे बढ़ने से पहले रिपोर्ट पढ़ें।
| चरण | रिकॉर्ड | यह क्या करता है |
|---|---|---|
| 1 | p=none | केवल निगरानी। रिपोर्ट इकट्ठा करें |
| 2 | p=quarantine; pct=10 | 10 प्रतिशत संदेशों का विफल मेल स्पैम में जाता है |
| 3 | p=quarantine; pct=50 | आधा विफल मेल क्वारंटीन होता है |
| 4 | p=quarantine | सारा विफल मेल क्वारंटीन होता है |
| 5 | p=reject; pct=25 | एक चौथाई विफल मेल रिजेक्ट होता है |
| 6 | p=reject | सारा विफल मेल रिजेक्ट होता है। rua एड्रेस बनाए रखें |
p=none पर न रुकें। यह बल्क प्रेषकों के लिए Gmail, Yahoo और Outlook.com के न्यूनतम नियमों को पूरा करता है, लेकिन स्पूफ़िंग नहीं रोकता। आपके डोमेन और प्राप्तकर्ताओं की रक्षा प्रवर्तन से होती है।
p=reject के बाद भी निगरानी रखें
- शुरुआत में साप्ताहिक समीक्षा करें, फिर मासिक। आपके डोमेन के नाम से भेजने वाले नए टूल विफलताओं के रूप में दिखेंगे।
- ऑनबोर्डिंग में एक कदम जोड़ें: आपके डोमेन के नाम से ईमेल भेजने वाला कोई भी नया सिस्टम लाइव होने से पहले ऑथेंटिकेट किया जाए।
- पार्क किए गए डोमेन की रक्षा करें: जिन डोमेन से आप नहीं भेजते उन पर p=reject और खाली SPF रिकॉर्ड प्रकाशित करें।
- BIMI की तैयारी पर नज़र रखें: अगर आप बाद में चाहते हैं कि आपका लोगो इनबॉक्स में दिखे, तो लागू DMARC पॉलिसी पूर्वापेक्षा है।
अपनी रिपोर्ट पर दूसरी राय चाहिए? हमें एक नमूना रिपोर्ट और आपके डोमेन के नाम से भेजने वाली सेवाओं की सूची भेजें, और हम समझने में मदद करेंगे कि क्या ठीक करना है।
आगे पढ़ें और स्रोत
अक्सर पूछे जाने वाले प्रश्न
DMARC एग्रीगेट रिपोर्ट क्या है?
यह एक XML फ़ाइल है, आमतौर पर कम्प्रेस्ड, जिसे मेलबॉक्स प्रोवाइडर आपके DMARC रिकॉर्ड के rua एड्रेस पर भेजता है, सामान्यतः दिन में एक बार। यह उस मेल का सारांश देती है जो प्रोवाइडर ने आपके डोमेन से होने का दावा करते हुए देखा: भेजने वाला IP, कितने संदेश, और SPF, DKIM व DMARC पास हुए या नहीं। इसमें संदेश की सामग्री नहीं होती।
मुझे DMARC रिपोर्ट क्यों नहीं मिल रही हैं?
जाँचें कि rua एड्रेस सही है और mailto: उपसर्ग के साथ लिखा गया है, कि मेलबॉक्स बड़े अटैचमेंट स्वीकार करता है, और कि आपने कम से कम एक दिन इंतज़ार किया है। अगर रिपोर्ट एड्रेस किसी दूसरे डोमेन पर है, तो उस डोमेन को एक अधिकृत करने वाला रिकॉर्ड प्रकाशित करना होगा। हर प्रोवाइडर रिपोर्ट नहीं भेजता, और छोटे डोमेन को कम रिपोर्ट मिल सकती हैं।
rua और ruf में क्या अंतर है?
rua टैग एग्रीगेट रिपोर्ट माँगता है, जो सारांश होती हैं। ruf टैग अलग-अलग विफल संदेशों के बारे में फ़ॉरेंसिक या विफलता रिपोर्ट माँगता है। ज़्यादातर बड़े प्रोवाइडर फ़ॉरेंसिक रिपोर्ट नहीं भेजते, क्योंकि उनमें व्यक्तिगत डेटा हो सकता है, इसलिए योजना एग्रीगेट रिपोर्ट के आधार पर बनाएँ।
क्या मैं बिना किसी टूल के DMARC रिपोर्ट पढ़ सकता हूँ?
कुछ फ़ाइलों के लिए हाँ, क्योंकि वे सादा XML होती हैं। उससे ज़्यादा के लिए रिपोर्ट प्रोसेसिंग सेवा या स्रोत के अनुसार परिणामों का कुल जोड़ निकालने वाली छोटी स्क्रिप्ट इस्तेमाल करें, क्योंकि एक सामान्य डोमेन को भी दिन में दर्जनों रिपोर्ट मिलती हैं।
अलाइनमेंट विफलता का क्या मतलब है?
DMARC तभी पास होता है जब SPF या DKIM पास हो और जिस डोमेन को उसने ऑथेंटिकेट किया वह दिखने वाले From डोमेन से मेल खाता हो। अगर कोई स्रोत सेवा प्रोवाइडर के डोमेन के लिए SPF पास करता है लेकिन आपका From डोमेन अलग है, तो SPF पास होने के बावजूद DMARC विफल होता है। समाधान है अपने खुद के डोमेन से ऑथेंटिकेट करना, कस्टम Return-Path या अपने डोमेन वाले DKIM सिग्नेचर के साथ।
मुझे कितने समय तक p=none पर रहना चाहिए?
इतने समय तक कि हर वैध प्रेषक दिख जाए, जो आमतौर पर दो से चार सप्ताह होता है, और अगर आप इनवॉइस जैसा मासिक मेल भेजते हैं तो उसमें एक महीने-के-अंत का चक्र शामिल होना चाहिए। हमेशा p=none पर रहना किसी चीज़ की रक्षा नहीं करता, इसलिए आगे बढ़ने की तारीख़ तय करें।
pct टैग क्या करता है?
pct टैग आपकी पॉलिसी को विफल होने वाले संदेशों के केवल एक प्रतिशत पर लागू करता है, जैसे pct=25। इससे आप quarantine या reject को धीरे-धीरे लागू कर सकते हैं। समर्थन आम है पर सार्वभौमिक नहीं, इसलिए इसे नरम नियंत्रण मानें और रिपोर्ट देखते रहें।
क्या p=reject मेरा ईमेल तोड़ देगा?
यह हर उस संदेश को ब्लॉक करेगा जो DMARC में विफल होता है, यही इसका उद्देश्य है। वैध मेल तभी रुकता है जब कोई असली प्रेषक ऑथेंटिकेटेड और अलाइन्ड नहीं होता। इसीलिए पहले रिपोर्ट इकट्ठा करें, हर वैध स्रोत ठीक करें और चरणों में आगे बढ़ें।
फ़ॉरवर्ड किए गए मेल और मेलिंग लिस्ट का क्या?
फ़ॉरवर्डिंग अक्सर SPF तोड़ देती है क्योंकि फ़ॉरवर्डर आपके रिकॉर्ड में नहीं होता, और लिस्ट संदेश बदल सकती हैं और DKIM तोड़ सकती हैं। जो साइन्ड DKIM बना रहता है और फ़ॉरवर्डर द्वारा जोड़े गए ARC हेडर प्राप्तकर्ता सर्वर को निर्णय लेने में मदद करते हैं। स्वस्थ सेटअप में भी फ़ॉरवर्डिंग से कुछ विफलताओं की छोटी पूँछ की अपेक्षा रखें।
क्या सबडोमेन को अपना अलग DMARC रिकॉर्ड चाहिए?
मुख्य डोमेन का DMARC रिकॉर्ड सबडोमेन को भी कवर करता है, जब तक आप उसे ओवरराइड न करें। sp टैग सबडोमेन के लिए पॉलिसी तय करता है, और सबडोमेन पर रिकॉर्ड दोनों को ओवरराइड कर देता है। अप्रयुक्त सबडोमेन स्पूफ़िंग का निशाना होते हैं, इसलिए उनके लिए सख़्त पॉलिसी एक आसान जीत है।