Operations

Hướng dẫn cài dịch vụ Email trên VPS thuê tại thueVPS

Bạn vừa thuê một VPS tại thueVPS và muốn tự chạy mail server để gửi email giao dịch cho ứng dụng, hoặc muốn có hòm thư riêng với tên miền mình sở hữu, không phụ thuộc Gmail hay Outlook? Việc này khả thi hoàn toàn, nhưng nếu cấu hình sai, email của bạn sẽ bay thẳng vào thư mục Spam. Bài này mình sẽ hướng dẫn bạn cài dịch vụ Email trên VPS thuê tại thueVPS một cách chi tiết, từ cài Postfix, Dovecot đến cấu hình DNS (SPF, DKIM, DMARC) cho thư đến tay người nhận.

Yêu cầu trước khi bắt đầu

  • Một VPS chạy Ubuntu 24.04 LTS (hoặc Debian 12) với quyền root hoặc user sudo. Bạn có thể đặt mua VPS giá rẻ tại thueVPS với IPv4 riêng, full root để làm chủ toàn bộ tiến trình.
  • Tên miền (domain) đã trỏ DNS về VPS. Ví dụ: yourdomain.com.
  • Biết sử dụng SSH và soạn thảo file trên Linux (vim, nano).

Vì sao nên tự cài mail server thay vì dịch vụ bên ngoài?

Tự quản email server giúp bạn có quyền kiểm soát rất cao: không giới hạn dung lượng hộp thư, gửi số lượng email giao dịch không bị chặn vì vượt quota. Bạn cũng chủ động được bảo mật, tự cấu hình bộ lọc, và tạo bao nhiêu hộp thư với tên miền mình thích. Tuy nhiên, đánh đổi là bạn phải tự lo chống spam, đảm bảo danh tiếng IP và cập nhật hệ thống thường xuyên.

Bước 1 - Cập nhật hệ thống và cài đặt gói cần thiết

Đầu tiên, SSH vào VPS và chạy lệnh cập nhật toàn bộ gói.

sudo apt update && sudo apt upgrade -y

Tiếp theo, cài đặt Postfix (MTA), Dovecot (IMAP/POP3) và các công cụ hỗ trợ.

sudo apt install postfix dovecot-core dovecot-imapd dovecot-pop3d opendkim opendkim-tools -y

Trong quá trình cài Postfix, bạn sẽ được hỏi loại cấu hình. Chọn Internet Site và nhập yourdomain.com làm system mail name.

Verify: Kiểm tra trạng thái Postfix và Dovecot đã chạy chưa.

sudo systemctl status postfix
sudo systemctl status dovecot

Bước 2 - Cấu hình Postfix (gửi thư ra ngoài)

Mở file cấu hình chính của Postfix.

sudo nano /etc/postfix/main.cf

Đảm bảo có các dòng sau (nếu thiếu thì thêm hoặc sửa):

myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/

myhostname là hostname đầy đủ của VPS, thường trỏ đến A record (ví dụ mail). home_mailbox = Maildir/ sẽ lưu thư dạng thư mục Maildir trong thư mục home của user.

Kiểm tra cú pháp và restart Postfix.

sudo postfix check
sudo systemctl restart postfix

Bước 3 - Cấu hình Dovecot (nhận thư)

Mở file cấu hình Dovecot.

sudo nano /etc/dovecot/dovecot.conf

Bỏ comment dòng !include conf.d/*.conf và thêm dòng sau để dùng giao thức IMAP và POP3.

protocols = imap pop3

Tiếp theo, chỉnh file /etc/dovecot/conf.d/10-mail.conf để đặt đường dẫn hộp thư đúng với Postfix.

mail_location = maildir:~/Maildir

Sau đó, mở file /etc/dovecot/conf.d/10-auth.conf và bật plaintext auth (chỉ nên dùng trong mạng nội bộ hoặc kết hợp SSL).

disable_plaintext_auth = no
auth_username_format = %n

Khởi động lại Dovecot.

sudo systemctl restart dovecot

Bước 4 - Tạo chứng chỉ SSL miễn phí với Certbot

Dùng Let’s Encrypt để tạo chứng chỉ SSL cho hostname mail.yourdomain.com, cần thiết cho kết nối IMAPS/POP3S an toàn.

sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.yourdomain.com

Sau khi có chứng chỉ, cấu hình Postfix và Dovecot dùng SSL. Thêm các dòng sau vào /etc/postfix/main.cf:

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may

Trong Dovecot, mở /etc/dovecot/conf.d/10-ssl.conf và sửa:

ssl = required
ssl_cert = </etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.yourdomain.com/privkey.pem

Verify: Sau khi restart cả 2 service, kiểm tra cổng 993 (IMAPS) bằng telnet hoặc nmap.

sudo systemctl restart postfix dovecot
sudo ss -tlnp | grep -E ':25|:143|:587|:993'

Bước 5 - Cấu hình DNS: A record, MX record

Đến phần thiết yếu: trỏ DNS. Bạn cần vào quản trị DNS của tên miền (thường trên Cloudflare, hoặc DNS của nhà đăng ký) và thêm các bản ghi sau:

LoạiTênGiá trịMục đích
Amail<địa chỉ IP VPS>Trỏ hostname mail về IP VPS
MX@ (hoặc để trống)mail.yourdomain.com (priority 10)Chỉ định server nhận thư

Verify: Dùng lệnh dig mx yourdomain.com để kiểm tra MX record đã xuất hiện chưa.

Bước 6 - Thiết lập SPF, DKIM và DMARC (chống spam)

Đây là bước quan trọng nhất để email của bạn không bị đánh dấu là spam.

Thêm bản ghi SPF

Thêm TXT record cho domain chính @ với giá trị:

"v=spf1 mx a:mail.yourdomain.com ~all"

Cài và cấu hình OpenDKIM

Mở file /etc/opendkim.conf và thêm:

Domain                  yourdomain.com
KeyFile                 /etc/opendkim/keys/yourdomain.com/mail.private
Selector                mail
Socket                  inet:8891@localhost

Tạo thư mục và sinh key.

sudo mkdir -p /etc/opendkim/keys/yourdomain.com
sudo opendkim-genkey -D /etc/opendkim/keys/yourdomain.com/ -d yourdomain.com -s mail
sudo chown -R opendkim:opendkim /etc/opendkim/keys/
sudo systemctl restart opendkim

Nội dung public key nằm trong file /etc/opendkim/keys/yourdomain.com/mail.txt. Bạn copy giá trị p=... và tạo một TXT record mail._domainkey.yourdomain.com với giá trị đó.

Thêm DMARC

Tạo TXT record cho _dmarc.yourdomain.com với giá trị:

"v=DMARC1; p=quarantine; rua=mailto:[email protected]"

Verify: Sau khi DNS propagate (có thể mất vài phút), dùng MXToolbox hoặc lệnh dig txt mail._domainkey.yourdomain.com để kiểm tra DKIM.

Bước 7 - Tạo user và gửi thử email

Tạo user hệ thống cho hộp thư.

sudo useradd -m -s /bin/bash contact
sudo passwd contact

Bây giờ, từ VPS, gửi thử một email tới Gmail của bạn.

echo "Test mail from my VPS" | mail -s "Hello Gmail" [email protected]

Kiểm tra hộp thư InboxSpam của Gmail. Nếu thấy trong Inbox, bạn đã thành công. Nếu vào Spam, kiểm tra lại các bản ghi DNS (thường là thiếu DKIM hoặc SPF sai cú pháp).

Xử lý lỗi thường gặp

  • Email bị bounce với mã 550: Nguyên nhân thường do IP VPS có reputation thấp. Hãy kiểm tra IP trên blacklist và làm sạch. Dùng rDNS (PTR record) trỏ về mail.yourdomain.com cũng giúp cải thiện đáng kể.
  • Không kết nối được qua IMAP/POP3: Kiểm tra firewall. Trên Ubuntu dùng sudo ufw allow 993,587,25,143/tcp rồi sudo ufw reload.
  • Error "permission denied" trên Maildir: Chạy sudo chown contact:contact /home/contact/Maildir/ -R, sau đó restart Dovecot.

Nếu bạn không muốn tự xử lý hết đống cấu hình phức tạp này, có thể chọn dịch vụ VPS SMTP từ thueVPS với IP sạch và cấu hình sẵn port 25, giúp bạn chỉ cần focus vào gửi email, không phải đau đầu với SPF/DKIM.

Câu hỏi thường gặp

Có cần port 25 mở sẵn trên VPS không?

Có. Port 25 là cổng chuẩn để gửi email ra Internet. Hầu hết VPS mới đều block port này để tránh spam. Bạn nên kiểm tra với thueVPS trước khi mua VPS nếu cần dùng port 25.

Dùng Maildir hay mbox?

Maildir là lựa chọn tốt hơn vì mỗi email là một file riêng, không lo hỏng một email làm hỏng toàn bộ hộp thư. Từ đầu bài mình đã dùng Maildir.

Làm sao để tạo nhiều hộp thư?

Đơn giản là tạo user Linux tương ứng: sudo useradd -m -s /bin/bash sales, sudo passwd sales. Sau đó bạn có thể đăng nhập qua email client với địa chỉ [email protected].

Chỉnh sửa file cấu hình xong mà service không restart được, phải làm sao?

Kiểm tra log ngay: sudo journalctl -u postfix -n 50sudo journalctl -u dovecot -n 50. Lỗi thường gặp là sai cú pháp file config (thiếu dấu ; hoặc sai đường dẫn). Chạy sudo postfix check để Postfix tự phát hiện lỗi.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.