ข้อกำหนดการตั้งค่า:
- DNS Editor ของคุณ (เช่น GoDaddy Admin ที่มีอีเมลจดทะเบียน)
- บัญชี Admin ของ 3rd Party e-mail (e-mail Blast Service [Mailchimp, ConstantContact ฯล฿], Additional Mail Server ที่อาจใช้ ฯล฿)
คุณอาจอ่านเพราะอยากช่วยแก้ error ที่เพิ่งได้ error อาจกล่าวถึง DMARC records และอีเมลไม่ได้ authenticated น่าจะพยายามส่งอีเมลไป @gmail.com หรือ @yahoo.com หรือ free email providers ใหญ่ที่มี default guidelines สูงกว่า email server ที่ตั้งเองผ่านบริษัท
ผมเคยอยู่ที่นั่น และต่อสู้นานพอสมควรจนเข้าใจ - ไม่ใช่แค่ต้องการอะไร แต่ยังรู้วิธีทำถูกต้อง
สถิติก่อนและหลังตั้งค่า SPF, DMARC & DKIM:
จากรูปภาพจะเห็นว่า:
- Bounce Rate 70% ก่อน implement ทั้งหมด 21,441 อีเมลที่ไม่เคยเข้า inbox ผู้สมัคร
- หลัง implement Bounce Rate เหลือ 5.6% เพียง 1,855 bouncebacks
- Bouncebacks ไม่ใช่ทั้งหมดเพราะความปลอดภัย บางอีเมลถูกลบ หรือผู้สมัครพิมพ์ผิด (mail.com แทน gmail.com เป็นเรื่องปกติ)
พูดพอแล้วเรื่องความสำคัญ - เริ่มทำเลย!
เพื่อให้ 100% compliant ด้าน email authentication ต้องตั้งค่า 3 อย่าง:
- SPF (Sender Policy Framework): framework ป้องกัน email forgery aka Spoofing Spoofing = การปลอมแปลงส่งจากที่อยู่อีเมลของคุณ
- DKIM (DomainKeys Identified Mail): อนุญาตให้ server ส่งอีเมลแทนคุณพร้อม authenticated รับรองว่าเป็นคุณจริง เช่น ใช้ MailChimp/ConstantContact ส่ง newsletter บอกว่าจาก 'john@doecompany.com' อีเมลยังส่งจาก server ของ MailChimp/ConstantContact แต่คุณ verified กับ blast service ว่าเป็นคุณจริง นี่คือตัวสำคัญที่สุดสำหรับธุรกิจ เพราะถ้าตั้งผิด bounce-back rate จะสูง!
- DMARC (Domain-based Message Authentication, Reporting, and Conformance): Anti-Spoofing mechanism ทำงานร่วมกับ SPF มีเพียงอย่างเดียวไม่มีผล - ต้องทั้งคู่เพื่อป้องกันได้จริง
DNS Editor / DNS Zone Editor, GoDaddy Screenshot Examples (Login และไป Admin Dashboard ก่อน):
เลือก Domain ที่ต้องการเพิ่ม DNS entries ในหน้าหลังคลิก Manage Zones
ล่าง records ด้านขวา จะเห็นปุ่ม 'Add' นำไป dialog menu ใส่ SPF, DMARC & DKIM entries แต่ละตัว:
Zone Editors อื่นๆ ไปที่ knowledge base/support center ของ Domain Provider
ตั้งค่า SPF:
SPF ตั้งค่าง่ายที่สุด ต้องการ 2 สิ่ง:
- DNS Editor (GoDaddy Admin Portal)
- IP address ของ email server
เข้าถึง DNS Editor (หรือ DNS Zone Editor ใน CPanel) สร้าง TXT entry ใหม่ ใน TXT Entry มี 3 fields: Host, TXT Value / Value & TTL (Time-To-Live) ใส่ดังนี้ (รายละเอียดอาจแตกต่าง อ้างอิง GoDaddy installation):
Host: @
TXT Value: v=spf1 +a +mx +ip4:<ip of your e-mail server>~all
TTL: 1 Hour
คำอธิบาย/ความหมาย:
'@' ใน GoDaddy หมายถึง Domain ที่ทำงานอยู่ ถ้าทำงานใน 'doecompany.com' แทน '@' ด้วย 'doecompany.com' ผลเหมือนกัน แต่วิธีที่ดีคือใช้ '@' ใน GoDaddy
<ip of your e-mail server> คือ IP ที่ส่งอีเมลออกไป อาจไม่ใช่ IP เดียวกับที่ website hosted
+a: Include A record
+mx: Include Mail Server record
+ip4: ระบุ IPv4 server
~all: Records นอกเหนือจากที่ประกาศ จะ fail
TTL = 1 hour (or 3600 seconds): Time-To-Live หากเปลี่ยน email servers จะดีที่มี gap สูงสุด 1 ชั่วโมงของการไม่ authenticated
ตั้งค่า DKIM:
DKIM ตั้งค่ายุ่งยากที่สุด และสำคัญที่สุด Authenticate 3rd party ส่งแทนชื่ออีเมลคุณ เช่น 'john@doecompany.com'
ผมมี DKIM 2 ตัว:
- สำหรับ Mail Server จริงที่อยู่บน server ต่างจาก website (common ใน enterprise)
- สำหรับ email newsletter blast service provider (ConstantContact ในกรณีนี้ อาจเป็น Mailchimp หรืออื่นๆ)
ทั้งสองสถานการณ์ legwork เหมือนกัน ต้องติดต่อ email support ของ Mail Server หรือ Third Party email sending service ให้พวกเขาติดตั้ง DKIM ที่ฝั่งพวกเขา สำหรับบัญชีคุณ
เรื่องนี้ไม่อยู่ในมือคุณ ใช้เวลา 1-2 วัน พวกเขาจะ register และ install RSA อย่างน้อย 1024-bit encoding (2048 ดีกว่า) บน server
หลัง setup เสร็จ จะส่ง Public Key ให้คุณ ใช้ในขั้นตอนต่อไปตั้งค่า DKIM record
เหมือน SPF & DMARC records เข้า DNS Editor สร้าง TXT entry ใหม่ ใส่ดังนี้ (อาจแตกต่าง อ้างอิง GoDaddy installation กับ emails hosted on inmotionhosting.com และ ConstantContact) จำไว้ สร้าง 1 entry ต่อ 1 DKIM record:
Host: <provided by your 3rd party>._domainkey
TXT Value: v=DKIM1; k=rsa; p=<public key>
TTL: 1 Hour
อย่าเว้นวรรคหลัง '=' symbols
คำอธิบาย/ความหมาย:
Host เป็นชื่อหรือหมายเลข unique ต่อ third party เมื่อส่งอีเมลแทนคุณ อีเมลจะมีชื่อ/หมายเลขนั้นใน header นั่นคือ record ที่จะค้นหาในโดเมนของคุณ
ง่ายๆ: receiving server จะไป 'doecompany' DNS records ดูว่าสิ่งที่ 3rd party อ้างจริงหรือไม่ เฉพาะถ้า public key validate กับ key บน server ของพวกเขา ถูกต้อง อีเมลจึงส่งออก
v=DKIM1: ระบุ DKIM version
k=rsa: RSA เป็น key (k) 典型 3rd party อาจเลือกอย่างอื่น แต่ RSA 2048-bit encryption ปลอดภัยสุด 1024 bit ดีพอ
p=<public key>: แทน '<public key>' จะได้ string 1024 หรือ 2048 bit ตัวเลข/ตัวอักษรสุ่ม หรือค่าที่เหมาะกับ encryption ที่ 3rd party เลือก
TTL = 1 hour (3600 seconds): หากเปลี่ยน email servers จะดีที่มี gap สูงสุด 1 ชั่วโมง
ตั้งค่า DMARC:
เตือน: เพื่อให้ DMARC ทำงาน ต้อง setup SPF AND DKIM ก่อน เพราะ DMARC verify SPF & DKIM settings และว่าผู้ส่ง suit settings และไม่ใช่ spoofer ถ้า SPF & DKIM ไม่ตั้ง DMARC ไม่ทำงาน และ resulting rejected emails
เหมือน SPF records เข้า DNS Editor สร้าง TXT entry ใหม่ ใส่ดังนี้ (อาจแตกต่าง อ้างอิง GoDaddy installation emails hosted on inmotionhosting.com):
Host: _dmarc
TXT Value: v=DMARC1;p=reject;sp=none;adkim=r;aspf=r;pct=100;fo=0;rf=afrf;ri=86400
TTL: 1 Hour
คำอธิบาย/ความหมาย:
Host ประกาศเป็น '_dmarc' เพราะใน GoDaddy จะเพิ่ม '.johndoe.com' เป็น subdomain อัตโนมัติ หมายถึงตอนส่งอีเมล DMARC จะเช็คภายใต้ selector นั้นต้านโดเมนคุณ หากไม่ setup เป็น '_dmarc' อย่างถูกต้อง email servers หา DMARC entry ไม่เจอ และ fail อีเมลอัตโนมัติเชื่อว่าไม่มี entry
v=DMARC1: ประกาศ DMARC version
p=reject: อีเมลจะถูก reject โดย recipient email server หากไม่ match DMARC records
sp=none: ไม่เช็คว่า subdomains และ main domain aligned หรือไม่ optional
adkim=r: strict (s) หรือ relaxed (r) กับ DKIM identifier settings relaxed เป็น default
aspf=r: strict (s) หรือ relaxed (r) กับ SPF identifier settings relaxed เป็น default
pct=100: 100% ของอีเมลได้รับผลกระทบจาก DMARC integer 1-100 ชุดเล็กเหมาะแค่ testing ควร 100 สำหรับ security
fo=0: DMARC error report สร้างถ้า SPF & DKIM fail authenticate 0 เป็น default อื่นๆ 1, d, s 1 = ถ้าตัวไหน fail สร้าง record d = signature failed evaluation s = SPF evaluation failed
rf=afrf: formatting สำหรับ message failure reports afrf ค่าที่รองรับ唯一 ณ ขณะเขียน
ri=86400: กี่วินาทีระหว่างส่ง report ให้ sender 86400 = default = 24 ชั่วโมง/1 วัน major mailbox providers (Gmail, Yahoo ฯล฿) ส่งมากกว่า 1 รายงาน/วัน
TTL = 1 hour (3600 seconds): หากเปลี่ยน email servers จะดีที่ gap สูงสุด 1 ชั่วโมง
นี่คือวิธี authenticate อีเมลอย่างถูกต้อง หวังว่าเอาความลึกลับและซับซ้อนออกไปบ้าง คุณจะอยู่บนทางไม่ได้รับ kickbacks จาก mailer-daemon อีกต่อไป!
Author: Andreas Lopez — https://www.linkedin.com/in/andreaslopez/
Editors: Stevan Pupavac — https://www.linkedin.com/in/stevan-pupavac/ | Frederick Alcantara — https://www.linkedin.com/in/frederick-alcantara/
Sources: 1. GoDaddy Screenshots by DMARCanalyzer.com: https://www.dmarcanalyzer.com/dmarc/dmarc-record-setup-guides/dmarc-setup-guide-godaddy/