Rustmailer là một công cụ email middleware tự host mã nguồn mở, được xây dựng bằng Rust nhằm giúp các lập trình viên quản lý email một cách linh hoạt và hiệu quả. Thay vì phụ thuộc vào các dịch vụ email bên thứ ba, Rustmailer cho phép bạn triển khai một hệ thống email hoàn toàn độc lập trên máy chủ của riêng mình, hỗ trợ IMAP, SMTP, Gmail API, và Microsoft Graph API. Công cụ này đặc biệt lý tưởng cho các nền tảng SaaS, hệ thống CRM, công cụ tự động hóa email, và ứng dụng enterprise cần xử lý email quy mô lớn.

Tại sao nên chọn Rustmailer?
Rustmailer nổi bật so với các giải pháp email khác vì những lợi ích sau:
- Hiệu suất cao & tiết kiệm chi phí – Viết bằng Rust, Rustmailer cung cấp hiệu suất tuyệt vời với mức tiêu thụ bộ nhớ cực kỳ thấp. Bạn có thể chạy nó trên máy chủ nhỏ mà không cần Redis hay bất kỳ phụ thuộc ngoài nào. Một tệp binary duy nhất dưới 60MB là tất cả những gì bạn cần.
- Không cần cơ sở dữ liệu bên ngoài – Khác với hầu hết các middleware email khác, Rustmailer hoạt động mà không yêu cầu cơ sở dữ liệu bên ngoài hoặc hệ thống cache phức tạp. Điều này giảm đáng kể chi phí vận hành và độ phức tạp triển khai.
- Đồng bộ IMAP đa tài khoản – Rustmailer hỗ trợ đồng bộ hàng trăm tài khoản IMAP một cách hiệu quả, sử dụng UID-based strategy để đồng bộ tăng dần. Bạn có thể chọn các thư mục cụ thể, đồng bộ theo khoảng ngày, hoặc sử dụng cửa sổ thời gian.
- API hiện đại (gRPC & OpenAPI) – Cung cấp hai giao diện API mạnh mẽ: gRPC cho hiệu suất cao và OpenAPI (REST) cho độ tương thích rộng. Tài liệu API được hỗ trợ đa phiên bản, giúp bạn dễ dàng tích hợp vào bất kỳ ứng dụng nào.
- Hỗ trợ webhook & NATS – Rustmailer có thể gửi sự kiện email đến các hệ thống bên ngoài thông qua webhooks hoặc NATS message queue, hỗ trợ VRL scripting để lọc và chuyển đổi dữ liệu tùy chỉnh.
- Giao diện web & ứng dụng Email Client tích hợp – Bao gồm dashboard quản trị và một ứng dụng email client dựa trên web, cho phép bạn quản lý email trực tiếp từ trình duyệt.
- OAuth2 tích hợp – Hỗ trợ OAuth2 flow với giao diện ủy quyền web, tự động quản lý access token và refresh token.
Yêu cầu hệ thống & chuẩn bị
Trước khi cài đặt Rustmailer, hãy đảm bảo bạn có:
- Linux/macOS/Windows – Hệ điều hành hỗ trợ (Linux khuyến nghị cho production)
- Rust 1.70+ – Nếu build từ source (hoặc bỏ qua nếu dùng Docker)
- Docker & Docker Compose – Nếu muốn chạy trong container (khuyến nghị)
- Quyền truy cập root – Để cài đặt các yêu cầu hệ thống
- Port 15630 & 16630 – Cần mở trên firewall (HTTP: 15630, gRPC: 16630)
- Dung lượng ổ cứng – Tối thiểu 2GB cho dữ liệu email, tùy theo số lượng tài khoản
Hướng dẫn cài đặt Rustmailer
Phương pháp 1: Cài đặt với Docker (Khuyến nghị)
Docker là cách nhanh nhất để triển khai Rustmailer mà không cần lo lắng về phụ thuộc.
Bước 1: Tạo thư mục dữ liệu:
mkdir -p /sourcecode/rustmailer_dataBước 2: Chạy container Rustmailer:
docker run -d \
--name rustmailer \
-p 15630:15630 \
-p 16630:16630 \
-e RUSTMAILER_ROOT_DIR=/data \
-v /sourcecode/rustmailer_data/:/data \
rustmailer/rustmailer:latestBước 3: Xác nhận dịch vụ đang chạy:
docker ps | grep rustmailerNếu container đang chạy, bạn sẽ thấy rustmailer trong danh sách. Truy cập giao diện web tại http://localhost:15630.

Phương pháp 2: Cài đặt từ source (Advanced)
Nếu bạn muốn build từ mã nguồn:
Bước 1: Clone repository:
git clone https://github.com/rustmailer/rustmailer.git
cd rustmailerBước 2: Build frontend assets (nếu cần):
cd web
pnpm install
pnpm run build
cd ..Bước 3: Compile Rust binary:
cargo build --releaseSau khi build hoàn tất, binary sẽ có sẵn tại ./target/release/rustmailer.
Bước 4: Chạy Rustmailer:
./target/release/rustmailer --rustmailer-root-dir /tmp/dataCấu hình môi trường
Tạo file .env hoặc rustmailer.env để cấu hình Rustmailer:
# Đường dẫn thư mục lưu trữ dữ liệu
RUSTMAILER_ROOT_DIR=/data
# Cấu hình HTTP
RUSTMAILER_HTTP_PORT=15630
RUSTMAILER_BIND_IP=0.0.0.0
RUSTMAILER_PUBLIC_URL=http://localhost:15630
# Cấu hình gRPC
RUSTMAILER_GRPC_ENABLED=true
RUSTMAILER_GRPC_PORT=16630
# Ghi log vào file
RUSTMAILER_LOG_TO_FILE=trueNếu dùng Docker, thêm --env-file khi chạy container:
docker run -d \
--name rustmailer \
-p 15630:15630 \
-p 16630:16630 \
-v /sourcecode/rustmailer_data/:/data \
--env-file /path/to/rustmailer.env \
rustmailer/rustmailer:latestHướng dẫn sử dụng Rustmailer
Tích hợp IMAP
Rustmailer cho phép bạn đồng bộ email từ bất kỳ máy chủ IMAP nào (Gmail, Outlook, dịch vụ email tùy chỉnh, v.v.).
Thêm tài khoản IMAP:
Sử dụng OpenAPI (REST), gửi yêu cầu POST đến:
curl -X POST http://localhost:15630/api/v1/accounts \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"account_type": "imap",
"imap_host": "imap.gmail.com",
"imap_port": 993,
"imap_use_tls": true,
"username": "[email protected]",
"password": "app_password_here"
}'Các lưu ý quan trọng:
- Với Gmail, bạn cần tạo App Password thay vì sử dụng mật khẩu thường (bật xác thực 2 yếu tố trước)
- Đối với Outlook/Office 365, sử dụng
imap.outlook.com:993 - Các máy chủ IMAP khác cần cấu hình phù hợp
Tích hợp SMTP
Rustmailer hỗ trợ gửi email qua SMTP với connection pooling để hiệu suất tối ưu.
Cấu hình tài khoản SMTP:
curl -X POST http://localhost:15630/api/v1/accounts \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"account_type": "smtp",
"smtp_host": "smtp.gmail.com",
"smtp_port": 587,
"smtp_use_tls": true,
"username": "[email protected]",
"password": "app_password_here"
}'Gửi email qua SMTP:
curl -X POST http://localhost:15630/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"account_id": "your_account_id",
"to": "[email protected]",
"subject": "Hello from Rustmailer",
"body_html": "<p>This is a test email from Rustmailer</p>"
}'Tích hợp Gmail API
Tạo OAuth2 Credentials trên Google Cloud Console:
- Truy cập Google Cloud Console
- Tạo project mới
- Kích hoạt Gmail API
- Tạo OAuth 2.0 Client ID (loại: Web application)
- Sao chép Client ID và Client Secret
Cấu Hình Gmail API Trong Rustmailer:
curl -X POST http://localhost:15630/api/v1/accounts \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"account_type": "gmail_api",
"gmail_client_id": "your_client_id.apps.googleusercontent.com",
"gmail_client_secret": "your_client_secret"
}'Rustmailer sẽ tự động quản lý access token và refresh token.
Tích hợp webhook
Rustmailer có thể gửi sự kiện email (email mới, cờ thay đổi, v.v.) đến webhook của bạn.
Cấu hình webhook:
curl -X POST http://localhost:15630/api/v1/webhooks \
-H "Content-Type: application/json" \
-d '{
"account_id": "your_account_id",
"url": "https://your-app.com/webhooks/email",
"events": ["new_message", "flag_update"]
}'Rustmailer sẽ gửi payload JSON đến webhook của bạn mỗi khi có sự kiện mới.
Kiểm tra & test
Xem danh sách tài khoản:
curl http://localhost:15630/api/v1/accountsLấy danh sách Email từ IMAP:
curl http://localhost:15630/api/v1/accounts/your_account_id/messagesXem thông tin Dashboard:
Truy cập giao diện web tại http://localhost:15630 để xem dashboard quản trị, danh sách email, và các cài đặt.
Tối ưu hóa cho Production
1. Sử dụng HTTPS
Cấu hình reverse proxy (Nginx/Apache) để sử dụng HTTPS:
server {
listen 443 ssl;
server_name rustmailer.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:15630;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}2. Backup dữ liệu định kỳ
docker exec rustmailer tar -czf /data/backup_$(date +%Y%m%d).tar.gz /data3. Giám sát & Logging
Bật RUSTMAILER_LOG_TO_FILE=true để ghi log, sau đó sử dụng ELK Stack hoặc Datadog để theo dõi.
4. Rate Limiting & Connection Pooling
Rustmailer tự động quản lý connection pooling cho SMTP. Bạn có thể cấu hình giới hạn số lượng tài khoản đồng bộ để tránh quá tải server.
Các lỗi thường gặp & cách khắc phục
Lỗi: “Connection refused” trên port 15630
→ Kiểm tra xem container đang chạy: docker ps
→ Xem log: docker logs rustmailer
Lỗi: “Authentication failed” với Gmail
→ Đảm bảo bạn đã tạo App Password (không phải mật khẩu Gmail thường)
→ Bật xác thực 2 yếu tố trên tài khoản Gmail
Lỗi: “Port already in use”
# Tìm process chiếm port 15630
lsof -i :15630
# Dừng container cũ
docker stop rustmailer
docker rm rustmailerLỗi: “Webhook timeout”
→ Đảm bảo webhook URL của bạn trả về response nhanh (< 5s)
→ Kiểm tra firewall cho phép kết nối từ server Rustmailer
Rustmailer là giải pháp email middleware tự host mạnh mẽ cho các developer muốn quản lý email độc lập, mà không phụ thuộc vào bên thứ ba. Với hỗ trợ IMAP, SMTP, Gmail API, Graph API, hiệu suất cao được viết bằng Rust, và chi phí vận hành cực kỳ thấp, Rustmailer là lựa chọn lý tưởng cho SaaS, CRM, automation platforms, và các ứng dụng enterprise cần xử lý email quy mô lớn.
Hãy thử nghiệm Rustmailer hôm nay bằng cách triển khai container Docker, tích hợp các tài khoản email của bạn, và khám phá toàn bộ tiềm năng của công cụ này. Đừng quên star repository trên GitHub tại https://github.com/rustmailer/rustmailer để ủng hộ dự án!







