คำตอบสั้น ๆ: เปิดการลงลายเซ็นอีเมลและตั้งระเบียน DNS ให้ครบ เพื่อให้อีเมลที่ส่งจากเซิร์ฟเวอร์เข้ากล่องจดหมายแทนที่จะตกไปอยู่ในสแปม
คู่มือนี้อธิบาย DMARC ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
อีเมลที่ส่งจากเว็บไซต์ เช่น อีเมลยืนยันคำสั่งซื้อและอีเมลรีเซ็ตรหัสผ่าน มักตกไปอยู่ในกล่องสแปมของผู้รับ สาเหตุหลักคือผู้ให้บริการอีเมลปลายทางไม่สามารถยืนยันได้ว่าอีเมลนั้นถูกส่งมาจากเซิร์ฟเวอร์ที่ได้รับอนุญาตจริง
สามระเบียนที่แก้ปัญหานี้คือ SPF บอกว่าเซิร์ฟเวอร์ใดส่งแทนโดเมนได้ DKIM ลงลายเซ็นดิจิทัลพิสูจน์ว่าไม่ถูกแก้ไขระหว่างทาง และ DMARC บอกว่าให้ทำอย่างไรเมื่อสองอย่างแรกไม่ผ่าน
สิ่งที่ต้องเตรียม
- Plesk Obsidian และสิทธิ์ผู้ดูแลระบบ
- สิทธิ์แก้ไข DNS ของโดเมน
- เมลเซิร์ฟเวอร์ของ Plesk ที่ทำงานอยู่
ขั้นตอนที่ 1: เปิด DKIM ใน Plesk
เข้า Plesk ไปที่ Domains เลือกโดเมน แล้ว Mail Settings ติ๊กที่ Use DKIM spam protection system to sign outgoing email messages แล้วกด OK
เปิดพร้อมกันทุกโดเมนได้ที่ Tools & Settings แล้ว Mail Server Settings
# ตรวจจากบรรทัดคำสั่ง
plesk bin subscription --info example.com | grep -i dkim
# เปิดผ่านคำสั่ง
plesk bin subscription -u example.com -dkim-sign true
เมื่อเปิดแล้ว Plesk จะสร้างคู่กุญแจและเพิ่มระเบียน DNS ให้อัตโนมัติหากโดเมนใช้ DNS ของ Plesk เอง หากใช้ DNS ภายนอก เช่น Cloudflare ต้องคัดลอกไปใส่เอง
ขั้นตอนที่ 2: หาค่าระเบียน DKIM
sudo cat /etc/domainkeys/example.com/default.pub 2>/dev/null
# หรือ
sudo plesk db "SELECT * FROM dns_recs WHERE host LIKE '%_domainkey%';"
หรือดูในหน้า Plesk ที่ Domains แล้วเลือกโดเมน แล้ว DNS Settings มองหาระเบียนชนิด TXT ที่ชื่อขึ้นต้นด้วย default._domainkey
ค่าที่ได้จะมีรูปแบบประมาณนี้
default._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ..."
นำไปใส่ใน DNS ที่ใช้จริง
ขั้นตอนที่ 3: ตั้งระเบียน SPF
SPF บอกว่า IP ใดได้รับอนุญาตให้ส่งอีเมลแทนโดเมนนี้
example.com. TXT "v=spf1 a mx ip4:203.0.113.10 -all"
ความหมายของแต่ละส่วน
aอนุญาต IP ที่ระเบียน A ของโดเมนชี้ไปmxอนุญาต IP ของเมลเซิร์ฟเวอร์ที่ระบุใน MXip4:ระบุ IP โดยตรง-allปฏิเสธผู้ส่งอื่นทั้งหมดอย่างเด็ดขาด ส่วน~allคือให้ผ่านแต่ทำเครื่องหมายว่าน่าสงสัย
หากใช้บริการส่งอีเมลภายนอกด้วย ต้องเพิ่มเข้าไป
"v=spf1 a mx include:_spf.google.com include:sendgrid.net ip4:203.0.113.10 -all"
ข้อจำกัดสำคัญ โดเมนหนึ่งต้องมีระเบียน SPF เพียงหนึ่งรายการ หากมีสองรายการจะถือว่าไม่ถูกต้องทั้งคู่ ให้รวมทุกอย่างไว้ในบรรทัดเดียว และจำนวนการค้นหา DNS ที่เกิดจาก include ต้องไม่เกิน 10 ครั้ง
ขั้นตอนที่ 4: ตั้งระเบียน DMARC
เริ่มจากโหมดสังเกตการณ์ก่อนเสมอ อย่าเริ่มด้วยการปฏิเสธเพราะอาจทำให้อีเมลที่ถูกต้องถูกทิ้ง
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1; pct=100"
เก็บข้อมูลอย่างน้อยสองสัปดาห์ อ่านรายงานที่ส่งมา ตรวจว่าไม่มีระบบที่ส่งอีเมลแทนโดเมนคุณโดยที่คุณไม่รู้ตัว
เมื่อแน่ใจแล้วจึงเข้มขึ้นทีละขั้น
# ขั้นที่สอง กักไว้ในสแปม 25% ของที่ไม่ผ่าน
"v=DMARC1; p=quarantine; pct=25; rua=mailto:[email protected]"
# ขั้นที่สาม ทั้งหมด
"v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]"
# ขั้นสุดท้าย ปฏิเสธ
"v=DMARC1; p=reject; pct=100; rua=mailto:[email protected]"