คำตอบสั้น ๆ: เปิด DKIM ให้โดเมนขององค์กรบน Microsoft 365 สร้างคีย์ใน Defender portal เพิ่ม CNAME selector1 และ selector2 ตรวจผล dkim=pass จาก header และหมุนเวียนคีย์
คู่มือนี้อธิบาย DKIM ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
DKIM (DomainKeys Identified Mail) คือการแนบลายเซ็นดิจิทัลไปกับอีเมลขาออกทุกฉบับ ให้เซิร์ฟเวอร์ปลายทางตรวจได้ว่าอีเมลมาจากโดเมนของคุณจริงและไม่ถูกแก้ระหว่างทาง ปัจจุบัน Exchange Online ยังไม่ลงลายเซ็นด้วยโดเมนของคุณเอง (custom domain) ให้อัตโนมัติ ผู้ดูแลต้องสร้างคีย์ เพิ่ม CNAME สองรายการ แล้วเปิดใช้งานเอง
ถ้าไม่เปิด อีเมลขององค์กรจะไม่มีลายเซ็นที่ตรงกับโดเมนใน From ซึ่งทำให้ DMARC ผ่านยากขึ้นและเสี่ยงเข้ากล่องสแปมของ Gmail หรือ Yahoo มากขึ้น เมื่อทำตามคู่มือนี้ครบ โดเมนของคุณจะลงลายเซ็นทุกอีเมลที่ส่งผ่าน Exchange Online ตรวจผลได้จาก header ว่า dkim=pass และรู้วิธีหมุนเวียนคีย์เป็น 2048 บิต
สิ่งที่ต้องเตรียม
- โดเมนที่เพิ่มและยืนยันใน Microsoft 365 แล้ว (Microsoft 365 admin center > Settings > Domains) ถ้ายังไม่ได้ทำ ดู ตั้งระเบียน DNS สำหรับ Google Workspace และ Microsoft 365
- สิทธิ์แก้ไข DNS ของโดเมน เช่น บัญชีผู้รับจดโดเมน Cloudflare หรือแผงควบคุม DNS ของผู้ให้บริการ
- บทบาท Security Administrator หรือ Global Administrator ใน Microsoft 365
- ระเบียน SPF ของ Microsoft 365 ที่ตั้งไว้แล้ว เช่น
v=spf1 include:spf.protection.outlook.com -all - ถ้าจะใช้ PowerShell ให้ติดตั้งโมดูล
ExchangeOnlineManagement
ลายเซ็นของ Microsoft 365 ครอบคลุมเฉพาะอีเมลที่ส่งผ่าน Exchange Online ระบบอื่นที่ส่งในนามโดเมนเดียวกัน เช่น CRM เว็บไซต์ หรือระบบจดหมายข่าว ต้องตั้งค่าลายเซ็นของระบบนั้นแยกต่างหาก
ขั้นตอนที่ 1: ตรวจสถานะ DKIM ของโดเมน
เปิด Microsoft Defender portal ที่ https://security.microsoft.com ไปที่ Email & collaboration > Policies & rules > Threat policies > Email authentication settings แล้วเลือกแท็บ DKIM หรือเข้าตรงที่ https://security.microsoft.com/authentication?viewid=DKIM
ดูคอลัมน์ Status ของโดเมน ค่า NoDKIMKeys แปลว่ายังไม่มีคีย์ CnameMissing แปลว่ามีคีย์แล้วแต่ยังหา CNAME ใน DNS ไม่เจอ และ Valid แปลว่าลงลายเซ็นอยู่แล้ว
ขั้นตอนที่ 2: สร้าง DKIM keys และคัดลอกค่า CNAME
คลิกที่แถวของโดเมน (ไม่ใช่สวิตช์) เพื่อเปิดหน้ารายละเอียด ถ้ายังไม่มีคีย์ ให้คลิก Create DKIM keys ระบบจะสร้างคีย์สองชุดและแสดงค่าในส่วน Publish CNAMEs ให้คลิก Copy แล้วเก็บไว้
ถ้าใช้ PowerShell ให้สร้างคีย์แบบ 2048 บิตตั้งแต่แรก แล้วอ่านค่า CNAME ที่ต้องเผยแพร่
Connect-ExchangeOnline -UserPrincipalName [email protected]
New-DkimSigningConfig -DomainName example.com -Enabled $false -KeySize 2048
Get-DkimSigningConfig -Identity example.com | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
คัดลอกค่าจากระบบเสมอ ห้ามเดาเอง เพราะตั้งแต่เดือนพฤษภาคม 2025 โดเมนที่เพิ่มใหม่ใช้รูปแบบปลายทางที่ลงท้ายด้วย dkim.mail.microsoft ส่วนโดเมนเก่ายังใช้รูปแบบที่ลงท้ายด้วย onmicrosoft.com และสองแบบนี้ใช้ปนกันในตัวเลือกเดียวกันไม่ได้
ขั้นตอนที่ 3: เพิ่ม CNAME สองรายการที่ผู้ให้บริการ DNS
เพิ่มระเบียน CNAME สองรายการในโซน DNS ของโดเมน โดยชื่อ Host เหมือนกันทุกองค์กร ส่วนปลายทางให้ใช้ค่าที่คัดลอกมา ตัวอย่างด้านล่างเป็นโดเมน example.com ของ tenant ที่มีโดเมนเริ่มต้น examplecorp.onmicrosoft.com
Host Type Value
selector1._domainkey CNAME selector1-example-com._domainkey.examplecorp.n-v1.dkim.mail.microsoft
selector2._domainkey CNAME selector2-example-com._domainkey.examplecorp.n-v1.dkim.mail.microsoft
แผงควบคุม DNS หลายเจ้าเติมชื่อโดเมนต่อท้ายให้อัตโนมัติ ให้กรอกช่อง Host เพียง selector1._domainkey ถ้ากรอกชื่อเต็มอาจกลายเป็น selector1._domainkey.example.com.example.com ถ้าใช้ Cloudflare ให้ตั้ง Proxy status เป็น DNS only และตั้ง TTL ตามค่าเริ่มต้นได้
ขั้นตอนที่ 4: ตรวจว่า DNS เผยแพร่แล้ว
ก่อนกลับไปเปิดใช้งาน ให้ตรวจจากเครื่องของคุณว่า CNAME ทั้งสองรายการตอบกลับถูกต้อง ใช้ PowerShell บน Windows หรือ nslookup ก็ได้
Resolve-DnsName selector1._domainkey.example.com -Type CNAME
Resolve-DnsName selector2._domainkey.example.com -Type CNAME
nslookup -type=CNAME selector1._domainkey.example.com 8.8.8.8
ค่าในช่อง NameHost ต้องตรงกับที่ระบบให้มาทุกตัวอักษร ถ้ายังไม่ขึ้นให้รอตาม TTL ของโซน ซึ่งปกติไม่เกินหนึ่งชั่วโมง