2 คะแนน โดย GN⁺ 5 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โดยพื้นฐานแล้วอีเมลเป็น ระบบเปิด และในปี 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% ก็ยังสามารถทำงานได้ตามปกติ

ซอฟต์แวร์เมลเซิร์ฟเวอร์

  • docker-mailserver สามารถดีพลอยชุดเมลเซิร์ฟเวอร์แบบครบชุดด้วย Docker พร้อมค่าเริ่มต้นที่สมเหตุสมผล จึงเหมาะเป็นจุดเริ่มต้น
  • ตัวเลือกอื่นมี Stalwart, Mailcow, และ การตั้งค่า Postfix·Dovecot·Rspamd ด้วยตนเอง
  • อีเมลเดิมยังรันอยู่บน ISPConfig มาหลายปีด้วยเหตุผลด้านระบบเก่า แต่ถ้าจะสร้างใหม่ docker-mailserver เป็นตัวเลือกที่เหมาะสม

การตั้งค่าโดเมนและ 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 ความคิดเห็น

 
GN⁺ 5 시간 전
ความคิดเห็นจาก 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 ทราบได้อย่างไร

    • ดูเหมือนไม่ใช่ปัญหาของ Gmail อย่างเดียว ที่ mailbox.org ก็ไม่ได้รับ อีเมลจาก lobste.rs ในกล่องจดหมายมาตั้งแต่หลายสัปดาห์ก่อน
      ตอนแรกคิดว่าเกตเวย์ mailing list ฝั่ง lobste.rs เสีย เลยยกเลิกการสมัครไป แต่เดิมก็ไม่ได้อ่านบ่อยอยู่แล้ว และตอนนี้ชอบอ่านผ่านเว็บไซต์มากกว่า
  • แนวคิดในการรันเมลเองที่บ้านนั้นดี แต่ปัญหาคือตอนย้ายบ้าน ระหว่างย้ายก็ยังมีอีเมลสำคัญเข้ามา ดังนั้นมีแค่ backup MX ยังไม่พอ
    ทำให้เป็นจริงได้ก็คงได้ แต่การย้ายบ้านก็เครียดมากอยู่แล้ว ไม่อยากเพิ่มขั้นตอนย้ายอีเมลเข้าไปในเช็กลิสต์ย้ายบ้านด้วย ระหว่างนั้นถ้าบล็อกหรือ DNS master ที่ซ่อนไว้หยุดทำงานก็ยังพอรับได้

    • เมื่อก่อนเคยรันเมลที่บ้าน แต่สภาพแวดล้อม ISP สำหรับบ้านทั่วไปสมัยนี้ไม่ค่อยใช้งานได้จริง มีปัญหาอย่างการย้ายบ้าน, ISP บล็อกพอร์ต, และ รายการบล็อกช่วง IP สำหรับบ้าน
      ประมาณ 15 ปีก่อนย้ายเมลเซิร์ฟเวอร์ไปไว้บน VM ราคาถูก แล้วตั้งแต่นั้นมาก็ทำงานเสถียรมาตลอด ถ้าอยู่เป็นหลักแหล่งและมี IP คงที่ที่ไม่อยู่ในรายการบล็อก รวมถึงใช้สายสัญญาณระดับธุรกิจได้ ก็น่าจะโอเค
    • สามารถตั้งค่า MX record หลายรายการ แล้วทำให้หนึ่งในนั้นส่งต่ออีเมลเมื่อเกิดปัญหาได้
      นอกจากนี้ SMTP ยังมีการ retry รวมอยู่ในตัวโปรโตคอลอยู่แล้ว ถ้าเซิร์ฟเวอร์หยุด retry ก่อนครบ 24 ชั่วโมง ก็แปลว่าไม่สอดคล้องกับสเปกที่เกี่ยวข้อง ต่างจากกรณีที่เซิร์ฟเวอร์ปฏิเสธอย่างชัดเจน เช่น ไม่มีกล่องจดหมายหรือพื้นที่เต็ม SMTP แข็งแกร่งกว่าที่คิด
  • ส่วนที่ยากของการรันเมลเองไม่ใช่สแปมขาเข้า แต่คือแม้ทำมาตรการที่จำเป็นสำหรับการส่งออกครบแล้ว ผู้ให้บริการอีเมลรายใหญ่ก็ยังจัดอีเมลที่ส่งไปเป็นสแปม
    ด้วยปริมาณการส่งระดับบุคคลหรือที่บ้าน IP จะไม่สะสม ชื่อเสียงเชิงบวก มากพอ ดังนั้นถ้าเริ่มเข้า inbox ของ Gmail และบริการคล้ายกันไม่ได้ ก็แทบจะแก้ได้ยาก
    อย่างไรก็ตาม หาก relay ผ่านบริการอย่าง Amazon SES การตั้งค่าก็ง่ายและปัญหาการส่งถึงปลายทางอาจหายไป แต่ถ้ารันเองด้วยเหตุผลทางการเมืองหรืออธิปไตยทางข้อมูล วิธีนี้อาจเป็นทางออกที่ยอมรับได้ยาก

    • กำลังดู https://forwardemail.net/ เป็นตัวเลือกผู้ให้บริการ relay อีเมล
  • ข้อดีที่สุดของเมลเซิร์ฟเวอร์ของตัวเองคือ ไม่ต้องทำสแปมฟิลเตอร์ก็ได้ บางครั้งมี junk mail เข้ามา แต่การมั่นใจว่าใคร ๆ ก็ส่งอีเมลถึงฉันได้นั้นดีกว่า
    แค่เช็กโฟลเดอร์สแปมยังไม่พอ บริษัทเทคโนโลยีรายใหญ่บางครั้งทิ้งอีเมลเงียบ ๆ โดยไม่มีเหตุผลชัดเจน และอัตรารับอีเมลสำเร็จของ Gmail อยู่ราว 90% ทำให้อีเมล 10% หายไป แม้จะมาจากผู้ให้บริการรายใหญ่อื่นก็ตาม ส่วนอีเมลที่รันเองไม่เคยรับพลาดเลยสักครั้ง
    ในทางกลับกัน ถ้าจะส่งอีเมลไปยังบัญชีของบริการรายใหญ่อื่น ก็ยังจำเป็นต้องมีบัญชีฝั่งนั้นอยู่ แต่สำหรับช่องทางติดต่อจะให้อีเมลที่รันเองเสมอ อยากลองดูว่าจะใช้ผู้ให้บริการรายใหญ่เฉพาะส่งออก แล้วตั้ง MX เป็นเซิร์ฟเวอร์ของตัวเองได้ไหม

    • เซิร์ฟเวอร์ของฉันบล็อก สแปมหลายพันฉบับ ต่อวัน ยังไม่นับการเชื่อมต่ออีกหลายพันครั้งที่ถูกบล็อกก่อนจะพยายามส่งสแปมด้วยซ้ำ
  • https://xmox.nl ตั้งค่าง่ายมาก

    • น่าจะรันมาปีกว่าแล้ว แต่ดูเหมือนการพัฒนาจะหยุดไป และยังขาดฟีเจอร์ฟิลเตอร์ที่จำเป็น กำลังคิดว่าจะเลิกใช้ คอนฟิกแบบ xmox เดี่ยว แล้วกลับไปใช้ชุดคอมโพเนนต์บนฐาน Postfix หรือไม่
  • กำลังรัน mailing list ของเว็บไซต์เอง มีผู้สมัครแค่ไม่กี่คน แต่อีเมลส่งถึงได้ตามปกติ
    ไม่มีความตั้งใจจะรันอีเมลส่วนตัวเองด้วย

  • เมื่อไม่กี่ปีก่อนติดตั้ง https://modoboa.org/ บน Hetzner VPS แต่หลังจากอัปเกรดล้มเหลวหลายครั้งก็แทบจะถอดใจ ตอนนี้ยังคงไว้เพียงเพราะส่วนใหญ่ยังทำงานได้ แต่ไม่ใช่ คอนฟิกที่ยั่งยืนในระยะยาว และยังไม่ได้ตัดสินใจว่าตัวเลือกถัดไปคืออะไร
    โค้ด 2FA บางอย่างเช่น Steam มาถึง inbox ช้าเกินไป หาสาเหตุไม่เจอ เวลานั้นจึงใช้บัญชี Gmail ที่แทบไม่ได้ใช้แทน
    สแปมก็ยังหลุดเข้ามาบ้าง แต่สำหรับสแปมขาเข้า ไม่มีทางแก้ที่สมบูรณ์แบบ LLM ที่ออกแบบมาสำหรับการประมวลผลภาษาธรรมชาติอาจเหมาะกับงานนี้ก็ได้ เลยอยากรู้ประสิทธิภาพจริง แต่ก็ดูมีโอกาสที่การใช้ทรัพยากรจะสูงเกินเหตุ