อีเมลและโดเมน
ตรวจสอบ DMARC
ขอบเขต: ใช้ได้กับโดเมนจากทุกประเทศ เราหาระเบียนแบบเดียวกับเซิร์ฟเวอร์ผู้รับ: ที่ตัวโดเมนเอง และหากไม่มี จะหาที่โดเมนระดับบน (สูงสุดห้าระดับ) ที่อยู่สำหรับรับรายงานจะแสดงเฉพาะส่วนโดเมน
เปิดเครื่องมือในหน้านี้
วัตถุประสงค์
ตรวจสอบระเบียน DMARC ของโดเมน: นโยบาย (none, quarantine หรือ reject) มาจากโดเมนระดับบนหรือไม่ สัดส่วนของอีเมลที่นโยบายมีผล ความสอดคล้อง และรายงานถูกส่งไปที่ใด
ข้อกำหนด
ทุกคนอ่านคู่มือเหล่านี้ได้โดยไม่ต้องมีบัญชี เครื่องมือบางอย่างต้องใช้ Pro ตามที่ระบุในแต่ละคู่มือ
DMARC บอกเซิร์ฟเวอร์ผู้รับว่าควรทำอย่างไรกับอีเมลที่อ้างว่ามาจากโดเมนหนึ่งแต่ไม่ผ่านการตรวจสอบ: ส่งให้ตามปกติ ส่งไปที่สแปม หรือปฏิเสธ พิมพ์โดเมน ที่อยู่อีเมล หรือลิงก์ แล้วเราจะแสดงนโยบาย DMARC ของโดเมนและความหมายให้คุณดู
วิธีใช้งาน
พิมพ์โดเมนที่ต้องการตรวจสอบ หรือวางที่อยู่อีเมลหรือลิงก์: เราใช้เฉพาะส่วนโดเมนเท่านั้น
กด “ตรวจสอบ DMARC” เราจะหาระเบียนของโดเมนที่ _dmarc และหากไม่มี จะหาที่โดเมนระดับบน เหมือนที่เซิร์ฟเวอร์ผู้รับทำ
ดูที่นโยบาย: “reject” หรือ “quarantine” กับอีเมล 100% จะปกป้องโดเมนได้ ส่วน “none” แค่เฝ้าติดตามเท่านั้น
ตัวอย่างสมมติ
ตัวอย่างสมมติ ไม่ใช่ผลการค้นหาจริง ห้ามโทรหรือเปิดลิงก์ในตัวอย่าง
v=DMARC1; p=reject; rua=mailto:[email protected]ทำความเข้าใจผลลัพธ์
โดเมนนี้ไม่มี DMARC: โดเมนนี้ไม่ได้ขอให้เซิร์ฟเวอร์ผู้รับสกัดอีเมลที่แอบอ้างว่ามาจากโดเมน จึงถูกแอบอ้างได้ง่ายขึ้น
ระเบียน DMARC มีข้อผิดพลาด: เซิร์ฟเวอร์ผู้รับอาจเพิกเฉยต่อระเบียนนี้ ทำให้โดเมนเหมือนไม่มี DMARC สัญญาณด้านล่างจะบอกว่าผิดพลาดตรงไหน
DMARC แค่เฝ้าติดตามเท่านั้น: นโยบายคือ “none”: โดเมนได้รับรายงาน แต่อีเมลปลอมในนามโดเมนยังคงถูกส่งถึงผู้รับ
DMARC ป้องกันอีเมลเพียงบางส่วน: นโยบายใช้กับอีเมลที่ไม่ผ่านเพียงบางส่วน ส่วนที่เหลือจะถูกส่งถึงผู้รับเหมือนไม่มีนโยบาย
อีเมลปลอมจะเข้าสแปม: นโยบายคือ “quarantine”: เซิร์ฟเวอร์ผู้รับจะส่งอีเมลที่ไม่ผ่านการตรวจสอบไปที่โฟลเดอร์สแปม
อีเมลปลอมจะถูกปฏิเสธ: นโยบายคือ “reject”: เซิร์ฟเวอร์ผู้รับจะปฏิเสธอีเมลที่แอบอ้างว่ามาจากโดเมนนี้ ซึ่งเป็นการป้องกันที่แข็งแกร่งที่สุด
none: เฝ้าติดตามเท่านั้น
quarantine: ส่งไปที่สแปม
reject: ปฏิเสธไม่รับอีเมล
ข้อจำกัด
เราอ่านระเบียน DNS สาธารณะของโดเมน หากคุณพิมพ์ที่อยู่อีเมลหรือลิงก์ จะมีเพียงส่วนโดเมนเท่านั้นที่ออกจากเบราว์เซอร์ของคุณ เราไม่บันทึกโดเมนที่คุณค้นหา
การแก้ไขปัญหา
ดูเหมือนว่านี่ไม่ใช่โดเมนสาธารณะ ลองพิมพ์แบบ example.com
DNS ไม่ตอบกลับภายในเวลาที่กำหนด ลองอีกครั้งในอีกไม่กี่วินาที
คุณตรวจสอบติดต่อกันหลายครั้งเกินไป รอสักหนึ่งนาทีแล้วลองอีกครั้ง
ใช้งานผ่าน API
ต้องมีคีย์ API และเครดิต การเรียกที่สำเร็จแต่ละครั้งใช้ 1 เครดิต แม้ไม่มีข้อมูลก็ตาม บัญชี Pro ที่ใช้งานอยู่มี 20 เครดิตต่อเดือนปฏิทินตามเวลา UTC ใช้ร่วมกันทุกเส้นทาง API และถูกใช้ก่อน เครดิตรายเดือนที่ไม่ได้ใช้จะไม่ทบไปเดือนถัดไป เครดิตที่ซื้อในหน้าบัญชีของคุณใช้ได้โดยไม่ต้องมี Pro และไม่มีวันหมดอายุ
ข้อผิดพลาดไม่ถูกคิดเครดิต: 401 invalid_api_key (ไม่มีคีย์หรือคีย์ไม่ถูกต้อง), 403 pro_required (ไม่มีเครดิต Pro และไม่มีเครดิตที่ซื้อไว้), 422 ข้อมูลนำเข้าไม่ถูกต้อง, 429 quota_exceeded (เครดิตหมด), rate_limit_exceeded หรือ ai_busy (AI ของ sms-check ใช้งานเต็มความสามารถ), 503 tool_warming (ข้อมูลยังเตรียมไม่เสร็จ) หรือ tool หรือผู้ให้บริการไม่พร้อมใช้งาน หลังได้รับ 429 หรือ 503 ให้ลองใหม่เมื่อครบจำนวนวินาทีในเฮดเดอร์ Retry-After
นโยบาย DMARC ของโดเมน (RFC 7489 พร้อมการไล่หาขึ้นไปยังโดเมนระดับบนตาม DMARCbis): ระเบียน ตำแหน่งที่พบ นโยบายที่มีผลจริง (none, quarantine หรือ reject) เปอร์เซ็นต์ ความสอดคล้องของ DKIM และ SPF และโดเมนที่รับรายงาน โดยไม่แสดงที่อยู่แบบเต็ม ไม่มีการจัดเก็บข้อมูลใด
ส่ง JSON body ไปยังเส้นทางของ tool นั้นโดยตรง หรือไปยัง POST /v2/tools โดยเพิ่มฟิลด์ tool ทั้งสองเส้นทางให้ผลลัพธ์เหมือนกัน
POST https://api.nocall.io/v2/dmarc-check
POST https://api.nocall.io/v2/tools {"tool":"dmarc-check","domain":"example.com"}พารามิเตอร์
| ชื่อ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| domain | string (1–320) | ใช่ | โดเมน หรือที่อยู่อีเมลหรือลิงก์ที่จะใช้ส่วนโดเมน ไม่เกิน 320 อักขระ เฉพาะชื่อสาธารณะเท่านั้น: ที่อยู่ IP ชื่อที่มีเลเบลเดียว และชื่อสำหรับใช้งานพิเศษ (.local, .internal, .test…) จะได้ผลเป็น 422 |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/dmarc-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"domain":"example.com"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/dmarc-check',
method='POST',
data=json.dumps({'domain': 'example.com'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/dmarc-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ domain: 'example.com' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);ตัวอย่างการตอบกลับ (200)
นี่คือตัวอย่างที่ระบุไว้ในเอกสารอ้างอิง API การค้นหาใช้หมายเลขสมมติ ส่วนข้อมูลรวมและคำตอบจาก AI แสดงเพียงโครงสร้างของผลลัพธ์ ไม่ใช่ข้อมูลจริง
{
"data": {
"tool": "dmarc-check",
"result": {
"domain": "example.com",
"domainAscii": "example.com",
"found": true,
"record": "v=DMARC1; p=none; rua=mailto:[email protected]",
"foundAt": "example.com",
"inherited": false,
"policy": "none",
"subdomainPolicy": null,
"effectivePolicy": "none",
"percentage": 100,
"alignment": {
"dkim": "relaxed",
"spf": "relaxed"
},
"reports": {
"aggregate": [
"example.com"
],
"failure": []
},
"signals": [
"policy_none"
],
"valid": true,
"attention": true
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}ฟิลด์ผลลัพธ์ (data.result)
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| domain | string | โดเมนในรูปแบบ Unicode |
| domainAscii | string | โดเมนเดียวกันในรูปแบบ ASCII (punycode) ตามที่ DNS เห็น |
| found | boolean | มีระเบียน DMARC ที่ใช้กับโดเมนหรือไม่ (ของโดเมนเองหรือของโดเมนระดับบน) |
| record | string | null | ระเบียน DMARC เป็น null เมื่อไม่มีหรือมีมากกว่าหนึ่งระเบียน |
| foundAt | string | null | โดเมนที่ระเบียน _dmarc มีผลบังคับใช้ (โดเมนนี้หรือโดเมนระดับบน) ในรูปแบบ Unicode |
| inherited | boolean | ระเบียนเป็นของโดเมนระดับบนหรือไม่ (การไล่หาตามลำดับชั้นของ DMARCbis) |
| policy | "none" | "quarantine" | "reject" | null | แท็ก p=: none, quarantine หรือ reject |
| subdomainPolicy | "none" | "quarantine" | "reject" | null | แท็ก sp= หรือ null |
| effectivePolicy | "none" | "quarantine" | "reject" | null | นโยบายที่ใช้กับโดเมนนี้: p หรือ sp เมื่อระเบียนสืบทอดมา |
| percentage | integer (0–100) | pct: สัดส่วนของอีเมลที่ไม่ผ่านซึ่งนโยบายมีผลบังคับใช้ เป็น 100 เมื่อไม่ได้ระบุ |
| alignment | object | ความสอดคล้องของ DKIM และ SPF (adkim และ aspf): relaxed หรือ strict |
| reports | object | โดเมนที่รับรายงานสรุป (rua) และรายงานความล้มเหลว (ruf) โดยไม่แสดงที่อยู่แบบเต็ม |
| signals | array<"no_dmarc" | "multiple_records" | "syntax_error" | "policy_none" | "partial_percentage" | "no_aggregate_reports" | "inherited" | "weaker_subdomain_policy"> | no_dmarc, multiple_records, syntax_error, policy_none, partial_percentage, no_aggregate_reports, inherited หรือ weaker_subdomain_policy |
| valid | boolean | ระเบียนแยกวิเคราะห์ได้และมีนโยบายหรือไม่ |
| attention | boolean | ผลลัพธ์ควรได้รับการตรวจดูหรือไม่: ไม่มี DMARC ระเบียนไม่ถูกต้อง นโยบาย none หรือเปอร์เซ็นต์ต่ำกว่า 100 |
คำถามที่พบบ่อย
DMARC คืออะไร
Domain-based Message Authentication, Reporting and Conformance: ระเบียน DNS ที่บอกเซิร์ฟเวอร์ผู้รับว่าควรทำอย่างไรกับอีเมลที่ใช้โดเมนในช่อง “จาก” แต่ไม่ผ่านทั้ง SPF และ DKIM นอกจากนี้ยังขอรายงาน เพื่อให้เจ้าของโดเมนเห็นว่าใครส่งอีเมลในนามโดเมนบ้าง
none, quarantine และ reject หมายความว่าอย่างไร
“none” แค่เฝ้าติดตาม: อีเมลยังถูกส่งถึงผู้รับตามปกติ และเจ้าของโดเมนได้รับรายงาน “quarantine” ส่งอีเมลที่ไม่ผ่านไปที่สแปม “reject” ปฏิเสธอีเมลนั้น โดยทั่วไปโดเมนจะเริ่มจาก “none” อ่านรายงาน แล้วค่อย ๆ ขยับขึ้นไปจนถึง “reject”
ถ้าโดเมนมี DMARC อีเมลทั้งหมดของโดเมนเป็นของจริงหรือไม่
ไม่เสมอไป DMARC ทำให้ใช้โดเมนนั้นแบบตรงตัวในช่อง “จาก” ได้ยาก แต่มิจฉาชีพสามารถจดโดเมนที่หน้าตาคล้ายกันพร้อม DMARC ของตัวเองได้ ตรวจโดเมนของผู้ส่งทีละตัวอักษร หรือวางส่วนหัวของอีเมลใน “อีเมลนี้เป็นของจริงไหม?”
ทำไมจึงบอกว่าระเบียนนี้สืบทอดมา
โดเมนย่อยที่ไม่มีระเบียนของตัวเอง (mail.example.com) จะใช้ระเบียนของโดเมนระดับบน (example.com) โดยใช้นโยบายของโดเมนย่อย (sp) หากมีการกำหนดไว้
