Trong hướng dẫn này chúng ta sẽ cùng tìm hiểu cách xây dựng một Email Server bằng Postfix và Dovecot trên CentOS 7. Postfix là một ứng dụng mã nguồn mở mạnh mẽ với khả năng gửi và nhận thư sử dụng SMTP. Dovecot là một máy chủ POP3 và IMAP mã nguồn mở miễn phí, nó cung cấp và truy xuất email đến các hộp thư cục bộ trên hệ thống Linux.
Yêu cầu:
– VPS hoặc Máy chủ chuyên dụng cài đặt CentOS 7.x và địa chỉ IP tĩnh. Để thuận tiện cho các hướng dẫn sau này thì bạn nên sử dụng VPS của Vultr.
– Tài khoản root. Trong hướng dẫn này tôi sẽ dùng tài khoản root, nếu tài khoản bạn sử dụng không phải là root, hãy sử dụng lệnh sudo khi cài đặt.
– Một domain. Trong nội dung bài hướng dẫn sẽ có một vài phần cấu hình liên quan đến phần quản lý domain.
Thiết lập DNS:
Đầu tiên bạn cần phải thiết lập một số cấu hình DNS, cụ thể là bản ghi MX trong phần quản lý tên miền của bạn. Một bản ghi MX sẽ có dạng như sau:
| Host | Type | Destination | Priority | TTL |
| @ | MX | mail.yourdomain.com | 10 | 3600 |
| A | your server public ip | 0 | 3600 |
Sau khi thiết lập xong DNS bạn cần đợi một chút để các cấu hình này được cập nhật. Có thể là 3-5 phút hoặc lâu hơn chút. Trong khi chờ đợi ta có thể tiến hành một số cài đặt trên CentOS.
Cài đặt Postfix
Đăng nhập vào vps với tài khoản của bạn và tiến hành chạy lệnh cập nhật repository và thư viện.
yum -y update
Đợi một chút để hoàn tất việc cập nhật. Sau đó bạn hãy đổi hostname server của bạn. Để thay đổi hostname ta sử dụng lệnh sau:
hostname mail.yourdomain.com
Tiếp theo là sửa file hosts:
vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 123.45.78.990 mail.yourdomain.com mail <-
Hãy thêm dòng tôi đánh dấu mũi tên bằng thông tin domain và server public ip của bạn. Sau khi hoàn tất các chỉnh sửa trên thì ta sẽ chuyển sang phần cài đặt và cấu hình cho postfix, dovecot. Sử dụng câu lệnh sau:
yum -y install postfix
Trước khi tiến hành việc thiết lập một số cấu hình cho postfix thì ta cần cài và cấu hình SSL để mã hoá và bảo mật cho email khi gửi đi. Trước tiên, ta tạo một thư mục ssl trong thư mục cài đặt của postfix bằng câu lệnh sau:
mkdir /etc/postfix/ssl cd /etc/postfix/ssl
Sau đó ta sẽ tạo file SSL certificates. Server của bạn cần có openssl để làm điều này. Nếu chưa có, hãy dùng câu lệnh này để cài đặt:
yum -y install openssl
Sau khi cài đặt xong openssl thì chạy tiếp lệnh sau để tạo file SSL certificates:
openssl req -x509 -nodes -newkey rsa:2048 -keyout server.key -out server.crt -nodes -days 365
Sau khi chạy lệnh trên, sẽ có một loạt các câu hỏi yêu cầu bạn nhập thông tin cho chứng chỉ SSL. Nó có dạng thế này:
Generating a 2048 bit RSA private key
..........................+++
...........................+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:VN
State or Province Name (full name) []:North
Locality Name (eg, city) [Default City]:Ha Noi
Organization Name (eg, company) [Default Company Ltd]: (Tên công ty của bạn hoặc để trống)
Organizational Unit Name (eg, section) []:(Cái này tôi điền bộ phận tôi làm việc)
Common Name (eg, your name or your server's hostname) []:mail.yourdomain.com
Email Address []:info@yourdomain.com
Sau khi bạn hoàn tất việc nhập các thông tin này file .key và .crt sẽ được tạo trong đường dẫn /etc/postfix/ssl. Đường dẫn của file này sẽ được đặt trong cấu hình của file main.cf. Vì vậy tiếp theo ta sẽ mở file /etc/postfix/main.cf lên để thay đổi một chút.
vi /etc/postfix/main.cf
Sau khi mở được file main.cf lên, hãy thêm đoạn sau đây xuống cuối file. Lưu ý một số config trong này đã có sẵn, hãy tìm và comment bằng dấu # ở đầu dòng để tránh bị trùng lặp. Tôi tập trung hết các cấu hình cần thiết vào đây để tiện cho việc thiết lập tiếp sau này.
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
home_mailbox = mail/
mynetworks = 127.0.0.0/8, 45.23.44.0/24
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_key_file = /etc/postfix/ssl/server.key
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Chú ý dòng mynetworks = 127.0.0.0/8, 45.23.44.0/24. Hãy thay địa chỉ 45.23.44.0/24 này thành public ip server của bạn và thay cụm số cuối trong địa chỉ ip server của bạn thành 0. Ví dụ: 45.23.44.111 thành 45.23.44.0. Điều này rất quan trọng vì nó ảnh hưởng đến việc mail của bạn có gửi được ra ngoài hay không.
Tiếp theo hãy mở file /etc/postfix/master.cf lên để thiết lập tiếp. Tìm dòng sau trong file master.cf:
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
Và thêm đoạn sau vào ngay phia dưới:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
OK. Lưu lại và đóng file đó vào. Ta đã tiến hành cài đặt và cấu hình xong cho Postfix. Tiếp theo sẽ là cài đặt và thiết lập cho Dovecot.
Cài đặt Dovecot
Chạy lệnh sau để cài đặt Dovecot lên CentOS.
yum -y install dovecot
Sau khi cài đặt xong Dovecot, hãy mở file /etc/dovecot/conf.d/10-master.conf và tìm dòng # Postfix smtp-auth, sửa lại thành như sau:
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
Tiếp theo mở file /etc/dovecot/conf.d/10-auth.conf và tìm dòng auth_mechanisms. Đổi thiết lập của dòng này từ:
# Space separated list of wanted authentication mechanisms: # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey # gss-spnego # NOTE: See also disable_plaintext_auth setting. auth_mechanisms = plain
thành :
# Space separated list of wanted authentication mechanisms: # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey # gss-spnego # NOTE: See also disable_plaintext_auth setting. auth_mechanisms = plain login
Tiếp theo là file /etc/dovecot/conf.d/10-mail.conf. Bỏ comment ở đầu dòng và sửa lại thành như dưới đây:
mail_location = maildir:~/mail
Dòng trên chỉ đường dẫn nơi lưu trữ email đến và đi của một user. Cấu hình đường dẫn lưu email này phải trùng khớp với dòng home_mailbox = mail/ trong file main.cf của Postfix.
Tiếp theo mở file /etc/dovecot/conf.d/20-pop3.conf và bỏ comment của dòng sau đi:
#pop3_uidl_format = %08Xu%08Xv
Sửa lại thành:
# Note that Outlook 2003 seems to have problems with %v.%u format which was
# Dovecot's default, so if you're building a new server it would be a good
# idea to change this. %08Xu%08Xv should be pretty fail-safe.
#
pop3_uidl_format = %08Xu%08Xv
Done. Vậy là bạn đã thiết lập các cấu hình cần thiết cho Dovecot. Sau khi hoàn thiện các bước trên thì ta cần restart lại Postfix và Dovecot services với những lệnh sau:
systemctl restart postfix
systemctl enable postfix -- (tự động chạy service khi reboot server)
systemctl restart dovecot
systemctl enable dovecot -- (tự động chạy service khi reboot server)
Còn một điều nữa cần nhớ. Để có thể truy cập được các dịch vụ mail mà bạn vừa cài đặt thì cần mở cổng cho nó trên firewall (Với trường hợp server của bạn có bật firewall 🙂 ). Chạy các lệnh sau để thực hiện việc mở cổng:
firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-port=587/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=110/tcp
firewall-cmd --permanent --add-service=pop3s
firewall-cmd --permanent --add-port=143/tcp
firewall-cmd --permanent --add-service=imaps
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
Chạy thử Postfix và Dovecot:
Sau khi cài đặt và cấu hình xong như ở trên, ta cần chạy thử xem mọi thứ có ổn không. Sau khi cài đặt và thiết lập cả mớ cấu hình phía trên thì các bản ghi MX của bạn chạy đã được cập nhật. Test nhanh cho chắc bằng lệnh ping đến bản ghi MX bạn vừa trỏ.
OK. Để chạy thử Postfix ta dùng lệnh sau:
telnet mail.yourdomain.com smtp
Xong nó sẽ hiện ra như thế này:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.yourdomain.com ESMTP Postfix
Tiếp sau đó bạn gõ một vài dòng sau để test gửi email.
mail from: info@yourdomain.com
rcpt to: yourGmail@gmail.com
data
Subject: Test mail from roundcube
Hi, Test message
.
Bạn gõ lần lượt các dòng trên. Kết thúc và gửi email bằng dấu chấm (.). Hãy thử xem bạn có nhận được email không nhé. Có thể email bạn nhận được sẽ nằm trong mục SPAM hoặc ngay sau khi bạn gửi email từ dòng lệnh trên kia sẽ có thông báo lỗi. Để khắc phục các vấn đề này tôi sẽ hướng dẫn tiếp ở phần sau, những cấu hình sẽ quyết định việc email của bạn nằm trong INBOX hay SPAM của Gmail. Cám ơn!









(4 lượt thả tim)



