Tự dựng Mail Server Postfix & Dovecot trên Fedora: Bảo mật tối đa với SSL và SELinux

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Xây dựng Mail Server trên Fedora: Từ “Zero” đến “Run”

Mình đã gắn bó với Fedora làm máy dev chính hơn 2 năm. Tốc độ cập nhật package ở đây thực sự rất sướng. Tuy nhiên, tự dựng Mail Server lại là câu chuyện khác. Nhiều bạn junior thường e dè vì hệ thống này có quá nhiều thành phần rời rạc. Bạn phải lo từ việc gửi mail (MTA), nhận mail (MDA) cho đến các chính sách SELinux khắt khe.

Đừng quá lo lắng. Nếu nắm vững luồng đi của dữ liệu, việc triển khai này sẽ là bài tập nâng cao tay nghề quản trị hệ thống cực tốt. Bài viết này tập trung vào bộ đôi kinh điển: Postfix và Dovecot.

Chọn cách triển khai nào cho tối ưu?

Trước khi gõ lệnh, hãy nhìn qua 3 hướng đi phổ biến hiện nay:

1. Các bộ cài tự động (All-in-one)

iRedMail hay Mail-in-a-Box là những cái tên tiêu biểu. Bạn có ngay hệ thống đầy đủ tính năng chỉ sau vài cú click.

  • Ưu điểm: Cực nhanh, tích hợp sẵn SpamAssassin, Roundcube.
  • Nhược điểm: Khó tùy biến. Nó cài quá nhiều package thừa khiến bạn khó kiểm soát khi có lỗi phát sinh.

2. Sử dụng Docker

Docker-mailserver là lựa chọn mang tính hiện đại, sạch sẽ.

  • Ưu điểm: Dễ backup và di chuyển giữa các server.
  • Nhược điểm: Cấu hình networking khá lằng nhằng, dễ xung đột với SELinux trên Fedora.

3. Cài đặt thủ công (Hard Way)

Đây là cách mình khuyến khích vì nó mang lại sự kiểm soát tuyệt đối.

  • Ưu điểm: Tối ưu hiệu năng tốt nhất, hiểu rõ từng service giao tiếp với nhau thế nào.
  • Nhược điểm: Tốn khoảng 30-60 phút để cấu hình chuẩn xác.

Hiểu được bản chất của cách thứ 3, bạn sẽ xử lý được mọi vấn đề trên bất kỳ distro nào khác.

Bước 1: Hạ tầng DNS – Chìa khóa để không bị vào Spam

Cập nhật hệ thống là việc đầu tiên cần làm:

sudo dnf update -y
sudo hostnamectl set-hostname mail.yourdomain.com

Để đạt điểm 10/10 trên các trang check mail-tester, bạn bắt buộc phải có 3 bản ghi này:

  • Bản ghi A: mail.yourdomain.com trỏ về IP server.
  • Bản ghi MX: Trỏ về mail.yourdomain.com với độ ưu tiên cao nhất (thường là 10).
  • Bản ghi PTR (Reverse DNS): Cực kỳ quan trọng. Hãy liên hệ nhà cung cấp VPS để map IP về domain của bạn. Thiếu cái này, Gmail sẽ từ chối nhận mail ngay lập tức.

Bước 2: Postfix – “Nhân viên bưu điện” mẫn cán

Postfix chịu trách nhiệm gửi và nhận thư qua Internet. Cài đặt nó rất đơn giản:

sudo dnf install postfix -y

Mở file /etc/postfix/main.cf và điều chỉnh các dòng sau. Hãy thay yourdomain.com bằng tên miền của bạn:

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

Mình chọn Maildir/ thay vì mbox. Cách này lưu mỗi email thành một file riêng biệt, giúp tránh lỗi khóa file khi bạn nhận hàng nghìn mail cùng lúc.

Bước 3: Dovecot – “Hòm thư” thông minh

Dovecot giúp người dùng lấy thư về điện thoại hoặc máy tính qua giao thức IMAP/POP3.

sudo dnf install dovecot -y

Bạn cần xử lý 3 file cấu hình trọng yếu:

1. Giao thức: Tại /etc/dovecot/dovecot.conf, kích hoạt các dịch vụ cần thiết:

protocols = imap pop3 lmtp

2. Nơi lưu trữ: Trong /etc/dovecot/conf.d/10-mail.conf, trỏ về đúng định dạng Maildir:

mail_location = maildir:~/Maildir

3. Xác thực: Tại /etc/dovecot/conf.d/10-auth.conf, hãy tắt đăng nhập không mã hóa để bảo mật:

disable_plaintext_auth = yes
auth_mechanisms = plain login

Bước 4: Mã hóa SSL/TLS – Đừng để mail chạy “trần”

Gửi mail không mã hóa giống như gửi một tấm bưu thiếp công khai. Ai cũng có thể đọc trộm trên đường đi. Nếu chưa có chứng chỉ Let’s Encrypt, bạn có thể dùng tạm chứng chỉ tự ký của Fedora.

Cấu hình Dovecot (/etc/dovecot/conf.d/10-ssl.conf):

ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Sau đó, ép Postfix sử dụng chung chứng chỉ này tại /etc/postfix/main.cf:

smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_use_tls = yes

Bước 5: Chinh phục SELinux và Firewall

Đây là nơi 80% các bạn sẽ gặp lỗi. Fedora bảo mật rất kỹ. Nếu không cấu hình SELinux, Dovecot sẽ bị chặn đứng dù bạn có phân quyền chmod 777 đi chăng nữa.

Mở các cổng dịch vụ trên Firewall (Port 25, 587, 993, 995):

sudo firewall-cmd --permanent --add-service={smtp,smtps,submission,imap,imaps,pop3,pop3s}
sudo firewall-cmd --reload

Dạy cho SELinux biết Postfix và Dovecot là “người nhà”:

sudo setsebool -P dovecot_deliver_wildcard_python 1
sudo setsebool -P mail_privileged_view_content 1

Mẹo nhỏ: Nếu thấy lỗi “Permission denied”, hãy chạy ngay sealert -a /var/log/audit/audit.log. Nó sẽ chỉ đích danh lý do SELinux đang khó chịu với bạn.

Bước 6: Vận hành và kiểm tra

Kích hoạt các dịch vụ để chúng tự chạy mỗi khi khởi động lại server:

sudo systemctl enable --now postfix dovecot

Tạo một user thật để test:

sudo useradd -m kithuat_pro
sudo passwd kithuat_pro

Bây giờ, hãy mở Thunderbird, nhập IP server và port 993 (IMAP). Nếu đăng nhập thành công, chúc mừng bạn đã sở hữu một Mail Server xịn xò.

Tổng kết

Tự build Mail Server không chỉ là cài phần mềm. Nó giúp bạn hiểu sâu về bảo mật và luồng dữ liệu mạng. Fedora Server là nền tảng cực kỳ vững chắc cho việc này. Đừng quên soi log tại /var/log/maillog mỗi ngày. Bạn sẽ thấy hàng tá cuộc tấn công brute-force, đó là lúc bạn cần học thêm về Fail2Ban đấy!

Share: