สารบัญ
ปัญหาอีเมลตก Spam หรือถูก reject เป็นเรื่องที่ทำให้ธุรกิจเสียโอกาส ไม่ว่าจะเป็นอีเมลใบสั่งซื้อ แจ้งชำระเงิน หรือติดต่อลูกค้า ทางแก้ที่ถูกต้องและยั่งยืนคือการตั้งค่า SPF, DKIM และ DMARC ใน DNS ของโดเมนให้ครบและถูกต้อง บทความนี้จะอธิบายแต่ละระบบ พร้อมตัวอย่าง Record จริงที่นำไปใช้งานได้เลย
SPF คืออะไร ทำงานอย่างไร
SPF (Sender Policy Framework) คือมาตรฐาน DNS ที่บอกว่า IP หรือ server ไหน มีสิทธิ์ส่งอีเมลในนามโดเมนของคุณ เมื่อ mail server ปลายทางได้รับอีเมล จะ query TXT record ของโดเมนใน From/Return-Path แล้วเทียบกับ IP ที่ส่งมาจริง
ถ้า IP ที่ส่งอยู่ใน SPF Record → SPF pass | ถ้าไม่อยู่ → SPF fail/softfail ซึ่งทำให้คะแนน spam สูงขึ้น
SPF Record ทำงานอย่างไร
- ผู้ส่งส่งอีเมลจาก IP
203.0.113.10โดยอ้าง from:[email protected] - Mail server ปลายทาง query DNS:
yourdomain.com TXT - ได้รับ SPF Record:
v=spf1 ip4:203.0.113.0/24 ~all - ตรวจว่า
203.0.113.10อยู่ใน203.0.113.0/24→ ✅ Pass
DKIM คืออะไร ทำงานอย่างไร
DKIM (DomainKeys Identified Mail) คือระบบลายเซ็นดิจิทัลสำหรับอีเมล ทำงานด้วย Public/Private Key Pair — mail server ผู้ส่งเซ็นชื่อในอีเมลด้วย Private Key, ผู้รับตรวจด้วย Public Key ที่เผยแพร่ใน DNS
ข้อดีของ DKIM คือ ตรวจสอบความสมบูรณ์ของเนื้อหาอีเมลด้วย หากอีเมลถูกแก้ไขระหว่างทาง DKIM signature จะ invalid ทันที
DKIM Header ที่แนบมากับอีเมล
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yourdomain.com;
s=mail2026; t=1725854400;
bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
h=From:To:Subject:Date;
b=signature_value_here...
| Field | ความหมาย |
|---|---|
d= | โดเมนที่ออก DKIM |
s= | Selector ชื่อ key (ใช้ query DNS) |
bh= | Hash ของ body อีเมล |
b= | ลายเซ็นดิจิทัล |
DMARC คืออะไร ทำงานอย่างไร
DMARC (Domain-based Message Authentication, Reporting and Conformance) คือนโยบายที่บอก mail server ปลายทางว่าจะ ทำอะไร กับอีเมลที่ SPF หรือ DKIM fail ไม่ผ่าน และส่งรายงานให้เจ้าของโดเมน
DMARC ต้องการให้ผล SPF หรือ DKIM align กับโดเมนใน From: header ด้วย ไม่ใช่แค่ผ่านอย่างใดอย่างหนึ่ง
นโยบาย DMARC 3 ระดับ
| Policy | การกระทำ | เหมาะกับ |
|---|---|---|
p=none | ไม่ทำอะไร แค่รายงาน | เริ่มต้น monitor |
p=quarantine | ส่งเข้า Spam/Junk folder | ระยะเปลี่ยนผ่าน |
p=reject | ปฏิเสธอีเมลทั้งหมด | เต็มประสิทธิภาพ |
เปรียบเทียบ SPF vs DKIM vs DMARC
| ด้าน | SPF | DKIM | DMARC |
|---|---|---|---|
| ตรวจสอบอะไร | IP ของ server ส่ง | ลายเซ็น + เนื้อหา | นโยบาย + Alignment |
| ป้องกัน | IP Spoofing | Message tampering | Domain spoofing (From:) |
| ตำแหน่งใน DNS | TXT record (@) | TXT record (selector._domainkey) | TXT record (_dmarc) |
| การ forward | อาจ fail | มักผ่าน | ขึ้นกับ SPF/DKIM |
| รายงาน | ไม่มี | ไม่มี | มี (Aggregate + Forensic) |
วิธีตั้งค่า SPF Record
SPF Record เป็น TXT Record ที่โดเมนหลัก (@) ขึ้นต้นด้วย v=spf1 เสมอ
ไวยากรณ์พื้นฐาน
v=spf1 [mechanism...] [all]
Mechanism ที่ใช้บ่อย
| Mechanism | ความหมาย | ตัวอย่าง |
|---|---|---|
ip4: | อนุญาต IPv4 / subnet | ip4:203.0.113.10 |
ip6: | อนุญาต IPv6 | ip6:2001:db8::/32 |
include: | ดึง SPF จากโดเมนอื่น | include:_spf.google.com |
a | อนุญาต A record ของโดเมน | a |
mx | อนุญาต MX server | mx |
~all | Softfail — อื่นๆ ไม่อนุญาต (แนะนำ) | ~all |
-all | Hardfail — ปฏิเสธทั้งหมดที่ไม่ match | -all |
ตัวอย่าง SPF Record ทั่วไป
# ใช้ server mail ของตัวเองและ Google Workspace
v=spf1 mx include:_spf.google.com ~all
# ใช้ IP ตรงๆ + Gmail
v=spf1 ip4:203.0.113.10 include:_spf.google.com -all
# ใช้ AsiaGB Email
v=spf1 include:spf.asiagb.com ~all
v=spf1 SPF จะ fail ทันที ให้รวมไว้ใน record เดียว
วิธีเพิ่ม SPF ใน DirectAdmin
- Login DirectAdmin → Email Manager → MX Records
- หรือไปที่ DNS Management → เลือกโดเมน
- เพิ่ม TXT Record: Name =
@หรือเว้นว่าง, Value = SPF string ของคุณ - บันทึกและรอ DNS propagate 0-48 ชั่วโมง
วิธีตั้งค่า DKIM Record
DKIM ต้องการ Key Pair ที่สร้างจาก mail server คุณต้อง:
- สร้าง Private Key + Public Key บน mail server
- ตั้งค่า mail server ให้เซ็น outgoing mail ด้วย Private Key
- เผยแพร่ Public Key ผ่าน DNS TXT Record
รูปแบบ DKIM DNS Record
# ชื่อ Record (Name):
SELECTOR._domainkey.yourdomain.com
# ตัวอย่าง selector "mail2026":
mail2026._domainkey.yourdomain.com
# Value:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
สร้าง DKIM Key ด้วย OpenSSL
# สร้าง Private Key (2048 bit RSA)
openssl genrsa -out dkim_private.pem 2048
# แปลง Public Key สำหรับ DNS
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
openssl rsa -in dkim_private.pem -pubout | grep -v "PUBLIC KEY" | tr -d '\n'
ตัวอย่าง DKIM Record ใน DNS
| Field | Value |
|---|---|
| Type | TXT |
| Name | mail2026._domainkey |
| Value | v=DKIM1; k=rsa; p=MIIBIjAN... |
| TTL | 3600 |
วิธีตั้งค่า DMARC Record
DMARC Record เป็น TXT Record ที่ subdomain _dmarc ของโดเมนหลัก
รูปแบบ DMARC
# ชื่อ Record:
_dmarc.yourdomain.com
# ค่าเริ่มต้น (monitor mode):
v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1
# ระดับกลาง (quarantine):
v=DMARC1; p=quarantine; pct=50; rua=mailto:[email protected]
# เต็มประสิทธิภาพ (reject):
v=DMARC1; p=reject; rua=mailto:[email protected]; adkim=s; aspf=s
Tag ใน DMARC
| Tag | ความหมาย | ค่าที่ใช้ |
|---|---|---|
p= | นโยบายหลัก | none / quarantine / reject |
sp= | นโยบาย subdomain | none / quarantine / reject |
pct= | % ของอีเมลที่ใช้นโยบาย | 0-100 (default: 100) |
rua= | ที่อยู่รับ Aggregate Report | mailto:email@domain |
ruf= | ที่อยู่รับ Forensic Report | mailto:email@domain |
adkim= | DKIM alignment mode | r (relaxed) / s (strict) |
aspf= | SPF alignment mode | r (relaxed) / s (strict) |
fo= | Forensic options | 0 / 1 / d / s |
แนวทาง Rollout DMARC แบบปลอดภัย
- สัปดาห์ 1-2:
p=noneรับ Aggregate Report อ่านว่ามีอีเมลจากไหนบ้าง - สัปดาห์ 3-4:
p=quarantine; pct=10เริ่มบังคับ 10% - เดือน 2:
p=quarantine; pct=100 - เดือน 3+:
p=rejectบังคับเต็มที่
วิธีทดสอบและตรวจสอบการตั้งค่า
หลังตั้งค่าแล้ว ควรรอ DNS propagate 24-48 ชั่วโมงก่อนทดสอบจริง
เครื่องมือทดสอบที่แนะนำ
| เครื่องมือ | ใช้ตรวจ | URL |
|---|---|---|
| MXToolBox | SPF, DKIM, DMARC | mxtoolbox.com/SuperTool |
| mail-tester.com | คะแนนรวม + spam score | mail-tester.com |
| DMARC Analyzer | Aggregate Reports | dmarcanalyzer.com |
| Google Admin Toolbox | DNS check ของ Google | toolbox.googleapps.com/apps/checkmx |
| nslookup / dig | ตรวจ DNS local | terminal |
ตรวจสอบด้วย Command Line
# ตรวจ SPF
nslookup -type=TXT yourdomain.com
# ตรวจ DKIM (selector: mail2026)
nslookup -type=TXT mail2026._domainkey.yourdomain.com
# ตรวจ DMARC
nslookup -type=TXT _dmarc.yourdomain.com
# ด้วย dig
dig TXT yourdomain.com +short
dig TXT mail2026._domainkey.yourdomain.com +short
dig TXT _dmarc.yourdomain.com +short
สัญญาณว่าตั้งค่าถูกต้อง
- Header อีเมล:
Authentication-Results: ... spf=pass dkim=pass dmarc=pass - mail-tester.com ให้คะแนน ≥ 9/10
- MXToolBox ไม่แสดง error ที่ SPF, DKIM, DMARC
- DMARC Aggregate Report ไม่มีแหล่งอีเมล unknown
Authentication-Results ควรเห็น spf=pass, dkim=pass, dmarc=pass
สรุป: Checklist ก่อน Go Live
- ✅ ตั้งค่า SPF TXT Record ที่ @ มีแค่ 1 record
- ✅ เปิด DKIM บน mail server + เพิ่ม Public Key ใน DNS
- ✅ เพิ่ม DMARC Record ที่ _dmarc.yourdomain.com เริ่มด้วย p=none
- ✅ รอ DNS propagate 24-48 ชั่วโมง
- ✅ ทดสอบด้วย mail-tester.com และ MXToolBox
- ✅ อ่าน DMARC Aggregate Report หลัง 1 สัปดาห์
- ✅ ค่อยๆ เพิ่ม policy จาก none → quarantine → reject
หากต้องการ Email Hosting ที่รองรับ SPF/DKIM/DMARC พร้อม Spam Filtering ชั้นเลิศ AsiaGB Email Filtering พร้อมช่วยคุณตั้งค่าให้ถูกต้องตั้งแต่วันแรก