ป้องกัน Spam Email บนเซิร์ฟเวอร์อย่างไรให้ได้ผลจริง
Spam Email ไม่ใช่แค่ความรำคาญ แต่เป็นภัยคุกคามที่กิน Bandwidth ทรัพยากรเซิร์ฟเวอร์ และอาจทำให้ IP ของคุณถูก Blacklist จนส่งอีเมลไม่ถึงผู้รับ สำหรับผู้ดูแล Mail Server ปัญหา Spam เป็นสิ่งที่ต้องจัดการอย่างจริงจัง
บทความนี้จะแนะนำวิธีป้องกัน Spam แบบหลายชั้น ตั้งแต่ระดับ DNS ไปจนถึง Application พร้อมตัวอย่างการตั้งค่าที่ใช้งานได้จริง
ตั้งค่า SPF Record ป้องกันการปลอมแปลงโดเมน
SPF (Sender Policy Framework) เป็น DNS Record ที่ระบุว่า Mail Server ไหนได้รับอนุญาตให้ส่งอีเมลในนามของโดเมน ช่วยป้องกันไม่ให้คนอื่นปลอมแปลงโดเมนไปส่ง Spam
ตัวอย่าง SPF Record ใน DNS คือ v=spf1 mx a ip4:203.0.113.10 -all ซึ่งหมายความว่าอนุญาตเฉพาะ MX Record, A Record และ IP 203.0.113.10 เท่านั้น IP อื่นถือว่าไม่ได้รับอนุญาต (-all)
การตั้ง SPF ที่ถูกต้องจะช่วยให้อีเมลของคุณไม่ถูกจัดเป็น Spam โดยผู้รับ และป้องกันไม่ให้ Spammer ใช้ชื่อโดเมนของคุณไปส่ง Spam ได้
ตั้งค่า DKIM เพิ่มความน่าเชื่อถือให้อีเมล
DKIM (DomainKeys Identified Mail) ใช้ Digital Signature ยืนยันว่าอีเมลถูกส่งจากโดเมนจริงและเนื้อหาไม่ถูกแก้ไขระหว่างทาง
ติดตั้ง OpenDKIM บน Linux ด้วย sudo apt install opendkim opendkim-tools จากนั้นสร้าง Key Pair ด้วย opendkim-genkey -s mail -d yourdomain.com จะได้ไฟล์ mail.private สำหรับเซิร์ฟเวอร์ และ mail.txt สำหรับนำ Public Key ไปใส่ใน DNS เป็น TXT Record ชื่อ mail._domainkey.yourdomain.com
ตั้งค่า DMARC กำหนดนโยบายจัดการอีเมลปลอม
DMARC ทำงานร่วมกับ SPF และ DKIM เพื่อกำหนดว่าจะจัดการอย่างไรกับอีเมลที่ไม่ผ่านการตรวจสอบ ตัวอย่าง DMARC Record คือ v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100
p=quarantine หมายถึงอีเมลที่ไม่ผ่านจะถูกส่งไป Spam Folder เปลี่ยนเป็น p=reject เพื่อปฏิเสธเลยก็ได้ แนะนำให้เริ่มจาก quarantine ก่อนแล้วค่อยเปลี่ยนเป็น reject เมื่อมั่นใจว่าระบบทำงานถูกต้อง
ติดตั้ง SpamAssassin กรอง Spam อัตโนมัติ
SpamAssassin เป็นเครื่องมือกรอง Spam ที่ได้รับความนิยมสูงสุดสำหรับ Mail Server บน Linux ติดตั้งด้วย sudo apt install spamassassin spamc แล้วเปิดใช้งานด้วย sudo systemctl enable spamassassin
แก้ไขค่าที่ /etc/spamassassin/local.cf เพื่อปรับความเข้มงวด ตั้ง required_score เป็น 5.0 ซึ่งเป็นค่าที่เหมาะสมสำหรับการใช้งานทั่วไป ค่ายิ่งต่ำยิ่งเข้มงวด และตั้ง rewrite_header Subject เป็น [SPAM] เพื่อทำเครื่องหมายอีเมลที่เป็น Spam
ใช้ Greylisting ดักจับ Spam Bot
Greylisting เป็นเทคนิคที่ปฏิเสธอีเมลจากผู้ส่งใหม่ชั่วคราว Mail Server ที่ถูกต้องจะลองส่งใหม่ แต่ Spam Bot ส่วนใหญ่จะไม่ส่งซ้ำ ติดตั้ง Postgrey บน Postfix ด้วย sudo apt install postgrey แล้วเพิ่ม check_policy_service inet:127.0.0.1:10023 ใน smtpd_recipient_restrictions ของ /etc/postfix/main.cf
ตั้งค่า RBL ตรวจสอบ IP Blacklist
RBL (Realtime Blackhole List) เป็นฐานข้อมูลของ IP ที่ส่ง Spam สามารถตั้งค่าให้ Postfix ตรวจสอบกับ RBL ก่อนรับอีเมลโดยเพิ่ม reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net และ reject_rbl_client b.barracudacentral.org ใน smtpd_recipient_restrictions
จำกัดอัตราการส่งอีเมลป้องกันบัญชีถูก Hack
เพื่อป้องกันไม่ให้บัญชีที่ถูก Hack ถูกใช้ส่ง Spam จำนวนมาก ควรจำกัดจำนวนอีเมลที่ส่งได้ต่อชั่วโมงต่อบัญชี สำหรับ Postfix ใช้ policyd หรือ postfwd ในการจำกัด Rate Limiting
ป้องกัน Spam บนเว็บฟอร์ม
นอกจาก Email Spam แล้ว Spam ผ่านเว็บฟอร์มก็เป็นปัญหาที่พบบ่อย ใช้ CAPTCHA เช่น Google reCAPTCHA ตรวจสอบว่าเป็นมนุษย์จริง ใช้ Honeypot Field ซ่อนไว้ไม่ให้มนุษย์เห็น ถ้ามีข้อมูลใน Field นี้แสดงว่าเป็น Bot และตั้ง Rate Limit สำหรับฟอร์ม
Monitoring และตรวจสอบ Blacklist
ตรวจสอบ Mail Log เป็นประจำเพื่อดูว่ามี Spam หลุดเข้ามาหรือถูกบล็อกไปเท่าไร และตรวจสอบ Mail Queue ว่ามีอีเมลค้างผิดปกติหรือไม่
สำหรับผู้ที่ใช้ Hosting หรือ VPS ที่รัน Mail Server ควรตั้ง Monitoring แจ้งเตือนเมื่อมีการส่งอีเมลจำนวนมากผิดปกติ
ถ้าอีเมลส่งแล้วตก Spam Folder ของผู้รับ อาจเป็นเพราะ IP อยู่ใน Blacklist ตรวจสอบได้จาก MXToolbox หรือ Spamhaus ถ้าพบให้ดำเนินการ Delist โดยติดต่อผู้ให้บริการ Blacklist
การดูแลความปลอดภัยของ Mail Server อย่างต่อเนื่องจะช่วยป้องกันไม่ให้เซิร์ฟเวอร์ถูกใช้เป็นเครื่องมือส่ง Spam โดยไม่รู้ตัว
คำถามที่พบบ่อย (FAQ)
ตั้ง SPF, DKIM, DMARC ครบแล้วยังโดน Spam อยู่ ต้องทำอะไรเพิ่ม
SPF, DKIM, DMARC ป้องกันการปลอมแปลงโดเมน แต่ไม่ได้กรอง Spam ขาเข้า ต้องติดตั้ง SpamAssassin หรือ Rspamd ร่วมด้วย และใช้ RBL กับ Greylisting เพิ่มชั้นป้องกัน
Greylisting ทำให้อีเมลส่งช้าลงไหม
อีเมลจากผู้ส่งใหม่จะช้าลงประมาณ 5-10 นาทีในครั้งแรก เพราะต้องรอให้ Mail Server ส่งซ้ำ แต่ครั้งต่อไปจะส่งได้ทันทีเพราะอยู่ใน Whitelist แล้ว
ทำอย่างไรถ้า IP ของเซิร์ฟเวอร์อยู่ใน Blacklist
ตรวจสอบสาเหตุก่อนว่ามีบัญชีถูก Hack หรืออีเมล Spam หลุดออกไปหรือไม่ แก้ไขปัญหาต้นเหตุแล้วจึงขอ Delist จากผู้ให้บริการ Blacklist แต่ละราย ส่วนใหญ่ทำได้ผ่านเว็บไซต์ของ Blacklist นั้น
ควรตั้ง required_score ของ SpamAssassin เท่าไร
ค่าเริ่มต้น 5.0 เหมาะสมสำหรับส่วนใหญ่ ถ้าโดน Spam เยอะอาจลดเป็น 4.0 แต่ไม่ควรต่ำกว่า 3.0 เพราะจะทำให้อีเมลปกติถูกจัดเป็น Spam (False Positive) มากเกินไป
สรุป
การป้องกัน Spam ต้องทำหลายชั้น ตั้งแต่ DNS (SPF, DKIM, DMARC) Mail Server (SpamAssassin, Greylisting, RBL) และ Application (CAPTCHA, Rate Limiting) ไม่มีวิธีใดวิธีเดียวที่แก้ได้ทั้งหมด แต่การใช้หลายวิธีร่วมกันจะลด Spam ได้อย่างมีประสิทธิภาพ
หากต้องการ Mail Server ที่ปลอดภัยและมีระบบป้องกัน Spam ครบถ้วน VPS และ Hosting จาก DriteStudio มาพร้อมระบบรักษาความปลอดภัยที่ได้มาตรฐาน