DMARC Policy: ไล่จาก p=none ไปสู่ p=reject อย่างปลอดภัย

ไล่ DMARC Policy จาก p=none ไป quarantine และ reject โดยอีเมลจริงไม่หาย: ทำรายการผู้ส่งจากรายงาน แก้ DKIM ตั้ง sp= ของซับโดเมน และถอยกลับได้เมื่อมีปัญหา

โดย ทีมงาน THAI DATA CLOUD อ่าน 11 นาที

แชร์FacebookXLINELinkedIn
DMARC Policy — DMARC Policy: ไล่จาก p=none ไปสู่ p=reject อย่างปลอดภัย
DMARC Policy: ไล่จาก p=none ไปสู่ p=reject อย่างปลอดภัย

คำตอบสั้น ๆ: ไล่ DMARC Policy จาก p=none ไป quarantine และ reject โดยอีเมลจริงไม่หาย: ทำรายการผู้ส่งจากรายงาน แก้ DKIM ตั้ง sp= ของซับโดเมน และถอยกลับได้เมื่อมีปัญหา

คู่มือนี้อธิบาย DMARC Policy ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

DMARC Policy คือค่า p= ในระเบียน DMARC ที่บอกผู้รับปลายทางว่าจะทำอย่างไรกับอีเมลที่อ้างว่ามาจากโดเมนของคุณแต่ตรวจไม่ผ่าน มีสามระดับ คือ none (ดูรายงานอย่างเดียว), quarantine (ส่งเข้า Spam) และ reject (ปฏิเสธ) หลายบริษัทตั้ง p=none ไว้ตั้งแต่ Gmail และ Yahoo ออกข้อกำหนดผู้ส่งในปี 2024 แล้วไม่เคยขยับต่อ ทำให้ผู้โจมตียังปลอมโดเมนของบริษัทส่งหาลูกค้าได้

คู่มือนี้เหมาะกับผู้ดูแลระบบที่ตั้ง SPF, DKIM และ DMARC แล้ว และต้องการไล่ DMARC Policy ไปถึง p=reject โดยไม่ทำให้อีเมลจริงของบริษัทหาย เมื่อทำครบ คุณจะรู้ว่ามีระบบใดส่งอีเมลในชื่อโดเมนบ้าง แก้ให้ทุกระบบผ่าน DMARC กำหนดนโยบายของซับโดเมน ขยับเป็น quarantine และ reject ทีละขั้น และถอยกลับได้ทันทีถ้ามีปัญหา ถ้ายังไม่มีระเบียน DMARC ให้เริ่มที่ คู่มือตั้งค่า SPF, DKIM และ DMARC ก่อน

สิ่งที่ต้องเตรียม

  • ระเบียน DMARC ที่มี rua= และได้รับรายงาน Aggregate มาแล้วอย่างน้อย 4 สัปดาห์ ถ้าอ่านรายงานไม่คล่อง ดู คู่มืออ่านรายงาน DMARC
  • สิทธิ์แก้ DNS ของโดเมนหลักและซับโดเมน
  • รายชื่อระบบที่ส่งอีเมลในชื่อโดเมน เท่าที่รู้ในตอนนี้ เช่น Microsoft 365 หรือ Google Workspace ระบบส่งจดหมายข่าว CRM ระบบบัญชีหรือ e-Tax Invoice ระบบเงินเดือน เว็บไซต์ และเครื่องพิมพ์
  • เวลาสังเกตการณ์อย่างน้อยหนึ่งรอบเดือน เพราะบางระบบส่งอีเมลเดือนละครั้ง เช่น ใบแจ้งหนี้สิ้นเดือนหรือสลิปเงินเดือน
ลำดับขั้นการขยับ DMARC Policy จาก p=none ทำรายการผู้ส่ง แก้ทุกระบบ ขยับเป็น quarantine แล้วจึงเป็น reject และเฝ้าดูรายงาน
เวลาส่วนใหญ่ใช้กับการแก้ผู้ส่ง ส่วนการแก้ระเบียน DNS ใช้เวลาไม่กี่นาที

ขั้นตอนที่ 1: ตรวจ DMARC Policy ปัจจุบัน

dig +short TXT _dmarc.example.com

ผลควรมีระเบียนเดียวที่ขึ้นต้นด้วย v=DMARC1 และค่า p= คือ DMARC Policy ที่ใช้อยู่ ถ้ามีสองระเบียน ผู้รับจะถือว่าไม่มี DMARC เลย ถ้า rua= ชี้ไปที่อยู่ในโดเมนอื่น เช่น บริการวิเคราะห์รายงาน โดเมนปลายทางต้องมีระเบียนอนุญาต example.com._report._dmarc.<โดเมนปลายทาง> ไม่เช่นนั้นผู้รับจะไม่ส่งรายงานให้ ซึ่งบริการส่วนใหญ่ตั้งไว้ให้แล้ว แต่ควรตรวจด้วยคำสั่ง dig เหมือนกัน

ขั้นตอนที่ 2: ทำรายการผู้ส่งทุกรายจากรายงานก่อนแตะ DMARC Policy

เปิดรายงาน Aggregate ย้อนหลัง 4 สัปดาห์ แล้วจัดกลุ่ม IP ต้นทางทุกรายการเป็นสามกลุ่ม

  • ระบบของบริษัทที่ผ่านแล้ว: ผล DMARC เป็น pass เพราะ SPF หรือ DKIM ผ่านและโดเมนตรงกับ From
  • ระบบของบริษัทที่ยังไม่ผ่าน: เช่น ระบบจดหมายข่าวที่ลงนาม DKIM ด้วยโดเมนของผู้ให้บริการเอง หรือระบบบัญชีที่ส่งจาก IP ที่ไม่อยู่ใน SPF กลุ่มนี้คือสิ่งที่จะหายเมื่อขยับ DMARC Policy
  • ไม่ใช่ของบริษัท: IP ที่ไม่รู้จักและส่งปริมาณน้อยกระจายหลายประเทศ มักเป็นผู้ปลอมแปลง ซึ่งเป็นกลุ่มที่ DMARC Policy แบบบังคับจะหยุดได้

ถามทุกฝ่ายว่าใช้บริการภายนอกใดส่งอีเมลบ้าง ระบบที่ส่งน้อยมักหลุดจากรายงานช่วงสั้น และมักเป็นระบบที่สำคัญ เช่น ระบบออกใบกำกับภาษีอิเล็กทรอนิกส์

ขั้นตอนที่ 3: แก้ทุกระบบให้ผ่าน DMARC ก่อนขยับ DMARC Policy

  • เปิด DKIM ด้วยโดเมนของบริษัท (custom domain) ในทุกระบบที่รองรับ เพราะ DKIM ยังผ่านเมื่ออีเมลถูกส่งต่อ ส่วน SPF จะล้มเหลวเมื่อถูกส่งต่อเสมอ บน Microsoft 365 ดู คู่มือ DKIM บน Microsoft 365
  • ระบบที่ตั้ง DKIM ไม่ได้ ให้เพิ่มใน SPF ระวังไม่ให้เกิน 10 lookup ตาม คู่มือแก้ SPF PermError
  • ระบบที่ไม่รองรับทั้งสองอย่าง เช่น เครื่องพิมพ์รุ่นเก่า ให้ส่งผ่านเมลเซิร์ฟเวอร์ของบริษัทแทน เช่น Postfix ที่ตั้งเป็น SMTP relay ภายในบริษัท
  • ระบบส่งอีเมลการตลาดจำนวนมาก ให้ย้ายไปใช้ซับโดเมน เช่น news.example.com เพื่อแยกชื่อเสียงและแยก DMARC Policy ออกจากอีเมลงานปกติ

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

ตารางเปรียบเทียบ DMARC Policy ระดับ none quarantine และ reject ว่าผู้รับทำอะไรกับอีเมลที่ไม่ผ่าน และใช้เมื่อใด
none ไม่ได้กันอะไร ใช้เป็นช่วงเก็บข้อมูลก่อนขยับเท่านั้น

ขั้นตอนที่ 4: กำหนด DMARC Policy ของซับโดเมนและโดเมนที่ไม่ใช้ส่งอีเมล

ถ้าไม่ระบุ sp= ซับโดเมนจะใช้ DMARC Policy เดียวกับโดเมนหลัก ผู้โจมตีนิยมปลอมซับโดเมนที่ไม่มีอยู่จริง เช่น billing.example.com เพราะดูน่าเชื่อ เมื่อโดเมนหลักไปถึง reject แล้วให้ตั้ง sp=reject ด้วย ส่วนซับโดเมนที่ส่งอีเมลจริงให้มีระเบียน _dmarc ของตัวเอง

โดเมนที่บริษัทจดไว้แต่ไม่ได้ส่งอีเมล เช่น โดเมนสำรองหรือโดเมนสะกดผิดที่จดกันไว้ ให้ปิดทุกทางด้วยระเบียนชุดนี้

example.net.          3600  IN  MX   0 .
example.net.          3600  IN  TXT  "v=spf1 -all"
_dmarc.example.net.   3600  IN  TXT  "v=DMARC1; p=reject; sp=reject"

MX ที่ชี้ไป . คือ Null MX ตาม RFC 7505 บอกว่าโดเมนนี้ไม่รับอีเมล

ขั้นตอนที่ 5: ขยับ DMARC Policy เป็น quarantine

เมื่อรายงานแสดงว่าระบบของบริษัทผ่าน DMARC เกือบทั้งหมด และไม่มีระบบใดที่รู้จักยังล้มเหลว ให้แก้ระเบียนเป็น quarantine โดยตั้ง TTL ไม่เกิน 3600 วินาทีเพื่อถอยกลับได้เร็ว

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:[email protected]"

เรื่อง pct= ที่คู่มือเก่าแนะนำให้ไล่ 10, 25, 50 เปอร์เซ็นต์ ตอนนี้ไม่ควรใช้เป็นตาข่ายนิรภัยแล้ว มาตรฐาน DMARC ฉบับใหม่ RFC 9989 ที่ออกเมื่อพฤษภาคม 2026 ตัด pct ออกเพราะผู้รับส่วนใหญ่ใช้ได้จริงเฉพาะค่า 0 และ 100 และเพิ่ม t=y สำหรับโหมดทดสอบแทน ช่วงเปลี่ยนผ่านนี้ผู้รับบางรายยังอ่าน pct บางรายไม่อ่านแล้ว ให้ถือว่าทุกครั้งที่ขยับ DMARC Policy มีผลเต็ม 100 เปอร์เซ็นต์ ความปลอดภัยจริงมาจากการแก้ผู้ส่งให้ครบในขั้นตอนที่ 3

อยู่ที่ DMARC Policy แบบ quarantine อย่างน้อย 4 สัปดาห์หรือหนึ่งรอบเดือน แล้วถามฝ่ายบัญชีและฝ่ายขายว่าลูกค้าบ่นว่าอีเมลของบริษัทเข้า Spam หรือไม่

ขั้นตอนที่ 6: ขยับ DMARC Policy เป็น reject

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:[email protected]"

ตั้งแต่นี้ผู้รับที่ทำตาม DMARC จะปฏิเสธอีเมลปลอม ผู้ส่งจริงที่หลุดการตรวจจะได้อีเมลตีกลับ เช่น Gmail ตอบด้วยรหัส 5.7.26 ว่าอีเมลไม่ผ่านการยืนยันตัวตนตาม DMARC Policy ของโดเมน ให้ตรวจรายงานทุกสัปดาห์ในเดือนแรก แล้วจึงลดเป็นทุกเดือน

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

ขั้นตอนที่ 7: เฝ้าดูและถอยกลับเมื่อจำเป็น

ถ้าระบบใหม่ที่ฝ่ายใดฝ่ายหนึ่งเพิ่งเริ่มใช้ส่งอีเมลไม่ถึงลูกค้า ให้ถอย DMARC Policy ลงหนึ่งระดับ (reject เป็น quarantine) ระหว่างแก้ ไม่ต้องถอยไป none เพราะจะเปิดให้ผู้โจมตีกลับมาทันที เมื่อแก้เสร็จและรายงานยืนยันแล้วจึงขยับกลับ ตั้งกติกาในบริษัทว่าระบบใหม่ทุกระบบที่จะส่งอีเมลในชื่อโดเมนต้องผ่านไอทีก่อนเปิดใช้

เช็กลิสต์สิ่งที่ต้องผ่านก่อนตั้ง DMARC Policy เป็น p=reject เช่น ทุกระบบลงนาม DKIM ด้วยโดเมนบริษัท และ TTL ต่ำพอถอยกลับ
ถ้ายังมีข้อสีเหลืองหรือแดง ให้อยู่ที่ quarantine ต่อจนกว่าจะแก้เสร็จ

DMARC Policy กับข้อกำหนดผู้ส่งของ Gmail, Yahoo และ Outlook.com

ตั้งแต่กุมภาพันธ์ 2024 Gmail กำหนดให้ผู้ที่ส่งถึงบัญชี Gmail ประมาณ 5,000 ฉบับขึ้นไปต่อวันต้องมี SPF, DKIM, DMARC (ตั้ง p=none ได้) โดเมน From ต้องตรงกับ SPF หรือ DKIM อีเมลการตลาดต้องมีปุ่มยกเลิกรับแบบคลิกเดียว และอัตราการกดรายงานสแปมต้องต่ำกว่า 0.3% ตามเอกสาร Email sender guidelines Yahoo ใช้เกณฑ์ใกล้เคียงกัน และ Outlook.com ใช้กับผู้ส่งเกิน 5,000 ฉบับต่อวันตั้งแต่พฤษภาคม 2025 ข้อกำหนดเหล่านี้เป็นขั้นต่ำเท่านั้น การไปถึง reject คือสิ่งที่กันการปลอมโดเมนได้จริง ติดตามผลฝั่ง Gmail ได้ด้วย Postmaster Tools ของ Google

ปัญหาที่พบบ่อยเกี่ยวกับ DMARC Policy

ตั้ง DMARC Policy เป็น p=none ช่วยกันอีเมลปลอมได้หรือไม่?

ไม่ได้ p=none บอกผู้รับให้ส่งรายงานเท่านั้น อีเมลปลอมยังถูกส่งถึงกล่องจดหมายตามปกติ เป็นจุดเริ่มต้นที่ดีแต่ไม่ใช่จุดหมาย

อีเมลที่ถูกส่งต่อ (forward) จะโดนปฏิเสธเมื่อใช้ p=reject หรือไม่?

SPF จะล้มเหลวเมื่อถูกส่งต่อ แต่ถ้าอีเมลลงนาม DKIM ด้วยโดเมนของคุณและเนื้อหาไม่ถูกแก้ระหว่างทาง DMARC จะยังผ่าน ปัญหาจะเกิดกับ mailing list ที่แก้หัวเรื่องหรือเติมข้อความท้าย ซึ่งผู้ให้บริการใหญ่ใช้ ARC ช่วยแก้ได้บางส่วน

ควรอยู่ที่ quarantine นานเท่าไรก่อนขยับเป็น reject?

อย่างน้อยหนึ่งรอบเดือนที่รายงานสะอาด เพื่อให้เห็นระบบที่ส่งเดือนละครั้ง เช่น ใบแจ้งหนี้และสลิปเงินเดือน ถ้าบริษัทมีงานรายไตรมาสที่ส่งอีเมลจากระบบเฉพาะ ให้รอให้ผ่านรอบนั้นด้วย

ใช้ t=y แทน pct ได้เลยหรือไม่?

ใช้ได้กับผู้รับที่รองรับ RFC 9989 ซึ่งจะใช้นโยบายต่ำกว่าที่ประกาศหนึ่งระดับ แต่ผู้รับที่ยังใช้มาตรฐานเดิมจะไม่รู้จัก t และใช้ DMARC Policy ตามค่า p เต็มที่ จึงไม่ควรนับ t=y เป็นช่วงทดลองที่ปลอดภัยในตอนนี้

ถ้าต้องการให้ช่วยอ่านรายงาน DMARC ไล่หาผู้ส่งที่ยังไม่ผ่าน หรือวางแผนขยับ DMARC Policy ทั้งโดเมนหลักและซับโดเมน ติดต่อทีมงาน THAI DATA CLOUD ได้ องค์กรที่ต้องการให้ทีมงานดูแลระบบอีเมลและการยืนยันตัวตนของโดเมนต่อเนื่อง ดูรายละเอียดได้ที่ Managed Email Services

อ่านเพิ่มเติมเกี่ยวกับ DMARC Policy

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน