ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home ตั้งค่า SPF, DKIM และ DMARC เพื่อลดโอกาสอีเมลเข้า Spam

ตั้งค่า SPF, DKIM และ DMARC เพื่อลดโอกาสอีเมลเข้า Spam

ถ้าอีเมลจากโดเมนของบริษัทเข้า Spam ของผู้รับบ่อย หรือถูกปฏิเสธโดย Gmail และ Outlook สาเหตุที่พบบ่อยที่สุดคือโดเมนยังไม่มีระบบยืนยันตัวตนผู้ส่งครบ 3 อย่าง ได้แก่ SPF, DKIM และ DMARC ทั้งสามเป็น DNS Record ที่ช่วยให้เมลเซิร์ฟเวอร์ปลายทางตรวจได้ว่าอีเมลที่อ้างว่ามาจากโดเมนของคุณ ถูกส่งมาจากระบบที่คุณอนุญาตจริง

ปัจจุบัน Gmail และ Yahoo กำหนดให้ผู้ส่งอีเมลจำนวนมากต้องมีทั้งสามอย่าง และผู้ส่งทั่วไปต้องมีอย่างน้อย SPF หรือ DKIM การตั้งค่าครบจึงแทบเป็นข้อบังคับ บทความนี้อธิบายหน้าที่ของแต่ละตัว วิธีตั้งค่าสำหรับอีเมลบน Plesk, DirectAdmin, Microsoft 365 และ Google Workspace และวิธีตรวจว่าใช้งานได้จริง

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

  • สิทธิ์แก้ DNS ของโดเมน ที่ผู้ให้บริการซึ่ง Name Server ของโดเมนชี้ไป (ดู ทำความรู้จัก DNS Record)
  • รายชื่อทุกระบบที่ส่งอีเมลในนามโดเมนของคุณ เช่น เมลเซิร์ฟเวอร์หลัก, เว็บไซต์ที่ส่งอีเมลแจ้งเตือน, ระบบ Mail Marketing หรือระบบออกใบแจ้งหนี้
  • สิทธิ์ผู้ดูแลของระบบอีเมล (Plesk, DirectAdmin, Microsoft 365 Admin หรือ Google Admin) สำหรับเปิด DKIM

SPF, DKIM และ DMARC ทำงานอย่างไร

Recordตรวจอะไรอยู่ที่ชื่อ
SPFIP ของเซิร์ฟเวอร์ที่ส่งอีเมลมา อยู่ในรายการที่โดเมนอนุญาตหรือไม่@ (TXT)
DKIMลายเซ็นดิจิทัลในหัวอีเมลตรงกับกุญแจสาธารณะใน DNS หรือไม่ และเนื้อหาถูกแก้ระหว่างทางหรือไม่selector._domainkey (TXT หรือ CNAME)
DMARCSPF หรือ DKIM ผ่านและตรงกับโดเมนที่ผู้รับเห็นในช่อง From หรือไม่ ถ้าไม่ผ่านให้ทำอย่างไร_dmarc (TXT)

ขั้นตอนที่ 1: ตั้งค่า SPF

SPF เป็น TXT Record ที่ชื่อ @ ขึ้นต้นด้วย v=spf1 ตามด้วยรายการผู้ส่งที่อนุญาต และปิดท้ายด้วยนโยบาย ตัวอย่างตามผู้ให้บริการอีเมล

อีเมลอยู่ที่ค่า SPF ตัวอย่าง
Plesk หรือ DirectAdmin บนเซิร์ฟเวอร์เดียวกับเว็บv=spf1 a mx ~all
Microsoft 365v=spf1 include:spf.protection.outlook.com -all
Google Workspacev=spf1 include:_spf.google.com ~all
Microsoft 365 และเว็บเซิร์ฟเวอร์ที่ IP 203.0.113.10 ส่งอีเมลด้วยv=spf1 ip4:203.0.113.10 include:spf.protection.outlook.com -all

ความหมายของส่วนท้าย

  • ~all (Softfail): ผู้ส่งที่ไม่อยู่ในรายการให้ถือว่าน่าสงสัย เหมาะช่วงเริ่มต้นที่ยังไม่แน่ใจว่ารวบรวมผู้ส่งครบ
  • -all (Fail): ผู้ส่งที่ไม่อยู่ในรายการให้ถือว่าปลอม ใช้เมื่อมั่นใจว่ารายการครบแล้ว
  • ห้ามใช้ +all เพราะหมายถึงอนุญาตทุกเซิร์ฟเวอร์ในโลก

กฎสำคัญ

  • โดเมนหนึ่งต้องมี SPF เพียง Record เดียว หากมีสอง Record ที่ขึ้นต้นด้วย v=spf1 ผลตรวจจะเป็น PermError ให้รวมเป็น Record เดียว
  • SPF นับการค้น DNS (เช่น include, a, mx) ได้ไม่เกิน 10 ครั้งรวมที่ซ้อนอยู่ข้างใน หากเพิ่ม include หลายบริการ ให้ตรวจด้วยเครื่องมือตรวจ SPF ว่าไม่เกิน

ขั้นตอนที่ 2: เปิดใช้ DKIM

DKIM ต้องเปิดที่ระบบที่ส่งอีเมล ระบบจะสร้างคู่กุญแจให้ และบอกค่าที่ต้องนำไปใส่ใน DNS ขั้นตอนต่างกันตามผู้ให้บริการ

Plesk

  1. ไปที่ Websites & Domains (ใน Plesk Obsidian รุ่นใหม่แสดงเป็น Domains) คลิกชื่อโดเมน แล้วเปิดแท็บ Mail และเลือก Mail Settings ตำแหน่งเมนูอาจต่างกันเล็กน้อยตามรุ่น
  2. ติ๊ก Use DKIM spam protection system to sign outgoing email messages แล้วกด OK
  3. ถ้า DNS ของโดเมนอยู่บน Plesk ระบบจะเพิ่ม TXT ที่ชื่อ default._domainkey ให้อัตโนมัติ ถ้า DNS อยู่ที่อื่น ให้คัดลอกค่า TXT ของ default._domainkey จากหน้า DNS Settings ของ Plesk ไปเพิ่มที่ผู้ดูแล DNS

DirectAdmin

DKIM ใน DirectAdmin ต้องเปิดใช้โดยผู้ดูแลเซิร์ฟเวอร์ เมื่อเปิดแล้ว DirectAdmin ใช้ selector ชื่อ x ถ้า DNS อยู่บนเซิร์ฟเวอร์เดียวกัน จะมี TXT ที่ชื่อ x._domainkey ในหน้า Account Manager > DNS Management ถ้า DNS อยู่ที่อื่นให้คัดลอกค่านั้นไปเพิ่ม บางเวอร์ชันมีปุ่มเปิดหรือปิด DKIM ให้ผู้ใช้ในหน้า E-mail Manager หากไม่พบ ให้ติดต่อผู้ให้บริการ

Microsoft 365

  1. เข้า Microsoft Defender portal ที่ https://security.microsoft.com
  2. ไปที่ Email & collaboration > Policies & rules > Threat policies > Email authentication settings แล้วเลือกแท็บ DKIM
  3. เลือกโดเมน ระบบจะแสดง CNAME Record สองรายการ ที่ชื่อ selector1._domainkey และ selector2._domainkey ให้คัดลอกค่าจากหน้าจอไปเพิ่มที่ DNS ตามจริง (ค่าปลายทางต่างกันในแต่ละ Tenant)
  4. รอ DNS มีผล แล้วกลับมาเปิดสวิตช์ Sign messages for this domain with DKIM signatures

Google Workspace

  1. เข้า Google Admin console ไปที่ Apps > Google Workspace > Gmail > Authenticate email
  2. เลือกโดเมน แล้วกด Generate new record ใช้ความยาวกุญแจ 2048 bit และ selector ค่าเริ่มต้น google
  3. เพิ่ม TXT Record ที่ชื่อ google._domainkey ด้วยค่าที่ได้
  4. รอ DNS มีผล (อาจถึง 48 ชั่วโมง) แล้วกลับมากด Start authentication

หมายเหตุ: ค่า DKIM แบบ 2048 bit ยาวเกิน 255 ตัวอักษร ผู้ให้บริการ DNS บางรายต้องแบ่งเป็นหลายช่วงในเครื่องหมายคำพูด เช่น "v=DKIM1; k=rsa; p=MIIBIj..." "...IDAQAB" ให้ทำตามรูปแบบที่ผู้ให้บริการ DNS กำหนด และอย่าให้มีช่องว่างหรือขึ้นบรรทัดใหม่แทรกกลางกุญแจ

ขั้นตอนที่ 3: ตั้งค่า DMARC

เพิ่ม TXT Record ที่ชื่อ _dmarc เริ่มด้วยนโยบายเฝ้าดูก่อน

v=DMARC1; p=none; rua=mailto:[email protected]
  • p=none: ยังไม่ทำอะไรกับอีเมลที่ไม่ผ่าน แต่ส่งรายงานมาให้ดู
  • rua=mailto:...: อีเมลที่รับรายงานสรุปรายวันจากผู้รับรายใหญ่ ควรใช้กล่องจดหมายแยก เพราะรายงานมาเป็นไฟล์ XML จำนวนมาก

หลังดูรายงาน 2-4 สัปดาห์และแน่ใจว่าทุกระบบที่ส่งอีเมลในนามโดเมนผ่าน SPF หรือ DKIM แล้ว ให้ค่อย ๆ เพิ่มความเข้มงวด

v=DMARC1; p=quarantine; pct=25; rua=mailto:[email protected]
v=DMARC1; p=reject; rua=mailto:[email protected]

p=quarantine ให้ผู้รับนำอีเมลที่ไม่ผ่านไปไว้ใน Spam และ p=reject ให้ปฏิเสธทันที การข้ามไปใช้ p=reject ตั้งแต่แรกอาจทำให้อีเมลจริงจากระบบที่ลืมใส่ใน SPF หายไป

ตรวจสอบผลลัพธ์

  1. ตรวจ Record ใน DNS
    dig +short TXT example.com
    dig +short TXT default._domainkey.example.com
    dig +short TXT _dmarc.example.com
    เปลี่ยน default เป็น selector ของระบบคุณ (x, google หรือ selector1) บน Windows ใช้ nslookup -type=txt _dmarc.example.com
  2. ส่งอีเมลจากโดเมนของคุณไปยังบัญชี Gmail เปิดอีเมลนั้น กดเมนูสามจุด แล้วเลือก Show original (แสดงต้นฉบับ) ส่วนบนจะแสดงผล SPF, DKIM และ DMARC ต้องเป็น PASS ทั้งหมด
  3. หรือดูหัวอีเมล (Header) บรรทัด Authentication-Results ต้องมี spf=pass, dkim=pass และ dmarc=pass

ปัญหาที่พบบ่อย

SPF ขึ้น PermError

มี SPF มากกว่าหนึ่ง Record หรือค้น DNS เกิน 10 ครั้ง ให้รวมเป็น Record เดียว และตัด include ของบริการที่เลิกใช้แล้วออก

DKIM ขึ้น fail หรือ neutral (no signature)

ถ้าไม่มีลายเซ็นเลย แปลว่ายังไม่ได้เปิด DKIM ที่ระบบส่งอีเมล ถ้ามีลายเซ็นแต่ fail มักเกิดจากค่าใน DNS ถูกตัดหรือมีช่องว่างแทรก ให้คัดลอกค่าใหม่ทั้งหมดและตรวจด้วย dig ว่าตรงกับต้นฉบับ

SPF และ DKIM ผ่าน แต่ DMARC fail

DMARC ต้องการให้โดเมนที่ผ่าน SPF หรือ DKIM ตรงกับโดเมนในช่อง From ปัญหานี้พบบ่อยกับระบบ Mail Marketing หรือเว็บไซต์ที่ส่งผ่านบริการภายนอก ซึ่งเซ็น DKIM ด้วยโดเมนของบริการเอง ให้ตั้งค่า Custom Domain หรือ DKIM สำหรับโดเมนของคุณในระบบนั้น สำหรับ WordPress ดูเพิ่มเติมที่ ตั้งค่า WordPress ให้ส่งอีเมลผ่าน SMTP

ตั้งค่าครบแล้วยังเข้า Spam

SPF, DKIM และ DMARC เป็นเงื่อนไขพื้นฐาน ไม่ได้รับประกันว่าจะเข้า Inbox ให้ตรวจเพิ่มว่า IP ผู้ส่งติด Blacklist หรือไม่ IP ของเมลเซิร์ฟเวอร์มี Reverse DNS (PTR) ตรงกับชื่อเซิร์ฟเวอร์หรือไม่ และเนื้อหาอีเมลมีลักษณะเป็น Spam หรือไม่ ดูแนวทางตรวจสอบเพิ่มเติมที่ อีเมลส่งไม่ออกหรือไม่ได้รับ: วิธีตรวจสอบเบื้องต้น

หากต้องการให้ช่วยตรวจค่า SPF, DKIM และ DMARC ของโดเมน ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ พร้อมแจ้งชื่อโดเมนและระบบที่ใช้ส่งอีเมล

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security