Email Filter คืออะไร และทำไมต้องใช้?
cPanel มีเครื่องมือกรองอีเมลสองแบบที่ทำงานต่างกัน ได้แก่ SpamAssassin ซึ่งกรองสแปมโดยอัตโนมัติโดยใช้คะแนนความน่าสงสัย กับ Email Filters (หรือ User Level Filtering / Account Level Filtering) ที่ให้เราสร้างกฎ เอง ได้อย่างละเอียดตามเงื่อนไขที่ต้องการ
ตัวอย่างการใช้งาน Email Filter ในชีวิตจริง:
- เมลจากโดเมนสแปมที่รู้จักให้ลบทิ้งทันที
- เมลที่มีคำว่า "ใบเสร็จ" ในหัวเรื่อง ให้ส่งไปโฟลเดอร์ Finance อัตโนมัติ
- เมลจากลูกค้า VIP ให้ส่งสำเนาไปยังอีเมลอีกบัญชีหนึ่ง
- เมลขนาดใหญ่เกิน 5MB ให้แจ้งเตือนผู้ส่งว่าไฟล์ใหญ่เกินไป
Email Filters จึงเป็นเครื่องมือที่ช่วยให้เราจัดการกล่องจดหมายได้อย่างมืออาชีพ โดยไม่ต้องพึ่งโปรแกรมอีเมลภายนอก
ความแตกต่างระหว่าง Account Level กับ User Level Filtering
cPanel แยก Email Filters ออกเป็นสองระดับ:
- Account Level Filtering — กฎที่ใช้กับ ทุกบัญชีอีเมล ในโฮสติ้งนั้น เหมาะสำหรับตั้งกฎกลางของทั้งองค์กร เช่น บล็อกสแปมจากโดเมนที่รู้จัก
- User Level Filtering — กฎที่ใช้กับ อีเมลบัญชีใดบัญชีหนึ่ง โดยเฉพาะ เหมาะสำหรับผู้ใช้แต่ละคนที่ต้องการตั้งค่าส่วนตัว
วิธีเข้าถึงและสร้าง Email Filter ใน cPanel
เปิด cPanel แล้วทำตามขั้นตอนด้านล่าง:
- ล็อกอิน cPanel ที่
yourdomain.com/cpanel - เลื่อนหาหมวด Email แล้วคลิก Email Filters (หรือ User Level Filtering)
- เลือกบัญชีอีเมลที่ต้องการตั้งกฎ แล้วคลิก Manage Filters
- คลิก Create a New Filter
- ตั้งชื่อกฎ กำหนดเงื่อนไข และเลือกการกระทำ
- คลิก Create เพื่อบันทึก
ส่วนประกอบของ Email Filter — เงื่อนไขและการกระทำ
กฎ Email Filter แต่ละข้อประกอบด้วยสองส่วนหลัก:
เงื่อนไข (Conditions)
เลือกว่าจะตรวจสอบส่วนใดของอีเมล:
- From — ที่อยู่ผู้ส่ง
- Subject — หัวเรื่องอีเมล
- To — ที่อยู่ผู้รับ
- Body — เนื้อหาในเมล
- Any Header — ส่วน header ใดๆ ของเมล
- Has not been previously delivered — เมลที่ยังไม่เคยถูกส่ง
- Error in delivery — เมลที่ส่งไม่สำเร็จ
- SpamAssassin Spam Header — สถานะจาก SpamAssassin
แต่ละเงื่อนไขมีตัวเปรียบเทียบ เช่น contains, does not contain, begins with, ends with, matches regex และ is
การกระทำ (Actions)
เมื่อเงื่อนไขตรงกัน ระบบจะทำสิ่งใดสิ่งหนึ่งต่อไปนี้:
- Discard Message — ลบเมลทิ้งโดยไม่แจ้งผู้ส่ง
- Redirect to Email — ส่งต่อไปยังอีเมลอื่น
- Fail with Message — ปฏิเสธพร้อมส่งข้อความแจ้งกลับผู้ส่ง
- Deliver to Folder — ส่งเข้าโฟลเดอร์ที่ระบุ
- Pipe to Program — ส่งเมลให้โปรแกรมอื่นประมวลผล
- Stop Processing Rules — หยุดประมวลผลกฎถัดไป
ตัวอย่างการตั้งกฎ Email Filter ที่ใช้งานบ่อย
กฎ 1: ลบเมลสแปมจากโดเมนที่รู้จัก
เงื่อนไข: From → contains → spamcompany.com
การกระทำ: Discard Message
กฎ 2: จัดเมลใบเสร็จเข้าโฟลเดอร์ Finance
เงื่อนไข: Subject → contains → ใบเสร็จ
การกระทำ: Deliver to Folder → Finance
ต้องสร้างโฟลเดอร์ "Finance" ใน Webmail ก่อน แล้วระบุ path เป็น Finance
กฎ 3: ส่งสำเนาเมลสำคัญไปยังผู้จัดการ
เงื่อนไข: Subject → contains → [urgent]
การกระทำ: Redirect to Email → [email protected]
กฎ 4: ปฏิเสธเมลที่มีคำต้องห้ามในเนื้อหา
เงื่อนไข: Body → contains → casino
การกระทำ: Fail with Message → "Your message was rejected due to content policy"
การใช้หลายเงื่อนไขใน Filter เดียว (AND / OR)
cPanel ให้เราตั้งเงื่อนไขหลายข้อในกฎเดียวโดยใช้ logic:
- AND — เมลต้องตรงทุกเงื่อนไขจึงจะทำการกระทำ
- OR — เมลตรงเงื่อนไขใดเงื่อนไขหนึ่งก็พอ
ตัวอย่าง: กรองเมลที่มาจาก example.com และ หัวเรื่องมีคำว่า "promotion":
เงื่อนไข 1: From → contains → example.com [AND]
เงื่อนไข 2: Subject → contains → promotion
การกระทำ: Deliver to Folder → Promotions
ลำดับการทำงานของ Filter และ Stop Processing Rules
cPanel ประมวลผลกฎ Email Filter จากบนลงล่างตามลำดับที่ตั้งไว้ ถ้าเมลตรงกับกฎแรก และไม่มีคำสั่ง Stop Processing Rules กฎถัดไปก็อาจทำงานด้วย ซึ่งอาจทำให้เมลถูกส่งไปหลายที่
วิธีป้องกัน:
- เพิ่มการกระทำ Stop Processing Rules ต่อท้ายกฎที่ต้องการหยุด
- วางกฎที่ Discard หรือ Fail ไว้ก่อนกฎ Deliver to Folder
- ทดสอบกฎด้วยปุ่ม Test Filter ที่มีใน cPanel
กฎลำดับที่ 1: From contains spamsite.net → Discard + Stop Processing Rules
กฎลำดับที่ 2: Subject contains ใบแจ้งหนี้ → Deliver to Folder: Invoices
กฎลำดับที่ 3: กฎทั่วไปอื่นๆ
ตรวจสอบว่า Email Filter ทำงานถูกต้อง
cPanel มีเครื่องมือทดสอบกฎ Filter ในตัว ใช้ได้ดังนี้:
- ไปที่หน้า Manage Filters ของบัญชีอีเมลนั้น
- คลิกปุ่ม Test Filter หรือ Test Email Filter Processing
- กรอกข้อมูลอีเมลทดสอบ
- กดปุ่ม Run Test แล้วดูผลลัพธ์
# ข้อมูลทดสอบที่ควรกรอกในฟอร์ม Test Filter:
From: [email protected]
To: [email protected]
Subject: Special Offer Just for You
Body: Click here to claim your prize casino bonus
# ผลลัพธ์ที่ควรเห็น:
Filter "Block Spam Domains" matched
Action: Discard Message
Processing stopped
แก้ปัญหาที่พบบ่อย
Error: กฎทำงาน แต่เมลยังเข้า Inbox
สาเหตุ: กฎ Deliver to Folder ไม่มีคำสั่ง Stop Processing Rules ทำให้เมลถูกส่งทั้งไปโฟลเดอร์ที่ตั้งไว้ และ Inbox ด้วย แก้ไขโดยเพิ่ม Stop Processing Rules เป็นการกระทำสุดท้ายในกฎนั้น
Error: "No such file or directory" เมื่อ Deliver to Folder
สาเหตุ: โฟลเดอร์ปลายทางที่ระบุใน path ไม่มีอยู่จริง ต้องสร้างโฟลเดอร์ใน Webmail (Roundcube หรือ Horde) ก่อน แล้วค่อยตั้งกฎ ชื่อโฟลเดอร์ต้องตรงกันทุกตัวอักษรรวมถึงตัวพิมพ์ใหญ่-เล็ก
Error: เมลสำคัญหายไปเพราะกฎกรองผิด
สาเหตุ: เงื่อนไขกว้างเกินไป เช่น กรองทุกเมลที่ Body contains "free" ซึ่งอาจกรองเมลงานออกด้วย แก้ไขโดยเพิ่มเงื่อนไข AND เพื่อให้กฎแม่นยำขึ้น หรือใช้ "begins with" แทน "contains"
Error: กฎที่สร้างใหม่ไม่ทำงานกับเมลที่รับมาก่อน
สาเหตุ: Email Filter ทำงานกับเมลที่รับเข้ามาหลังจากตั้งกฎเท่านั้น ไม่ประมวลผลย้อนหลัง ถ้าต้องการจัดเมลเก่า ต้องย้ายด้วยตัวเองใน Webmail หรือใช้ Sieve script
Error: Filter ที่ตั้งไม่ปรากฏใน Webmail
สาเหตุ: กฎ Email Filter ใน cPanel ประมวลผลที่ฝั่ง server ก่อนเมลจะถึง client ดังนั้น Webmail จะไม่แสดงกฎเหล่านี้ในแท็บ Filters ของ Roundcube ซึ่งเป็นกฎ client-side คนละชุดกัน
คำถามที่พบบ่อย (FAQ)
ถ้าตั้ง Email Filter ใน cPanel แล้ว SpamAssassin ยังทำงานอยู่ไหม?
ทำงานคู่กัน SpamAssassin ทำงานก่อน Email Filter โดย SpamAssassin จะเพิ่ม header X-Spam-Status ให้เมล หลังจากนั้น Email Filter จะนำ header นั้นมาเป็นเงื่อนไขได้ เช่น ตั้งกฎว่าถ้า SpamAssassin Spam Header "is" "Yes" ให้ Discard
จำนวนกฎ Email Filter มีจำกัดไหม?
โดยทั่วไปไม่มีการจำกัดจำนวนกฎ แต่การมีกฎมากเกินไป (เช่น หลักร้อย) อาจทำให้เซิร์ฟเวอร์ใช้เวลาประมวลผลเมลนานขึ้น แนะนำให้ตั้งกฎที่จำเป็นจริงๆ และลบกฎที่ไม่ใช้ออกเป็นระยะ
ใช้ Regular Expression (Regex) ในเงื่อนไข Email Filter ได้ไหม?
ได้ เลือก "matches regex" ในเมนูเงื่อนไข แล้วกรอก pattern regex ได้เลย เช่น ^(promo|sale|deal).* เพื่อตรวจหัวเรื่องที่เริ่มต้นด้วยคำเหล่านี้ อย่างไรก็ตาม regex ที่ซับซ้อนมากอาจส่งผลต่อประสิทธิภาพ แนะนำให้ทดสอบก่อนเสมอ