hướng dẫn cài đặt email server cơ bản trên Ubuntu

1. Chuẩn bị

  • Ubuntu server
  • Domain (ví dụ: example.com)
  • DNS trỏ: mail.example.com -> IP server MX example.com -> mail.example.com

Kiểm tra hostname:

hostnamectl set-hostname mail.example.com

2. Cài Postfix

sudo apt update
sudo apt install postfix -y

Khi hỏi cấu hình:

  • General type: Internet Site
  • System mail name: example.com

Kiểm tra:

postfix status

3. Cấu hình Postfix

Mở file:

sudo nano /etc/postfix/main.cf

Đảm bảo có:

myhostname = mail.example.com
mydomain = example.com
myorigin = /etc/mailname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/

Restart:

sudo systemctl restart postfix

4. Cài Dovecot (nhận mail)

sudo apt install dovecot-imapd dovecot-pop3d -y

Cấu hình Maildir:

sudo nano /etc/dovecot/conf.d/10-mail.conf

Tìm và sửa:

mail_location = maildir:~/Maildir

Restart:

sudo systemctl restart dovecot

5. Tạo user email

Email sẽ theo user Linux:

sudo adduser user1

Email:
📧 user1@example.com


6. Mở firewall

sudo ufw allow 25,110,143,465,587,993,995/tcp
sudo ufw reload

7. Test gửi mail

echo "Hello Mail Server" | mail -s "Test" user1@example.com

Kiểm tra:

ls /home/user1/Maildir/new

PHẦN 1: Cài SSL (Let’s Encrypt)

1. Cài Certbot

sudo apt update
sudo apt install certbot -y

2. Cấp chứng chỉ SSL

⚠️ Domain mail.example.com phải trỏ đúng IP

sudo certbot certonly --standalone -d mail.example.com

SSL sẽ nằm tại:

/etc/letsencrypt/live/mail.example.com/

3. Cấu hình SSL cho Postfix

Mở:

sudo nano /etc/postfix/main.cf

Thêm hoặc sửa:

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_auth_only = yes

Restart:

sudo systemctl restart postfix

4. Cấu hình SSL cho Dovecot

Mở:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Sửa:

ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem

Restart:

sudo systemctl restart dovecot

PHẦN 2: SMTP AUTH (bắt buộc để gửi mail an toàn)

sudo nano /etc/postfix/main.cf

Thêm:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination

Kết nối Postfix ↔ Dovecot:

sudo nano /etc/dovecot/conf.d/10-master.conf

Tìm service auth:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Restart:

sudo systemctl restart postfix dovecot

PHẦN 3: Chống SPAM (SpamAssassin)

1. Cài SpamAssassin

sudo apt install spamassassin spamc -y

Enable service:

sudo systemctl enable spamassassin
sudo systemctl start spamassassin

2. Tích hợp SpamAssassin với Postfix

Cài amavisd-new:

sudo apt install amavisd-new -y

Postfix master:

sudo nano /etc/postfix/master.cf

Thêm cuối file:

smtp-amavis unix - - - - 2 smtp
  -o smtp_data_done_timeout=1200
  -o disable_dns_lookups=yes
  -o max_use=20

127.0.0.1:10025 inet n - - - - smtpd
  -o content_filter=
  -o smtpd_delay_reject=no

Trong main.cf:

content_filter = smtp-amavis:[127.0.0.1]:10024

Restart:

sudo systemctl restart postfix amavis spamassassin

PHẦN 4: SPF, DKIM, DMARC (RẤT QUAN TRỌNG)

1. SPF (DNS)

Thêm TXT record:

example.com TXT "v=spf1 mx ip4:IP_SERVER -all"

2. DKIM

sudo apt install opendkim opendkim-tools -y

Tạo key:

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

DNS TXT (mail._domainkey):

v=DKIM1; k=rsa; p=MIIBIjANBgkq...

3. DMARC

DNS TXT:

_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"

PHẦN 5: Auto renew SSL

sudo crontab -e

Thêm:

0 3 * * * certbot renew --quiet

Để mở dịch vụ gửi mail SMTP port 587 và 465 (SSL) trên Ubuntu (phổ biến nhất là Postfix), bạn làm theo đúng thứ tự dưới đây.


1️⃣ Mở port trên Firewall (UFW)

ufw allow 587/tcp
ufw allow 465/tcp
ufw reload
ufw status

Nếu bạn không dùng UFW, bỏ qua bước này.


2️⃣ Cấu hình Postfix mở port 587 & 465

Mở file cấu hình chính

nano /etc/postfix/master.cf

🔹 Bật port 587 (Submission)

Tìm dòng:

#submission inet n       -       y       -       -       smtpd

Sửa thành:

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

🔹 Bật port 465 (SMTPS – SSL)

Tìm dòng:

#smtps inet n       -       y       -       -       smtpd

Sửa thành:

smtps inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

👉 Lưu file và thoát.


3️⃣ Cấu hình SSL/TLS cho Postfix

Mở file:

nano /etc/postfix/main.cf

Thêm (hoặc chỉnh):

smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_tls_security_level=may
smtpd_tls_auth_only=yes

smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes

📌 Nếu bạn chưa có SSL, có thể dùng Let’s Encrypt:

apt install certbot
certbot certonly --standalone -d mail.domain.com

Sau đó dùng:

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.domain.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.domain.com/privkey.pem

4️⃣ Cấu hình Dovecot (SMTP AUTH)

Mở:

nano /etc/dovecot/conf.d/10-master.conf

Tìm:

#unix_listener /var/spool/postfix/private/auth {
#}

Sửa thành:

unix_listener /var/spool/postfix/private/auth {
  mode = 0660
  user = postfix
  group = postfix
}

Restart dovecot:

systemctl restart dovecot

5️⃣ Restart Postfix

systemctl restart postfix

6️⃣ Kiểm tra port đã mở chưa

ss -lntp | grep -E '587|465'

Kết quả đúng:

LISTEN 0 100 0.0.0.0:587   users:(("postfix",pid=...))
LISTEN 0 100 0.0.0.0:465   users:(("postfix",pid=...))

7️⃣ Test gửi mail

Test SMTP 587

openssl s_client -starttls smtp -connect localhost:587

Test SMTP SSL 465

openssl s_client -connect localhost:465

Nếu thấy:

250 DSN

→ Thành công 🎉

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*