
สรุปคำตอบ
อีเมลส่งไม่ออกคืออาการที่อีเมลขาออกถูกปลายทางปฏิเสธหรือตกไปอยู่ในจังค์ ส่วนใหญ่เกิดจากการตั้งค่า SPF, DKIM, DMARC หรือ SMTP ไม่ครบ แต่ถ้าเคยส่งได้แล้วเสียกะทันหัน มีอีเมลค้างในคิวจำนวนมาก และข้อความเด้งกลับอ้างถึงชื่อเสียงของ IP อาจเป็นเพราะเว็บถูกฝัง Spam Mailer ซึ่งใช้เซิร์ฟเวอร์ของคุณส่งสแปมจน IP ติด blacklist วิธีแก้คือหยุดการส่ง ลบสคริปต์และ Backdoor ปิดช่องโหว่ แล้วจึงขอถอดรายการกับ Spamhaus ซึ่งไม่มีค่าธรรมเนียม
อีเมลส่งไม่ออก หมายถึงอาการที่อีเมลขาออกของบริษัทถูกเซิร์ฟเวอร์ปลายทางปฏิเสธ (เด้งกลับพร้อมรหัสข้อผิดพลาด) หรือส่งถึงแต่ไปตกอยู่ในโฟลเดอร์สแปม (จังค์) สาเหตุมีได้ทั้งการตั้งค่าที่ไม่ครบ และกรณีที่ร้ายแรงกว่า คือเว็บไซต์ถูกเจาะแล้วถูกฝังสคริปต์ส่งอีเมลจำนวนมาก ที่เรียกว่า Spam Mailer ทำให้ IP ของเซิร์ฟเวอร์หรือชื่อโดเมนเสียชื่อเสียงจนติด blacklist และอีเมลปกติของบริษัทได้รับผลกระทบไปด้วย
Spam Mailer เป็นหนึ่งในประเภทของ มัลแวร์เว็บไซต์ ที่เจ้าของเว็บมักไม่เห็นจากหน้าเว็บเลย เพราะหน้าเว็บยังแสดงผลปกติ สิ่งที่เห็นมีเพียงผลกระทบทางอีเมล หัวข้อด้านล่างอธิบายวิธีแยกสองกรณีออกจากกัน วิธีตรวจว่าติด blacklist หรือไม่ วิธีหาสคริปต์ต้นเหตุ และมาตรฐานการยืนยันตัวตนอีเมล (SPF, DKIM, DMARC) ว่าช่วยอะไรได้และช่วยอะไรไม่ได้
อีเมลส่งไม่ออก ส่วนใหญ่ไม่ได้เกิดจากเว็บโดนแฮก
จากเคสที่เราแก้ อาการอีเมลส่งไม่ออกส่วนใหญ่เกิดจากการตั้งค่า ไม่ใช่มัลแวร์ เช่น ไม่ได้ตั้งระเบียน SPF หรือ DKIM ของโดเมน เว็บส่งอีเมลผ่านฟังก์ชัน PHP โดยไม่ผ่าน SMTP ที่ยืนยันตัวตน หรือชื่อผู้ส่งไม่ตรงกับโดเมนที่ส่งจริง ปัจจุบันผู้ให้บริการรายใหญ่เข้มงวดเรื่องนี้มากขึ้น ตัวอย่างเช่น แนวทางผู้ส่งอีเมลของ Gmail กำหนดให้ผู้ส่งทุกรายต้องตั้ง SPF หรือ DKIM ตั้งแต่วันที่ 1 กุมภาพันธ์ 2024 และ หน้าคำถามที่พบบ่อยของ Google ระบุว่าตั้งแต่พฤศจิกายน 2025 Gmail เพิ่มการบังคับใช้กับอีเมลที่ไม่เป็นไปตามข้อกำหนด ซึ่งอาจถูกปฏิเสธชั่วคราวหรือถาวร
ถ้าปัญหาคืออีเมลแจ้งคำสั่งซื้อหรืออีเมลจากฟอร์มของเว็บไม่ถึงลูกค้า ให้เริ่มจากบทความ WooCommerce Email ไม่ส่ง เกิดจากอะไร แก้ยังไง ก่อน บทความนี้ครอบคลุมเฉพาะกรณีที่สัญญาณชี้ว่าเซิร์ฟเวอร์ถูกใช้ส่งสแปม
| สัญญาณ | มีแนวโน้มเป็นปัญหาการตั้งค่า | มีแนวโน้มเป็น Spam Mailer |
|---|---|---|
| ช่วงเวลาที่เริ่มเป็น | เป็นมาตั้งแต่เปิดเว็บ หรือหลังย้ายโฮสต์หรือเปลี่ยน DNS | เคยส่งได้ปกติ แล้วเสียพร้อมกันทุกปลายทางอย่างกะทันหัน |
| ข้อความที่เด้งกลับ | ระบุว่าไม่ผ่านการยืนยันตัวตน SPF/DKIM/DMARC | ระบุว่าชื่อเสียงของ IP ต่ำ มีปริมาณสแปมผิดปกติ หรืออ้างถึง blacklist |
| คิวอีเมลบนเซิร์ฟเวอร์ | จำนวนน้อย สอดคล้องกับการใช้งานจริง | มีอีเมลค้างหลักพันถึงหลักหมื่นฉบับ ไปยังผู้รับที่ไม่รู้จัก |
| อีเมลเด้งกลับที่ได้รับ | เป็นอีเมลที่บริษัทส่งเอง | มีอีเมลเด้งกลับจำนวนมากของข้อความที่ไม่มีใครในบริษัทส่ง |
| การแจ้งจากโฮสต์ | ไม่มี | โฮสต์แจ้งว่าบัญชีส่งสแปม จำกัดการส่ง หรือระงับบัญชี |
Spam Mailer คืออะไร
Spam Mailer คือสคริปต์ (บนเว็บ WordPress มักเป็นไฟล์ PHP) ที่ผู้โจมตีนำไปวางไว้บนเว็บไซต์ที่เจาะได้แล้ว เพื่อสั่งให้เซิร์ฟเวอร์ของเหยื่อส่งอีเมลจำนวนมากแทนตน Sucuri อธิบายเครื่องมือชื่อ Leaf PHPMailer ไว้ใน บทความปี 2021 ว่าเป็นเครื่องมือแฮกที่ให้ผู้โจมตีส่งอีเมลสแปมปริมาณมากจากเว็บเซิร์ฟเวอร์ของเว็บที่ถูกเจาะ ผู้ใช้กรอกรายชื่อผู้รับ ชื่อผู้ส่งปลอม หัวข้อ และเนื้อหาได้เอง และมีฟังก์ชันตรวจว่าเซิร์ฟเวอร์ติด blacklist แล้วหรือยัง
เนื้อหาที่ส่งมักเป็นอีเมลหลอกลวง (Phishing) ที่แอบอ้างแบรนด์ที่คนรู้จัก หรือโฆษณาสินค้าผิดกฎหมาย ในหลายกรณีลิงก์ในอีเมลชี้ไปยังหน้า Phishing ที่ถูกฝังไว้บนเว็บเดียวกันหรือเว็บอื่นที่ถูกเจาะ อ่านเพิ่มเติมได้ที่ เว็บโดนฝังหน้า Phishing คืออะไร
ทำไมเว็บถูกใช้ส่งสแปม
สำหรับผู้โจมตี เว็บไซต์ที่ถูกเจาะคือแหล่งส่งอีเมลที่ไม่ต้องเสียค่าใช้จ่ายและไม่ผูกกับตัวตนของตน เซิร์ฟเวอร์ของเว็บที่ใช้งานมานานมักยังมีชื่อเสียงของ IP ดีกว่า IP ใหม่ที่ผู้โจมตีเช่าเอง และเมื่อ IP นั้นติด blacklist ผู้โจมตีก็เพียงย้ายไปใช้เว็บที่ถูกเจาะเว็บถัดไป ผลเสียทั้งหมดตกอยู่กับเจ้าของเว็บ
เส้นทางที่สคริปต์เข้ามาในเว็บไม่ต่างจากมัลแวร์ประเภทอื่น ได้แก่ ช่องโหว่ใน Plugin หรือ Theme ที่ไม่ได้อัปเดต รหัสผ่านที่ถูกเดาหรือรั่ว และ Backdoor ที่ค้างอยู่จากการเจาะครั้งก่อน Spam Mailer จำนวนมากถูกอัปโหลดผ่าน Web Shell ที่ผู้โจมตีวางไว้แล้ว ดังนั้นการลบไฟล์ส่งเมลเพียงไฟล์เดียวมักไม่จบปัญหา (ดูหัวข้อวิธีกำจัดด้านล่าง)
ผลกระทบต่ออีเมลบริษัทเกิดขึ้นเมื่อเว็บและอีเมลใช้เซิร์ฟเวอร์หรือ IP เดียวกัน ซึ่งพบบ่อยในโฮสติ้งที่ให้ทั้งเว็บและอีเมลในแพ็กเกจเดียว เอกสาร FAQ My site was hacked ของ WordPress.org ระบุว่าเมื่อเว็บถูกใช้ส่งสแปม หน่วยงาน blacklist จะติดธง IP ของเว็บ และ IP นั้นมักเป็นเซิร์ฟเวอร์เดียวกับที่ใช้ส่งอีเมล เอกสารเดียวกันจึงแนะนำให้พิจารณาใช้ผู้ให้บริการอีเมลแยกต่างหากสำหรับธุรกิจ
อาการที่เจอ: อีเมลเด้งกลับ เข้าจังค์ และโฮสต์แจ้งเตือน
อาการมักปรากฏเป็นชุด ไม่ได้เกิดเพียงอย่างเดียว
- อีเมลเด้งกลับพร้อมรหัสข้อผิดพลาด เซิร์ฟเวอร์ปลายทางตอบกลับด้วยรหัส SMTP ซึ่งบอกสาเหตุได้ เช่น รายการรหัสข้อผิดพลาดของ Gmail มีรหัส
550 5.7.1ที่ระบุว่าข้อความถูกบล็อกเพราะชื่อเสียงของ IP ผู้ส่งต่ำมาก และรหัส421 4.7.28ที่ระบุว่า Gmail ตรวจพบอีเมลไม่พึงประสงค์จาก IP นั้นในอัตราผิดปกติและจำกัดอัตราการส่งชั่วคราว ส่วนรหัส550 5.7.26ซึ่งระบุว่าผู้ส่งไม่ผ่านการยืนยันตัวตน มักชี้ไปที่ปัญหาการตั้งค่ามากกว่า - อีเมลถึงผู้รับแต่เข้าจังค์ เป็นอาการช่วงแรกก่อนจะถูกปฏิเสธทั้งหมด หน้าคำถามที่พบบ่อยของ Google ระบุว่าอีเมลที่ไม่เป็นไปตามข้อกำหนดอาจถูกปฏิเสธหรือถูกส่งเข้าโฟลเดอร์สแปม
- ได้รับอีเมลเด้งกลับของข้อความที่ไม่ได้ส่ง กล่องอีเมลของโดเมนเต็มไปด้วยรายงานการส่งไม่สำเร็จ (bounce) ไปยังที่อยู่แปลกๆ ซึ่งเป็นผลจากสคริปต์ที่ใช้ชื่อโดเมนของคุณเป็นผู้ส่ง
- โฮสต์แจ้งเตือนหรือจำกัดการใช้งาน โฮสต์อาจจำกัดจำนวนอีเมลต่อชั่วโมง ปิดฟังก์ชันส่งอีเมล หรือระงับบัญชีชั่วคราว ดูแนวทางรับมือได้ที่ Hosting แจ้งพบ Malware บน WordPress ต้องทำอย่างไร
- เว็บช้าลงในบางช่วง เพราะการส่งอีเมลจำนวนมากใช้ทรัพยากรของเซิร์ฟเวอร์ อาการนี้ไม่เฉพาะเจาะจง ต้องดูร่วมกับอาการอื่น
วิธีเช็คว่า IP/โดเมนติด blacklist
Blacklist (หรือที่ผู้ให้บริการบางรายเรียกว่า blocklist) คือฐานข้อมูล IP หรือโดเมนที่ระบบรับอีเมลใช้ประกอบการตัดสินว่าจะรับอีเมลหรือไม่ ผู้ให้บริการรายใหญ่ที่ระบบอีเมลทั่วโลกอ้างอิงคือ Spamhaus ซึ่งแยกรายการไว้หลายชุดตามลักษณะปัญหา
| รายการของ Spamhaus | ความหมายตามที่ Spamhaus อธิบาย | เกี่ยวข้องกับเว็บที่ถูกฝัง Spam Mailer อย่างไร |
|---|---|---|
| SBL (Spamhaus Blocklist) | ฐานข้อมูล IP ของแหล่งสแปม ผู้ส่งสแปม และบริการที่สนับสนุนการส่งสแปม (Spamhaus SBL) | IP ที่ส่งสแปมต่อเนื่องอาจถูกรวมในรายการนี้ |
| XBL (Exploits Blocklist) | IP ที่แสดงสัญญาณว่าอุปกรณ์ถูกเจาะ เช่น มีมัลแวร์ หรือมีช่องโหว่ที่ถูกใช้ทำกิจกรรมอันตราย (Spamhaus XBL) | ตรงกับลักษณะเซิร์ฟเวอร์ที่ถูกเจาะแล้วนำไปใช้ส่งอีเมล |
| DBL (Domain Blocklist) | โดเมนที่มีชื่อเสียงต่ำ | โดเมนที่ปรากฏในลิงก์ของอีเมลสแปม เช่น โดเมนที่มีหน้า Phishing ฝังอยู่ |
| ZEN | รายการรวมของ SBL, XBL และ PBL เพื่อให้ตรวจสอบได้ในครั้งเดียว | เป็นรายการที่ระบบรับอีเมลจำนวนมากเลือกใช้ |
วิธีตรวจสอบมีดังนี้
- หา IP ที่ส่งอีเมลจริง ดูจากส่วนหัวของอีเมลที่ส่งออก ใน Gmail เปิดอีเมลแล้วเลือกเมนู More > Show original ตาม วิธีดูส่วนหัวแบบเต็มของ Google แล้วดูบรรทัด
Received:ล่างสุดที่มาจากเซิร์ฟเวอร์ของคุณ และบรรทัดAuthentication-Resultsที่บอกผล SPF, DKIM และ DMARC - ตรวจ IP และโดเมนกับ Spamhaus ใช้ IP and Domain Reputation Checker ที่
check.spamhaus.orgซึ่งหน้า XBL ของ Spamhaus ระบุว่าเป็นที่เดียวที่ใช้จัดการการถอดรายการ XBL - ตรวจชื่อเสียงฝั่ง Gmail ถ้าส่งอีเมลถึงผู้ใช้ Gmail เป็นประจำ ลงทะเบียนโดเมนกับ Postmaster Tools ซึ่ง หน้าวิธีตั้งค่าของ Google ระบุว่าแดชบอร์ดแสดงอัตราสแปม ชื่อเสียง การยืนยันตัวตน และข้อผิดพลาดในการส่ง
- ถามโฮสต์ ว่า IP ขาออกของบัญชีคุณคืออะไร ใช้ร่วมกับลูกค้ารายอื่นหรือไม่ และพบปริมาณอีเมลผิดปกติหรือไม่ เพราะในโฮสต์แบบแชร์ IP อาจติด blacklist เพราะบัญชีอื่นบนเซิร์ฟเวอร์เดียวกัน
ตัวอย่าง Spam Mailer และคำสั่งตรวจสอบ
ตัวอย่างในหัวข้อนี้ตัดส่วนที่ทำงานได้ออกแล้ว และเปลี่ยนโดเมนเป็นโดเมนสมมติ .example ใช้เพื่อให้จำหน้าตาได้เวลาเจอในเว็บของคุณเท่านั้น
1. สคริปต์ส่งเมลที่ถูกวางไว้ในโฟลเดอร์ uploads
<?php
// wp-content/uploads/2026/07/thumb-cache.php
if (isset($_POST['lst'])) {
$list = explode("\n", base64_decode($_POST['lst'])); // รายชื่อผู้รับส่งมาจากผู้โจมตี
$subj = $_POST['s'];
$body = base64_decode($_POST['b']);
$head = "From: \"Account Support\" <no-reply@bank.example>\r\n"
. "Content-Type: text/html; charset=UTF-8\r\n"; // ปลอมชื่อผู้ส่ง
foreach ($list as $to) {
// … (ส่วนที่สั่งส่งจริงถูกตัดออก)
}
echo 'ok:' . count($list);
}
จุดสังเกต: ไฟล์ PHP ในโฟลเดอร์ uploads รับรายชื่อผู้รับ หัวข้อ และเนื้อหาจากคำขอ POST ทั้งหมด ไม่มีส่วนใดเกี่ยวกับรูปภาพแม้ชื่อไฟล์จะตั้งให้ดูเหมือนแคชรูป และตั้งชื่อผู้ส่งเป็นองค์กรอื่นที่ไม่ใช่คุณ
มักซ่อนอยู่ที่: โฟลเดอร์ปีและเดือนใน wp-content/uploads, โฟลเดอร์ของ Plugin ที่ปิดใช้งานแล้ว หรือไฟล์ที่ตั้งชื่อเลียนแบบไฟล์ของ WordPress เช่น wp-mail-cache.php
2. ดูจำนวนอีเมลที่ค้างอยู่ในคิวของเซิร์ฟเวอร์
# เซิร์ฟเวอร์ที่ใช้ Exim (พบบ่อยใน cPanel) ต้องใช้สิทธิ์ผู้ดูแลระบบ
exim -bpc # นับจำนวนอีเมลในคิว
exim -bp | head -40 # ดูรายการในคิว ผู้ส่ง และผู้รับ
# เซิร์ฟเวอร์ที่ใช้ Postfix
postqueue -p | head -40
ตาม เอกสารของ Exim ตัวเลือก -bpc นับจำนวนอีเมลในคิว ส่วน -bp แสดงรายการในคิว และตาม คู่มือ postqueue ของ Postfix ตัวเลือก -p แสดงรายการคิวแบบเดียวกับคำสั่ง mailq พร้อมผู้ส่งและผู้รับที่ยังส่งไม่สำเร็จ
ถ้าใช้โฮสติ้งแบบแชร์และไม่มีสิทธิ์เข้าเซิร์ฟเวอร์ ให้ขอให้โฮสต์ตรวจคิวและบันทึกการส่งอีเมลของบัญชีคุณแทน
3. หาไฟล์ที่ส่งอีเมลได้ในตำแหน่งที่ไม่ควรมี
# ไฟล์ PHP ในโฟลเดอร์ uploads (โดยปกติโฟลเดอร์นี้เก็บไฟล์สื่อ ไม่ใช่โค้ด)
find wp-content/uploads -type f -name "*.php"
# ไฟล์ที่เรียกฟังก์ชันส่งอีเมลหรือเปิดการเชื่อมต่อเครือข่ายเอง
grep -rlE "mail[[:space:]]*\(|fsockopen|PHPMailer" wp-content/uploads
# ไฟล์ PHP ที่ถูกแก้ไขภายใน 14 วันที่ผ่านมา
find . -type f -name "*.php" -mtime -14
Plugin ที่ถูกต้องบางตัวก็เรียกฟังก์ชันส่งอีเมล ผลลัพธ์จาก wp-content/plugins จึงต้องตรวจทีละไฟล์ แต่ไฟล์ PHP ที่ส่งอีเมลได้ในโฟลเดอร์ uploads ควรถือว่าผิดปกติ ดูวิธีไล่ตรวจไฟล์เพิ่มเติมได้ที่ วิธีเช็กไฟล์แปลกปลอมใน WordPress เบื้องต้น
4. ให้ PHP บอกว่าอีเมลถูกส่งจากไฟล์ใด
; php.ini หรือการตั้งค่า PHP ของโฮสต์
mail.add_x_header = On
mail.log = /home/USER/logs/php-mail.log
ตาม คู่มือการตั้งค่าอีเมลของ PHP ค่า mail.add_x_header จะเพิ่มส่วนหัว X-PHP-Originating-Script ซึ่งมี UID และชื่อไฟล์ของสคริปต์ที่สั่งส่ง ส่วน mail.log บันทึกทุกการเรียก mail() พร้อมพาธเต็มของสคริปต์ หมายเลขบรรทัด และผู้รับ เมื่อได้อีเมลเด้งกลับฉบับใหม่ ให้เปิดดูส่วนหัวของข้อความต้นฉบับเพื่อหาชื่อไฟล์นี้
วิธีกำจัดและขอถอดออกจาก blacklist
ลำดับขั้นมีความสำคัญ ถ้าขอถอดรายการก่อนหยุดต้นเหตุ IP จะกลับไปติดรายการอีกในเวลาไม่นาน
- หยุดการส่งก่อน ขอให้โฮสต์ระงับการส่งอีเมลขาออกของบัญชีชั่วคราว หรือเปลี่ยนชื่อไฟล์สคริปต์ที่พบให้ทำงานไม่ได้ แล้วล้างคิวอีเมลสแปมที่ค้างอยู่ (เก็บตัวอย่างไว้ก่อนสักชุดเพื่อใช้เป็นหลักฐาน)
- เก็บหลักฐาน คัดลอกไฟล์ที่พบ บันทึกการเข้าถึงเว็บ (access log) ในช่วงเวลาที่เริ่มส่ง และส่วนหัวของอีเมลเด้งกลับ บันทึกการเข้าถึงมักแสดงคำขอ POST ไปยังไฟล์สคริปต์จาก IP ภายนอก ซึ่งช่วยระบุช่วงเวลาที่เริ่มถูกเจาะ
- หาช่องทางที่ผู้โจมตีใช้วางไฟล์ ตรวจหา Web Shell และ Backdoor ทั้งเว็บ ไม่ใช่เฉพาะไฟล์ส่งเมล ดูวิธีได้ที่ Backdoor ใน WordPress คืออะไร ทำไมล้างไวรัสแล้วกลับมาติดซ้ำ แล้วอัปเดตหรือลบ Plugin และ Theme ที่มีช่องโหว่
- เปลี่ยนรหัสผ่านทุกช่องทาง ได้แก่ ผู้ดูแล WordPress, แผงควบคุมโฮสต์, FTP/SFTP, ฐานข้อมูล และบัญชีอีเมลของโดเมน เอกสารของ WordPress.org แนะนำให้เปลี่ยนรหัสผ่านอีกครั้งหลังยืนยันว่าเว็บสะอาดแล้ว
- ขอถอดรายการ สำหรับ XBL Spamhaus ระบุว่าให้ดำเนินการผ่าน IP and Domain Reputation Checker และรายการ XBL จะหมดอายุเองหลังจากไม่พบพฤติกรรมอันตรายแล้วระยะหนึ่ง สำหรับ SBL Spamhaus ระบุว่ามีเพียง ISP ผู้รับผิดชอบ IP เท่านั้นที่ขอถอดรายการได้ เจ้าของเว็บจึงต้องแก้ปัญหาแล้วติดต่อฝ่าย abuse ของโฮสต์ให้ยื่นคำขอแทน และ Spamhaus ระบุชัดว่าไม่มีการเก็บค่าธรรมเนียมใดๆ ในการถอดรายการ ถ้ามีผู้เสนอให้จ่ายเงินเพื่อถอดรายการ ให้ถือว่าเป็นการหลอกลวง
- เฝ้าดูชื่อเสียงหลังแก้ สำหรับผู้ส่งจำนวนมาก หน้าคำถามที่พบบ่อยของ Google ระบุว่าตั้งแต่มิถุนายน 2024 ผู้ส่งที่มีอัตราสแปมที่ผู้ใช้รายงานเกิน 0.3% จะไม่มีสิทธิ์ได้รับการผ่อนผัน (mitigation) จนกว่าอัตราจะต่ำกว่า 0.3% ต่อเนื่อง 7 วัน ชื่อเสียงของ IP และโดเมนจึงต้องใช้เวลาฟื้นตัว ไม่ได้กลับมาทันทีที่ลบไฟล์
ขั้นตอนกู้เว็บทั้งหมดตั้งแต่ต้นจนจบ (สำรองข้อมูล ล้างไฟล์ เปลี่ยนรหัสผ่าน ตรวจซ้ำ) อธิบายไว้ในบทความ เว็บ WordPress โดนแฮก ต้องทำอะไรก่อน
วิธีป้องกัน: SPF, DKIM, DMARC และการจำกัดฟังก์ชันส่งเมล
การป้องกันแบ่งเป็นสองส่วนที่ทำหน้าที่ต่างกัน ส่วนแรกคือมาตรฐานการยืนยันตัวตนอีเมล ซึ่งช่วยให้ผู้รับตรวจได้ว่าอีเมลที่อ้างชื่อโดเมนของคุณมาจากแหล่งที่คุณอนุญาตจริง ส่วนที่สองคือการปิดช่องทางไม่ให้เซิร์ฟเวอร์ของคุณถูกใช้ส่งอีเมลตั้งแต่แรก
มาตรฐานการยืนยันตัวตนอีเมล
| มาตรฐาน | หน้าที่ | เอกสารอ้างอิง |
|---|---|---|
| SPF | ให้เจ้าของโดเมนระบุอย่างชัดเจนว่าเครื่องใดได้รับอนุญาตให้ใช้ชื่อโดเมนนั้นส่งอีเมล | RFC 7208 (เมษายน 2014, Standards Track) |
| DKIM | ให้เจ้าของโดเมนผู้ลงลายมือชื่อแสดงความรับผิดชอบต่อข้อความ ด้วยการผูกโดเมนเข้ากับข้อความผ่านลายมือชื่อดิจิทัล | RFC 6376 (กันยายน 2011, STD 76) |
| DMARC | ให้เจ้าของโดเมนประกาศนโยบายว่าผู้รับควรจัดการอีเมลที่ไม่ผ่านการตรวจอย่างไร (p=none, quarantine, reject) และขอรับรายงานการใช้งานโดเมน |
RFC 9989 (พฤษภาคม 2026) ซึ่งแทนที่ RFC 7489 (มีนาคม 2015) |
ณ ตุลาคม 2026 แนวทางผู้ส่งอีเมลของ Gmail กำหนดให้ผู้ส่งทุกรายตั้ง SPF หรือ DKIM มีระเบียน DNS แบบไปและกลับ (PTR) ที่ถูกต้อง ส่งผ่าน TLS และรักษาอัตราสแปมใน Postmaster Tools ให้ต่ำกว่า 0.3% ส่วนผู้ส่งมากกว่า 5,000 ฉบับต่อวันต้องตั้งทั้ง SPF และ DKIM ตั้ง DMARC (นโยบายเป็น none ได้) โดเมนในช่อง From ต้องสอดคล้องกับโดเมนของ SPF หรือ DKIM และอีเมลการตลาดต้องรองรับการยกเลิกรับแบบคลิกเดียว
ข้อควรเข้าใจคือ SPF, DKIM และ DMARC ไม่ได้ป้องกันการถูกฝัง Spam Mailer ถ้าสคริปต์ส่งอีเมลออกจากเซิร์ฟเวอร์ที่คุณอนุญาตไว้ใน SPF เอง อีเมลสแปมนั้นอาจผ่านการตรวจ SPF ด้วยซ้ำ มาตรฐานเหล่านี้ช่วยป้องกันคนอื่นปลอมชื่อโดเมนของคุณจากที่อื่น และช่วยให้ผู้รับประเมินชื่อเสียงของโดเมนได้แม่นยำขึ้น ประโยชน์ที่ช่วยเรื่อง Spam Mailer ได้โดยตรงคือรายงานรวม (aggregate report) ที่กำหนดด้วยแท็ก rua ใน DMARC ซึ่งแสดงว่ามีแหล่งใดส่งอีเมลในนามโดเมนของคุณบ้าง ถ้ารายงานแสดงปริมาณจาก IP ของเว็บสูงผิดปกติ ก็เป็นสัญญาณให้ตรวจเว็บทันที
จำกัดช่องทางส่งอีเมลของเว็บ
- ส่งอีเมลของเว็บผ่าน SMTP ที่ยืนยันตัวตน ฟังก์ชัน wp_mail() ของ WordPress ทำงานผ่านไลบรารี PHPMailer และโดยค่าเริ่มต้นส่งแบบเดียวกับฟังก์ชัน mail ของ PHP การตั้งค่าให้ส่งผ่านผู้ให้บริการ SMTP ที่ยืนยันตัวตนทำให้ควบคุมและตรวจสอบการส่งได้ง่ายขึ้น
- ปิดฟังก์ชัน mail() ของ PHP เมื่อไม่ได้ใช้ ผ่านค่า
disable_functionsใน การตั้งค่าหลักของ PHP ซึ่งตั้งได้ในระดับระบบเท่านั้น จึงต้องให้โฮสต์ช่วย และต้องตั้ง SMTP ให้เว็บก่อน มิฉะนั้นอีเมลแจ้งคำสั่งซื้อจะหยุดส่งไปด้วย - แยกอีเมลบริษัทออกจากเซิร์ฟเวอร์เว็บ เมื่ออีเมลบริษัทใช้ผู้ให้บริการแยก การที่ IP ของเว็บติด blacklist จะไม่ทำให้อีเมลพนักงานส่งไม่ออกไปด้วย
- ขอให้โฮสต์ตั้งเพดานจำนวนอีเมลต่อชั่วโมง และแจ้งเตือนเมื่อเกิน เพื่อให้รู้ตัวภายในไม่กี่ชั่วโมงแทนที่จะรู้จากลูกค้า
- ปิดช่องทางที่ผู้โจมตีใช้เข้ามา อัปเดต Plugin และ Theme สม่ำเสมอ ตั้ง สิทธิ์ไฟล์ (File Permission) ให้ถูกต้อง และป้องกันไม่ให้ไฟล์ PHP ในโฟลเดอร์ uploads ทำงาน ดูรายการมาตรการทั้งหมดได้ที่ วิธีป้องกัน WordPress โดนแฮก
ถ้าพบสคริปต์ส่งเมลแล้วไม่แน่ใจว่าล้างครบหรือยัง หรือ IP ยังกลับไปติดรายการซ้ำ WP Doctor Thailand มีบริการ ล้างไวรัสและมัลแวร์ WordPress ที่ครอบคลุมการหาช่องทางที่ถูกเจาะและ Backdoor ที่ค้างอยู่ นอกจาก Spam Mailer แล้ว มัลแวร์อีกประเภทที่ทำให้เจ้าของเว็บรู้ตัวทันทีคือการ ถูกแฮกเปลี่ยนหน้าแรก (Defacement)
คำถามที่พบบ่อย
อีเมลส่งไม่ออกแปลว่าเว็บโดนแฮกเสมอหรือไม่?
ไม่ใช่ สาเหตุส่วนใหญ่คือการตั้งค่า SPF, DKIM, DMARC หรือ SMTP ไม่ครบ ควรสงสัยว่าเป็น Spam Mailer เมื่อเคยส่งได้ปกติแล้วเสียกะทันหัน มีอีเมลค้างในคิวจำนวนมาก หรือข้อความเด้งกลับอ้างถึงชื่อเสียงของ IP และ blacklist
Spam Mailer คืออะไร?
คือสคริปต์ที่ผู้โจมตีวางไว้บนเว็บที่เจาะได้ เพื่อสั่งให้เซิร์ฟเวอร์ของเว็บนั้นส่งอีเมลสแปมหรืออีเมลหลอกลวงจำนวนมากแทนผู้โจมตี ทำให้ IP และโดเมนของเจ้าของเว็บเสียชื่อเสียง
IP ติด blacklist ของ Spamhaus ต้องเสียเงินเพื่อถอดออกไหม?
ไม่ต้อง Spamhaus ระบุว่าไม่มีการเก็บค่าธรรมเนียมใดๆ ในการถอดรายการ รายการ XBL ขอถอดผ่าน IP and Domain Reputation Checker ได้ ส่วนรายการ SBL ต้องให้ ISP หรือโฮสต์เป็นผู้ยื่นคำขอหลังแก้ปัญหาแล้ว
ตั้ง SPF, DKIM, DMARC ครบแล้ว ยังโดนส่งสแปมได้อีกหรือไม่?
ได้ เพราะมาตรฐานเหล่านี้ยืนยันว่าอีเมลมาจากเซิร์ฟเวอร์ที่ได้รับอนุญาต ถ้าสคริปต์ส่งจากเซิร์ฟเวอร์ของคุณเอง อีเมลอาจผ่านการตรวจด้วย สิ่งที่ป้องกันได้จริงคือปิดช่องโหว่ ลบ Backdoor และจำกัดการส่งอีเมลของเว็บ
ลบไฟล์ส่งเมลแล้ว ทำไมไม่กี่วันก็กลับมาอีก?
เพราะผู้โจมตีมักวางไฟล์ส่งเมลผ่าน Web Shell หรือ Backdoor ที่ยังอยู่ในเว็บ ต้องหาและปิดช่องทางนั้นด้วย อ่านวิธีได้ที่ บทความเรื่อง Backdoor
หลังแก้แล้ว อีเมลจะกลับมาเข้ากล่องจดหมายปกติเมื่อไร?
ขึ้นกับแต่ละผู้ให้บริการ รายการ XBL หมดอายุเองเมื่อไม่พบพฤติกรรมอันตรายแล้วระยะหนึ่ง ส่วน Gmail ระบุว่าผู้ส่งจำนวนมากต้องรักษาอัตราสแปมให้ต่ำกว่า 0.3% ต่อเนื่อง 7 วันจึงกลับมามีสิทธิ์ได้รับการผ่อนผัน จึงควรติดตามผ่าน Postmaster Tools
แหล่งอ้างอิง
- Google. (ม.ป.ป.). Email sender guidelines. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/mail/answer/81126
- Google. (ม.ป.ป.). Email sender guidelines FAQ. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/mail/answer/14229414
- Google. (ม.ป.ป.). Gmail SMTP errors and codes. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://knowledge.workspace.google.com/admin/support/troubleshooting/gmail-smtp-errors-and-codes
- Google. (ม.ป.ป.). Trace an email with its full header. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/mail/answer/29436
- Google. (ม.ป.ป.). Set up and use Postmaster Tools. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/mail/answer/9981691
- Spamhaus. (ม.ป.ป.). Spamhaus Blocklist (SBL). สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.spamhaus.org/blocklists/spamhaus-blocklist/
- Spamhaus. (ม.ป.ป.). Exploits Blocklist (XBL). สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.spamhaus.org/blocklists/exploits-blocklist/
- Kitterman, S. (2014). RFC 7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1. IETF. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://datatracker.ietf.org/doc/html/rfc7208
- Crocker, D., Hansen, T., & Kucherawy, M. (Eds.). (2011). RFC 6376: DomainKeys Identified Mail (DKIM) Signatures. IETF. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://datatracker.ietf.org/doc/html/rfc6376
- IETF. (2026). RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC). สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://datatracker.ietf.org/doc/html/rfc9989
- Kucherawy, M., & Zwicky, E. (Eds.). (2015). RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC). IETF. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://datatracker.ietf.org/doc/html/rfc7489
- WordPress.org. (2018, ปรับปรุง 2026). FAQ My site was hacked. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://wordpress.org/documentation/article/faq-my-site-was-hacked/
- Leal, L. (2021). Phishing & Malspam with Leaf PHPMailer. Sucuri Blog. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://blog.sucuri.net/2021/01/phishing-malspam-with-leaf-phpmailer.html
- The PHP Group. (ม.ป.ป.). Mail: Runtime Configuration. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.php.net/manual/en/mail.configuration.php
- The PHP Group. (ม.ป.ป.). Description of core php.ini directives. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.php.net/manual/en/ini.core.php
- WordPress.org. (ม.ป.ป.). wp_mail() – Function. WordPress Developer Resources. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developer.wordpress.org/reference/functions/wp_mail/
- Exim. (ม.ป.ป.). The Exim command line. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html
- Postfix. (ม.ป.ป.). postqueue(1). สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://www.postfix.org/postqueue.1.html
