Mail server tự host + nền tảng email marketing cho cả hệ sinh thái AMANVITA: gửi transactional, gửi chiến dịch hàng loạt, IP warmup, theo dõi mở/click, và cắm thẳng vào CRM qua API. Chạy trên engine mail mã nguồn mở (Postfix · Dovecot · Rspamd · Go core), self-host bằng Docker trên VPS — không phụ thuộc Resend/SendGrid/SES.
Chủ quản: Nguyễn Hữu Thi — Chairman, AMANVITA GROUP
Trạng thái: đang chạy production tại mail.huuthi.com · gửi từ nguyenhuuthi@amanvita.vn · mail-tester 10/10
| Nhóm | Tính năng |
|---|---|
| Gửi | Transactional (API x-api-key) · chiến dịch bulk (UI) · đa domain · Spintax chống trùng |
| Nhận | IMAP/POP (993/995 TLS) · Webmail (Roundcube) · mailbox cho nhân sự |
| Deliverability | SPF · DKIM · DMARC · rDNS/FCrDNS · IP warmup tự động · không vào spam |
| Theo dõi | Mở / click / bounce / complaint — lưu theo từng người nhận |
| Tích hợp | API HTTP cho CRM & mọi tool trong hệ sinh thái (đọc engagement từ DB) |
| Bảo mật | Chống brute-force (fail2ban-lite) · cảnh báo tự động · TLS thật · backup hằng ngày |
Mental model toàn hệ thống + bảng tra cứu "việc nào đọc file nào". Đọc đầu tiên.
| File | Nội dung |
|---|---|
| architecture.md | Bức tranh tổng thể: 7 container, luồng gửi, bảng DB, và các "gotcha" quan trọng. Đọc TRƯỚC khi thao tác. |
| deploy.md | Cài đặt từ đầu: Docker Compose, port phụ + Caddy reverse-proxy (chạy chung VPS với app khác). |
| dns-rdns.md | Cấu hình DNS (Cloudflare/HostVN), rDNS, và chẩn đoán mail vào spam (mail-tester, DKIM). |
| domain-mailbox-dkim.md | Thêm domain gửi mới + sinh DKIM + tạo mailbox (lệnh sẵn). |
| sending.md | Gửi mail: test CLI, chiến dịch UI, gửi chậm an toàn, chuẩn List-Unsubscribe. |
| warmup.md | Cơ chế IP warmup + lịch tăng dần lượng gửi. |
| tracking-and-tags.md | Theo dõi gửi/nhận/mở/click + giới hạn tag. |
| crm-integration.md | ⭐ Cắm API vào CRM — endpoint, body, hợp đồng API (đã test thật). |
| AI-INTEGRATION.md | Brief ngắn để AI khác hiểu nhanh cách đấu mail vào tool mới. |
| audit-report.md | Báo cáo audit bảo mật + changelog hardening + backlog. |
- deploy-new-instance.md — checklist dựng instance mới từ A→Z.
- add-domain-and-send.md — thêm domain gửi + chạy chiến dịch đầu tiên.
- sql-snippets.md — câu SQL hữu ích (ai mở/click, gắn tag, đổi giới hạn gửi…).
- live-instance.example.md — mẫu file thông tin instance (IP/credentials). Bản thật
live-instance.mdđược.gitignore, không bao giờ lên GitHub.
Lịch sử thay đổi + trạng thái mới nhất.
| Bạn muốn… | Đọc |
|---|---|
| Hiểu hệ thống | SKILL.md → docs/architecture.md |
| Dựng instance mới | Pipelines/deploy-new-instance.md |
| Cho 1 tool/CRM gửi mail | docs/crm-integration.md + docs/AI-INTEGRATION.md |
| Mail vào spam, sửa sao? | docs/dns-rdns.md (§Troubleshooting) |
| Thêm domain / nhân sự | docs/domain-mailbox-dkim.md |
Tool / CRM / Landing ──(HTTP POST, x-api-key)──► WeMail API (/api/batch_mail/api/send)
│
Core (Go) ─ rate-control + warmup + spintax + render ─► Postfix ─►(Rspamd ký DKIM)─► Internet
│
├─ PostgreSQL (domain · mailbox · contact · campaign · mailstat_*)
└─ Tracking pixel/link ──► mailstat_opened / mailstat_clicked
Stack: Postfix · Dovecot · Rspamd · Go (GoFrame) · PostgreSQL 17 · Redis 7 · Vue 3 · Roundcube — Docker Compose (7 container).
POST https://mail.huuthi.com/api/batch_mail/api/send
Header: x-api-key: <KEY>
Body: { "recipient": "khach@gmail.com",
"attribs": { "subject": "...", "html": "<p>...</p>" } }
- Gửi bất đồng bộ (queue) → trả
{ "success": true }. - Đọc tương tác: bảng
mailstat_opened/mailstat_clicked. - Chi tiết + 3 gotcha (prefix
/api, subject/html trongattribs,addresseremail thuần): xemdocs/crm-integration.md.
- Không có secret trong repo. Credentials thật (
references/live-instance.md) đã.gitignore— chỉ giữ local / secrets manager. Repo nên để PRIVATE. - Server: chống brute-force (fail2ban-lite + tắt AUTH port 25), TLS thật (Let's Encrypt), cảnh báo tự động, backup DB hằng ngày, core UI không phơi internet (sau Caddy).
- Cấp
x-api-keyriêng cho từng tool; mỗi mailbox đặt mật khẩu mạnh.
Engine chạy theo quy ước đặt tên wepowermail-* (container/path/DB/image) — đây là plumbing backend, người nhận mail / khách hàng không bao giờ thấy. Mọi mặt tiền (email, domain, From) đều là AMANVITA GROUP / amanvita.vn.
WeMail là phần triển khai · cấu hình · hardening · tích hợp · tài liệu của AMANVITA GROUP, xây dựng trên các phần mềm mã nguồn mở của các tác giả gốc — xin trân trọng ghi nhận:
| Thành phần | Tác giả / Nguồn | Giấy phép |
|---|---|---|
| BillionMail (engine core: API + UI quản lý + warmup/tracking) | aaPanel — github.com/aaPanel/BillionMail | AGPL-3.0 |
| Postfix (MTA gửi/nhận) | Wietse Venema | IBM Public License / EPL |
| Dovecot (IMAP/POP) | Dovecot Oy | MIT / LGPL |
| Rspamd (antispam + DKIM) | Vsevolod Stakhov | Apache-2.0 |
| Roundcube (webmail) | Roundcube team | GPL-3.0 |
| PostgreSQL · Redis | — | PostgreSQL License · BSD |
Engine BillionMail giữ giấy phép gốc AGPL-3.0 của tác giả. WeMail KHÔNG relicense engine; chỉ bổ sung lớp triển khai/tài liệu/tích hợp riêng của AMANVITA. Mọi tinh chỉnh cấu hình tôn trọng bản quyền tác giả gốc.
Nguyễn Hữu Thi — Chairman, AMANVITA GROUP
- 🌐 Website: huuthi.com
- 📘 Facebook: facebook.com/nguyenhuuthi1978
- ✖️ X (Twitter): @NguyenHuuThi78
© AMANVITA GROUP — Tài liệu nội bộ. Người ký: Nguyễn Hữu Thi — Chairman.