คำตอบสั้น ๆ: ตรวจว่า IP ของ Mail Server ติด Blacklist ใด หาต้นเหตุที่ทำให้ติด หยุดการส่งสแปม และยื่นขอถอดชื่อจาก Spamhaus, Barracuda และรายการอื่นอย่างถูกวิธี
คู่มือนี้อธิบาย Blacklist ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Blacklist อีเมล หรือ DNSBL (DNS-based Blackhole List) คือรายชื่อ IP และโดเมนที่ถูกบันทึกว่าส่งสแปม เซิร์ฟเวอร์ผู้รับจำนวนมากจะตรวจ IP ของผู้ส่งกับรายชื่อเหล่านี้ทุกครั้งที่มีอีเมลเข้ามา ถ้าพบ ก็จะปฏิเสธหรือส่งเข้าโฟลเดอร์ Spam อาการที่เห็นคืออีเมลตีกลับพร้อมข้อความทำนอง 550 5.7.1 Service unavailable; Client host [203.0.113.10] blocked using zen.spamhaus.org
คู่มือนี้สำหรับผู้ที่ดูแล Mail Server เองบน Cloud Server หรือ Cloud VPS (Plesk, DirectAdmin หรือ Postfix/Exim ติดตั้งเอง) ครอบคลุมการตรวจว่า IP ติดรายการใดบ้าง การหาต้นเหตุ และการยื่นขอถอดชื่อ ข้อสำคัญที่สุดคือ ต้องหยุดต้นเหตุให้ได้ก่อนยื่นขอถอด เพราะหากยังมีสแปมออกไป IP จะกลับเข้ารายการอีกในเวลาไม่นาน และบางรายการจะถอดยากขึ้นในครั้งถัดไป
สิ่งที่ต้องเตรียม (Blacklist)
- IP สาธารณะที่เซิร์ฟเวอร์ใช้ส่งอีเมล (ดูได้จาก Diagnostic-Code ในอีเมลตีกลับ หรือจากหน้าข้อมูลเซิร์ฟเวอร์)
- สิทธิ์ root หรือ
sudoบนเซิร์ฟเวอร์ เพื่อตรวจคิวและ Log - สิทธิ์เข้าแผงควบคุมของบัญชีอีเมล เพื่อเปลี่ยนรหัสผ่านบัญชีที่ถูกเจาะ
หากใช้อีเมลบน Web Hosting แบบแชร์ หรือ Microsoft 365 / Google Workspace คุณไม่ได้เป็นเจ้าของ IP ผู้ส่ง ให้ส่งข้อความตีกลับมาให้ผู้ให้บริการตรวจสอบแทน
ขั้นตอนที่ 1: ตรวจว่า IP ติด Blacklist ใดบ้าง
วิธีที่ง่ายที่สุดคือใช้เว็บตรวจหลายรายการพร้อมกัน เช่น MXToolbox Blacklist Check (mxtoolbox.com/blacklists.aspx) หรือ multirbl.valli.org กรอก IP แล้วดูว่ารายการใดขึ้นว่า Listed จากนั้นตรวจรายการใหญ่โดยตรงด้วยเครื่องมือของเจ้าของรายการ เช่น Spamhaus IP and Domain Reputation Checker ที่ check.spamhaus.org ซึ่งจะบอกเหตุผลที่ติดด้วย
ตรวจจากบรรทัดคำสั่งก็ได้ โดยกลับลำดับตัวเลขของ IP แล้วต่อด้วยชื่อ DNSBL ตัวอย่าง IP 203.0.113.10 จะกลายเป็น 10.113.0.203
dig +short 10.113.0.203.zen.spamhaus.org
dig +short 10.113.0.203.b.barracudacentral.org
dig +short 10.113.0.203.bl.spamcop.net
ถ้าไม่มีผลลัพธ์ แปลว่าไม่ติดรายการนั้น ถ้าได้ค่าในรูป 127.0.0.x แปลว่าติด สำหรับ Spamhaus ZEN ค่าที่ได้บอกประเภทของรายการ
| ค่าที่ได้ | รายการ | ความหมายโดยย่อ |
|---|---|---|
127.0.0.2 | SBL | แหล่งสแปมที่ Spamhaus ตรวจยืนยันแล้ว |
127.0.0.3 | CSS | IP ที่ส่งอีเมลลักษณะสแปมหรือตั้งค่าไม่ถูกต้อง เช่น HELO ไม่ตรง |
127.0.0.4-127.0.0.7 | XBL | เครื่องที่ติดมัลแวร์หรือถูกใช้เป็น Proxy/Bot |
127.0.0.10, 127.0.0.11 | PBL | ช่วง IP ที่เจ้าของเครือข่ายระบุว่าไม่ควรส่งอีเมลตรง |
127.255.255.x | ไม่ใช่การติดรายการ | การสอบถามถูกปฏิเสธ มักเพราะถามผ่าน Public DNS |
หมายเหตุ: Spamhaus ไม่ตอบคำถามที่มาจาก Public DNS Resolver เช่น 8.8.8.8 หรือ 1.1.1.1 ถ้าได้ค่า
127.255.255.254ให้ตรวจผ่านหน้าเว็บcheck.spamhaus.orgแทน อย่าตีความว่าติด Blacklist
ขั้นตอนที่ 2: หาต้นเหตุและหยุดให้ได้
สาเหตุที่พบบ่อยที่สุดมีสามอย่าง: บัญชีอีเมลถูกขโมยรหัสผ่านแล้วใช้ส่งสแปม, สคริปต์บนเว็บ (เช่น ฟอร์มติดต่อหรือปลั๊กอิน WordPress ที่มีช่องโหว่) ถูกใช้ส่งอีเมล และเครื่องติดมัลแวร์ เริ่มจากดูว่าคิวมีอีเมลค้างผิดปกติหรือไม่
# Postfix (รวม Plesk): บรรทัดสุดท้ายบอกจำนวนอีเมลในคิว
sudo postqueue -p | tail -n 1
# Exim (DirectAdmin): นับจำนวนอีเมลในคิว
sudo exim -bpc
ถ้ามีหลักร้อยหรือหลักพันฉบับ แทบแน่ใจว่ามีการส่งสแปม ต่อไปหาว่าบัญชีใดส่งมากที่สุด
# Postfix บน Ubuntu (AlmaLinux/Rocky ใช้ /var/log/maillog)
sudo grep -o 'sasl_username=[^ ,]*' /var/log/mail.log | sort | uniq -c | sort -rn | head
# Exim (DirectAdmin)
sudo grep -o 'A=dovecot_[a-z]*:[^ ]*' /var/log/exim/mainlog | sort | uniq -c | sort -rn | head
บัญชีที่มีจำนวนสูงผิดปกติคือบัญชีที่ถูกเจาะ ให้เปลี่ยนรหัสผ่านเป็นรหัสใหม่ที่ยาวและไม่ซ้ำทันที หากไม่พบบัญชีที่ส่งผิดปกติแต่คิวยังเต็ม ต้นเหตุอาจเป็นสคริปต์ PHP ให้เปิดอีเมลฉบับหนึ่งในคิวดู Header
# Postfix: เปลี่ยน QUEUE_ID เป็นรหัสจาก postqueue -p
sudo postcat -q QUEUE_ID | head -n 40
# Exim: ดู Header ของอีเมลในคิว
sudo exim -Mvh MESSAGE_ID
Header X-PHP-Originating-Script (ถ้ามี) จะบอกชื่อไฟล์สคริปต์ที่ส่ง ให้ปิดหรืออัปเดตเว็บนั้น และสแกนหามัลแวร์
เมื่อหยุดต้นเหตุได้แล้ว ค่อยล้างอีเมลสแปมที่ค้างในคิว คำสั่งนี้ลบอีเมลทิ้งถาวร รวมถึงอีเมลปกติที่ยังรอส่ง จึงควรใช้เมื่อแน่ใจแล้วว่าคิวส่วนใหญ่เป็นสแปม
# Postfix: ลบทุกฉบับในคิว
sudo postsuper -d ALL
# Exim: ลบเฉพาะอีเมลจากผู้ส่งที่ถูกเจาะ
sudo exiqgrep -i -f '[email protected]' | xargs -r sudo exim -Mrm
ขั้นตอนที่ 3: ตรวจพื้นฐานของ Mail Server ก่อนยื่นขอถอด
- PTR Record: IP ต้องมี Reverse DNS ชี้ไปยังชื่อ Hostname เช่น
mail.example.comและชื่อนั้นต้องมี A Record ชี้กลับมาที่ IP เดิม ตรวจด้วยdig +short -x 203.0.113.10 - HELO/EHLO: เซิร์ฟเวอร์ควรแนะนำตัวด้วยชื่อ Hostname เดียวกับ PTR ไม่ใช่
localhost - SPF, DKIM, DMARC: ตั้งค่าให้ครบตามคู่มือ ตั้งค่า SPF, DKIM และ DMARC
- ไม่เป็น Open Relay: เซิร์ฟเวอร์ต้องไม่ยอมส่งต่ออีเมลให้ผู้ที่ไม่ได้ยืนยันตัวตน