- โดยพื้นฐานแล้วอีเมลเป็น ระบบเปิด และในปี 2026 ก็สามารถรันจากที่บ้านหรือบน VPS ได้พร้อมจัดการปัญหาการส่งและสแปม โดยไม่ต้องฝากอีเมลไว้กับบริษัทยักษ์ใหญ่เพียงไม่กี่ราย
- หากจะรันที่บ้าน ต้องมี IPv4 แบบคงที่ ที่ไม่ติดบล็อกลิสต์, ไม่ใช้ CGNAT, มีสิทธิ์แก้ไข PTR record และเปิดพอร์ต
25·143·465·587·993 ได้; หากเงื่อนไขไม่พร้อม VPS จะเหมาะกว่า
- ต้องตั้งค่า SPF·DKIM·DMARC·MX·PTR ให้ถูกต้อง และตรวจสอบสถานะการส่งด้วย mail-tester.com; แม้อินเทอร์เน็ตล่มช่วงสั้น ๆ เซิร์ฟเวอร์ฝั่งส่งก็จะลองส่งใหม่
- หากใช้ ปลั๊กอิน GPT ของ Rspamd ร่วมกับโมเดล
Gemma 4 12B QAT แบบโลคัล ก็สามารถสร้างค่าความน่าจะเป็นว่าเป็นสแปมและเหตุผลในการตัดสินได้ โดยไม่ต้องส่งอีเมลส่วนตัวไปยัง LLM API ภายนอก
- สามารถลดอุปสรรคในการติดตั้งได้ด้วย docker-mailserver และไคลเอนต์ Thunderbird หรือเว็บเมล แต่ผู้ดูแลต้องรับผิดชอบเองเรื่อง แบ็กอัป·การกู้คืน·การเข้าถึงระยะไกล·การอัปเดต และควรทดสอบขั้นตอนกู้คืนอย่างน้อยหนึ่งครั้ง
เลือกระหว่างบ้านกับ VPS
- โดยทั่วไปแนะนำให้ใช้ VPS แต่ถ้าอินเทอร์เน็ตที่บ้านตรงตามเงื่อนไขต่อไปนี้ทั้งหมด ก็สามารถรันเมลเซิร์ฟเวอร์ที่บ้านได้
- มีที่อยู่ IPv4 แบบคงที่ที่ไม่อยู่ใน บล็อกลิสต์
- สายสัญญาณไม่ได้อยู่หลัง CGNAT
- มีสิทธิ์เปลี่ยน PTR record ของ IP ผ่านการสนับสนุนจาก ISP หรือวิธีอื่น
- สามารถเปิดพอร์ตเมลเซิร์ฟเวอร์ทั่วไป
25, 143, 465, 587, 993 ได้
- แม้เซิร์ฟเวอร์จะล่มชั่วคราว เมลเซิร์ฟเวอร์ฝั่งส่งจะพยายามส่งซ้ำ จึงไม่ได้ทำให้อีเมลขาเข้าหายทันที
- หากเวลาที่อินเทอร์เน็ตล่มในหนึ่งวัน น้อยกว่า 40% ก็ยังสามารถทำงานได้ตามปกติ
ซอฟต์แวร์เมลเซิร์ฟเวอร์
การตั้งค่าโดเมนและ DNS
- เช่นเดียวกับ IP ควรตรวจสอบก่อนว่าโดเมนติด สแปมบล็อกลิสต์ หรือไม่
- การส่งและรับอีเมลให้ทำงานปกติต้องมี DNS records ต่อไปนี้
- SPF: ระบุเซิร์ฟเวอร์ที่มีสิทธิ์ส่งอีเมลในนามโดเมน โดยค่าทั่วไปอาจใช้
v=spf1 mx a ~all
- DKIM: เพิ่มลายเซ็นเข้ารหัสลงในเฮดเดอร์ของอีเมลที่ส่ง และนำชื่อกับค่าคีย์สาธารณะที่เซิร์ฟเวอร์แจ้งไปลงทะเบียนในโดเมน
- DMARC: ขยายการทำงานของ SPF และ DKIM เพื่อป้องกันการปลอมแปลงโดเมน; หากไม่แน่ใจเรื่องค่า สามารถใช้ ตัวสร้าง DMARC
- MX: ระบุตำแหน่งที่เซิร์ฟเวอร์อื่นจะส่งอีเมลมา โดยทั่วไปจะชี้ A record ของ
mail.yourdomain.com ไปยัง IP ของเซิร์ฟเวอร์ และตั้งค่า hostname นี้เป็นค่า MX ที่มีลำดับความสำคัญ 10
- PTR record ตั้งค่าได้เฉพาะโดย ISP หรือผู้ให้บริการ VPS และต้องทำให้ IP ของเซิร์ฟเวอร์ reverse-resolve กลับไปเป็น hostname ของเมลเซิร์ฟเวอร์จริง เช่น
mail.yourdomain.com
- บางเซิร์ฟเวอร์แนะนำให้เพิ่มเรคอร์ดสำหรับการค้นหาบริการอัตโนมัติด้วย แต่พื้นฐานคือ SPF·DKIM·DMARC·MX·PTR
- หลังติดตั้งแล้ว แนะนำให้ตรวจสอบเรคอร์ด การทำงานของเซิร์ฟเวอร์ และสถานะการส่งอีเมลที่ mail-tester.com
การกันสแปมด้วย LLM แบบโลคัล
- ระบบกันสแปมโอเพนซอร์สแบบเดิมพึ่งพาบล็อกลิสต์ IP·โดเมน, บริการภายนอกอย่าง Spamhaus และการค้นหาคีย์เวิร์ด ซึ่งมีประสิทธิภาพต่ำและเป็นสาเหตุหลักที่ทำให้หลายคนเลิกโฮสต์เอง
- ในช่วง 2 ปีที่ผ่านมา การจัดหมวดหมู่ด้วย LLM แบบโลคัล กลายเป็นทางเลือกที่ช่วยแก้ปัญหาสแปมในสภาพแวดล้อมโฮสต์เองได้
- Rspamd นอกจากจะมีบล็อกลิสต์, การตรวจสอบ IP·DNS และการตรวจจับคีย์เวิร์ดแล้ว ยังใช้ ปลั๊กอิน GPT เพื่อให้ LLM จัดประเภทว่าอีเมลเป็นสแปมหรือไม่
- แทนที่จะส่งอีเมลส่วนตัวไปยัง LLM API ภายนอก ก็รัน Gemma 4 12B QAT แบบโลคัล
- รันได้ทั้งบน GPU หรือ CPU และต้องใช้ RAM หรือ VRAM อย่างน้อย 7GB
- รองรับหลายภาษา จึงนำมาใช้จัดประเภทอีเมลได้
การรันโมเดลแบบโลคัลและเชื่อมต่อ Rspamd
curl -LsSf https://llama.app/install.sh | sh
- บน Windows ใช้คำสั่งต่อไปนี้
winget install llama.cpp
- รัน model server ได้ดังนี้ และสามารถดูแชตอินเทอร์เฟซได้ที่
localhost:8080
llama serve -hf unsloth/gemma-4-12B-it-qat-GGUF:UD-Q4_K_XL --reasoning off -fa on -c 16000 --temp 0.7
- ใน
/etc/rspamd/local.d/gpt.conf ของ Rspamd หากระบุ type = "openai" และ local /v1 endpoint ก็จะเชื่อมโมเดลผ่าน อินเทอร์เฟซที่เข้ากันได้กับ OpenAI ได้
- ตั้งค่าโมเดลเป็น
unsloth/gemma-4-12B-it-qat-GGUF:UD-Q4_K_XL
- กำหนดโทเคนเอาต์พุตสูงสุด
100, อุณหภูมิ 0.1, และ timeout 30 วินาที
- หากเป็น LLM server ที่ไม่มี GPU อาจต้องเพิ่มค่า timeout
- แปลผลคำตอบเป็น JSON และต้องใช้คีย์
probability แทน spam
- พรอมป์ต์จะสั่งให้วิเคราะห์เฮดเดอร์ หัวเรื่อง และเนื้อหา แล้วส่งกลับเป็น JSON ที่มีเพียง ความน่าจะเป็นว่าเป็นสแปม ระหว่าง
0.0~1.0 และเหตุผลสั้น ๆ ของการตัดสิน
- ฟีเจอร์บริบทการสนทนาต่อผู้รับจะเก็บป้ายกำกับของอีเมลล่าสุด, ผู้ส่งหลัก และสรุป 512 อักขระไว้ใน Redis และเมื่อมีเกิน 5 รายการก็จะใส่ลงในพรอมป์ต์การจัดประเภท
- ขอบเขตคือกล่องจดหมายของผู้รับแต่ละราย
user
- ระยะเวลาเก็บสรุปข้อความคือ
14 วัน, อายุคีย์ใน Redis คือ 30 วัน
- ทำงานแบบโลคัลโดยไม่มีการเรียกภายนอก
- สำหรับอีเมลสแปม สามารถคืนค่าความน่าจะเป็นสูงโดยอ้างอิงจากการตลาดที่สร้างความกลัว, เนื้อหาเชิงพาณิชย์ที่ไม่พึงประสงค์ หรือโดเมนสากลที่น่าสงสัย
- สำหรับอีเมลทดสอบทางเทคนิคที่ปกติ สามารถคืนค่าความน่าจะเป็นต่ำได้ด้วยเหตุผลว่าไม่มีลิงก์น่าสงสัยหรือข้อความเชิงโปรโมต
- ใน เว็บอินเทอร์เฟซ ของ Rspamd สามารถดูกราฟและข้อมูล รวมถึงวางอีเมลเพื่อทดสอบผลการจัดประเภทที่คาดไว้ได้
การเลือกเมลไคลเอนต์
- บนเดสก์ท็อป Thunderbird เป็นไคลเอนต์โอเพนซอร์สที่มีความสามารถสูงพอจะใช้แทน Outlook ได้
- มีฟังก์ชันพื้นฐานที่จำเป็นและการค้นหาที่ดีเพียงพอ
- มี แอป Android ให้ใช้ด้วย
- ใช้งานมา 3 ปีแล้วโดยไม่มีปัญหา
- หากต้องการเว็บเมล สามารถใช้ตัวเลือกต่อไปนี้
การบำรุงรักษาและความรับผิดชอบในการดูแลระบบ
- โซลูชันเมลเซิร์ฟเวอร์สมัยใหม่อย่าง docker-mailserver ถูกออกแบบมาโดยคำนึงถึง แพตช์ความปลอดภัย และการอัปเดตอัตโนมัติที่ไม่ทำให้สภาพแวดล้อมโปรดักชันพัง
- การโฮสต์เองให้สิทธิ์ควบคุมข้อมูล แต่แลกกับการที่ผู้ดูแลต้องรับผิดชอบเรื่องแบ็กอัป การกู้คืน การเข้าถึงระยะไกล และการอัปเดตเอง
- หากไม่มีแบ็กอัป อาจสูญเสียข้อมูลทั้งหมดได้ จึงต้องมี แผนแบ็กอัป ที่เพียงพอ และควรทดสอบขั้นตอนการกู้คืนอย่างน้อยหนึ่งครั้ง
- หากรับเงื่อนไขและภาระในการดูแลระบบได้ ก็สามารถรันอีเมลได้แม้มีช่วงที่เซิร์ฟเวอร์ล่มสั้น ๆ และผู้ใช้ที่ให้ความสำคัญกับอธิปไตยข้อมูลก็สามารถลองโฮสต์เองได้
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
ใช้ Fastmail อยู่และหลีกเลี่ยงเรื่องปวดหัวทั้งหมดได้ แต่ก็สนุกดีที่ได้อ่านว่ากำลังหลีกเลี่ยงเรื่องปวดหัวอะไรบ้าง
ถ้าเป็นกล่องจดหมายสำคัญ ก็มี บริการกล่องจดหมายแบบโฮสต์ ดี ๆ อย่าง Migadu, Simplymail, Fastmail จึงไม่คิดจะดูแลเอง ถ้าใช้เพื่อความสนุกหรือไม่ใช่เรื่องสำคัญก็พอเป็นไปได้
ราวกับพิสูจน์ปัญหาของการพึ่งพา Gmail ตอนนี้ Gmail กำลังบล็อก อีเมลรีเซ็ตรหัสผ่านของ Lobsters เป็นสแปม
ในล็อกขึ้นว่า “Gmail has detected that this message is likely 550-5.7.1 unsolicited mail. To reduce the amount of spam sent to Gmail, this 550-5.7.1 message has been blocked.” และสงสัยว่าจะมีวิธีแจ้งเรื่องนี้ให้ Google ทราบได้อย่างไร
ตอนแรกคิดว่าเกตเวย์ mailing list ฝั่ง lobste.rs เสีย เลยยกเลิกการสมัครไป แต่เดิมก็ไม่ได้อ่านบ่อยอยู่แล้ว และตอนนี้ชอบอ่านผ่านเว็บไซต์มากกว่า
แนวคิดในการรันเมลเองที่บ้านนั้นดี แต่ปัญหาคือตอนย้ายบ้าน ระหว่างย้ายก็ยังมีอีเมลสำคัญเข้ามา ดังนั้นมีแค่ backup MX ยังไม่พอ
ทำให้เป็นจริงได้ก็คงได้ แต่การย้ายบ้านก็เครียดมากอยู่แล้ว ไม่อยากเพิ่มขั้นตอนย้ายอีเมลเข้าไปในเช็กลิสต์ย้ายบ้านด้วย ระหว่างนั้นถ้าบล็อกหรือ DNS master ที่ซ่อนไว้หยุดทำงานก็ยังพอรับได้
ประมาณ 15 ปีก่อนย้ายเมลเซิร์ฟเวอร์ไปไว้บน VM ราคาถูก แล้วตั้งแต่นั้นมาก็ทำงานเสถียรมาตลอด ถ้าอยู่เป็นหลักแหล่งและมี IP คงที่ที่ไม่อยู่ในรายการบล็อก รวมถึงใช้สายสัญญาณระดับธุรกิจได้ ก็น่าจะโอเค
นอกจากนี้ SMTP ยังมีการ retry รวมอยู่ในตัวโปรโตคอลอยู่แล้ว ถ้าเซิร์ฟเวอร์หยุด retry ก่อนครบ 24 ชั่วโมง ก็แปลว่าไม่สอดคล้องกับสเปกที่เกี่ยวข้อง ต่างจากกรณีที่เซิร์ฟเวอร์ปฏิเสธอย่างชัดเจน เช่น ไม่มีกล่องจดหมายหรือพื้นที่เต็ม SMTP แข็งแกร่งกว่าที่คิด
ส่วนที่ยากของการรันเมลเองไม่ใช่สแปมขาเข้า แต่คือแม้ทำมาตรการที่จำเป็นสำหรับการส่งออกครบแล้ว ผู้ให้บริการอีเมลรายใหญ่ก็ยังจัดอีเมลที่ส่งไปเป็นสแปม
ด้วยปริมาณการส่งระดับบุคคลหรือที่บ้าน IP จะไม่สะสม ชื่อเสียงเชิงบวก มากพอ ดังนั้นถ้าเริ่มเข้า inbox ของ Gmail และบริการคล้ายกันไม่ได้ ก็แทบจะแก้ได้ยาก
อย่างไรก็ตาม หาก relay ผ่านบริการอย่าง Amazon SES การตั้งค่าก็ง่ายและปัญหาการส่งถึงปลายทางอาจหายไป แต่ถ้ารันเองด้วยเหตุผลทางการเมืองหรืออธิปไตยทางข้อมูล วิธีนี้อาจเป็นทางออกที่ยอมรับได้ยาก
ข้อดีที่สุดของเมลเซิร์ฟเวอร์ของตัวเองคือ ไม่ต้องทำสแปมฟิลเตอร์ก็ได้ บางครั้งมี junk mail เข้ามา แต่การมั่นใจว่าใคร ๆ ก็ส่งอีเมลถึงฉันได้นั้นดีกว่า
แค่เช็กโฟลเดอร์สแปมยังไม่พอ บริษัทเทคโนโลยีรายใหญ่บางครั้งทิ้งอีเมลเงียบ ๆ โดยไม่มีเหตุผลชัดเจน และอัตรารับอีเมลสำเร็จของ Gmail อยู่ราว 90% ทำให้อีเมล 10% หายไป แม้จะมาจากผู้ให้บริการรายใหญ่อื่นก็ตาม ส่วนอีเมลที่รันเองไม่เคยรับพลาดเลยสักครั้ง
ในทางกลับกัน ถ้าจะส่งอีเมลไปยังบัญชีของบริการรายใหญ่อื่น ก็ยังจำเป็นต้องมีบัญชีฝั่งนั้นอยู่ แต่สำหรับช่องทางติดต่อจะให้อีเมลที่รันเองเสมอ อยากลองดูว่าจะใช้ผู้ให้บริการรายใหญ่เฉพาะส่งออก แล้วตั้ง MX เป็นเซิร์ฟเวอร์ของตัวเองได้ไหม
https://xmox.nl ตั้งค่าง่ายมาก
กำลังรัน mailing list ของเว็บไซต์เอง มีผู้สมัครแค่ไม่กี่คน แต่อีเมลส่งถึงได้ตามปกติ
ไม่มีความตั้งใจจะรันอีเมลส่วนตัวเองด้วย
เมื่อไม่กี่ปีก่อนติดตั้ง https://modoboa.org/ บน Hetzner VPS แต่หลังจากอัปเกรดล้มเหลวหลายครั้งก็แทบจะถอดใจ ตอนนี้ยังคงไว้เพียงเพราะส่วนใหญ่ยังทำงานได้ แต่ไม่ใช่ คอนฟิกที่ยั่งยืนในระยะยาว และยังไม่ได้ตัดสินใจว่าตัวเลือกถัดไปคืออะไร
โค้ด 2FA บางอย่างเช่น Steam มาถึง inbox ช้าเกินไป หาสาเหตุไม่เจอ เวลานั้นจึงใช้บัญชี Gmail ที่แทบไม่ได้ใช้แทน
สแปมก็ยังหลุดเข้ามาบ้าง แต่สำหรับสแปมขาเข้า ไม่มีทางแก้ที่สมบูรณ์แบบ LLM ที่ออกแบบมาสำหรับการประมวลผลภาษาธรรมชาติอาจเหมาะกับงานนี้ก็ได้ เลยอยากรู้ประสิทธิภาพจริง แต่ก็ดูมีโอกาสที่การใช้ทรัพยากรจะสูงเกินเหตุ