2 điểm bởi GN⁺ 5 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Email vốn là một hệ thống mở, và đến năm 2026 bạn có thể vận hành tại nhà hoặc trên VPS, đồng thời quản lý vấn đề chuyển phát và spam, để không phải giao phó thư của mình cho một số ít tập đoàn lớn
  • Để vận hành tại nhà, bạn cần IPv4 tĩnh không nằm trong blacklist, không dùng CGNAT, có quyền thay đổi bản ghi PTR, và mở các cổng 25·143·465·587·993; nếu không đáp ứng các điều kiện này thì VPS là lựa chọn phù hợp
  • Cần cấu hình đúng SPF·DKIM·DMARC·MX·PTR và kiểm tra trạng thái chuyển phát bằng mail-tester.com; ngay cả khi Internet bị gián đoạn trong thời gian ngắn, máy chủ gửi vẫn sẽ thử gửi lại
  • Kết hợp plugin GPT của Rspamd với mô hình cục bộ Gemma 4 12B QAT có thể tạo xác suất spam và lý do phán đoán mà không cần gửi email cá nhân tới API LLM bên ngoài
  • docker-mailserver cùng Thunderbird và các client webmail có thể hạ thấp rào cản triển khai, nhưng người vận hành phải tự chịu trách nhiệm về sao lưu·khôi phục·truy cập từ xa·cập nhật và cần thử quy trình khôi phục ít nhất một lần

Chọn giữa nhà riêng và VPS

  • Nhìn chung nên dùng VPS, nhưng nếu đường truyền Internet tại nhà đáp ứng tất cả các điều kiện sau, bạn cũng có thể vận hành máy chủ mail tại nhà
    • Địa chỉ IPv4 tĩnh không có trong blacklist
    • Đường truyền không nằm sau CGNAT
    • Có quyền thay đổi bản ghi PTR của IP, chẳng hạn thông qua hỗ trợ của ISP
    • Môi trường cho phép mở các cổng máy chủ mail phổ biến 25, 143, 465, 587, 993
  • Ngay cả khi máy chủ tạm thời ngừng hoạt động, máy chủ mail phía gửi sẽ thử gửi lại, nên bạn sẽ không mất email đến ngay lập tức
    • Nếu thời gian mất Internet trong ngày dưới 40%, hệ thống vẫn có thể hoạt động bình thường

Phần mềm máy chủ mail

  • docker-mailserver phù hợp làm điểm khởi đầu vì có thể triển khai một bộ máy chủ mail đầy đủ bằng Docker với các thiết lập mặc định hợp lý
  • Các lựa chọn khác gồm Stalwart, Mailcow, và cách tự cấu hình Postfix·Dovecot·Rspamd
  • Email hiện tại đang được vận hành trong nhiều năm trên ISPConfig vì lý do legacy, nhưng nếu triển khai mới thì docker-mailserver là lựa chọn phù hợp

Thiết lập domain và DNS

  • Cũng như IP, trước tiên domain cần được kiểm tra xem có nằm trong blacklist spam hay không
  • Để gửi và nhận bình thường, cần các bản ghi DNS sau
    • SPF: chỉ định các máy chủ được phép gửi mail thay cho domain; có thể dùng giá trị phổ biến v=spf1 mx a ~all
    • DKIM: thêm chữ ký mật mã vào header email gửi đi; đăng ký tên và giá trị khóa công khai do máy chủ hướng dẫn vào domain
    • DMARC: mở rộng SPF và DKIM để ngăn giả mạo domain; nếu không chắc giá trị, có thể dùng trình tạo DMARC
    • MX: chỉ định vị trí để các máy chủ khác chuyển phát mail. Cách phổ biến là trỏ bản ghi A của mail.yourdomain.com tới IP máy chủ và đặt hostname đó làm giá trị MX với độ ưu tiên 10
  • Bản ghi PTR chỉ ISP hoặc nhà cung cấp VPS mới có thể thiết lập, và IP máy chủ phải được phân giải ngược thành hostname máy chủ mail thực tế như mail.yourdomain.com
  • Một số máy chủ khuyến nghị thêm bản ghi cho tự động phát hiện dịch vụ, nhưng SPF·DKIM·DMARC·MX·PTR là cấu hình cơ bản
  • Sau khi triển khai, nên kiểm tra bản ghi, hoạt động của máy chủ và trạng thái chuyển phát mail tại mail-tester.com

Chặn spam bằng LLM cục bộ

  • Các giải pháp chặn spam mã nguồn mở trước đây dựa vào blacklist IP·domain, dịch vụ bên ngoài như Spamhaus và tìm kiếm từ khóa; hiệu quả thấp, từng là nguyên nhân chính khiến người dùng rời bỏ tự host
  • Trong 2 năm gần đây, phân loại bằng LLM cục bộ đã xuất hiện như một lựa chọn có thể giải quyết vấn đề spam trong môi trường tự host
  • Rspamd ngoài blacklist, kiểm tra IP·DNS và phát hiện từ khóa còn có thể dùng plugin GPT để yêu cầu LLM phân loại email có phải spam hay không
  • Thay vì gửi email cá nhân tới API LLM bên ngoài, chạy Gemma 4 12B QAT cục bộ
    • Có thể chạy trên GPU hoặc CPU và cần tối thiểu 7GB RAM hoặc VRAM
    • Hỗ trợ đa ngôn ngữ nên có thể dùng để phân loại email

Chạy mô hình cục bộ và kết nối Rspamd

  • Nếu lần đầu cấu hình LLM cục bộ, có thể tham khảo hướng dẫn llama.cpp của Unsloth cho Windows·Linux·macOS
  • Trên Linux và macOS, cài llama.cpp bằng lệnh sau
curl -LsSf https://llama.app/install.sh | sh
  • Trên Windows, dùng lệnh sau
winget install llama.cpp
  • Chạy model server như sau, và có thể kiểm tra giao diện chat tại 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
  • Trong /etc/rspamd/local.d/gpt.conf của Rspamd, chỉ định type = "openai" và endpoint /v1 cục bộ để kết nối mô hình qua giao diện tương thích OpenAI
    • Đặt mô hình là unsloth/gemma-4-12B-it-qat-GGUF:UD-Q4_K_XL
    • Cấu hình token đầu ra tối đa là 100, temperature là 0.1, timeout là 30 giây
    • Trên máy chủ LLM không có GPU, có thể tăng timeout
    • Phản hồi được diễn giải dưới dạng JSON và yêu cầu khóa probability, không phải spam
  • Prompt hướng dẫn mô hình phân tích header·tiêu đề·nội dung và chỉ trả về JSON gồm xác suất spam trong khoảng 0.0~1.0 cùng lý do phán đoán ngắn gọn
  • Tính năng ngữ cảnh hội thoại theo từng người nhận lưu nhãn email gần đây, người gửi chính và tóm tắt 512 ký tự vào Redis; khi tích lũy từ 5 email trở lên thì đưa vào prompt phân loại
    • Phạm vi là hộp thư theo từng người nhận user
    • Thời gian lưu tóm tắt tin nhắn là 14 ngày, thời gian sống của key Redis là 30 ngày
    • Hoạt động cục bộ, không gọi ra bên ngoài
  • Với email spam, hệ thống có thể trả về xác suất cao dựa trên các yếu tố như marketing dựa trên nỗi sợ, nội dung thương mại không mong muốn, domain quốc tế hóa đáng ngờ
  • Với email kiểm thử kỹ thuật bình thường, hệ thống có thể trả về xác suất thấp vì không có liên kết đáng ngờ hoặc ngôn từ quảng bá
  • Trong giao diện web của Rspamd, có thể xem biểu đồ và dữ liệu, cũng như dán email vào để thử kết quả phân loại dự kiến

Chọn client mail

  • Trên desktop, Thunderbird là client mã nguồn mở giàu tính năng có thể thay thế Outlook
    • Cung cấp các chức năng cơ bản cần thiết và khả năng tìm kiếm đủ tốt
    • Cũng có ứng dụng Android
    • Đã sử dụng 3 năm mà không gặp vấn đề
  • Nếu cần webmail, có thể dùng các lựa chọn sau

Bảo trì và trách nhiệm vận hành

  • Các giải pháp máy chủ mail hiện đại như docker-mailserver được thiết kế có tính đến bản vá bảo mật và cập nhật tự động không làm hỏng môi trường production
  • Tự host mang lại quyền kiểm soát dữ liệu, nhưng đổi lại chuyển trách nhiệm sao lưu, khôi phục, truy cập từ xa và cập nhật cho người vận hành
  • Nếu không có sao lưu, bạn có thể mất toàn bộ dữ liệu, vì vậy cần chuẩn bị kế hoạch sao lưu đầy đủ và thử quy trình khôi phục ít nhất một lần
  • Nếu có thể đáp ứng điều kiện và gánh vác trách nhiệm vận hành, bạn có thể vận hành email ngay cả khi máy chủ gián đoạn ngắn; những người coi trọng chủ quyền dữ liệu có thể thử tự host

1 bình luận

 
Các ý kiến trên Lobste.rs
  • Tôi đang dùng Fastmail và tránh được mọi rắc rối. Đọc xem mình đang tránh được những rắc rối nào cũng khá thú vị

  • Nếu là hộp thư đến quan trọng, đã có các dịch vụ hộp thư được hosting rất tốt như Migadu, Simplymail, Fastmail nên tôi không có ý định tự vận hành. Nếu chỉ để vui hoặc cho mục đích không quan trọng thì có thể

  • Như để chứng minh vấn đề của việc phụ thuộc vào Gmail, hiện Gmail đang chặn email đặt lại mật khẩu Lobsters dưới dạng spam
    Log ghi rằng “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.”, và tôi muốn biết có cách nào báo việc này cho Google không

    • Có vẻ không chỉ là vấn đề của Gmail. Trên mailbox.org, email từ lobste.rs cũng đã không vào hộp thư đến từ vài tuần trước
      Tôi tưởng gateway mailing list bị hỏng ở phía lobste.rs nên đã hủy đăng ký, nhưng dù sao tôi cũng không đọc thường xuyên và giờ thích dùng website hơn
  • Ý tưởng tự vận hành mail ở nhà thì hay, nhưng vấn đề là khi chuyển nhà. Trong lúc chuyển nhà vẫn có email quan trọng gửi đến, nên chỉ có MX dự phòng là chưa đủ
    Chắc là có thể triển khai được, nhưng bản thân việc chuyển nhà đã rất căng thẳng rồi, tôi không muốn thêm cả quy trình chuyển mail vào checklist chuyển nhà. Trong thời gian đó blog hay DNS master ẩn bị gián đoạn thì không sao

    • Trước đây tôi từng vận hành mail ở nhà, nhưng với môi trường ISP dân dụng thông thường ngày nay thì không thực tế. Có các vấn đề như chuyển nhà, ISP chặn cổng, danh sách chặn dải IP dân dụng
      Khoảng 15 năm trước tôi chuyển mail server sang một VM giá rẻ và từ đó đến nay vẫn vận hành ổn định. Nếu ở nơi cố định, có IP tĩnh không nằm trong danh sách chặn và đường truyền cấp doanh nghiệp thì sẽ ổn
    • Có thể thiết lập nhiều bản ghi MX và để một trong số đó chuyển tiếp mail khi có sự cố
      Ngoài ra, SMTP có cơ chế thử lại nằm ngay trong giao thức, nên nếu máy chủ dừng thử lại trước 24 giờ thì nó không tuân thủ đặc tả liên quan. Khác với trường hợp máy chủ từ chối rõ ràng như không có hộp thư hoặc vượt dung lượng, SMTP bền bỉ hơn nhiều so với tưởng tượng
  • Phần khó khi tự vận hành mail không phải là spam gửi đến, mà là dù đã làm đủ mọi biện pháp cần thiết để gửi đi, các nhà cung cấp mail lớn vẫn phân loại mail mình gửi là spam
    Với lưu lượng gửi ở mức cá nhân hoặc gia đình, IP sẽ không tích lũy được uy tín tích cực, nên một khi bắt đầu không vào được hộp thư đến của Gmail và các dịch vụ tương tự thì gần như rất khó giải quyết
    Tuy nhiên, nếu relay qua dịch vụ như Amazon SES thì thiết lập cũng dễ và vấn đề chuyển phát có thể biến mất. Nếu tự vận hành vì lý do chính trị hoặc chủ quyền dữ liệu thì đây có thể là giải pháp khó chấp nhận

  • Điểm hay nhất của mail server tự vận hành là không cần lọc spam. Thỉnh thoảng có thư rác, nhưng tôi thích sự chắc chắn rằng bất kỳ ai cũng có thể gửi mail cho mình hơn
    Chỉ kiểm tra thư mục spam là không đủ. Các hãng công nghệ lớn đôi khi âm thầm vứt bỏ mail mà không có lý do rõ ràng; tỷ lệ nhận thành công của Gmail chỉ khoảng 90%, nên ngay cả mail do các nhà cung cấp lớn khác gửi cũng biến mất 10%. Mail tự vận hành của tôi chưa từng thất bại khi nhận
    Ngược lại, để gửi mail tới tài khoản ở các dịch vụ lớn khác thì vẫn cần tài khoản bên đó, nhưng tôi luôn cung cấp địa chỉ tự vận hành làm liên hệ. Tôi muốn thử xem có thể dùng các nhà cung cấp lớn chỉ để gửi đi, còn MX thì trỏ về máy chủ tự vận hành hay không

    • Máy chủ của tôi chặn hàng nghìn spam mỗi ngày. Con số này chưa tính hàng nghìn kết nối bị chặn trước cả khi chúng kịp thử gửi spam
  • https://xmox.nl rất dễ cấu hình

    • Có vẻ tôi đã vận hành hơn một năm, nhưng dự án dường như đã ngừng phát triển và cũng thiếu các tính năng lọc cần thiết. Tôi đang cân nhắc rời khỏi cấu hình xmox đơn lẻ để quay lại một bộ thành phần dựa trên Postfix
  • Tôi đang tự vận hành mailing list cho website. Chỉ có vài người đăng ký, nhưng mail được chuyển phát bình thường
    Tôi không có ý định tự vận hành cả mail cá nhân

  • Vài năm trước tôi đã cài https://modoboa.org/ trên VPS Hetzner, nhưng sau nhiều lần nâng cấp thất bại thì về cơ bản đã bỏ cuộc. Hiện vẫn duy trì chỉ vì phần lớn vẫn hoạt động, nhưng đây không phải là cấu hình bền vững về lâu dài, và tôi vẫn chưa quyết định lựa chọn tiếp theo
    Một số mã xác thực hai yếu tố như của Steam đến hộp thư quá muộn. Không tìm được nguyên nhân nên những lúc đó tôi dùng tài khoản Gmail gần như không bao giờ dùng
    Spam cũng lọt qua ở mức nào đó, nhưng với spam gửi đến thì không có giải pháp hoàn hảo. LLM được thiết kế cho xử lý ngôn ngữ tự nhiên có thể khá phù hợp với việc này, nên tôi tò mò hiệu năng thực tế ra sao, nhưng cũng có vẻ khả năng cao là mức dùng tài nguyên sẽ phi lý