การตั้งค่า DMARC ป้องกัน Email Spoofing และ Phishing

สารบัญ

  1. DMARC คืออะไร ทำไมถึงสำคัญ
  2. ความสัมพันธ์ระหว่าง SPF, DKIM และ DMARC
  3. โครงสร้าง DMARC DNS Record
  4. Policy Levels: none, quarantine, reject
  5. ขั้นตอนตั้งค่า DMARC ทีละขั้น
  6. อ่าน DMARC Report อย่างไร
  7. ตั้งค่า DMARC สำหรับ Subdomain
  8. ข้อผิดพลาดที่พบบ่อยและวิธีแก้
  9. ตรวจสอบ DMARC ว่าตั้งค่าถูกต้อง
  10. คำถามที่พบบ่อย

DMARC คืออะไร ทำไมถึงสำคัญ

DMARC ย่อมาจาก Domain-based Message Authentication, Reporting & Conformance คือมาตรฐานสากลสำหรับการยืนยันตัวตนของอีเมล ที่ช่วยให้เจ้าของโดเมนควบคุมได้ว่าจะให้ทำอะไรกับอีเมลที่อ้างว่าส่งจากโดเมนของตนแต่ไม่ผ่านการตรวจสอบ

โดยปกติแล้ว Email Spoofing คือการที่ผู้ไม่หวังดีส่งอีเมลโดยปลอมชื่อผู้ส่ง (From address) ให้ดูเหมือนมาจากโดเมนที่น่าเชื่อถือ เช่น [email protected] ทั้งที่ไม่ได้มีสิทธิ์ใช้โดเมนนั้นเลย DMARC คือกลไกที่ทำให้ผู้รับอีเมลสามารถตรวจสอบและปฏิเสธอีเมลปลอมเหล่านั้นได้

ทำไม DMARC ถึงสำคัญมากขึ้นในปี 2026?
Google และ Yahoo กำหนดให้ผู้ส่งอีเมลจำนวนมาก (bulk senders) ต้องมี DMARC policy ตั้งแต่ต้นปี 2024 และในปี 2026 ผู้ให้บริการอีเมลรายใหญ่ทั่วโลกก็เพิ่มความเข้มงวดในการตรวจสอบมากขึ้น

ความสัมพันธ์ระหว่าง SPF, DKIM และ DMARC

เพื่อให้เข้าใจ DMARC ได้อย่างถ่องแท้ ต้องรู้จักพื้นฐานของ SPF และ DKIM ก่อน:

มาตรฐานหน้าที่DNS Recordตรวจสอบอะไร
SPFระบุ IP ที่อนุญาตให้ส่งอีเมลจากโดเมนนี้TXT (v=spf1...)IP ของ mail server
DKIMเพิ่ม digital signature ในอีเมลTXT (selector._domainkey)Signature ที่เข้ารหัส
DMARCกำหนดนโยบายและรับรายงานTXT (_dmarc)Alignment + Policy

DMARC ไม่ได้แทนที่ SPF หรือ DKIM แต่ทำงานร่วมกัน โดย DMARC จะตรวจสอบ "alignment" — ว่าโดเมนใน From header ตรงกับโดเมนที่ผ่าน SPF หรือ DKIM หรือเปล่า

โครงสร้าง DMARC DNS Record

DMARC record คือ TXT record ที่ต้องสร้างที่ subdomain _dmarc ของโดเมนคุณ เช่น:

_dmarc.yourcompany.com  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1"

ความหมายของแต่ละ tag:

Tagความหมายตัวอย่างค่า
vVersion (บังคับ)DMARC1
pPolicy สำหรับโดเมนหลัก (บังคับ)none / quarantine / reject
spPolicy สำหรับ subdomainnone / quarantine / reject
ruaที่อยู่รับ aggregate reportmailto:[email protected]
rufที่อยู่รับ forensic reportmailto:[email protected]
pctเปอร์เซ็นต์อีเมลที่ apply policy100 (default)
adkimDKIM alignment moder (relaxed) / s (strict)
aspfSPF alignment moder (relaxed) / s (strict)
foFailure reporting options0 / 1 / d / s

Policy Levels: none, quarantine, reject

ค่า p= คือหัวใจของ DMARC มี 3 ระดับ:

1 p=none — โหมดตรวจสอบ (Monitor Mode)

อีเมลที่ไม่ผ่าน DMARC จะยังถูกส่งตามปกติ แต่คุณจะได้รับรายงาน เหมาะสำหรับ ผู้เริ่มต้นหรือระยะทดสอบ ใช้เพื่อเก็บข้อมูลก่อนปรับเพิ่มความเข้มงวด

2 p=quarantine — โหมดกักกัน

อีเมลที่ไม่ผ่าน DMARC จะถูกส่งไปยัง spam/junk folder แทนที่จะเข้า inbox ปกติ เหมาะสำหรับ เมื่อมั่นใจ 70-80% แล้วว่า SPF/DKIM ตั้งค่าถูกต้อง

3 p=reject — โหมดปฏิเสธสมบูรณ์

อีเมลที่ไม่ผ่าน DMARC จะถูกปฏิเสธโดยสมบูรณ์ ผู้ส่งจะได้รับ bounce back เหมาะสำหรับ เมื่อมั่นใจ 100% ว่า legitimate email ทั้งหมดผ่านการตรวจสอบแล้ว

ขั้นตอนตั้งค่า DMARC ทีละขั้น

1 ตรวจสอบว่ามี SPF record แล้ว

ก่อนตั้ง DMARC ต้องมี SPF record ที่ถูกต้องก่อน:

# ตรวจสอบด้วย dig
dig TXT yourdomain.com | grep spf

# หรือใช้ nslookup
nslookup -type=TXT yourdomain.com

ผลที่คาดหวัง: "v=spf1 include:mail.yourdomain.com ~all"

2 ตรวจสอบว่ามี DKIM record แล้ว

dig TXT default._domainkey.yourdomain.com

สำหรับผู้ใช้ DirectAdmin Hosting ของ AsiaGB: DKIM จะถูกตั้งค่าอัตโนมัติเมื่อเปิดใช้งาน Email Hosting

3 สร้าง DMARC record

เข้าไปที่ DNS Manager ของโดเมน แล้วสร้าง TXT record ดังนี้:

Fieldค่า
TypeTXT
Host/Name_dmarc
Valuev=DMARC1; p=none; rua=mailto:[email protected]
TTL3600

4 รอ DNS propagate (24-48 ชั่วโมง)

หลังสร้าง record ต้องรอ DNS ประกาศค่าใหม่ทั่วโลก โดยปกติใช้เวลา 1-24 ชั่วโมง

5 ดู DMARC report และปรับ policy

หลังจากได้รับ report สัก 2-4 สัปดาห์ วิเคราะห์ว่ามี legitimate email ที่ fail หรือเปล่า แล้วค่อยเพิ่มเป็น quarantine → reject

อ่าน DMARC Report อย่างไร

DMARC มี report 2 ประเภท:

ประเภทTagความถี่เนื้อหา
Aggregate Reportrua=รายวันสถิติรวมของ SPF/DKIM pass/fail
Forensic Reportruf=ทุกครั้งที่ failสำเนาอีเมลที่ไม่ผ่าน (บางเจ้าไม่ส่ง)

รายงานมาในรูปแบบ XML ที่อ่านยาก แนะนำให้ใช้เครื่องมือช่วยวิเคราะห์:

ตั้งค่า DMARC สำหรับ Subdomain

ถ้าต้องการตั้ง policy ต่างกันสำหรับ subdomain ใช้ tag sp=:

"v=DMARC1; p=reject; sp=quarantine; rua=mailto:[email protected]"

ในตัวอย่างนี้ โดเมนหลักใช้ reject แต่ subdomain ทั้งหมดใช้ quarantine ซึ่งเหมาะเมื่อมี subdomain ที่ยังไม่ได้ตั้ง DKIM ครบ

เคล็ดลับ: ถ้าใช้ subdomain หลายตัวสำหรับส่งอีเมล (newsletter, transactional) ให้ตรวจสอบว่าแต่ละ subdomain มี SPF/DKIM ของตัวเองก่อน

ข้อผิดพลาดที่พบบ่อยและวิธีแก้

ข้อผิดพลาดสาเหตุวิธีแก้
DMARC ตั้งแล้วแต่ยังมี spam ส่งได้ตั้ง p=none ซึ่งเป็นแค่ monitor modeเปลี่ยนเป็น p=quarantine หรือ p=reject
Legitimate email ถูก rejectSPF/DKIM ไม่ครอบคลุม email service ทั้งหมดตรวจสอบ aggregate report แล้วเพิ่ม SPF include
ไม่ได้รับ DMARC reportอีเมลใน rua= ไม่ถูกต้องหรือ mailbox เต็มตรวจสอบอีเมลปลายทางและ DNS syntax
DMARC record ไม่ถูกต้องมีช่องว่างหรือ syntax ผิดใช้ MXToolbox DMARC checker ตรวจสอบ
Alignment fail แม้ SPF passโดเมนใน Mail From ≠ โดเมนใน From headerใช้ aspf=r (relaxed) หรือแก้ Mail From

ตรวจสอบ DMARC ว่าตั้งค่าถูกต้อง

หลังตั้งค่าแล้ว ตรวจสอบด้วยคำสั่ง:

# ตรวจสอบด้วย dig
dig TXT _dmarc.yourdomain.com

# ผลที่ต้องการเห็น
_dmarc.yourdomain.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"

หรือใช้เครื่องมือออนไลน์:

สรุป: เส้นทางที่แนะนำคือ p=none (2-4 สัปดาห์) → p=quarantine pct=25 → pct=100 → p=reject ค่อยๆ เพิ่มความเข้มงวดทีละขั้น เพื่อป้องกันไม่ให้ legitimate email ถูกบล็อก

คำถามที่พบบ่อย (FAQ)

DMARC คืออะไร
DMARC (Domain-based Message Authentication, Reporting & Conformance) คือมาตรฐาน email authentication ที่ช่วยป้องกันการปลอมแปลงชื่อโดเมนในอีเมล โดยทำงานร่วมกับ SPF และ DKIM เพื่อควบคุมว่าจะให้ทำอะไรกับอีเมลที่ไม่ผ่านการตรวจสอบ
DMARC ต่างจาก SPF และ DKIM อย่างไร
SPF ตรวจสอบว่า IP ที่ส่งอีเมลได้รับอนุญาตหรือไม่ DKIM เพิ่ม digital signature ในอีเมล ส่วน DMARC ทำหน้าที่ควบคุมว่าถ้า SPF หรือ DKIM ล้มเหลว ให้ทำอะไรกับอีเมลนั้น (none/quarantine/reject) และส่งรายงานให้เจ้าของโดเมน
policy=none, quarantine, reject ต่างกันอย่างไร
none = แค่รายงาน ไม่บล็อก เหมาะสำหรับช่วงทดสอบ; quarantine = ส่งอีเมลต้องสงสัยเข้า spam folder; reject = ปฏิเสธอีเมลที่ไม่ผ่านการตรวจสอบทันที สำหรับผู้เริ่มต้นควรเริ่มด้วย none ก่อนแล้วค่อยเพิ่มระดับ
ตั้ง DMARC แล้วอีเมลจะส่งไม่ได้หรือเปล่า
ถ้าตั้ง policy=none จะไม่มีผลต่อการส่ง/รับอีเมลเลย เมื่อมั่นใจแล้วค่อยเปลี่ยนเป็น quarantine หรือ reject ซึ่งจะกระทบเฉพาะอีเมลที่ไม่ผ่านการตรวจสอบ SPF/DKIM เท่านั้น
DMARC report ส่งมาที่ไหน และอ่านอย่างไร
ใส่ rua= ในระเบียน DMARC เพื่อรับ aggregate report ทางอีเมล รายงานจะมาเป็น XML แนะนำให้ใช้เครื่องมือ DMARC analyzer เช่น MXToolbox หรือ dmarcanalyzer.com เพื่ออ่านง่ายขึ้น
ต้องมี SPF และ DKIM ก่อนตั้ง DMARC ไหม
ใช่ ต้องตั้ง SPF และ DKIM ให้เรียบร้อยก่อน เพราะ DMARC ใช้ผลตรวจสอบของทั้งสองมาตัดสินใจ ถ้าไม่มี SPF/DKIM อีเมลทุกฉบับจะ fail DMARC ทันที ทำให้ผู้ใช้ได้รับผลกระทบก่อนตั้งใจ