Hướng dẫn cài đặt mail server trên centos 7

Bài viết này sẽ hướng dẫn các bạn cách cài mail server trên CentOS 7 một cách cơ bản. Ở đây chúng tôi sử dụng Postfix cho SMTP, Dovecot cho POP/ IMAP và Dovecot SASL cho SMTP AUTH. Hãy đảm bảo rằng bạn đã gán IP tĩnh cho server và có kết nối internet để cài đặt và chú ý là IP tĩnh của các bạn không được nằm trong blacklist của các hệ thống chống thư rác nhé.
Thay đổi hostname.
Để đổi tên server, ta dùng lệnh sau

[root@mail ~]# hostnamectl set-hostname mail.langcongnghe.com

Để lưu lại tên của máy chủ ta mở file /ect/hosts bằng lênh.

[root@mail ~]# vi /ect/hosts

Sau đó thêm dòng sau đây vào cuối file (nhớ là sửa ip và domain của các bạn nhé).

107.172.217.178 mail.langcongnghe.com

Cài đặt các gói.
Vậy là xong được phần mở đầu, tiếp theo chúng ta bắt đầu chạy lệnh để hệ thống cập nhật phiên bản mới nhất

[root@mail ~]# yum -y update

Chúng ta cần cài đặt 3 gói postfix, dovecot và opendkim. Do opendkim lưu thông tin cài đặt trên gói EPEL cho nên chúng ta cần cập nhật lại gói này.

[root@mail ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Bây giờ thì mọi thứ đã sẵn sàng rồi, bắt đầu cài đặt các gói cần thiết nào.

[root@mail ~]# yum -y install postfix dovecot opendkim

Cài xong thì mình bật chế độ tự chạy sau khi khởi động hệ điều hành.

[root@mail ~]# systemctl enable postfix
[root@mail ~]# systemctl enable dovecot
[root@mail ~]# systemctl enable opendkim

Cấu hình Postfix
Đầu tiên là bạn cần có chứng chỉ SSL, có hai cách để có được chứng chỉ SSL đó là mua SSL do các là cung cấp chứng chỉ đại trà cung cấp (tôi mua trên https://ssls.com giá cũng tương đối rẻ) hoặc tự tạo self-certificate. Ưu điểm của SSL mua là rất an toàn và được chấp nhận bởi hầu hết các ứng dụng, còn với self-certificate thì độ tin cậy với các ứng dụng kém hơn nên mỗi khi mở lên sẽ phải xác nhận thông tin để đảm bảo an toàn.
Tạo thư mục để lưu ssl bằng lệnh sau.

[root@mail ~]# mkdir /etc/postfix/ssl

Bây giờ mở file /etc/postfix/main.cf để thay đổi.

[root@mail ~]# vi /etc/postfix/main.cf

Thêm các dòng sau vào cuối file.

myhostname = mail.langcongnghe.com
mydomain = langcongnghe.com
myorigin = $mydomain
home_mailbox = mail/
mynetworks = 127.0.0.0/8
inet_interfaces = 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

Mở file /etc/postfix/master.cf, thêm dòng lệnh bên dưới sau dòng “smtp inet n – n – – smtpd”.

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

Đến đây là xong phần cấu hình cho postfix, các bạn kiểm tra lại xem có lỗi postfix có bị lỗi làm gì hay không băng lệnh sau, nếu không hiển thị ra cái gì thì có nghĩa là không có lỗi nhé các bạn.

postfix check

Tiếp theo đến phần cấu hình Dovecot SASL cho SMTP Auth. Mở file /etc/dovecot/conf.d/10-master.conf, tìm dòng “# Postfix smtp-auth” và thêm các dòng bên dưới.

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

Mở file /etc/dovecot/conf.d/10-auth.conf, tìm “auth_mechanisms = plain” và thêm login vào giá trị như bên dưới.

auth_mechanisms = plain login

Cấu hình Postfix hoàn thành rồi đấy. Bây giờ khởi động lại cả postfix thôi.

[root@mail ~]# systemctl restart postfix

Thêm các rule tường lửa để cho phép các port 25, 587, 465.
Anh em dùng iptable thì chạy lệnh này

[root@mail ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 25,465,587 -j ACCEPT
[root@mail ~]# service iptables save

Dùng firewalld thì chạy lệnh này

[root@mail ~]# firewall-cmd --permanent --add-service=smtp
[root@mail ~]# firewall-cmd --permanent --add-port=587/tcp
[root@mail ~]# firewall-cmd --permanent --add-port=465/tcp
[root@mail ~]# firewall-cmd --reload

Bây giờ hãy kiểm tra kết nối của từng cổng 25,587,465 bằng telnet. Hãy đảm bảo rằng bạn nhận được dòng AUTH PLAIN LOGIN sau khi phát lệnh ehlo mail.langcongnghe.com trong telnet. Bước tiếp theo trong cài mail server trên CentOS 7 là cấu hình Dovecot.
Cấu hình Dovecot
Mở file /etc/dovecot/conf.d/10-mail.conf, tìm #mail_location và thêm directory giống như home_mailbox trong file config của postfix.

mail_location = maildir:~/mail

Mở file /etc/dovecot/conf.d/20-pop3.conf, tìm và uncomment bên dưới.

pop3_uidl_format = %08Xu%08Xv

Khởi động lại dovecot.

[root@mail ~]# systemctl restart dovecot

Thêm rule tường lửa để cho phép port 110,143,993 và 995.
iptables

[root@mail ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 110,143,993,995 -j ACCEPT
[root@mail ~]# service iptables save

firewalld

[root@mail ~]# firewall-cmd --permanent --add-port=110/tcp
[root@mail ~]# firewall-cmd --permanent --add-service=pop3s
[root@mail ~]# firewall-cmd --permanent --add-port=143/tcp
[root@mail ~]# firewall-cmd --permanent --add-service=imaps
[root@mail ~]# firewall-cmd --reload

Kiểm tra kết nối của các port 110,143,993 và 995 bằng telnet. Sau đó, hãy tạo tài khoản user.
Tạo tài khoản người dùng
Bây giờ tạo một tạo khoản để kiểm tra thử. Tạo tài khoản người dùng với /sbin/nologin shell để hạn chế quyền truy cập đăng nhập.

[root@mail ~]# useradd -m phongph -s /sbin/nologin
[root@mail ~]# passwd phongph

Xong rồi thì dùng outlook hay bất kể một mail client nào mà các bạn hay dùng hãy thử đăng nhập vào xem đã được chưa nhé.
Cấu hình DKIM
Lưu ý là bản cài đặt DKIM mình áp dụng cho multi domain nhé nếu sử dụng 1 domain thì bỏ đi cấu hình domain thứ 2 là được!
Mở file /etc/opendkim.conf

[root@mail ~]# vi /etc/opendkim.conf

Lưu ý chỉ cần chỉnh sửa các dòng sau còn lại thì comment

PidFile /var/run/opendkim/opendkim.pid
Mode    sv
Syslog  yes
SyslogSuccess   yes
LogWhy  yes
UserID  opendkim:opendkim
Socket  inet:8891@127.0.0.1
Umask   002
SendReports yes
SoftwareHeader  yes
Canonicalization    relaxed/simple
Domain  langcongnghe.com
Selector    default
MinimumKeyBits  1024
KeyTable    /etc/opendkim/KeyTable
SigningTable    refile:/etc/opendkim/SigningTable
ExternalIgnoreList  refile:/etc/opendkim/TrustedHosts
InternalHosts   refile:/etc/opendkim/TrustedHosts
OversignHeaders From

Cấu hình KeyTable: /etc/opendkim/KeyTable

# Cấu hình cho domain mặc định sử dụng DKIM
default._domainkey.langcongnghe.com langcongnghe.com:default:/etc/opendkim/keys/default.private
# Cấu hình cho domain thứ 2 sử dụng DKIM
mail._domainkey.moffice.vn moffice.vn:mail:/etc/opendkim/keys/mail.private

Cấu hình SigningTable: /etc/opendkim/SigningTable

# Cấu hình cho domain mặc định
*@langcongnghe.com default._domainkey.langcongnghe.com
# Cấu hình cho domain thứ 2
*@moffice.vn mail._domainkey.moffice.vn

Cấu hình TrustedHosts: /etc/opendkim/TrustedHosts

127.0.0.1
::1
#host.example.com
#192.168.1.0/24
# Danh sách domain
*.langcongnghe.com
*.moffice.vn

Tạo khoá công khai và khoá bí mật.

# Tạo khóa mặc định dành cho domain mặc định là default.private và default.txt
opendkim-default-keygen
# Tạo khóa cho doamin thứ 2 với tên là mail.private và mail.txt
opendkim-genkey -s mail -d lmoffice.vn
# hoặc dùng lệnh này
opendkim-genkey -D /etc/opendkim/keys/ -d moffice.vn -s mail

Tạo quyền cho khóa để Postfix có thể truy cập đọc được

chown opendkim:opendkim mail.private

Lúc này bạn sẽ có 1 file .private và 1 file .txt. Mở file .txt để lấy thông tin khóa cấu hình trên DNS, các bạn copy nguyên phần v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI…. sau đó tạo một bản ghi TXT trên DNS của domain với name = default._domainkey và value = “v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI…”.
Tiếp theo cấu hình Postfix nhận openDKIM. Mở file: /etc/postfix/main.cf và thêm cấu hình sau vào cuối file.

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Cuối cùng khởi động lại service Postfix và Opendkim

systemctl restart postfix
systemctl restart opendkim

Kiểm tra lại SPF và DKIM
Có 2 cách để kiểm tra, cách thứ nhất là gửi một email đến địa chỉ check-auth@verifier.port25.com sau đó nhận email thông báo kết quả check. Cách 2 là gửi email đến hòm thư của bạn ở gmail, sau đó xem trong phần “Show original” bạn sẽ thấy thông tin google check DKIM mail server của bạn.

Trên đây là toàn bộ các bước trong bài hướng dẫn cách cài đặt mail server trên centos 7. Nếu bạn có góp ý gì thì hẫy để lại ý kiến của mình trong phần bình luận. Nếu thấy bài viết hay và hữu ích thì hãy cho chúng tôi một chia sẻ. Xin chân thành cảm ở và chúc các bạn thành công.

About the author

Trả lời