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 🎉
Để lại một phản hồi